diff --git a/docs/cow-amm/README.mdx b/docs/cow-amm/README.mdx index 9e6e9efc2..222bb1cf3 100644 --- a/docs/cow-amm/README.mdx +++ b/docs/cow-amm/README.mdx @@ -1,3 +1,8 @@ +--- +sidebar_position: 0 +sidebar_label: "About CoW AMM" +--- + # CoW AMM: The First MEV-capturing AMM CoW AMM protects LPs from LVR so they can provide liquidity with less risk and more return. CoW AMM achieves close to 5% more in TVL compared to reference pools, protects millions from LVR, and has captured over $100,000 in surplus for LPs to date. diff --git a/docs/cow-protocol/tutorials/cow-amm-deployer.mdx b/docs/cow-amm/cow-amm-deployer.mdx similarity index 100% rename from docs/cow-protocol/tutorials/cow-amm-deployer.mdx rename to docs/cow-amm/cow-amm-deployer.mdx diff --git a/docs/cow-protocol/README.mdx b/docs/cow-protocol/README.mdx index d61cb6008..554484846 100644 --- a/docs/cow-protocol/README.mdx +++ b/docs/cow-protocol/README.mdx @@ -1,3 +1,8 @@ +--- +sidebar_position: 0 +sidebar_label: "About CoW Protocol" +--- + # CoW Protocol CoW Protocol is a meta-DEX aggregation protocol that leverages [trade intents](/cow-protocol/concepts/introduction/intents) and [fair combinatorial batch auctions](/cow-protocol/concepts/introduction/fair-combinatorial-auction) to find users better prices for trading crypto assets. @@ -18,8 +23,7 @@ Liquidity sources include: The wide range of liquidity that solvers tap into makes CoW Protocol a meta-DEX aggregator, or an aggregator of aggregators. -**To learn more about the concepts CoW Protocol makes use of, see [Concepts](/category/concepts).** - -**For more info on how to use CoW Protocol or CoW Swap, see [Tutorials](/category/tutorials).** - -**To dive into the technical details, see [Technical reference](/category/technical-reference).** +**Use the sidebar to navigate through:** +- **Concepts** - Learn about the fundamental concepts behind CoW Protocol +- **Tutorials** - Step-by-step guides for using CoW Protocol +- **Technical Reference** - APIs, SDKs, and smart contract documentation diff --git a/docs/cow-protocol/apis/_category_.json b/docs/cow-protocol/apis/_category_.json new file mode 100644 index 000000000..e49165624 --- /dev/null +++ b/docs/cow-protocol/apis/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "API", + "position": 6, + "collapsible": true, + "collapsed": true, + "link": { + "type": "generated-index" + } +} diff --git a/docs/cow-protocol/reference/apis/driver.mdx b/docs/cow-protocol/apis/driver.mdx similarity index 65% rename from docs/cow-protocol/reference/apis/driver.mdx rename to docs/cow-protocol/apis/driver.mdx index c8e2acdac..2ab064230 100644 --- a/docs/cow-protocol/reference/apis/driver.mdx +++ b/docs/cow-protocol/apis/driver.mdx @@ -2,7 +2,7 @@ sidebar_position: 2 --- -import {SwaggerDoc} from '../../../../src/components/swagger-doc/SwaggerDoc'; +import {SwaggerDoc} from '../../../src/components/swagger-doc/SwaggerDoc'; # Driver API diff --git a/docs/cow-protocol/reference/apis/orderbook.mdx b/docs/cow-protocol/apis/orderbook.mdx similarity index 66% rename from docs/cow-protocol/reference/apis/orderbook.mdx rename to docs/cow-protocol/apis/orderbook.mdx index 38cda4f15..485957689 100644 --- a/docs/cow-protocol/reference/apis/orderbook.mdx +++ b/docs/cow-protocol/apis/orderbook.mdx @@ -2,7 +2,7 @@ sidebar_position: 1 --- -import {SwaggerDoc} from '../../../../src/components/swagger-doc/SwaggerDoc'; +import {SwaggerDoc} from '../../../src/components/swagger-doc/SwaggerDoc'; # Order book API diff --git a/docs/cow-protocol/reference/apis/solver.mdx b/docs/cow-protocol/apis/solver.mdx similarity index 66% rename from docs/cow-protocol/reference/apis/solver.mdx rename to docs/cow-protocol/apis/solver.mdx index 7c17b5c17..ea3a81168 100644 --- a/docs/cow-protocol/reference/apis/solver.mdx +++ b/docs/cow-protocol/apis/solver.mdx @@ -2,7 +2,7 @@ sidebar_position: 3 --- -import {SwaggerDoc} from '../../../../src/components/swagger-doc/SwaggerDoc'; +import {SwaggerDoc} from '../../../src/components/swagger-doc/SwaggerDoc'; # Solver API diff --git a/docs/cow-protocol/concepts/flash-loans/integrators.md b/docs/cow-protocol/concepts/flash-loans/integrators.md index 0ad9d8dc2..855cf22c0 100644 --- a/docs/cow-protocol/concepts/flash-loans/integrators.md +++ b/docs/cow-protocol/concepts/flash-loans/integrators.md @@ -4,7 +4,7 @@ sidebar_position: 2 # How to specify an order with flash loan -The flash loan is encoded into the [appData](/cow-protocol/reference/core/intents/app-data)'s metadata as an optional object. This information serves as a hint for the solver, but the solver ultimately can decide for a different approach in order to make the operation more optimal. +The flash loan is encoded into the [appData](/cow-protocol/reference/intents/app-data)'s metadata as an optional object. This information serves as a hint for the solver, but the solver ultimately can decide for a different approach in order to make the operation more optimal. It is important to ensure that the flash loan gas overhead is added to the slippage tolerance when creating the order. diff --git a/docs/cow-protocol/concepts/introduction/intents.md b/docs/cow-protocol/concepts/introduction/intents.md index cebc31194..4798cbcb9 100644 --- a/docs/cow-protocol/concepts/introduction/intents.md +++ b/docs/cow-protocol/concepts/introduction/intents.md @@ -28,7 +28,7 @@ Solvers not only scan all available on-chain liquidity (similar to a DEX aggrega The intent-based architecture of CoW Protocol also provides a number of technical benefits: - Enabling [solvers](./solvers) to execute all sorts of transactions (not just trades) based on specific instructions and on-chain conditions. This powers products like [CoW Hooks](../order-types/cow-hooks) and [Programmatic Orders](../order-types/programmatic-orders) -- Establishing additional rules for the way orders settle on-chain, such as guaranteeing that the trade is settled at [EBBO](/cow-protocol/reference/core/definitions#ebbo) (Ethereum best bid and offer, guaranteeing that the baseline price for the trade is what on-chain AMMs offer) and uniform clearing prices (where trades with the same token pair in the same batch are cleared at the same price) +- Establishing additional rules for the way orders settle on-chain, such as guaranteeing that the trade is settled at [EBBO](/cow-protocol/reference/definitions#ebbo) (Ethereum best bid and offer, guaranteeing that the baseline price for the trade is what on-chain AMMs offer) and uniform clearing prices (where trades with the same token pair in the same batch are cleared at the same price) - Allowing users to pay gas fees in their *sell token* without needing to hold the chain-native token (like ETH) in their wallet - Eliminating fees for failed transactions - Allowing users to place multiple orders at once diff --git a/docs/cow-protocol/concepts/introduction/solvers.md b/docs/cow-protocol/concepts/introduction/solvers.md index d363b3e7b..185f6df2d 100644 --- a/docs/cow-protocol/concepts/introduction/solvers.md +++ b/docs/cow-protocol/concepts/introduction/solvers.md @@ -11,15 +11,15 @@ CoW Protocol delivers optimal price outcomes by leveraging an open solver compet Solvers are bonded third parties that execute trades on behalf of users through an [intent-based delegated execution model](intents). Once a user submits an [intent](intents), the protocol groups it alongside other intents in a batch auction. -As soon as a batch is "closed for orders", meaning that it stops considering new orders, the protocol runs a [competition](/cow-protocol/reference/core/auctions) where solvers submit solutions for the intents in the batch. +As soon as a batch is "closed for orders", meaning that it stops considering new orders, the protocol runs a [competition](/cow-protocol/reference/auctions) where solvers submit solutions for the intents in the batch. -Whichever solver offers the best [solution](/cow-protocol/reference/core/auctions/the-problem#solution) for the batch auction (defined as the solver that provides the most surplus to user orders) gets to execute the orders. +Whichever solver offers the best [solution](/cow-protocol/reference/auctions/the-problem#solution) for the batch auction (defined as the solver that provides the most surplus to user orders) gets to execute the orders. Solvers are compensated in COW tokens for settling batches, incentivizing them to compete to find better prices and win the right to execute user intents. ## How Solvers Work -Solvers can move tokens on behalf of the user using the `ERC-20` approvals that the user granted to the [vault relayer](/cow-protocol/reference/contracts/core/vault-relayer) contract. -The [settlement](/cow-protocol/reference/contracts/core/settlement) contract, meanwhile, verifies the signature of the user's intent and ensures that execution happens according to the limit price and quantity specified by the user. +Solvers can move tokens on behalf of the user using the `ERC-20` approvals that the user granted to the [vault relayer](/cow-protocol/contracts/core/vault-relayer) contract. +The [settlement](/cow-protocol/contracts/core/settlement) contract, meanwhile, verifies the signature of the user's intent and ensures that execution happens according to the limit price and quantity specified by the user. Anyone with some DeFi knowledge and ability to code an optimizations algorithm can create a solver. diff --git a/docs/cow-protocol/concepts/order-types/cow-hooks.mdx b/docs/cow-protocol/concepts/order-types/cow-hooks.mdx index 24bea25e5..7c03c5b6a 100644 --- a/docs/cow-protocol/concepts/order-types/cow-hooks.mdx +++ b/docs/cow-protocol/concepts/order-types/cow-hooks.mdx @@ -25,4 +25,4 @@ These are actions that execute after the swap, taking advantage of trade proceed ## Getting started -To get started with writing a CoW Hook, check out [our technical documentation](/cow-protocol/reference/core/intents/hooks). You can also [read more about CoW Hooks on our blog](https://blog.cow.fi/cow-hooks-you-are-in-control-480ccb40044a) or through our tutorials — [here](https://www.youtube.com/watch?v=FT36lWtC1Oc) and [here](https://www.youtube.com/watch?v=29OaasbqY_g). +To get started with writing a CoW Hook, check out [our technical documentation](/cow-protocol/reference/intents/hooks). You can also [read more about CoW Hooks on our blog](https://blog.cow.fi/cow-hooks-you-are-in-control-480ccb40044a) or through our tutorials — [here](https://www.youtube.com/watch?v=FT36lWtC1Oc) and [here](https://www.youtube.com/watch?v=29OaasbqY_g). diff --git a/docs/cow-protocol/concepts/order-types/limit-orders.md b/docs/cow-protocol/concepts/order-types/limit-orders.md index 94ef5f69f..78bc45af6 100644 --- a/docs/cow-protocol/concepts/order-types/limit-orders.md +++ b/docs/cow-protocol/concepts/order-types/limit-orders.md @@ -20,4 +20,4 @@ CoW Protocol's limit orders provide more flexibility and better prices than othe ## Getting started -Wanting to place a limit order? Check out our [limit order tutorial](/cow-protocol/tutorials/cow-swap/limit). You can also [read about limit orders on our blog.](https://blog.cow.fi/the-cow-has-no-limits-342e7eae8794) +Wanting to place a limit order? Check out our [limit order tutorial](/cow-swap/limit). You can also [read about limit orders on our blog.](https://blog.cow.fi/the-cow-has-no-limits-342e7eae8794) diff --git a/docs/cow-protocol/concepts/order-types/market-orders.md b/docs/cow-protocol/concepts/order-types/market-orders.md index 4398d438a..795ed2673 100644 --- a/docs/cow-protocol/concepts/order-types/market-orders.md +++ b/docs/cow-protocol/concepts/order-types/market-orders.md @@ -21,4 +21,4 @@ If the solvers are able to find optimizations within the batch auction your orde ## Getting started -Wanting to make a market order? Check out our [market order tutorial](/cow-protocol/tutorials/cow-swap/swap). +Wanting to make a market order? Check out our [market order tutorial](/cow-swap/swap). diff --git a/docs/cow-protocol/concepts/order-types/programmatic-orders.md b/docs/cow-protocol/concepts/order-types/programmatic-orders.md index a3fab47f3..1baedc05c 100644 --- a/docs/cow-protocol/concepts/order-types/programmatic-orders.md +++ b/docs/cow-protocol/concepts/order-types/programmatic-orders.md @@ -26,4 +26,4 @@ Thanks to the Programmatic Order Framework, users can automate everything from c ## Getting started -To start developing with the Programmatic Order Framework, check out our [technical documentation](/cow-protocol/reference/contracts/periphery/composable-cow). You can also read more about programmatic orders [on our blog](https://blog.cow.fi/introducing-the-programmatic-order-framework-from-cow-protocol-088a14cb0375). +To start developing with the Programmatic Order Framework, check out our [technical documentation](/cow-protocol/contracts/periphery/composable-cow). You can also read more about programmatic orders [on our blog](https://blog.cow.fi/introducing-the-programmatic-order-framework-from-cow-protocol-088a14cb0375). diff --git a/docs/cow-protocol/concepts/order-types/twap-orders.md b/docs/cow-protocol/concepts/order-types/twap-orders.md index d3d4ca222..f6b71f5e6 100644 --- a/docs/cow-protocol/concepts/order-types/twap-orders.md +++ b/docs/cow-protocol/concepts/order-types/twap-orders.md @@ -37,4 +37,4 @@ There are also several requirements for placing TWAP orders through CoW Protocol ## Getting started -Wanting to place a TWAP order? Check out our [TWAP order tutorial](/cow-protocol/tutorials/cow-swap/twap). You can also [read about TWAP on our blog.](https://blog.cow.fi/cow-swap-launches-twap-orders-d5583135b472) +Wanting to place a TWAP order? Check out our [TWAP order tutorial](/cow-swap/twap). You can also [read about TWAP on our blog.](https://blog.cow.fi/cow-swap-launches-twap-orders-d5583135b472) diff --git a/docs/cow-protocol/contracts/_category_.json b/docs/cow-protocol/contracts/_category_.json new file mode 100644 index 000000000..414e74b4c --- /dev/null +++ b/docs/cow-protocol/contracts/_category_.json @@ -0,0 +1,9 @@ +{ + "position": 5, + "label": "Contracts", + "collapsible": true, + "collapsed": true, + "link": { + "type": "generated-index" + } +} diff --git a/docs/cow-protocol/reference/contracts/core/README.mdx b/docs/cow-protocol/contracts/core/README.mdx similarity index 89% rename from docs/cow-protocol/reference/contracts/core/README.mdx rename to docs/cow-protocol/contracts/core/README.mdx index 0d712fb15..5fd653d6b 100644 --- a/docs/cow-protocol/reference/contracts/core/README.mdx +++ b/docs/cow-protocol/contracts/core/README.mdx @@ -10,7 +10,7 @@ Core contracts of CoW Protocol are those that are necessary for the protocol to The goal of the protocol is to bundle multiple user orders together to minimize fees deriving from using external liquidity sources and stave off maximal extractable value. -User orders are signed off-chain and sent to the protocol. [Solvers compete in an auction](../core/auctions/rewards) to settle the orders. Orders without a direct match are settled by the solver using on-chain liquidity sources through the use of _interactions_. +User orders are signed off-chain and sent to the protocol. [Solvers compete in an auction](../reference/auctions/rewards) to settle the orders. Orders without a direct match are settled by the solver using on-chain liquidity sources through the use of _interactions_. A settlement is a list of orders traded together, their prices, and the on-chain interactions necessary to retrieve external liquidity. @@ -36,7 +36,7 @@ CoW Protocol contracts are deployed using deterministic addresses. This means th :::caution -Take care when [signing](../core/signing-schemes), ensuring that the `EIP-712` domain separator is specified correctly. +Take care when [signing](../reference/signing-schemes), ensuring that the `EIP-712` domain separator is specified correctly. ::: @@ -80,7 +80,7 @@ If developing smart contracts that create orders, make sure at a contract level ### `ERC-1271` Replayability -The security of [`ERC-1271`](../core/signing-schemes#erc-1271) signatures depend on the developers' implementation of the _signing smart contract_. +The security of [`ERC-1271`](../reference/signing-schemes#erc-1271) signatures depend on the developers' implementation of the _signing smart contract_. Different smart contract wallets sign and verify messages very differently from each other. There's a known issue in some smart-contract wallet implementations that should be known before using `ERC-1271` signatures on CoW Protocol. @@ -105,7 +105,7 @@ Signatures from a Safe wallet aren't replayable and don't require any special ha You are still able to create `ERC-1271` orders from any wallet. -The CoW Protocol API allows you to specify some signed [metadata](../core/intents/app-data) in the order. This metadata can be sent along when creating an order on the CoW Protocol API. +The CoW Protocol API allows you to specify some signed [metadata](../reference/intents/app-data) in the order. This metadata can be sent along when creating an order on the CoW Protocol API. The signer property in the `metadata` is used by the CoW Protocol API to check that the signature is meant for the specified wallet. If this doesn't match the order origin, the order is rejected. @@ -123,7 +123,7 @@ Once your order is created, the metadata will be permanently stored in the datab If your signature is valid before your order is submitted and you want to make sure that the no one uses it before your order is submitted on the API, you can send the metadata to the API in advance. Then, any incoming order with the same app data hash will be rejected if the smart contract wallet doesn't match. -The metadata can be sent in advance to the [API](/cow-protocol/reference/apis/orderbook) using the `PUT` method `/app_data/{app_data_hash}`. +The metadata can be sent in advance to the [API](/cow-protocol/apis/orderbook) using the `PUT` method `/app_data/{app_data_hash}`. :::caution @@ -140,9 +140,9 @@ Therefore, any signatures for a chain on which the `GPv2Settlement` contract has ### Loss of surplus if `ERC-1271` order allows arbitrary app data -An adversary can manipulate vulnerable [`ERC-1271`](../core/signing-schemes#erc-1271) orders, thereby transferring part of the expected surplus from the user order to an address that the adversary controls. +An adversary can manipulate vulnerable [`ERC-1271`](../reference/signing-schemes#erc-1271) orders, thereby transferring part of the expected surplus from the user order to an address that the adversary controls. -This applies to all `ERC-1271` orders where the [app data](/cow-protocol/reference/core/intents/app-data) field can be changed by an adversary in a way that keeps the signature valid for that order (for example, because `isValidSignature` ignores the `appData` field in the order). +This applies to all `ERC-1271` orders where the [app data](/cow-protocol/reference/intents/app-data) field can be changed by an adversary in a way that keeps the signature valid for that order (for example, because `isValidSignature` ignores the `appData` field in the order). All `ERC-1271` smart-contract order types that can be found in these docs are not affected by this vulnerability. However, custom smart-contract order implementations may be affected: as usual, users should exercise caution when trading through unvetted smart-contract orders. @@ -155,7 +155,7 @@ Possibly the easiest way to avoid being affected by this issue is: But as long as untrusted parties cannot manipulate the app data of a valid `ERC-1271` order, an implementation is not affected. -The mechanism that allows surplus extraction from arbitrary app data possible is [partner fees](/governance/fees/partner-fee). +The mechanism that allows surplus extraction from arbitrary app data possible is [partner fees](/cow-dao/fees/partner-fee). Partner fees are encoded in the app data struct and are accounted for once the order is included in the settlement. From the perspective of the API, two orders with the same parameters and the same owner but different app data are two different valid orders. diff --git a/docs/cow-protocol/reference/contracts/core/_category_.json b/docs/cow-protocol/contracts/core/_category_.json similarity index 100% rename from docs/cow-protocol/reference/contracts/core/_category_.json rename to docs/cow-protocol/contracts/core/_category_.json diff --git a/docs/cow-protocol/reference/contracts/core/_gpv2.md b/docs/cow-protocol/contracts/core/_gpv2.md similarity index 100% rename from docs/cow-protocol/reference/contracts/core/_gpv2.md rename to docs/cow-protocol/contracts/core/_gpv2.md diff --git a/docs/cow-protocol/reference/contracts/core/allowlist.md b/docs/cow-protocol/contracts/core/allowlist.md similarity index 100% rename from docs/cow-protocol/reference/contracts/core/allowlist.md rename to docs/cow-protocol/contracts/core/allowlist.md diff --git a/docs/cow-protocol/reference/contracts/core/settlement.md b/docs/cow-protocol/contracts/core/settlement.md similarity index 96% rename from docs/cow-protocol/reference/contracts/core/settlement.md rename to docs/cow-protocol/contracts/core/settlement.md index ea26fe818..3bd86d5e1 100644 --- a/docs/cow-protocol/reference/contracts/core/settlement.md +++ b/docs/cow-protocol/contracts/core/settlement.md @@ -44,7 +44,7 @@ Interactions allow solvers to execute arbitrary calls to any on-chain contract.
Protocol fee collection - Interactions are also used for accounting / bookkeeping purposes as well. As trades are executed, the Protocol collects a fee from each trade and stores this in the settlement contract (known as internal buffers). At regular intervals, the Protocol withdraws the fees from the settlement contract to the Protocol's treasury Safe. + Interactions are also used for accounting / bookkeeping purposes as well. As trades are executed, the Protocol collects a fee from each trade and stores this in the settlement contract (known as internal buffers). At regular intervals, the Protocol withdraws the fees from the settlement contract to the Protocol's treasury Safe.
@@ -67,7 +67,7 @@ Allowing interactions by solvers, creates the possibility of malicious solvers t The `GPV2Order.Data` is the one of the most important data structures in the Protocol. It: - defines the parameters of an order -- is the basis of which the order digest is determined using `EIP-712` and subsequently [signed](../../core/signing-schemes) by the user +- is the basis of which the order digest is determined using `EIP-712` and subsequently [signed](../../reference/signing-schemes) by the user In code, it is defined as: diff --git a/docs/cow-protocol/reference/contracts/core/vault_relayer.md b/docs/cow-protocol/contracts/core/vault_relayer.md similarity index 100% rename from docs/cow-protocol/reference/contracts/core/vault_relayer.md rename to docs/cow-protocol/contracts/core/vault_relayer.md diff --git a/docs/cow-protocol/reference/contracts/periphery/README.mdx b/docs/cow-protocol/contracts/periphery/README.mdx similarity index 100% rename from docs/cow-protocol/reference/contracts/periphery/README.mdx rename to docs/cow-protocol/contracts/periphery/README.mdx diff --git a/docs/cow-protocol/reference/contracts/periphery/_category_.json b/docs/cow-protocol/contracts/periphery/_category_.json similarity index 100% rename from docs/cow-protocol/reference/contracts/periphery/_category_.json rename to docs/cow-protocol/contracts/periphery/_category_.json diff --git a/docs/cow-protocol/reference/contracts/periphery/composable_cow.md b/docs/cow-protocol/contracts/periphery/composable_cow.md similarity index 99% rename from docs/cow-protocol/reference/contracts/periphery/composable_cow.md rename to docs/cow-protocol/contracts/periphery/composable_cow.md index 14b1722f5..c8469628f 100644 --- a/docs/cow-protocol/reference/contracts/periphery/composable_cow.md +++ b/docs/cow-protocol/contracts/periphery/composable_cow.md @@ -5,7 +5,7 @@ id: composable-cow # ComposableCoW -ComposableCoW is a framework for smoothing the developer experience when building conditional orders on CoW Protocol. Conditional orders are a subset of [`ERC-1271`](../../core/signing_schemes.mdx#erc-1271) smart contract orders. It allows one to create conditional orders that: +ComposableCoW is a framework for smoothing the developer experience when building conditional orders on CoW Protocol. Conditional orders are a subset of [`ERC-1271`](../../reference/signing-schemes#erc-1271) smart contract orders. It allows one to create conditional orders that: 1. Can be used to generate multiple discrete order (self-expressing) 2. Assess a proposed order against a set of conditions (self-validating) diff --git a/docs/cow-protocol/reference/contracts/periphery/cow_uid_generator.md b/docs/cow-protocol/contracts/periphery/cow_uid_generator.md similarity index 100% rename from docs/cow-protocol/reference/contracts/periphery/cow_uid_generator.md rename to docs/cow-protocol/contracts/periphery/cow_uid_generator.md diff --git a/docs/cow-protocol/reference/contracts/periphery/eth_flow.md b/docs/cow-protocol/contracts/periphery/eth_flow.md similarity index 97% rename from docs/cow-protocol/reference/contracts/periphery/eth_flow.md rename to docs/cow-protocol/contracts/periphery/eth_flow.md index d1408a583..50752623a 100644 --- a/docs/cow-protocol/reference/contracts/periphery/eth_flow.md +++ b/docs/cow-protocol/contracts/periphery/eth_flow.md @@ -5,7 +5,7 @@ slug: eth-flow # Eth-flow -As CoW Protocol only [supports `ERC-20 tokens`](../../core/tokens), this means that if a user wants to sell `ETH` on CoW Protocol, they need to: +As CoW Protocol only [supports `ERC-20 tokens`](../../reference/tokens), this means that if a user wants to sell `ETH` on CoW Protocol, they need to: 1. Convert their `ETH` into `WETH` 2. Approve the [vault relayer](../core/vault-relayer) for spending their `WETH` @@ -15,7 +15,7 @@ This process is time-consuming and potentially costly for the user and is why we ## Architecture -An intermediary smart contract is used to wrap `ETH` into `WETH` and create an intent on behalf of the user. This contract then expresses the users' intent to trade on CoW Protocol using an [`ERC-1271`](../../core/signing-schemes#erc-1271)-signed intent. +An intermediary smart contract is used to wrap `ETH` into `WETH` and create an intent on behalf of the user. This contract then expresses the users' intent to trade on CoW Protocol using an [`ERC-1271`](../../reference/signing-schemes#erc-1271)-signed intent. ```mermaid sequenceDiagram @@ -101,7 +101,7 @@ The user intent described below is not a valid intent for the settlement contrac ### Contract order signing -The contract order uses [`ERC-1271`](../../core/signing-schemes#erc-1271) signatures. +The contract order uses [`ERC-1271`](../../reference/signing-schemes#erc-1271) signatures. The `signature` is empty, since all information needed to verify the order can be found on-chain. diff --git a/docs/cow-protocol/reference/contracts/periphery/flash-loans.md b/docs/cow-protocol/contracts/periphery/flash-loans.md similarity index 100% rename from docs/cow-protocol/reference/contracts/periphery/flash-loans.md rename to docs/cow-protocol/contracts/periphery/flash-loans.md diff --git a/docs/cow-protocol/reference/contracts/periphery/hooks_trampoline.md b/docs/cow-protocol/contracts/periphery/hooks_trampoline.md similarity index 96% rename from docs/cow-protocol/reference/contracts/periphery/hooks_trampoline.md rename to docs/cow-protocol/contracts/periphery/hooks_trampoline.md index 1256800d7..ac5974083 100644 --- a/docs/cow-protocol/reference/contracts/periphery/hooks_trampoline.md +++ b/docs/cow-protocol/contracts/periphery/hooks_trampoline.md @@ -5,11 +5,11 @@ sidebar_position: 2 # HooksTrampoline -A helper contract that may be used by solvers to securely execute user's [hooks](/cow-protocol/reference/core/intents/hooks) within the settlement transaction. +A helper contract that may be used by solvers to securely execute user's [hooks](/cow-protocol/reference/intents/hooks) within the settlement transaction. ## Architecture -The main [settlement](../core/settlement.md) contract for CoW Protocol allows for custom [interactions](../core/settlement#interactions) to be executed before and after the settlement logic. This is primarily used by solvers to access on-chain liquidity for settling batch auctions, but it can also be made available to users to perform custom actions, hereafter referred to as *[hooks](/cow-protocol/reference/core/intents/hooks)*. +The main [settlement](../core/settlement.md) contract for CoW Protocol allows for custom [interactions](../core/settlement#interactions) to be executed before and after the settlement logic. This is primarily used by solvers to access on-chain liquidity for settling batch auctions, but it can also be made available to users to perform custom actions, hereafter referred to as *[hooks](/cow-protocol/reference/intents/hooks)*. However, executing hooks from the settlement contract is not ideal for two reasons: diff --git a/docs/cow-protocol/reference/contracts/programmatic/_category_.json b/docs/cow-protocol/contracts/programmatic/_category_.json similarity index 100% rename from docs/cow-protocol/reference/contracts/programmatic/_category_.json rename to docs/cow-protocol/contracts/programmatic/_category_.json diff --git a/docs/cow-protocol/reference/contracts/programmatic/twap.md b/docs/cow-protocol/contracts/programmatic/twap.md similarity index 96% rename from docs/cow-protocol/reference/contracts/programmatic/twap.md rename to docs/cow-protocol/contracts/programmatic/twap.md index ea68fe9f2..f32411662 100644 --- a/docs/cow-protocol/reference/contracts/programmatic/twap.md +++ b/docs/cow-protocol/contracts/programmatic/twap.md @@ -66,6 +66,6 @@ Fortunately, when using Safe, it is possible to batch together all the above cal :::note -For cancelling a TWAP order, follow the instructions at [Conditional order cancellation](/cow-protocol/reference/contracts/periphery/composable-cow#remove). +For cancelling a TWAP order, follow the instructions at [Conditional order cancellation](/cow-protocol/contracts/periphery/composable-cow#remove). ::: \ No newline at end of file diff --git a/docs/cow-protocol/reference/_category_.json b/docs/cow-protocol/reference/_category_.json index 490fdbe74..26507ba5c 100644 --- a/docs/cow-protocol/reference/_category_.json +++ b/docs/cow-protocol/reference/_category_.json @@ -1,9 +1,9 @@ { - "position": 3, - "label": "Technical reference", - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } + "position": 3, + "label": "Protocol reference", + "collapsible": true, + "collapsed": true, + "link": { + "type": "generated-index" + } } diff --git a/docs/cow-protocol/reference/apis/_category_.json b/docs/cow-protocol/reference/apis/_category_.json deleted file mode 100644 index 368784de4..000000000 --- a/docs/cow-protocol/reference/apis/_category_.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "label": "APIs", - "position": 6, - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } -} diff --git a/docs/cow-protocol/reference/core/auctions/README.mdx b/docs/cow-protocol/reference/auctions/README.mdx similarity index 100% rename from docs/cow-protocol/reference/core/auctions/README.mdx rename to docs/cow-protocol/reference/auctions/README.mdx diff --git a/docs/cow-protocol/tutorials/cow-swap/_category_.json b/docs/cow-protocol/reference/auctions/_category_.json similarity index 73% rename from docs/cow-protocol/tutorials/cow-swap/_category_.json rename to docs/cow-protocol/reference/auctions/_category_.json index b28a2926a..991b3701a 100644 --- a/docs/cow-protocol/tutorials/cow-swap/_category_.json +++ b/docs/cow-protocol/reference/auctions/_category_.json @@ -1,6 +1,6 @@ { "position": 1, - "label": "CoW Swap", + "label": "Auctions", "collapsible": true, "collapsed": true } diff --git a/docs/cow-protocol/reference/core/auctions/accounting.md b/docs/cow-protocol/reference/auctions/accounting.md similarity index 98% rename from docs/cow-protocol/reference/core/auctions/accounting.md rename to docs/cow-protocol/reference/auctions/accounting.md index f88dddf9a..722d2a5af 100644 --- a/docs/cow-protocol/reference/core/auctions/accounting.md +++ b/docs/cow-protocol/reference/auctions/accounting.md @@ -6,7 +6,7 @@ sidebar_position: 4 # Solver competition accounting process There is an accounting process in place for the solver competition. It is performed separately on each chain. Currently, the execution of the accounting process takes place once a week for all chains the protocol operates on, and each accounting week starts on Tuesday at midnight UTC and concludes a week later at midnight UTC. This accounting process consists of the following: -- calculation of total rewards/penalties, as specified by the [mechanism](/cow-protocol/reference/core/auctions/rewards); +- calculation of total rewards/penalties, as specified by the [mechanism](/cow-protocol/reference/auctions/rewards); - calculation of protocol and partner fees; - settlement contract buffers accounting, which consists of (1) calculation of protocol and partner fees that solvers might deposit in the settlement contract, (2) calculation of network fees (meant to cover gas) that solvers might deposit in the settlement contract, and (3) all other imbalances appearing in the settlement contract after a transaction gets executed, for solvers that choose the settlement contract as their execution layer. @@ -14,7 +14,7 @@ A summary of the above, that is used to verify the accounting process each week, ## Auction rewards and penalties -Each auction with a winner has a reward/penalty associated with it, that is computed after the auction deadline passes. In the case of a successful submission on-chain within the auction deadline, a reward is computed, originally in the native token of the chain, as determined by the [mechanism](/cow-protocol/reference/core/auctions/rewards). On the other hand, in the case of an unsuccessful execution (e.g., revert or delayed execution), a penalty is computed, originally expressed in the native token of the chain, that again is determined by the mechanism. +Each auction with a winner has a reward/penalty associated with it, that is computed after the auction deadline passes. In the case of a successful submission on-chain within the auction deadline, a reward is computed, originally in the native token of the chain, as determined by the [mechanism](/cow-protocol/reference/auctions/rewards). On the other hand, in the case of an unsuccessful execution (e.g., revert or delayed execution), a penalty is computed, originally expressed in the native token of the chain, that again is determined by the mechanism. In each accounting week, we first identify all auctions that took place within that week. Specifically: - we identify all blocks with a timestamp that is at least as large as the starting Tuesday, 00:00 UTC timestamp and strictly smaller than the ending Teusday, 00:00 UTC timestamp ([this Dune query](https://dune.com/queries/3333356) does exactly this computation). Let [X,Y] denote this interval; diff --git a/docs/cow-protocol/reference/core/auctions/bonding_pools.md b/docs/cow-protocol/reference/auctions/bonding_pools.md similarity index 98% rename from docs/cow-protocol/reference/core/auctions/bonding_pools.md rename to docs/cow-protocol/reference/auctions/bonding_pools.md index 0b1bcf0bf..25c0c8d70 100644 --- a/docs/cow-protocol/reference/core/auctions/bonding_pools.md +++ b/docs/cow-protocol/reference/auctions/bonding_pools.md @@ -23,7 +23,7 @@ Vouching contracts: - [Arbitrum](https://arbiscan.io/address/0xAAA4De096D02AE21729aA31D967E148D4e3Ae501) - [Base](https://basescan.org/address/0xAAA4De096D02AE21729aA31D967E148D4e3Ae501) -The `Vouch` method receives a list as an argument and can vouch for multiple submission addresses in a single transaction. The transaction must contain: the submission address for the solver, the bonding pool that is vouching for the solver, and the rewards address that the solver would like to use to receive their [rewards](/cow-protocol/reference/core/auctions/rewards). +The `Vouch` method receives a list as an argument and can vouch for multiple submission addresses in a single transaction. The transaction must contain: the submission address for the solver, the bonding pool that is vouching for the solver, and the rewards address that the solver would like to use to receive their [rewards](/cow-protocol/reference/auctions/rewards). # How to leave a bonding pool Leaving a bonding pool involves the same process as joining a bonding pool, except that the owner of the bonding pool will call the `invalidateVouching` method instead with the solver's submission address and the bonding pool that vouched for the solver as arguments. diff --git a/docs/cow-protocol/reference/core/auctions/competition_rules.md b/docs/cow-protocol/reference/auctions/competition_rules.md similarity index 97% rename from docs/cow-protocol/reference/core/auctions/competition_rules.md rename to docs/cow-protocol/reference/auctions/competition_rules.md index 307df4ecf..2059891d3 100644 --- a/docs/cow-protocol/reference/core/auctions/competition_rules.md +++ b/docs/cow-protocol/reference/auctions/competition_rules.md @@ -14,7 +14,7 @@ All solvers participating in the solver competition must abide by certain rules. ## Smart contract - Limit price constraint: this rule enforces that an order cannot be executed if its limit price is violated. -- Solver submitting a transaction needs to be whitelisted (the process about how a solver can get whitelisted is described [here](/cow-protocol/reference/core/auctions/bonding-pools)). +- Solver submitting a transaction needs to be whitelisted (the process about how a solver can get whitelisted is described [here](/cow-protocol/reference/auctions/bonding-pools)). ## Off-chain protocol @@ -24,11 +24,11 @@ All solvers participating in the solver competition must abide by certain rules. - Deadline: Solvers that win an auction will receive a deadline by which they must settle the auction on-chain. If the transaction is not observed on chain before the deadline block is mined, then the solution will count as not submitted and the solver will be penalized. -- The solver that provided the winning solution is rewarded according to a second-price auction mechanism that the protocol uses; for more information see [here](/cow-protocol/reference/core/auctions/rewards). +- The solver that provided the winning solution is rewarded according to a second-price auction mechanism that the protocol uses; for more information see [here](/cow-protocol/reference/auctions/rewards). - Internalization of interactions: a solver is allowed to "internalize" interactions. Concretely, if there is enough balance of the sell token of such an interaction in the settlement contract, then a solver can signal an internalization of such an interaction, which effectively means that the protocol is willing to buy and sell tokens stored in the settlement contract. The effect of such interactions is evaluated in what we call slippage accounting (see next point). -- Slippage accounting: With the exception of protocol, partner and network fees paid by users, any token imbalance within the settlement contract that is the result of a settlement is accounted for under the term "slippage accounting", and is fully owned by the corresponding solver, as specified in [CIP-17](https://snapshot.org/#/cow.eth/proposal/0xf9c98a2710dc72c906bbeab9b8fe169c1ed2e9af6a67776cc29b8b4eb44d0fb2). More information on the full accounting process, including slippage, can be found [here](/cow-protocol/reference/core/auctions/accounting). +- Slippage accounting: With the exception of protocol, partner and network fees paid by users, any token imbalance within the settlement contract that is the result of a settlement is accounted for under the term "slippage accounting", and is fully owned by the corresponding solver, as specified in [CIP-17](https://snapshot.org/#/cow.eth/proposal/0xf9c98a2710dc72c906bbeab9b8fe169c1ed2e9af6a67776cc29b8b4eb44d0fb2). More information on the full accounting process, including slippage, can be found [here](/cow-protocol/reference/auctions/accounting). :::note @@ -121,7 +121,7 @@ At CoW DAO's discretion, systematic violation of these rules may lead to penaliz - **Base tokens**: [`WBNB`](https://bnbscan.com/address/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c), [`BUSD`](https://bnbscan.com/address/0xe9e7cea3dedca5984780bafc599bd69add087d56), [`USDT`](https://bnbscan.com/address/0x55d398326f99059ff775485246999027b3197955), [`WETH`](https://bnbscan.com/address/0x2170ed0880ac9a755fd29b2688956bd959f933f8) -More details about how a certificate of an EBBO violation is computed, and what are the steps taken in case such a violation occurs can be found in [this](/cow-protocol/reference/core/auctions/ebbo-rules) section. +More details about how a certificate of an EBBO violation is computed, and what are the steps taken in case such a violation occurs can be found in [this](/cow-protocol/reference/auctions/ebbo-rules) section. - Inflation of the score ([CIP-11](https://snapshot.org/#/cow.eth/proposal/0x16d8c681d52b24f1ccd854084e07a99fce6a7af1e25fd21ddae6534b411df870)). Using tokens for the sole purpose of inflating the score of a solution or maximizing the reward is forbidden (e.g., by creating fake tokens, or wash-trading with real tokens). @@ -131,4 +131,4 @@ More details about how a certificate of an EBBO violation is computed, and what - Pennying/overbidding ([CIP-13](https://snapshot.org/#/cow.eth/proposal/0x812273c78abe1cea303d8381e1fb901a4cb701715fd24f4b769d0a0b3779b3e2)). Pennying or the evolution of it in the context of CIP-20 known as overbidding, is the intentional inflation of the reported score, by a solver, with the hope that their solution will win and that solver rewards, and/or the possibility of positive slippage, will cover the loss that they seem to be committing to. Such behavior does not benefit anyone and thus, systematically doing so can lead to solver slashing. -- Other malicious behavior ([CIP-11](https://snapshot.org/#/cow.eth/proposal/0x16d8c681d52b24f1ccd854084e07a99fce6a7af1e25fd21ddae6534b411df870)). Malicious solver behavior is not limited to the above examples. Slashing can still happen for other reasons where there is intentional harm caused to the user and/or the protocol at the discretion of the CoW DAO. A concrete example of such is a solver intentionally not including the [pre/post hooks](/cow-protocol/reference/core/intents/hooks) associated with an order. +- Other malicious behavior ([CIP-11](https://snapshot.org/#/cow.eth/proposal/0x16d8c681d52b24f1ccd854084e07a99fce6a7af1e25fd21ddae6534b411df870)). Malicious solver behavior is not limited to the above examples. Slashing can still happen for other reasons where there is intentional harm caused to the user and/or the protocol at the discretion of the CoW DAO. A concrete example of such is a solver intentionally not including the [pre/post hooks](/cow-protocol/reference/intents/hooks) associated with an order. diff --git a/docs/cow-protocol/reference/core/auctions/ebbo_specifics.md b/docs/cow-protocol/reference/auctions/ebbo_specifics.md similarity index 92% rename from docs/cow-protocol/reference/core/auctions/ebbo_specifics.md rename to docs/cow-protocol/reference/auctions/ebbo_specifics.md index 5f79ce8b2..0a2fbd1e5 100644 --- a/docs/cow-protocol/reference/core/auctions/ebbo_specifics.md +++ b/docs/cow-protocol/reference/auctions/ebbo_specifics.md @@ -9,7 +9,7 @@ In this section, we will elaborate on the details about what consistutes an EBBO ## Certificate of EBBO violation -A certificate for an EBBO violation consists of a reference routing on a block (and log index) between the start of the auction and when the settlement happened onchain. A reference routing for a trade at a given block (and index) is an execution of that trade which only uses liquidity from base protocols and routes through base tokens (see the "Base protocols and tokens" section [here](/cow-protocol/reference/core/auctions/competition-rules) for the definition of base protocols and base tokens). The surplus received by users in this routing is used as reference surplus. The difference between the reference surplus and the surplus actually received by the user is the size of the EBBO violation. This amount needs to be reimbursed to a user. +A certificate for an EBBO violation consists of a reference routing on a block (and log index) between the start of the auction and when the settlement happened onchain. A reference routing for a trade at a given block (and index) is an execution of that trade which only uses liquidity from base protocols and routes through base tokens (see the "Base protocols and tokens" section [here](/cow-protocol/reference/auctions/competition-rules) for the definition of base protocols and base tokens). The surplus received by users in this routing is used as reference surplus. The difference between the reference surplus and the surplus actually received by the user is the size of the EBBO violation. This amount needs to be reimbursed to a user. A certificate for an EBBO violation can be challenged by the solver who is accused of the EBBO violation by providing a different block (and index), within 72 hours of the notification of the violation. In this case, a reference routing on this block (and index) might be proposed by the core team and used as certificate instead. The new certificate, if any, cannot be challenged again. diff --git a/docs/cow-protocol/reference/core/auctions/rewards.md b/docs/cow-protocol/reference/auctions/rewards.md similarity index 99% rename from docs/cow-protocol/reference/core/auctions/rewards.md rename to docs/cow-protocol/reference/auctions/rewards.md index 8c94562d6..64f2dac63 100644 --- a/docs/cow-protocol/reference/core/auctions/rewards.md +++ b/docs/cow-protocol/reference/auctions/rewards.md @@ -55,7 +55,7 @@ There is no guarantee that the per-auction rewards are greater than the gas cost ### Additional solver costs (slippage) -In addition to paying for gas, the winning solver might incur additional costs, such as, for example, negative slippage once a solution is settled on chain. These costs are not an explicit element of the mechanism, but they are relevant in determining the solver's optimal strategy. More precisely, per [CIP-17](https://snapshot.org/#/cow.eth/proposal/0xf9c98a2710dc72c906bbeab9b8fe169c1ed2e9af6a67776cc29b8b4eb44d0fb2), solvers are responsible for managing potential slippage incurred by the settlements they settle. This is a component that affects payouts, but can be treated completely separately, and we do so in the [accounting section](/cow-protocol/reference/core/auctions/accounting). +In addition to paying for gas, the winning solver might incur additional costs, such as, for example, negative slippage once a solution is settled on chain. These costs are not an explicit element of the mechanism, but they are relevant in determining the solver's optimal strategy. More precisely, per [CIP-17](https://snapshot.org/#/cow.eth/proposal/0xf9c98a2710dc72c906bbeab9b8fe169c1ed2e9af6a67776cc29b8b4eb44d0fb2), solvers are responsible for managing potential slippage incurred by the settlements they settle. This is a component that affects payouts, but can be treated completely separately, and we do so in the [accounting section](/cow-protocol/reference/auctions/accounting). ### Solver's strategy diff --git a/docs/cow-protocol/reference/core/auctions/schema.md b/docs/cow-protocol/reference/auctions/schema.md similarity index 98% rename from docs/cow-protocol/reference/core/auctions/schema.md rename to docs/cow-protocol/reference/auctions/schema.md index 0069ae439..245184ab9 100644 --- a/docs/cow-protocol/reference/core/auctions/schema.md +++ b/docs/cow-protocol/reference/auctions/schema.md @@ -7,7 +7,7 @@ sidebar_position: 5 All the instances and solutions of the batch auction problem are formatted in [JSON](https://www.json.org/json-en.html). In this section, we describe these schemas. :::note -More details can be found [here](https://docs.cow.fi/cow-protocol/reference/apis/solver). +More details can be found [here](https://docs.cow.fi/cow-protocol/apis/solver). ::: :::caution @@ -38,7 +38,7 @@ This key lists all tokens that appear in some order or AMM in the batch auction - `decimals`: an integer equal to the number of decimals of the token. - `symbol`: a string denoting the shorthand name of the token (e.g., "WETH", "DAI"). - `referencePrice`: a float that corresponds to the price of the smallest denomination of the token with respect to a _reference token_ (for mainnet, the reference token is WETH, and its referencePrice is 1000000000000000000). Only tokens that are traded by at least a user order will necessarily have non-null referencePrice, while the rest of the tokens are allowed to have a `null` referencePrice. These prices are used when evaluating the score of a given solution, and can be thought of as a way of converting and expressing all relevant quantities in WETH (note that, initially, the surplus of different orders can be denominated in different tokens), and aggregating them all in a single value, denominated in WETH. -- `availableBalance`: a stringified integer that describes the amount (in the token's lowest denomination) of the token currently stored in the settlement contract ([internal buffers](/cow-protocol/reference/core/definitions#buffers)). This information is relevant when a solver attempts to [internalize an interaction](#using-internal-buffers). +- `availableBalance`: a stringified integer that describes the amount (in the token's lowest denomination) of the token currently stored in the settlement contract ([internal buffers](/cow-protocol/reference/definitions#buffers)). This information is relevant when a solver attempts to [internalize an interaction](#using-internal-buffers). - `trusted`: this is a boolean flag that specifies whether the contract is willing to store the token as part of an [internalized interaction](#using-internal-buffers). We now share two example token entries corresponding to [WETH](https://etherscan.io/address/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2) and [USDC](https://etherscan.io/token/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48): @@ -164,7 +164,7 @@ The above entries should be interpreted as follows: This key maps to a list of all orders that were selected for execution. Each trade is a dictionary that contains the following entries: - `kind`: this is string of the set {"fulfillment", "jit"}, which corresponds to an order existing in the orderbook, or a just-in-time liquidity order placed by the solver, respectively. -- `order`: in case of a "fulfillment" trade, the `uid` of the order is provided here as a string. In case it is a just-in-time liquidity order, the specifications of the order are explicitly given as a dictionary; more details can be found [here](https://docs.cow.fi/cow-protocol/reference/apis/solver). +- `order`: in case of a "fulfillment" trade, the `uid` of the order is provided here as a string. In case it is a just-in-time liquidity order, the specifications of the order are explicitly given as a dictionary; more details can be found [here](https://docs.cow.fi/cow-protocol/apis/solver). - `fee`: this entry exists only for "fullilment" trades, and maps to a stringified integer describing the fee of the order (either pre-signed or solver computed), denominated in the sell token. - `executedAmount`: this is a stringified integer corresponding to the sell amount (for sell orders) or the buy amount (for buy orders) that would get executed. Note that this is amount is "separate" from the "fee" amount that was described above; this, for example, means that for a sell "fulfillment" order, the trader will send a total of `fee + executedAmount` sell tokens to the contract. We also stress that it is the `executedAmount` where uniform clearing prices are being applied to. @@ -174,7 +174,7 @@ This key maps to a list of all interactions that are executed in the proposed so - `kind`: this is a string of the set {"liquidity", "custom"}, that specifies whether the interaction refers to an AMM/liquidity order included in the input json sent to the solvers, or it is a custom interaction. - `internalize`: this is a boolean flag that specifies whether the interaction can be internalized or not. More details about internalizations can be found in the section right below. -- Depending on the "kind", the rest of the keys are different, and the details and specifications of those can be found [here](https://docs.cow.fi/cow-protocol/reference/apis/solver). +- Depending on the "kind", the rest of the keys are different, and the details and specifications of those can be found [here](https://docs.cow.fi/cow-protocol/apis/solver). #### Using internal buffers diff --git a/docs/cow-protocol/reference/core/auctions/the_problem.md b/docs/cow-protocol/reference/auctions/the_problem.md similarity index 100% rename from docs/cow-protocol/reference/core/auctions/the_problem.md rename to docs/cow-protocol/reference/auctions/the_problem.md diff --git a/docs/cow-protocol/reference/periphery/composable-cow/README.mdx b/docs/cow-protocol/reference/composable-cow/README.mdx similarity index 100% rename from docs/cow-protocol/reference/periphery/composable-cow/README.mdx rename to docs/cow-protocol/reference/composable-cow/README.mdx diff --git a/docs/cow-protocol/reference/composable-cow/_category_.json b/docs/cow-protocol/reference/composable-cow/_category_.json new file mode 100644 index 000000000..091207028 --- /dev/null +++ b/docs/cow-protocol/reference/composable-cow/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 7, + "label": "Composable CoW", + "collapsible": true, + "collapsed": true +} diff --git a/docs/cow-protocol/reference/periphery/composable-cow/watch_tower.md b/docs/cow-protocol/reference/composable-cow/watch_tower.md similarity index 100% rename from docs/cow-protocol/reference/periphery/composable-cow/watch_tower.md rename to docs/cow-protocol/reference/composable-cow/watch_tower.md diff --git a/docs/cow-protocol/reference/contracts/_category_.json b/docs/cow-protocol/reference/contracts/_category_.json deleted file mode 100644 index 8ed2aad40..000000000 --- a/docs/cow-protocol/reference/contracts/_category_.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "position": 6, - "label": "Contracts", - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } -} diff --git a/docs/cow-protocol/reference/core/_category_.json b/docs/cow-protocol/reference/core/_category_.json deleted file mode 100644 index 3bf584fcd..000000000 --- a/docs/cow-protocol/reference/core/_category_.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "position": 3, - "label": "Core", - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } -} diff --git a/docs/cow-protocol/reference/core/auctions/_category_.json b/docs/cow-protocol/reference/core/auctions/_category_.json deleted file mode 100644 index 37b1b6e59..000000000 --- a/docs/cow-protocol/reference/core/auctions/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 2 -} diff --git a/docs/cow-protocol/reference/core/definitions.md b/docs/cow-protocol/reference/definitions.md similarity index 100% rename from docs/cow-protocol/reference/core/definitions.md rename to docs/cow-protocol/reference/definitions.md diff --git a/docs/cow-protocol/reference/periphery/hooks/README.mdx b/docs/cow-protocol/reference/hooks/README.mdx similarity index 100% rename from docs/cow-protocol/reference/periphery/hooks/README.mdx rename to docs/cow-protocol/reference/hooks/README.mdx diff --git a/docs/cow-protocol/reference/hooks/_category_.json b/docs/cow-protocol/reference/hooks/_category_.json new file mode 100644 index 000000000..3a7d737cc --- /dev/null +++ b/docs/cow-protocol/reference/hooks/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 8, + "label": "Hooks", + "collapsible": true, + "collapsed": true +} diff --git a/docs/cow-protocol/reference/core/intents/README.mdx b/docs/cow-protocol/reference/intents/README.mdx similarity index 100% rename from docs/cow-protocol/reference/core/intents/README.mdx rename to docs/cow-protocol/reference/intents/README.mdx diff --git a/docs/cow-protocol/reference/intents/_category_.json b/docs/cow-protocol/reference/intents/_category_.json new file mode 100644 index 000000000..0b6af6a31 --- /dev/null +++ b/docs/cow-protocol/reference/intents/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 2, + "label": "Intents", + "collapsible": true, + "collapsed": true +} diff --git a/docs/cow-protocol/reference/core/intents/_hooks_guarantees_warning.md b/docs/cow-protocol/reference/intents/_hooks_guarantees_warning.md similarity index 100% rename from docs/cow-protocol/reference/core/intents/_hooks_guarantees_warning.md rename to docs/cow-protocol/reference/intents/_hooks_guarantees_warning.md diff --git a/docs/cow-protocol/reference/core/intents/app_data.mdx b/docs/cow-protocol/reference/intents/app_data.mdx similarity index 92% rename from docs/cow-protocol/reference/core/intents/app_data.mdx rename to docs/cow-protocol/reference/intents/app_data.mdx index d7959ec2f..75d16f486 100644 --- a/docs/cow-protocol/reference/core/intents/app_data.mdx +++ b/docs/cow-protocol/reference/intents/app_data.mdx @@ -4,7 +4,7 @@ sidebar_position: 1 --- import CodeBlock from '@theme/CodeBlock'; -import { AppDataJsonView } from '../../../../../src/components/app-data-json-view/AppDataJsonView.js'; +import { AppDataJsonView } from '../../../../src/components/app-data-json-view/AppDataJsonView.js'; # Application specific data @@ -12,7 +12,7 @@ There are times when attaching additional information to an order is useful. For * An integration partner might want to track the volume they bring to the protocol * A user might want to include a referral address in their order -* A user might want to specify additional order options, such as [CoW Hooks](/cow-protocol/reference/core/intents/hooks) +* A user might want to specify additional order options, such as [CoW Hooks](/cow-protocol/reference/intents/hooks) CoW Protocol facilitates the inclusion of this additional information to any order through a special data field known as [`appData`](../../contracts/core/settlement#gpv2orderdata-struct). This field is a `bytes32` that points to an IPFS document that is a JSON file containing this information. Utilizing only on-chain data and IPFS, the content of this document can be retrieved and parsed. diff --git a/docs/cow-protocol/reference/core/intents/cow-hooks.mdx b/docs/cow-protocol/reference/intents/cow-hooks.mdx similarity index 100% rename from docs/cow-protocol/reference/core/intents/cow-hooks.mdx rename to docs/cow-protocol/reference/intents/cow-hooks.mdx diff --git a/docs/cow-protocol/reference/periphery/_category_.json b/docs/cow-protocol/reference/periphery/_category_.json deleted file mode 100644 index 29e98c55e..000000000 --- a/docs/cow-protocol/reference/periphery/_category_.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "position": 4, - "label": "Periphery", - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } -} diff --git a/docs/cow-protocol/reference/periphery/composable-cow/_category_.json b/docs/cow-protocol/reference/periphery/composable-cow/_category_.json deleted file mode 100644 index b9d14cd02..000000000 --- a/docs/cow-protocol/reference/periphery/composable-cow/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 1 -} diff --git a/docs/cow-protocol/reference/periphery/hooks/_category_.json b/docs/cow-protocol/reference/periphery/hooks/_category_.json deleted file mode 100644 index 37b1b6e59..000000000 --- a/docs/cow-protocol/reference/periphery/hooks/_category_.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "position": 2 -} diff --git a/docs/cow-protocol/reference/sdks/_category_.json b/docs/cow-protocol/reference/sdks/_category_.json deleted file mode 100644 index 5d174fda4..000000000 --- a/docs/cow-protocol/reference/sdks/_category_.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "position": 5, - "label": "SDKs", - "collapsible": true, - "collapsed": true, - "link": { - "type": "generated-index" - } -} diff --git a/docs/cow-protocol/reference/core/signing_schemes.mdx b/docs/cow-protocol/reference/signing_schemes.mdx similarity index 99% rename from docs/cow-protocol/reference/core/signing_schemes.mdx rename to docs/cow-protocol/reference/signing_schemes.mdx index 485de974c..32e82d58e 100644 --- a/docs/cow-protocol/reference/core/signing_schemes.mdx +++ b/docs/cow-protocol/reference/signing_schemes.mdx @@ -2,7 +2,7 @@ id: signing-schemes --- -import GPv2Note from '../../../partials/_gpv2.mdx' +import GPv2Note from '../../partials/_gpv2.mdx' # Signing schemes diff --git a/docs/cow-protocol/reference/core/tokens.md b/docs/cow-protocol/reference/tokens.md similarity index 100% rename from docs/cow-protocol/reference/core/tokens.md rename to docs/cow-protocol/reference/tokens.md diff --git a/docs/cow-protocol/reference/sdks/.gitignore b/docs/cow-protocol/sdks/.gitignore similarity index 100% rename from docs/cow-protocol/reference/sdks/.gitignore rename to docs/cow-protocol/sdks/.gitignore diff --git a/docs/cow-protocol/sdks/_category_.json b/docs/cow-protocol/sdks/_category_.json new file mode 100644 index 000000000..2c558cb44 --- /dev/null +++ b/docs/cow-protocol/sdks/_category_.json @@ -0,0 +1,9 @@ +{ + "position": 4, + "label": "SDK", + "collapsible": true, + "collapsed": true, + "link": { + "type": "generated-index" + } +} diff --git a/docs/cow-protocol/sdks/app-data/_category_.yml b/docs/cow-protocol/sdks/app-data/_category_.yml new file mode 100644 index 000000000..6a821b7bc --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/_category_.yml @@ -0,0 +1,2 @@ +label: "app-data" +position: 2 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/app-data/classes/MetadataApi.md b/docs/cow-protocol/sdks/app-data/classes/MetadataApi.md new file mode 100644 index 000000000..84ec1648f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/classes/MetadataApi.md @@ -0,0 +1,430 @@ +--- +id: "MetadataApi" +title: "Class: MetadataApi" +sidebar_label: "MetadataApi" +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new MetadataApi**(): [`MetadataApi`](MetadataApi.md) + +#### Returns + +[`MetadataApi`](MetadataApi.md) + +## Properties + +### appDataHexToCid + +• **appDataHexToCid**: (`appDataHex`: `string`) => `Promise`<`string`\> = `appDataHexToCid` + +#### Type declaration + +▸ (`appDataHex`): `Promise`<`string`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `appDataHex` | `string` | + +##### Returns + +`Promise`<`string`\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:22 + +___ + +### appDataHexToCidLegacy + +• **appDataHexToCidLegacy**: (`appDataHex`: `string`) => `Promise`<`string`\> = `appDataHexToCidLegacy` + +#### Type declaration + +▸ (`appDataHex`): `Promise`<`string`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `appDataHex` | `string` | + +##### Returns + +`Promise`<`string`\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:32 + +___ + +### appDataToCid + +• **appDataToCid**: (`appData`: [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)) => `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo)\>(`fullAppData`: `string`) => `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> = `appDataToCid` + +#### Type declaration + +▸ (`appData`): `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo)\> + +Calculates appDataHex without publishing file to IPFS + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion) | JSON document which will be stringified in a deterministic way to calculate the IPFS hash | + +##### Returns + +`Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo)\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +This method is intended to quickly generate the appDataHex independent +of IPFS upload/pinning + +▸ (`fullAppData`): `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +Calculates appDataHex without publishing file to IPFS + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fullAppData` | `string` | JSON string with the full appData document | + +##### Returns + +`Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +This method is intended to quickly generate the appDataHex independent +of IPFS upload/pinning + +#### Defined in + +api/index.ts:21 + +___ + +### appDataToCidLegacy + +• **appDataToCidLegacy**: (`appData`: [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)) => `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\>(`fullAppData`: `string`) => `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> = `appDataToCidLegacy` + +#### Type declaration + +▸ (`appData`): `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +Calculates appDataHex without publishing file to IPFS + +This method is intended to quickly generate the appDataHex independent +of IPFS upload/pinning + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion) | JSON document which will be stringified in a deterministic way to calculate the IPFS hash | + +##### Returns + +`Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +**`Deprecated`** + +Old way of deriving th hash + +▸ (`fullAppData`): `Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +Calculates appDataHex without publishing file to IPFS + +This method is intended to quickly generate the appDataHex independent +of IPFS upload/pinning + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `fullAppData` | `string` | JSON string with the full appData document | + +##### Returns + +`Promise`<[`IpfsHashInfo`](../modules.md#ipfshashinfo) \| `void`\> + +**`Deprecated`** + +Old way of deriving th hash + +#### Defined in + +api/index.ts:31 + +___ + +### cidToAppDataHex + +• **cidToAppDataHex**: (`cid`: `string`) => `Promise`<`string`\> = `cidToAppDataHex` + +#### Type declaration + +▸ (`cid`): `Promise`<`string`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `cid` | `string` | + +##### Returns + +`Promise`<`string`\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:23 + +___ + +### fetchDocFromAppDataHex + +• **fetchDocFromAppDataHex**: (`appDataHex`: `string`, `ipfsUri?`: `string`) => `Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> = `fetchDocFromAppDataHex` + +#### Type declaration + +▸ (`appDataHex`, `ipfsUri?`): `Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDataHex` | `string` | Derives the CID from the appData hex, and fetches and parses the document from IPFS | +| `ipfsUri?` | `string` | URL of the IPFS gateway to use for the fetch | + +##### Returns + +`Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +a parsed AppData document + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:27 + +___ + +### fetchDocFromAppDataHexLegacy + +• **fetchDocFromAppDataHexLegacy**: (`appDataHex`: `string`, `ipfsUri?`: `string`) => `Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> = `fetchDocFromAppDataHexLegacy` + +#### Type declaration + +▸ (`appDataHex`, `ipfsUri?`): `Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +Fetches the document from IPFS using the appData hex + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `appDataHex` | `string` | +| `ipfsUri?` | `string` | + +##### Returns + +`Promise`<`void` \| [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:33 + +___ + +### fetchDocFromCid + +• **fetchDocFromCid**: (`cid`: `string`, `ipfsUri`: `string`) => `Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> = `fetchDocFromCid` + +#### Type declaration + +▸ (`cid`, `ipfsUri?`): `Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +##### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `cid` | `string` | `undefined` | +| `ipfsUri` | `string` | `DEFAULT_IPFS_READ_URI` | + +##### Returns + +`Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +**`Deprecated`** + +AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + +#### Defined in + +api/index.ts:26 + +___ + +### generateAppDataDoc + +• **generateAppDataDoc**: (`params?`: `Partial`<`Omit`<[`AppDataRootSchema`](../interfaces/v1_3_0.AppDataRootSchema.md), ``"version"``\>\>) => `Promise`<[`LatestAppDataDocVersion`](../modules.md#latestappdatadocversion)\> = `generateAppDataDoc` + +#### Type declaration + +▸ (`params?`): `Promise`<[`LatestAppDataDocVersion`](../modules.md#latestappdatadocversion)\> + +Creates an appData document using the latest specification of the format + +Without params creates a default minimum appData doc +Optionally creates metadata docs + +Example of result: +{ + "appCode": "CoW Swap", + "environment": "local", + "metadata": { + "quote": { + "slippageBips": 50 + }, + "orderClass": { + "orderClass": "market" + } + }, + "version": "1.2.0" +} + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `params?` | `Partial`<`Omit`<[`AppDataRootSchema`](../interfaces/v1_3_0.AppDataRootSchema.md), ``"version"``\>\> | + +##### Returns + +`Promise`<[`LatestAppDataDocVersion`](../modules.md#latestappdatadocversion)\> + +#### Defined in + +api/index.ts:15 + +___ + +### getAppDataSchema + +• **getAppDataSchema**: (`version`: `string`) => `Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> = `getAppDataSchema` + +#### Type declaration + +▸ (`version`): `Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +Wrapper around @cowprotocol/app-data getAppDataSchema + +Returns the appData schema for given version, if any +Throws CowError when version doesn't exist + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `version` | `string` | + +##### Returns + +`Promise`<[`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)\> + +#### Defined in + +api/index.ts:14 + +___ + +### uploadMetadataDocToIpfsLegacy + +• **uploadMetadataDocToIpfsLegacy**: (`appDataDoc`: [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion), `ipfsConfig`: [`Ipfs`](../interfaces/Ipfs.md)) => `Promise`<`IpfsUploadResult` \| `void`\> = `uploadMetadataDocToIpfsLegacy` + +#### Type declaration + +▸ (`appDataDoc`, `ipfsConfig`): `Promise`<`IpfsUploadResult` \| `void`\> + +Uploads a appDocument to IPFS + +##### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDataDoc` | [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion) | Document to upload | +| `ipfsConfig` | [`Ipfs`](../interfaces/Ipfs.md) | keys to access the IPFS API | + +##### Returns + +`Promise`<`IpfsUploadResult` \| `void`\> + +the IPFS CID v0 of the content + +**`Deprecated`** + +Pinata IPFS automatically pins the uploaded document using some implicity encoding and hashing algorithm. This method is not used anymore to make it more explicit these parameters and therefore less depednent on the default impleemntation of Pinata + +#### Defined in + +api/index.ts:30 + +___ + +### validateAppDataDoc + +• **validateAppDataDoc**: (`appDataDoc`: [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion)) => `Promise`<[`ValidationResult`](../modules.md#validationresult)\> = `validateAppDataDoc` + +#### Type declaration + +▸ (`appDataDoc`): `Promise`<[`ValidationResult`](../modules.md#validationresult)\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `appDataDoc` | [`AnyAppDataDocVersion`](../modules.md#anyappdatadocversion) | + +##### Returns + +`Promise`<[`ValidationResult`](../modules.md#validationresult)\> + +#### Defined in + +api/index.ts:16 diff --git a/docs/cow-protocol/sdks/app-data/classes/_category_.yml b/docs/cow-protocol/sdks/app-data/classes/_category_.yml new file mode 100644 index 000000000..55c7980a4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/classes/_category_.yml @@ -0,0 +1,2 @@ +label: "Classes" +position: 3 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/app-data/index.md b/docs/cow-protocol/sdks/app-data/index.md new file mode 100644 index 000000000..6ce3b8ae4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/index.md @@ -0,0 +1,157 @@ +--- +id: "index" +title: "@cowprotocol/app-data" +sidebar_label: "Readme" +sidebar_position: 0 +custom_edit_url: null +--- + +# @cowprotocol/app-data + +AppData schema definitions + +These schemas are used in the data encoded on `appData` field for CowProtocol orders. + +For more details, check [the docs](https://docs.cow.fi/cow-sdk/order-meta-data-appdata). + +## Installation + +```bash +yarn add @cowprotocol/app-data +``` + +## Usage + +```typescript +import { MetadataApi } from '@cowprotocol/app-data' + +export const metadataApi = new MetadataApi() + +const appCode = 'YOUR_APP_CODE' +const environment = 'prod' +const referrer = { address: `REFERRER_ADDRESS` } + +const quote = { slippageBips: 1 } // Slippage percent, it's 0 to 100 +const orderClass = { orderClass: 'market' } // "market" | "limit" | "liquidity" + +const appDataDoc = await metadataApi.generateAppDataDoc({ + appCode, + environment, + metadata: { + referrer, + quote, + orderClass, + }, +}) +``` + +### Schemas + +Schemas are exposed as json files, where the version is the file name: + +```js +// Getting the version v0.4.0 +const schema = require('@cowprotocol/app-data/schemas/v0.4.0.json') + +// Now you can for example run validation against a schema +``` + +### Type definitions + +There are also type definitions + +```js +import { v0_4_0 } from '@cowprotocol/app-data' + +// Note: this example is +function createAppDataV0_4_0(appCode: v0_4_0.AppCode, metadata: v0_4_0.Metadata): v0_4_0.AppDataRootSchema { + return { + version: '0.4.0', + appCode, + metadata, + } +} +``` + +### Constants + +The latest version names are exposed as constants + +```js +import { + LATEST_APP_DATA_VERSION, + LATEST_QUOTE_METADATA_VERSION, + LATEST_REFERRER_METADATA_VERSION, +} from '@cowprotocol/app-data' +``` + +### Utils + +_Get appData schema_ + +To get a schema definition by version + +```js +import { getAppDataSchema } from '@cowprotocol/app-data' + +const schema = getAppDataSchema('0.1.0') +``` + +It'll throw if the version does not exist + +_Validate appDataDoc_ + +To validate a document, pass it to `validateAppDataDoc`. +It'll return an object with a boolean indicating `success` and `errors`, if any. +The version to validate against will be taken from the doc itself. + +```js +import { validateAppDataDoc } from '@cowprotocol/app-data' + +let doc = { version: '0.4.0', metadata: {} } + +let result = await validateAppDataDoc(doc) +console.log(result) // { success: true } + +doc = { version: '0.0.0', metadata: {} } + +result = await validateAppDataDoc(doc) +// Contrary to `getAppDataSchema`, invalid or non-existing schemas won't throw +console.log(result) // { success: false, errors: 'AppData version 0.0.0 doesn\'t exist'} +``` + +# Contribute + +Fork the repo so you can create a new PR. Then: + +1. Add a new version for the schema using the [semver](https://semver.org/) convention + +- Just duplicate the latest version i.e. `src/schemas/.json` to `src/schemas/.json` + +2. If you are adding a new meta-data + +- We create one directory per schema, so we can keep track of all versions. Create the directory and initial schema definition: `/v0.1.0.json` +- Add it to the main schema you just created in step 1: `"$ref": "/v0.1.0.json#"`. +- Example: + +3. If you are modifying an existing meta-data + +- Version it using the [semver](https://semver.org/) convention +- You will need to create the new file for the meta-data schema: `/.json` +- Update it in the main schema you just created in step 1: Set it to `"": { "$ref": "/.json#" }` + +4. Modify the `compile.ts` script + +- Add the exported constant with the latest version in, and the new metadata: + - For example: + +4. Generate the typescript types + +- Run `yarn build` + +5. Make a test focusing on the new or modified meta-data: + +- +- Don't forget to use the right version of the schema in your test: + +6. Create the PR and document it together with the motivation for the changes diff --git a/docs/cow-protocol/sdks/app-data/interfaces/Ipfs.md b/docs/cow-protocol/sdks/app-data/interfaces/Ipfs.md new file mode 100644 index 000000000..f732a08c9 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/Ipfs.md @@ -0,0 +1,57 @@ +--- +id: "Ipfs" +title: "Interface: Ipfs" +sidebar_label: "Ipfs" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### pinataApiKey + +• `Optional` **pinataApiKey**: `string` + +#### Defined in + +types.ts:34 + +___ + +### pinataApiSecret + +• `Optional` **pinataApiSecret**: `string` + +#### Defined in + +types.ts:35 + +___ + +### readUri + +• `Optional` **readUri**: `string` + +#### Defined in + +types.ts:33 + +___ + +### uri + +• `Optional` **uri**: `string` + +#### Defined in + +types.ts:31 + +___ + +### writeUri + +• `Optional` **writeUri**: `string` + +#### Defined in + +types.ts:32 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/_category_.yml b/docs/cow-protocol/sdks/app-data/interfaces/_category_.yml new file mode 100644 index 000000000..43bec88cf --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/_category_.yml @@ -0,0 +1,2 @@ +label: "Interfaces" +position: 4 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.AppDataRootSchema.md new file mode 100644 index 000000000..762c0957a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "latest.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:111 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:112 + +___ + +### metadata + +• **metadata**: [`Metadata`](latest.Metadata.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:113 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:110 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.CoWHook.md new file mode 100644 index 000000000..41b3108a7 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.CoWHook.md @@ -0,0 +1,48 @@ +--- +id: "latest.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:156 + +___ + +### dappId + +• `Optional` **dappId**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:158 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:157 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:155 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.Metadata.md new file mode 100644 index 000000000..8eaf92169 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.Metadata.md @@ -0,0 +1,100 @@ +--- +id: "latest.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](latest.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:124 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](latest.OrderClass.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:123 + +___ + +### partnerFee + +• `Optional` **partnerFee**: [`PartnerFee`](latest.PartnerFee.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:126 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](latest.Quote.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:122 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](latest.Referrer.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:120 + +___ + +### replacedOrder + +• `Optional` **replacedOrder**: [`ReplacedOrder`](latest.ReplacedOrder.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:127 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:119 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](latest.UTMCodes.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:121 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](latest.Widget.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:125 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderClass.md new file mode 100644 index 000000000..877843f5d --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "latest.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/latest.md#orderclass1) + +#### Defined in + +generatedTypes/v1.3.0.ts:144 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderInteractionHooks.md new file mode 100644 index 000000000..6e6f98e5d --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "latest.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/latest.md#posthooks) + +#### Defined in + +generatedTypes/v1.3.0.ts:152 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/latest.md#prehooks) + +#### Defined in + +generatedTypes/v1.3.0.ts:151 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:150 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.PartnerFee.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.PartnerFee.md new file mode 100644 index 000000000..3f9b4555b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.PartnerFee.md @@ -0,0 +1,28 @@ +--- +id: "latest.PartnerFee" +title: "Interface: PartnerFee" +sidebar_label: "PartnerFee" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).PartnerFee + +## Properties + +### bps + +• **bps**: `number` + +#### Defined in + +generatedTypes/v1.3.0.ts:165 + +___ + +### recipient + +• **recipient**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:166 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.Quote.md new file mode 100644 index 000000000..ba9d8cd29 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.Quote.md @@ -0,0 +1,28 @@ +--- +id: "latest.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `number` + +#### Defined in + +generatedTypes/v1.3.0.ts:140 + +___ + +### smartSlippage + +• `Optional` **smartSlippage**: `boolean` + +#### Defined in + +generatedTypes/v1.3.0.ts:141 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.Referrer.md new file mode 100644 index 000000000..9eaf5dcb1 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "latest.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:130 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.ReplacedOrder.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.ReplacedOrder.md new file mode 100644 index 000000000..4f80cbcdc --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.ReplacedOrder.md @@ -0,0 +1,18 @@ +--- +id: "latest.ReplacedOrder" +title: "Interface: ReplacedOrder" +sidebar_label: "ReplacedOrder" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).ReplacedOrder + +## Properties + +### uid + +• **uid**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:169 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.UTMCodes.md new file mode 100644 index 000000000..34db42cca --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "latest.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:135 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:136 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:134 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:133 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:137 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/latest.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/latest.Widget.md new file mode 100644 index 000000000..072a5b25e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/latest.Widget.md @@ -0,0 +1,28 @@ +--- +id: "latest.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[latest](../namespaces/latest.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:161 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:162 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.AppDataRootSchema.md new file mode 100644 index 000000000..b708e0001 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v0_10_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:83 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:84 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_10_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:85 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:82 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.CoWHook.md new file mode 100644 index 000000000..1a8e1be64 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v0_10_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:124 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:125 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:123 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Metadata.md new file mode 100644 index 000000000..a00de7222 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Metadata.md @@ -0,0 +1,70 @@ +--- +id: "v0_10_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v0_10_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:96 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_10_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:95 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_10_0.Quote.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:94 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_10_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:92 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:91 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_10_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.10.0.ts:93 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderClass.md new file mode 100644 index 000000000..e7ca94934 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v0_10_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_10_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.10.0.ts:112 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderInteractionHooks.md new file mode 100644 index 000000000..4bd1f984b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v0_10_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v0_10_0.md#posthooks) + +#### Defined in + +generatedTypes/v0.10.0.ts:120 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v0_10_0.md#prehooks) + +#### Defined in + +generatedTypes/v0.10.0.ts:119 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:118 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Quote.md new file mode 100644 index 000000000..31b35e187 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v0_10_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:109 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Referrer.md new file mode 100644 index 000000000..2874a3c0b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v0_10_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:99 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.UTMCodes.md new file mode 100644 index 000000000..26a0e011a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_10_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v0_10_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_10\_0](../namespaces/v0_10_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:104 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:105 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:103 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:102 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:106 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.AppDataRootSchema.md new file mode 100644 index 000000000..59b713257 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v0_11_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:91 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:92 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_11_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:93 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:90 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.CoWHook.md new file mode 100644 index 000000000..fd6e38775 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v0_11_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:133 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:134 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:132 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Metadata.md new file mode 100644 index 000000000..f39c6d93a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Metadata.md @@ -0,0 +1,80 @@ +--- +id: "v0_11_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v0_11_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:104 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_11_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:103 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_11_0.Quote.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:102 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_11_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:100 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:99 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_11_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:101 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](v0_11_0.Widget.md) + +#### Defined in + +generatedTypes/v0.11.0.ts:105 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderClass.md new file mode 100644 index 000000000..d59ccce9a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v0_11_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_11_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.11.0.ts:121 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderInteractionHooks.md new file mode 100644 index 000000000..318a2ff44 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v0_11_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v0_11_0.md#posthooks) + +#### Defined in + +generatedTypes/v0.11.0.ts:129 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v0_11_0.md#prehooks) + +#### Defined in + +generatedTypes/v0.11.0.ts:128 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:127 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Quote.md new file mode 100644 index 000000000..39a692f90 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v0_11_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:118 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Referrer.md new file mode 100644 index 000000000..e59f7c956 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v0_11_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:108 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.UTMCodes.md new file mode 100644 index 000000000..eb8dee7f1 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v0_11_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:113 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:114 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:112 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:111 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:115 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Widget.md new file mode 100644 index 000000000..9da42fd2c --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_11_0.Widget.md @@ -0,0 +1,28 @@ +--- +id: "v0_11_0.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[v0\_11\_0](../namespaces/v0_11_0.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:137 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:138 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.AppDataRootSchema.md new file mode 100644 index 000000000..3c6f7932f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.AppDataRootSchema.md @@ -0,0 +1,44 @@ +--- +id: "v0_1_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_1\_0](../namespaces/v0_1_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.1.0.ts:27 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_1_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.1.0.ts:28 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.1.0.ts:26 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Metadata.md new file mode 100644 index 000000000..a8b05cfc5 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Metadata.md @@ -0,0 +1,24 @@ +--- +id: "v0_1_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_1\_0](../namespaces/v0_1_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_1_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.1.0.ts:35 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Referrer.md new file mode 100644 index 000000000..3eff5a06f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_1_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_1_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_1\_0](../namespaces/v0_1_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.1.0.ts:40 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.1.0.ts:39 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.AppDataRootSchema.md new file mode 100644 index 000000000..f8a32a85f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.AppDataRootSchema.md @@ -0,0 +1,44 @@ +--- +id: "v0_2_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_2\_0](../namespaces/v0_2_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:34 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_2_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.2.0.ts:35 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:33 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Metadata.md new file mode 100644 index 000000000..74c809302 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Metadata.md @@ -0,0 +1,34 @@ +--- +id: "v0_2_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_2\_0](../namespaces/v0_2_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### quote + +• `Optional` **quote**: [`Quote`](v0_2_0.Quote.md) + +#### Defined in + +generatedTypes/v0.2.0.ts:43 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_2_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.2.0.ts:42 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Quote.md new file mode 100644 index 000000000..052769de8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Quote.md @@ -0,0 +1,52 @@ +--- +id: "v0_2_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_2\_0](../namespaces/v0_2_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### buyAmount + +• **buyAmount**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:54 + +___ + +### id + +• `Optional` **id**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:52 + +___ + +### sellAmount + +• **sellAmount**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:53 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:55 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Referrer.md new file mode 100644 index 000000000..1fa950517 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_2_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_2_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_2\_0](../namespaces/v0_2_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:48 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:47 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.AppDataRootSchema.md new file mode 100644 index 000000000..907a74aca --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.AppDataRootSchema.md @@ -0,0 +1,54 @@ +--- +id: "v0_3_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_3\_0](../namespaces/v0_3_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:38 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:39 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_3_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.3.0.ts:40 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:37 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Metadata.md new file mode 100644 index 000000000..1e5e60311 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Metadata.md @@ -0,0 +1,34 @@ +--- +id: "v0_3_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_3\_0](../namespaces/v0_3_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### quote + +• `Optional` **quote**: [`Quote`](v0_3_0.Quote.md) + +#### Defined in + +generatedTypes/v0.3.0.ts:48 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_3_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.3.0.ts:47 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Quote.md new file mode 100644 index 000000000..2c2d4a419 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Quote.md @@ -0,0 +1,52 @@ +--- +id: "v0_3_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_3\_0](../namespaces/v0_3_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### buyAmount + +• **buyAmount**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:59 + +___ + +### id + +• `Optional` **id**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:57 + +___ + +### sellAmount + +• **sellAmount**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:58 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:60 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Referrer.md new file mode 100644 index 000000000..e7f22d861 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_3_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_3_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_3\_0](../namespaces/v0_3_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:53 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:52 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.AppDataRootSchema.md new file mode 100644 index 000000000..6849cf92c --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.AppDataRootSchema.md @@ -0,0 +1,54 @@ +--- +id: "v0_4_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_4\_0](../namespaces/v0_4_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:39 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:40 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_4_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.4.0.ts:41 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:38 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Metadata.md new file mode 100644 index 000000000..10244ce2a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Metadata.md @@ -0,0 +1,34 @@ +--- +id: "v0_4_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_4\_0](../namespaces/v0_4_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### quote + +• `Optional` **quote**: [`Quote`](v0_4_0.Quote.md) + +#### Defined in + +generatedTypes/v0.4.0.ts:49 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_4_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.4.0.ts:48 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Quote.md new file mode 100644 index 000000000..50ae77980 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Quote.md @@ -0,0 +1,32 @@ +--- +id: "v0_4_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_4\_0](../namespaces/v0_4_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:59 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:58 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Referrer.md new file mode 100644 index 000000000..903273e0e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_4_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_4_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_4\_0](../namespaces/v0_4_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:54 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:53 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.AppDataRootSchema.md new file mode 100644 index 000000000..abd85e193 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.AppDataRootSchema.md @@ -0,0 +1,54 @@ +--- +id: "v0_5_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_5\_0](../namespaces/v0_5_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:47 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:48 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_5_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.5.0.ts:49 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:46 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Metadata.md new file mode 100644 index 000000000..24354ecee --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Metadata.md @@ -0,0 +1,44 @@ +--- +id: "v0_5_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_5\_0](../namespaces/v0_5_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_5_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.5.0.ts:58 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_5_0.Quote.md) + +#### Defined in + +generatedTypes/v0.5.0.ts:57 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_5_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.5.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.OrderClass.md new file mode 100644 index 000000000..85b1341b3 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.OrderClass.md @@ -0,0 +1,32 @@ +--- +id: "v0_5_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_5\_0](../namespaces/v0_5_0.md).OrderClass + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_5_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.5.0.ts:73 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:72 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Quote.md new file mode 100644 index 000000000..f0f7007ee --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Quote.md @@ -0,0 +1,32 @@ +--- +id: "v0_5_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_5\_0](../namespaces/v0_5_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:68 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:67 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Referrer.md new file mode 100644 index 000000000..0baa78578 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_5_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_5_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_5\_0](../namespaces/v0_5_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:63 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:62 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.AppDataRootSchema.md new file mode 100644 index 000000000..7d3f11fc2 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.AppDataRootSchema.md @@ -0,0 +1,54 @@ +--- +id: "v0_6_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:67 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:68 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_6_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.6.0.ts:69 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:66 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Metadata.md new file mode 100644 index 000000000..d6a36e7ca --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Metadata.md @@ -0,0 +1,54 @@ +--- +id: "v0_6_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_6_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.6.0.ts:79 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_6_0.Quote.md) + +#### Defined in + +generatedTypes/v0.6.0.ts:78 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_6_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.6.0.ts:76 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_6_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.6.0.ts:77 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.OrderClass.md new file mode 100644 index 000000000..a45635dd6 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.OrderClass.md @@ -0,0 +1,32 @@ +--- +id: "v0_6_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).OrderClass + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_6_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.6.0.ts:102 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:101 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Quote.md new file mode 100644 index 000000000..9cdc67e44 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Quote.md @@ -0,0 +1,32 @@ +--- +id: "v0_6_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:97 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:96 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Referrer.md new file mode 100644 index 000000000..fa1e0193a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_6_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:84 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:83 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.UTMCodes.md new file mode 100644 index 000000000..d32e74fe5 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_6_0.UTMCodes.md @@ -0,0 +1,62 @@ +--- +id: "v0_6_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_6\_0](../namespaces/v0_6_0.md).UTMCodes + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:90 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:91 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:89 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:88 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:92 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.AppDataRootSchema.md new file mode 100644 index 000000000..deee6a4c0 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.AppDataRootSchema.md @@ -0,0 +1,54 @@ +--- +id: "v0_7_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:67 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:68 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_7_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.7.0.ts:69 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:66 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Metadata.md new file mode 100644 index 000000000..87086692e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Metadata.md @@ -0,0 +1,54 @@ +--- +id: "v0_7_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_7_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.7.0.ts:79 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_7_0.Quote.md) + +#### Defined in + +generatedTypes/v0.7.0.ts:78 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_7_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.7.0.ts:76 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_7_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.7.0.ts:77 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.OrderClass.md new file mode 100644 index 000000000..dc134066b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.OrderClass.md @@ -0,0 +1,32 @@ +--- +id: "v0_7_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).OrderClass + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_7_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.7.0.ts:102 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:101 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Quote.md new file mode 100644 index 000000000..5d3697b5f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Quote.md @@ -0,0 +1,32 @@ +--- +id: "v0_7_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).Quote + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:97 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:96 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Referrer.md new file mode 100644 index 000000000..2b73dbb69 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.Referrer.md @@ -0,0 +1,32 @@ +--- +id: "v0_7_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).Referrer + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:84 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:83 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.UTMCodes.md new file mode 100644 index 000000000..5450bcace --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_7_0.UTMCodes.md @@ -0,0 +1,62 @@ +--- +id: "v0_7_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_7\_0](../namespaces/v0_7_0.md).UTMCodes + +## Indexable + +▪ [k: `string`]: `unknown` + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:90 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:91 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:89 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:88 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:92 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.AppDataRootSchema.md new file mode 100644 index 000000000..7a78b43c8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v0_8_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:55 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:56 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_8_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.8.0.ts:57 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:54 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Metadata.md new file mode 100644 index 000000000..58ef0d1b1 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Metadata.md @@ -0,0 +1,50 @@ +--- +id: "v0_8_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_8_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.8.0.ts:66 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_8_0.Quote.md) + +#### Defined in + +generatedTypes/v0.8.0.ts:65 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_8_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.8.0.ts:63 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_8_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.8.0.ts:64 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.OrderClass.md new file mode 100644 index 000000000..521a8f30c --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v0_8_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_8_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.8.0.ts:82 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Quote.md new file mode 100644 index 000000000..eef53b642 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v0_8_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:79 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Referrer.md new file mode 100644 index 000000000..76dbaa86f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v0_8_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:69 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.UTMCodes.md new file mode 100644 index 000000000..90b958bf8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_8_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v0_8_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_8\_0](../namespaces/v0_8_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:74 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:75 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:73 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:72 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:76 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.AppDataRootSchema.md new file mode 100644 index 000000000..0343fb5ee --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v0_9_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:79 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:80 + +___ + +### metadata + +• **metadata**: [`Metadata`](v0_9_0.Metadata.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:81 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:78 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.CoWHook.md new file mode 100644 index 000000000..9c56bfebf --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v0_9_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:119 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:120 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:118 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Metadata.md new file mode 100644 index 000000000..5c3fc9abd --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Metadata.md @@ -0,0 +1,60 @@ +--- +id: "v0_9_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v0_9_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:91 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v0_9_0.OrderClass.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:90 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v0_9_0.Quote.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:89 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v0_9_0.Referrer.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:87 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v0_9_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v0.9.0.ts:88 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderClass.md new file mode 100644 index 000000000..4db1808a4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v0_9_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v0_9_0.md#orderclass1) + +#### Defined in + +generatedTypes/v0.9.0.ts:107 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderInteractionHooks.md new file mode 100644 index 000000000..377cafe5e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v0_9_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v0_9_0.md#posthooks) + +#### Defined in + +generatedTypes/v0.9.0.ts:115 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v0_9_0.md#prehooks) + +#### Defined in + +generatedTypes/v0.9.0.ts:114 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:113 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Quote.md new file mode 100644 index 000000000..ee642008a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v0_9_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:104 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Referrer.md new file mode 100644 index 000000000..5dd6d16e7 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v0_9_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:94 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.UTMCodes.md new file mode 100644 index 000000000..8d1bf0784 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v0_9_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v0_9_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v0\_9\_0](../namespaces/v0_9_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:99 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:100 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:98 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:97 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:101 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.AppDataRootSchema.md new file mode 100644 index 000000000..349ce2be6 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v1_0_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:99 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:100 + +___ + +### metadata + +• **metadata**: [`Metadata`](v1_0_0.Metadata.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:101 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:98 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.CoWHook.md new file mode 100644 index 000000000..3ceb7e1ad --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v1_0_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:142 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:143 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:141 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Metadata.md new file mode 100644 index 000000000..f6a99b052 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Metadata.md @@ -0,0 +1,90 @@ +--- +id: "v1_0_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v1_0_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:112 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v1_0_0.OrderClass.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:111 + +___ + +### partnerFee + +• `Optional` **partnerFee**: [`PartnerFee`](v1_0_0.PartnerFee.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:114 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v1_0_0.Quote.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:110 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v1_0_0.Referrer.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:108 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:107 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v1_0_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:109 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](v1_0_0.Widget.md) + +#### Defined in + +generatedTypes/v1.0.0.ts:113 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderClass.md new file mode 100644 index 000000000..f1245e6bc --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v1_0_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v1_0_0.md#orderclass1) + +#### Defined in + +generatedTypes/v1.0.0.ts:130 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderInteractionHooks.md new file mode 100644 index 000000000..a74bab0d4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v1_0_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v1_0_0.md#posthooks) + +#### Defined in + +generatedTypes/v1.0.0.ts:138 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v1_0_0.md#prehooks) + +#### Defined in + +generatedTypes/v1.0.0.ts:137 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:136 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.PartnerFee.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.PartnerFee.md new file mode 100644 index 000000000..4abd5fc75 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.PartnerFee.md @@ -0,0 +1,28 @@ +--- +id: "v1_0_0.PartnerFee" +title: "Interface: PartnerFee" +sidebar_label: "PartnerFee" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).PartnerFee + +## Properties + +### bps + +• **bps**: `number` + +#### Defined in + +generatedTypes/v1.0.0.ts:150 + +___ + +### recipient + +• **recipient**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:151 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Quote.md new file mode 100644 index 000000000..04506bee4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v1_0_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `number` + +#### Defined in + +generatedTypes/v1.0.0.ts:127 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Referrer.md new file mode 100644 index 000000000..5cdb1209e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v1_0_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:117 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.UTMCodes.md new file mode 100644 index 000000000..2b4dcbc8c --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v1_0_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:122 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:123 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:121 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:120 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:124 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Widget.md new file mode 100644 index 000000000..771a17ae8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_0_0.Widget.md @@ -0,0 +1,28 @@ +--- +id: "v1_0_0.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[v1\_0\_0](../namespaces/v1_0_0.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:146 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:147 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.AppDataRootSchema.md new file mode 100644 index 000000000..d98cffe3a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v1_1_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:103 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:104 + +___ + +### metadata + +• **metadata**: [`Metadata`](v1_1_0.Metadata.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:105 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:102 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.CoWHook.md new file mode 100644 index 000000000..87e21d6e9 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v1_1_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:147 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:148 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:146 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Metadata.md new file mode 100644 index 000000000..fedc50bef --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Metadata.md @@ -0,0 +1,100 @@ +--- +id: "v1_1_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v1_1_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:116 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v1_1_0.OrderClass.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:115 + +___ + +### partnerFee + +• `Optional` **partnerFee**: [`PartnerFee`](v1_1_0.PartnerFee.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:118 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v1_1_0.Quote.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:114 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v1_1_0.Referrer.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:112 + +___ + +### replacedOrder + +• `Optional` **replacedOrder**: [`ReplacedOrder`](v1_1_0.ReplacedOrder.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:119 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:111 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v1_1_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:113 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](v1_1_0.Widget.md) + +#### Defined in + +generatedTypes/v1.1.0.ts:117 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderClass.md new file mode 100644 index 000000000..fe8b586b5 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v1_1_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v1_1_0.md#orderclass1) + +#### Defined in + +generatedTypes/v1.1.0.ts:135 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderInteractionHooks.md new file mode 100644 index 000000000..c4ba1dd19 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v1_1_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v1_1_0.md#posthooks) + +#### Defined in + +generatedTypes/v1.1.0.ts:143 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v1_1_0.md#prehooks) + +#### Defined in + +generatedTypes/v1.1.0.ts:142 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:141 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.PartnerFee.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.PartnerFee.md new file mode 100644 index 000000000..357ccd110 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.PartnerFee.md @@ -0,0 +1,28 @@ +--- +id: "v1_1_0.PartnerFee" +title: "Interface: PartnerFee" +sidebar_label: "PartnerFee" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).PartnerFee + +## Properties + +### bps + +• **bps**: `number` + +#### Defined in + +generatedTypes/v1.1.0.ts:155 + +___ + +### recipient + +• **recipient**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:156 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Quote.md new file mode 100644 index 000000000..521d8db93 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Quote.md @@ -0,0 +1,18 @@ +--- +id: "v1_1_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `number` + +#### Defined in + +generatedTypes/v1.1.0.ts:132 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Referrer.md new file mode 100644 index 000000000..bf78d422e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v1_1_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:122 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.ReplacedOrder.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.ReplacedOrder.md new file mode 100644 index 000000000..98cd41287 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.ReplacedOrder.md @@ -0,0 +1,18 @@ +--- +id: "v1_1_0.ReplacedOrder" +title: "Interface: ReplacedOrder" +sidebar_label: "ReplacedOrder" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).ReplacedOrder + +## Properties + +### uid + +• **uid**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:159 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.UTMCodes.md new file mode 100644 index 000000000..fb145b8c0 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v1_1_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:127 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:128 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:126 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:125 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:129 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Widget.md new file mode 100644 index 000000000..85b75f363 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_1_0.Widget.md @@ -0,0 +1,28 @@ +--- +id: "v1_1_0.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[v1\_1\_0](../namespaces/v1_1_0.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:151 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:152 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.AppDataRootSchema.md new file mode 100644 index 000000000..947c0c813 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v1_2_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:107 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:108 + +___ + +### metadata + +• **metadata**: [`Metadata`](v1_2_0.Metadata.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:109 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:106 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.CoWHook.md new file mode 100644 index 000000000..514831992 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.CoWHook.md @@ -0,0 +1,38 @@ +--- +id: "v1_2_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:152 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:153 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:151 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Metadata.md new file mode 100644 index 000000000..68d5e3537 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Metadata.md @@ -0,0 +1,100 @@ +--- +id: "v1_2_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v1_2_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:120 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v1_2_0.OrderClass.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:119 + +___ + +### partnerFee + +• `Optional` **partnerFee**: [`PartnerFee`](v1_2_0.PartnerFee.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:122 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v1_2_0.Quote.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:118 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v1_2_0.Referrer.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:116 + +___ + +### replacedOrder + +• `Optional` **replacedOrder**: [`ReplacedOrder`](v1_2_0.ReplacedOrder.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:123 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:115 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v1_2_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:117 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](v1_2_0.Widget.md) + +#### Defined in + +generatedTypes/v1.2.0.ts:121 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderClass.md new file mode 100644 index 000000000..98bf8b8b3 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v1_2_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v1_2_0.md#orderclass1) + +#### Defined in + +generatedTypes/v1.2.0.ts:140 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderInteractionHooks.md new file mode 100644 index 000000000..c84c3cc87 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v1_2_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v1_2_0.md#posthooks) + +#### Defined in + +generatedTypes/v1.2.0.ts:148 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v1_2_0.md#prehooks) + +#### Defined in + +generatedTypes/v1.2.0.ts:147 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:146 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.PartnerFee.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.PartnerFee.md new file mode 100644 index 000000000..d5e60e73f --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.PartnerFee.md @@ -0,0 +1,28 @@ +--- +id: "v1_2_0.PartnerFee" +title: "Interface: PartnerFee" +sidebar_label: "PartnerFee" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).PartnerFee + +## Properties + +### bps + +• **bps**: `number` + +#### Defined in + +generatedTypes/v1.2.0.ts:160 + +___ + +### recipient + +• **recipient**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:161 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Quote.md new file mode 100644 index 000000000..22bfcf3ec --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Quote.md @@ -0,0 +1,28 @@ +--- +id: "v1_2_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `number` + +#### Defined in + +generatedTypes/v1.2.0.ts:136 + +___ + +### smartSlippage + +• `Optional` **smartSlippage**: `boolean` + +#### Defined in + +generatedTypes/v1.2.0.ts:137 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Referrer.md new file mode 100644 index 000000000..daa88ac6b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v1_2_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:126 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.ReplacedOrder.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.ReplacedOrder.md new file mode 100644 index 000000000..b0885943a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.ReplacedOrder.md @@ -0,0 +1,18 @@ +--- +id: "v1_2_0.ReplacedOrder" +title: "Interface: ReplacedOrder" +sidebar_label: "ReplacedOrder" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).ReplacedOrder + +## Properties + +### uid + +• **uid**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:164 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.UTMCodes.md new file mode 100644 index 000000000..e3a4395e9 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v1_2_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:131 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:132 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:130 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:129 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:133 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Widget.md new file mode 100644 index 000000000..56d4fd4c5 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_2_0.Widget.md @@ -0,0 +1,28 @@ +--- +id: "v1_2_0.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[v1\_2\_0](../namespaces/v1_2_0.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:156 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:157 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.AppDataRootSchema.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.AppDataRootSchema.md new file mode 100644 index 000000000..bd1255390 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.AppDataRootSchema.md @@ -0,0 +1,50 @@ +--- +id: "v1_3_0.AppDataRootSchema" +title: "Interface: AppDataRootSchema" +sidebar_label: "AppDataRootSchema" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).AppDataRootSchema + +Metadata JSON document for adding information to orders. + +## Properties + +### appCode + +• `Optional` **appCode**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:111 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:112 + +___ + +### metadata + +• **metadata**: [`Metadata`](v1_3_0.Metadata.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:113 + +___ + +### version + +• **version**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:110 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.CoWHook.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.CoWHook.md new file mode 100644 index 000000000..d26ff6a49 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.CoWHook.md @@ -0,0 +1,48 @@ +--- +id: "v1_3_0.CoWHook" +title: "Interface: CoWHook" +sidebar_label: "CoWHook" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).CoWHook + +## Properties + +### callData + +• **callData**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:156 + +___ + +### dappId + +• `Optional` **dappId**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:158 + +___ + +### gasLimit + +• **gasLimit**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:157 + +___ + +### target + +• **target**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:155 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Metadata.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Metadata.md new file mode 100644 index 000000000..e56e20220 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Metadata.md @@ -0,0 +1,100 @@ +--- +id: "v1_3_0.Metadata" +title: "Interface: Metadata" +sidebar_label: "Metadata" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).Metadata + +Each metadata will specify one aspect of the order. + +## Properties + +### hooks + +• `Optional` **hooks**: [`OrderInteractionHooks`](v1_3_0.OrderInteractionHooks.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:124 + +___ + +### orderClass + +• `Optional` **orderClass**: [`OrderClass`](v1_3_0.OrderClass.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:123 + +___ + +### partnerFee + +• `Optional` **partnerFee**: [`PartnerFee`](v1_3_0.PartnerFee.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:126 + +___ + +### quote + +• `Optional` **quote**: [`Quote`](v1_3_0.Quote.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:122 + +___ + +### referrer + +• `Optional` **referrer**: [`Referrer`](v1_3_0.Referrer.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:120 + +___ + +### replacedOrder + +• `Optional` **replacedOrder**: [`ReplacedOrder`](v1_3_0.ReplacedOrder.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:127 + +___ + +### signer + +• `Optional` **signer**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:119 + +___ + +### utm + +• `Optional` **utm**: [`UTMCodes`](v1_3_0.UTMCodes.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:121 + +___ + +### widget + +• `Optional` **widget**: [`Widget`](v1_3_0.Widget.md) + +#### Defined in + +generatedTypes/v1.3.0.ts:125 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderClass.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderClass.md new file mode 100644 index 000000000..b339fea55 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderClass.md @@ -0,0 +1,18 @@ +--- +id: "v1_3_0.OrderClass" +title: "Interface: OrderClass" +sidebar_label: "OrderClass" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).OrderClass + +## Properties + +### orderClass + +• **orderClass**: [`OrderClass1`](../namespaces/v1_3_0.md#orderclass1) + +#### Defined in + +generatedTypes/v1.3.0.ts:144 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderInteractionHooks.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderInteractionHooks.md new file mode 100644 index 000000000..cd4584fc4 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.OrderInteractionHooks.md @@ -0,0 +1,40 @@ +--- +id: "v1_3_0.OrderInteractionHooks" +title: "Interface: OrderInteractionHooks" +sidebar_label: "OrderInteractionHooks" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).OrderInteractionHooks + +Optional Pre and Post order interaction hooks attached to a single order + +## Properties + +### post + +• `Optional` **post**: [`PostHooks`](../namespaces/v1_3_0.md#posthooks) + +#### Defined in + +generatedTypes/v1.3.0.ts:152 + +___ + +### pre + +• `Optional` **pre**: [`PreHooks`](../namespaces/v1_3_0.md#prehooks) + +#### Defined in + +generatedTypes/v1.3.0.ts:151 + +___ + +### version + +• `Optional` **version**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:150 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.PartnerFee.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.PartnerFee.md new file mode 100644 index 000000000..65cc28358 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.PartnerFee.md @@ -0,0 +1,28 @@ +--- +id: "v1_3_0.PartnerFee" +title: "Interface: PartnerFee" +sidebar_label: "PartnerFee" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).PartnerFee + +## Properties + +### bps + +• **bps**: `number` + +#### Defined in + +generatedTypes/v1.3.0.ts:165 + +___ + +### recipient + +• **recipient**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:166 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Quote.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Quote.md new file mode 100644 index 000000000..c269688e0 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Quote.md @@ -0,0 +1,28 @@ +--- +id: "v1_3_0.Quote" +title: "Interface: Quote" +sidebar_label: "Quote" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).Quote + +## Properties + +### slippageBips + +• **slippageBips**: `number` + +#### Defined in + +generatedTypes/v1.3.0.ts:140 + +___ + +### smartSlippage + +• `Optional` **smartSlippage**: `boolean` + +#### Defined in + +generatedTypes/v1.3.0.ts:141 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Referrer.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Referrer.md new file mode 100644 index 000000000..c268ae9eb --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Referrer.md @@ -0,0 +1,18 @@ +--- +id: "v1_3_0.Referrer" +title: "Interface: Referrer" +sidebar_label: "Referrer" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).Referrer + +## Properties + +### address + +• **address**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:130 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.ReplacedOrder.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.ReplacedOrder.md new file mode 100644 index 000000000..3ee0887d3 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.ReplacedOrder.md @@ -0,0 +1,18 @@ +--- +id: "v1_3_0.ReplacedOrder" +title: "Interface: ReplacedOrder" +sidebar_label: "ReplacedOrder" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).ReplacedOrder + +## Properties + +### uid + +• **uid**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:169 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.UTMCodes.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.UTMCodes.md new file mode 100644 index 000000000..93e371eb7 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.UTMCodes.md @@ -0,0 +1,58 @@ +--- +id: "v1_3_0.UTMCodes" +title: "Interface: UTMCodes" +sidebar_label: "UTMCodes" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).UTMCodes + +## Properties + +### utmCampaign + +• `Optional` **utmCampaign**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:135 + +___ + +### utmContent + +• `Optional` **utmContent**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:136 + +___ + +### utmMedium + +• `Optional` **utmMedium**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:134 + +___ + +### utmSource + +• `Optional` **utmSource**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:133 + +___ + +### utmTerm + +• `Optional` **utmTerm**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:137 diff --git a/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Widget.md b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Widget.md new file mode 100644 index 000000000..fbc74629a --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/interfaces/v1_3_0.Widget.md @@ -0,0 +1,28 @@ +--- +id: "v1_3_0.Widget" +title: "Interface: Widget" +sidebar_label: "Widget" +custom_edit_url: null +--- + +[v1\_3\_0](../namespaces/v1_3_0.md).Widget + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:161 + +___ + +### environment + +• `Optional` **environment**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:162 diff --git a/docs/cow-protocol/sdks/app-data/modules.md b/docs/cow-protocol/sdks/app-data/modules.md new file mode 100644 index 000000000..a6f987435 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/modules.md @@ -0,0 +1,224 @@ +--- +id: "modules" +title: "@cowprotocol/app-data" +sidebar_label: "Exports" +sidebar_position: 0.5 +custom_edit_url: null +--- + +## Namespaces + +- [v0\_10\_0](namespaces/v0_10_0.md) +- [v0\_11\_0](namespaces/v0_11_0.md) +- [v0\_1\_0](namespaces/v0_1_0.md) +- [v0\_2\_0](namespaces/v0_2_0.md) +- [v0\_3\_0](namespaces/v0_3_0.md) +- [v0\_4\_0](namespaces/v0_4_0.md) +- [v0\_5\_0](namespaces/v0_5_0.md) +- [v0\_6\_0](namespaces/v0_6_0.md) +- [v0\_7\_0](namespaces/v0_7_0.md) +- [v0\_8\_0](namespaces/v0_8_0.md) +- [v0\_9\_0](namespaces/v0_9_0.md) +- [v1\_0\_0](namespaces/v1_0_0.md) +- [v1\_1\_0](namespaces/v1_1_0.md) +- [v1\_2\_0](namespaces/v1_2_0.md) +- [v1\_3\_0](namespaces/v1_3_0.md) + +## Classes + +- [MetadataApi](classes/MetadataApi.md) + +## Interfaces + +- [Ipfs](interfaces/Ipfs.md) + +## References + +### latest + +Renames and re-exports [v1_3_0](namespaces/v1_3_0.md) + +## Type Aliases + +### AnyAppDataDocVersion + +Ƭ **AnyAppDataDocVersion**: [`AppDataRootSchema`](interfaces/v1_3_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v1_2_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v1_1_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v1_0_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_11_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_10_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_9_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_8_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_7_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_6_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_5_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_4_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_3_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_2_0.AppDataRootSchema.md) \| [`AppDataRootSchema`](interfaces/v0_1_0.AppDataRootSchema.md) + +#### Defined in + +generatedTypes/index.ts:33 + +___ + +### AppDataParams + +Ƭ **AppDataParams**: `Partial`<`Omit`<[`AppDataRootSchema`](interfaces/v1_3_0.AppDataRootSchema.md), ``"version"``\>\> + +#### Defined in + +types.ts:3 + +___ + +### IpfsHashInfo + +Ƭ **IpfsHashInfo**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDataContent` | `string` | Full appData content. It will be a the exact string that if hashed using keccak-256 you would get the returned appDataHex | +| `appDataHex` | `string` | appData hex for CoW Orders. Its value is the multihash part of the IPFS CID, therefore it points to a IPFS document. Because its just the multihash, it doesn't have any infomation regarding the encoding and hashing algorithm. These parts are implicit. Currently, the implicit encoding is base16 and the implicit hashing algorithm is keccak256. See https://github.com/cowprotocol/app-data/blob/app-data-v1/src/api/appDataToCid.ts#L102 Previous versions used a different encoding and hashing algorithm (base58btc, dag-pb, sha2-256) | +| `cid` | `string` | IPFS's content identifier See https://docs.ipfs.io/concepts/content-addressing/#identifier-formats | + +#### Defined in + +types.ts:5 + +___ + +### LatestAppDataDocVersion + +Ƭ **LatestAppDataDocVersion**: [`AppDataRootSchema`](interfaces/v1_3_0.AppDataRootSchema.md) + +#### Defined in + +generatedTypes/index.ts:32 + +___ + +### ValidationResult + +Ƭ **ValidationResult**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `errors?` | `string` | +| `success` | `boolean` | + +#### Defined in + +types.ts:38 + +## Variables + +### LATEST\_APP\_DATA\_VERSION + +• `Const` **LATEST\_APP\_DATA\_VERSION**: ``"1.3.0"`` + +#### Defined in + +generatedTypes/index.ts:21 + +___ + +### LATEST\_HOOKS\_METADATA\_VERSION + +• `Const` **LATEST\_HOOKS\_METADATA\_VERSION**: ``"0.2.0"`` + +#### Defined in + +generatedTypes/index.ts:26 + +___ + +### LATEST\_ORDER\_CLASS\_METADATA\_VERSION + +• `Const` **LATEST\_ORDER\_CLASS\_METADATA\_VERSION**: ``"0.3.0"`` + +#### Defined in + +generatedTypes/index.ts:24 + +___ + +### LATEST\_PARTNER\_FEE\_METADATA\_VERSION + +• `Const` **LATEST\_PARTNER\_FEE\_METADATA\_VERSION**: ``"0.1.0"`` + +#### Defined in + +generatedTypes/index.ts:29 + +___ + +### LATEST\_QUOTE\_METADATA\_VERSION + +• `Const` **LATEST\_QUOTE\_METADATA\_VERSION**: ``"1.1.0"`` + +#### Defined in + +generatedTypes/index.ts:22 + +___ + +### LATEST\_REFERRER\_METADATA\_VERSION + +• `Const` **LATEST\_REFERRER\_METADATA\_VERSION**: ``"0.2.0"`` + +#### Defined in + +generatedTypes/index.ts:23 + +___ + +### LATEST\_REPLACED\_ORDER\_METADATA\_VERSION + +• `Const` **LATEST\_REPLACED\_ORDER\_METADATA\_VERSION**: ``"0.1.0"`` + +#### Defined in + +generatedTypes/index.ts:30 + +___ + +### LATEST\_SIGNER\_METADATA\_VERSION + +• `Const` **LATEST\_SIGNER\_METADATA\_VERSION**: ``"0.1.0"`` + +#### Defined in + +generatedTypes/index.ts:27 + +___ + +### LATEST\_UTM\_METADATA\_VERSION + +• `Const` **LATEST\_UTM\_METADATA\_VERSION**: ``"0.2.0"`` + +#### Defined in + +generatedTypes/index.ts:25 + +___ + +### LATEST\_WIDGET\_METADATA\_VERSION + +• `Const` **LATEST\_WIDGET\_METADATA\_VERSION**: ``"0.1.0"`` + +#### Defined in + +generatedTypes/index.ts:28 + +## Functions + +### stringifyDeterministic + +▸ **stringifyDeterministic**(`obj`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `obj` | `any` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +utils/stringify.ts:1 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/_category_.yml b/docs/cow-protocol/sdks/app-data/namespaces/_category_.yml new file mode 100644 index 000000000..1833bbb58 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/_category_.yml @@ -0,0 +1,2 @@ +label: "Namespaces" +position: 1 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/app-data/namespaces/latest.md b/docs/cow-protocol/sdks/app-data/namespaces/latest.md new file mode 100644 index 000000000..0f7976870 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/latest.md @@ -0,0 +1,319 @@ +--- +id: "latest" +title: "Namespace: latest" +sidebar_label: "latest" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/latest.AppDataRootSchema.md) +- [CoWHook](../interfaces/latest.CoWHook.md) +- [Metadata](../interfaces/latest.Metadata.md) +- [OrderClass](../interfaces/latest.OrderClass.md) +- [OrderInteractionHooks](../interfaces/latest.OrderInteractionHooks.md) +- [PartnerFee](../interfaces/latest.PartnerFee.md) +- [Quote](../interfaces/latest.Quote.md) +- [Referrer](../interfaces/latest.Referrer.md) +- [ReplacedOrder](../interfaces/latest.ReplacedOrder.md) +- [UTMCodes](../interfaces/latest.UTMCodes.md) +- [Widget](../interfaces/latest.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v1.3.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v1.3.0.ts:88 + +___ + +### BasisPointBPS + +Ƭ **BasisPointBPS**: `number` + +The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.3.0.ts:96 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.3.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.3.0.ts:92 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:68 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:72 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:64 + +___ + +### IdOfTheDAppWhichHasBuiltTheHook + +Ƭ **IdOfTheDAppWhichHasBuiltTheHook**: `string` + +CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook. + +#### Defined in + +generatedTypes/v1.3.0.ts:76 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v1.3.0.ts:56 + +___ + +### PartnerAccount + +Ƭ **PartnerAccount**: `string` + +The Ethereum address of the partner to receive the fee. + +#### Defined in + +generatedTypes/v1.3.0.ts:100 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/latest.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v1.3.0.ts:84 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/latest.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v1.3.0.ts:80 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:24 + +___ + +### ReplacedOrderUID + +Ƭ **ReplacedOrderUID**: `string` + +The replaced order UID. + +#### Defined in + +generatedTypes/v1.3.0.ts:104 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v1.3.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `number` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.3.0.ts:48 + +___ + +### SmartSlippage + +Ƭ **SmartSlippage**: `boolean` + +Whether the given slippageBips used is originated from a Smart slippage suggestion + +#### Defined in + +generatedTypes/v1.3.0.ts:52 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v1.3.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v1.3.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v1.3.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v1.3.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v1.3.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.3.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.3.0.ts:60 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_10_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_10_0.md new file mode 100644 index 000000000..9ecd0e8a1 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_10_0.md @@ -0,0 +1,232 @@ +--- +id: "v0_10_0" +title: "Namespace: v0_10_0" +sidebar_label: "v0_10_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_10_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v0_10_0.CoWHook.md) +- [Metadata](../interfaces/v0_10_0.Metadata.md) +- [OrderClass](../interfaces/v0_10_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v0_10_0.OrderInteractionHooks.md) +- [Quote](../interfaces/v0_10_0.Quote.md) +- [Referrer](../interfaces/v0_10_0.Referrer.md) +- [UTMCodes](../interfaces/v0_10_0.UTMCodes.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.10.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.10.0.ts:19 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v0.10.0.ts:64 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v0.10.0.ts:68 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v0.10.0.ts:60 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.10.0.ts:52 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v0_10_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v0.10.0.ts:76 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v0_10_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v0.10.0.ts:72 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.10.0.ts:24 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v0.10.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.10.0.ts:48 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.10.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.10.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.10.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.10.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.10.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.10.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.10.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_11_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_11_0.md new file mode 100644 index 000000000..59b3ba954 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_11_0.md @@ -0,0 +1,257 @@ +--- +id: "v0_11_0" +title: "Namespace: v0_11_0" +sidebar_label: "v0_11_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_11_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v0_11_0.CoWHook.md) +- [Metadata](../interfaces/v0_11_0.Metadata.md) +- [OrderClass](../interfaces/v0_11_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v0_11_0.OrderInteractionHooks.md) +- [Quote](../interfaces/v0_11_0.Quote.md) +- [Referrer](../interfaces/v0_11_0.Referrer.md) +- [UTMCodes](../interfaces/v0_11_0.UTMCodes.md) +- [Widget](../interfaces/v0_11_0.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.11.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v0.11.0.ts:80 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.11.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.11.0.ts:84 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v0.11.0.ts:64 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v0.11.0.ts:68 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v0.11.0.ts:60 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.11.0.ts:52 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v0_11_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v0.11.0.ts:76 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v0_11_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v0.11.0.ts:72 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.11.0.ts:24 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v0.11.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.11.0.ts:48 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.11.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.11.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.11.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.11.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.11.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.11.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.11.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_1_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_1_0.md new file mode 100644 index 000000000..269c59b4d --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_1_0.md @@ -0,0 +1,59 @@ +--- +id: "v0_1_0" +title: "Namespace: v0_1_0" +sidebar_label: "v0_1_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_1_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_1_0.Metadata.md) +- [Referrer](../interfaces/v0_1_0.Referrer.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.1.0.ts:15 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.1.0.ts:20 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.1.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.1.0.ts:19 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_2_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_2_0.md new file mode 100644 index 000000000..9583ea313 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_2_0.md @@ -0,0 +1,102 @@ +--- +id: "v0_2_0" +title: "Namespace: v0_2_0" +sidebar_label: "v0_2_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_2_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_2_0.Metadata.md) +- [Quote](../interfaces/v0_2_0.Quote.md) +- [Referrer](../interfaces/v0_2_0.Referrer.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.2.0.ts:15 + +___ + +### QuoteBuyAmount + +Ƭ **QuoteBuyAmount**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:23 + +___ + +### QuoteId + +Ƭ **QuoteId**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:21 + +___ + +### QuoteSellAmount + +Ƭ **QuoteSellAmount**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:22 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.2.0.ts:20 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.2.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.2.0.ts:19 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.2.0.ts:27 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_3_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_3_0.md new file mode 100644 index 000000000..4ff678ff2 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_3_0.md @@ -0,0 +1,114 @@ +--- +id: "v0_3_0" +title: "Namespace: v0_3_0" +sidebar_label: "v0_3_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_3_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_3_0.Metadata.md) +- [Quote](../interfaces/v0_3_0.Quote.md) +- [Referrer](../interfaces/v0_3_0.Referrer.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.3.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from + +#### Defined in + +generatedTypes/v0.3.0.ts:19 + +___ + +### QuoteBuyAmount + +Ƭ **QuoteBuyAmount**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:27 + +___ + +### QuoteId + +Ƭ **QuoteId**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:25 + +___ + +### QuoteSellAmount + +Ƭ **QuoteSellAmount**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:26 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.3.0.ts:24 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.3.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.3.0.ts:23 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.3.0.ts:31 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_4_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_4_0.md new file mode 100644 index 000000000..fffe82d35 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_4_0.md @@ -0,0 +1,96 @@ +--- +id: "v0_4_0" +title: "Namespace: v0_4_0" +sidebar_label: "v0_4_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_4_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_4_0.Metadata.md) +- [Quote](../interfaces/v0_4_0.Quote.md) +- [Referrer](../interfaces/v0_4_0.Referrer.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.4.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.4.0.ts:19 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.4.0.ts:24 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.4.0.ts:32 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.4.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.4.0.ts:23 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.4.0.ts:28 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_5_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_5_0.md new file mode 100644 index 000000000..e9a0c216d --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_5_0.md @@ -0,0 +1,121 @@ +--- +id: "v0_5_0" +title: "Namespace: v0_5_0" +sidebar_label: "v0_5_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_5_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_5_0.Metadata.md) +- [OrderClass](../interfaces/v0_5_0.OrderClass.md) +- [Quote](../interfaces/v0_5_0.Quote.md) +- [Referrer](../interfaces/v0_5_0.Referrer.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.5.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.5.0.ts:19 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.5.0.ts:40 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.5.0.ts:24 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.5.0.ts:32 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.5.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.5.0.ts:23 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.5.0.ts:28 + +___ + +### Version3 + +Ƭ **Version3**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.5.0.ts:36 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_6_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_6_0.md new file mode 100644 index 000000000..bd69ec925 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_6_0.md @@ -0,0 +1,182 @@ +--- +id: "v0_6_0" +title: "Namespace: v0_6_0" +sidebar_label: "v0_6_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_6_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_6_0.Metadata.md) +- [OrderClass](../interfaces/v0_6_0.OrderClass.md) +- [Quote](../interfaces/v0_6_0.Quote.md) +- [Referrer](../interfaces/v0_6_0.Referrer.md) +- [UTMCodes](../interfaces/v0_6_0.UTMCodes.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.6.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.6.0.ts:19 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.6.0.ts:60 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.6.0.ts:24 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.6.0.ts:52 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.6.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.6.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.6.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.6.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.6.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.6.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.6.0.ts:23 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.6.0.ts:48 + +___ + +### Version3 + +Ƭ **Version3**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.6.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_7_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_7_0.md new file mode 100644 index 000000000..4233ad9c1 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_7_0.md @@ -0,0 +1,182 @@ +--- +id: "v0_7_0" +title: "Namespace: v0_7_0" +sidebar_label: "v0_7_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_7_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_7_0.Metadata.md) +- [OrderClass](../interfaces/v0_7_0.OrderClass.md) +- [Quote](../interfaces/v0_7_0.Quote.md) +- [Referrer](../interfaces/v0_7_0.Referrer.md) +- [UTMCodes](../interfaces/v0_7_0.UTMCodes.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.7.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.7.0.ts:19 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.7.0.ts:60 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.7.0.ts:24 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.7.0.ts:52 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.7.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.7.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.7.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.7.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.7.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.7.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.7.0.ts:23 + +___ + +### Version2 + +Ƭ **Version2**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.7.0.ts:48 + +___ + +### Version3 + +Ƭ **Version3**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.7.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_8_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_8_0.md new file mode 100644 index 000000000..60b042cb3 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_8_0.md @@ -0,0 +1,146 @@ +--- +id: "v0_8_0" +title: "Namespace: v0_8_0" +sidebar_label: "v0_8_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_8_0.AppDataRootSchema.md) +- [Metadata](../interfaces/v0_8_0.Metadata.md) +- [OrderClass](../interfaces/v0_8_0.OrderClass.md) +- [Quote](../interfaces/v0_8_0.Quote.md) +- [Referrer](../interfaces/v0_8_0.Referrer.md) +- [UTMCodes](../interfaces/v0_8_0.UTMCodes.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.8.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.8.0.ts:19 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.8.0.ts:48 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.8.0.ts:20 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.8.0.ts:44 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.8.0.ts:32 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.8.0.ts:36 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.8.0.ts:40 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.8.0.ts:28 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.8.0.ts:24 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.8.0.ts:11 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v0_9_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v0_9_0.md new file mode 100644 index 000000000..301766ee8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v0_9_0.md @@ -0,0 +1,220 @@ +--- +id: "v0_9_0" +title: "Namespace: v0_9_0" +sidebar_label: "v0_9_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v0_9_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v0_9_0.CoWHook.md) +- [Metadata](../interfaces/v0_9_0.Metadata.md) +- [OrderClass](../interfaces/v0_9_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v0_9_0.OrderInteractionHooks.md) +- [Quote](../interfaces/v0_9_0.Quote.md) +- [Referrer](../interfaces/v0_9_0.Referrer.md) +- [UTMCodes](../interfaces/v0_9_0.UTMCodes.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v0.9.0.ts:15 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v0.9.0.ts:19 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v0.9.0.ts:60 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v0.9.0.ts:64 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v0.9.0.ts:56 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v0.9.0.ts:48 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v0_9_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v0.9.0.ts:72 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v0_9_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v0.9.0.ts:68 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v0.9.0.ts:20 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `string` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + +#### Defined in + +generatedTypes/v0.9.0.ts:44 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v0.9.0.ts:32 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v0.9.0.ts:36 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v0.9.0.ts:40 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v0.9.0.ts:28 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v0.9.0.ts:24 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.9.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v0.9.0.ts:52 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v1_0_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v1_0_0.md new file mode 100644 index 000000000..376267ce8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v1_0_0.md @@ -0,0 +1,282 @@ +--- +id: "v1_0_0" +title: "Namespace: v1_0_0" +sidebar_label: "v1_0_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v1_0_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v1_0_0.CoWHook.md) +- [Metadata](../interfaces/v1_0_0.Metadata.md) +- [OrderClass](../interfaces/v1_0_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v1_0_0.OrderInteractionHooks.md) +- [PartnerFee](../interfaces/v1_0_0.PartnerFee.md) +- [Quote](../interfaces/v1_0_0.Quote.md) +- [Referrer](../interfaces/v1_0_0.Referrer.md) +- [UTMCodes](../interfaces/v1_0_0.UTMCodes.md) +- [Widget](../interfaces/v1_0_0.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v1.0.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v1.0.0.ts:80 + +___ + +### BasisPointBPS + +Ƭ **BasisPointBPS**: `number` + +The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.0.0.ts:88 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.0.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.0.0.ts:84 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v1.0.0.ts:64 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v1.0.0.ts:68 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v1.0.0.ts:60 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v1.0.0.ts:52 + +___ + +### PartnerAccount + +Ƭ **PartnerAccount**: `string` + +The Ethereum address of the partner to receive the fee. + +#### Defined in + +generatedTypes/v1.0.0.ts:92 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v1_0_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v1.0.0.ts:76 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v1_0_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v1.0.0.ts:72 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v1.0.0.ts:24 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v1.0.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `number` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.0.0.ts:48 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v1.0.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v1.0.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v1.0.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v1.0.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v1.0.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.0.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.0.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v1_1_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v1_1_0.md new file mode 100644 index 000000000..b53536d1b --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v1_1_0.md @@ -0,0 +1,295 @@ +--- +id: "v1_1_0" +title: "Namespace: v1_1_0" +sidebar_label: "v1_1_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v1_1_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v1_1_0.CoWHook.md) +- [Metadata](../interfaces/v1_1_0.Metadata.md) +- [OrderClass](../interfaces/v1_1_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v1_1_0.OrderInteractionHooks.md) +- [PartnerFee](../interfaces/v1_1_0.PartnerFee.md) +- [Quote](../interfaces/v1_1_0.Quote.md) +- [Referrer](../interfaces/v1_1_0.Referrer.md) +- [ReplacedOrder](../interfaces/v1_1_0.ReplacedOrder.md) +- [UTMCodes](../interfaces/v1_1_0.UTMCodes.md) +- [Widget](../interfaces/v1_1_0.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v1.1.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v1.1.0.ts:80 + +___ + +### BasisPointBPS + +Ƭ **BasisPointBPS**: `number` + +The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.1.0.ts:88 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.1.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.1.0.ts:84 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v1.1.0.ts:64 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v1.1.0.ts:68 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v1.1.0.ts:60 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v1.1.0.ts:52 + +___ + +### PartnerAccount + +Ƭ **PartnerAccount**: `string` + +The Ethereum address of the partner to receive the fee. + +#### Defined in + +generatedTypes/v1.1.0.ts:92 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v1_1_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v1.1.0.ts:76 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v1_1_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v1.1.0.ts:72 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v1.1.0.ts:24 + +___ + +### ReplacedOrderUID + +Ƭ **ReplacedOrderUID**: `string` + +The replaced order UID. + +#### Defined in + +generatedTypes/v1.1.0.ts:96 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v1.1.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `number` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.1.0.ts:48 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v1.1.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v1.1.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v1.1.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v1.1.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v1.1.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.1.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.1.0.ts:56 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v1_2_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v1_2_0.md new file mode 100644 index 000000000..7cca3071e --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v1_2_0.md @@ -0,0 +1,307 @@ +--- +id: "v1_2_0" +title: "Namespace: v1_2_0" +sidebar_label: "v1_2_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v1_2_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v1_2_0.CoWHook.md) +- [Metadata](../interfaces/v1_2_0.Metadata.md) +- [OrderClass](../interfaces/v1_2_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v1_2_0.OrderInteractionHooks.md) +- [PartnerFee](../interfaces/v1_2_0.PartnerFee.md) +- [Quote](../interfaces/v1_2_0.Quote.md) +- [Referrer](../interfaces/v1_2_0.Referrer.md) +- [ReplacedOrder](../interfaces/v1_2_0.ReplacedOrder.md) +- [UTMCodes](../interfaces/v1_2_0.UTMCodes.md) +- [Widget](../interfaces/v1_2_0.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v1.2.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v1.2.0.ts:84 + +___ + +### BasisPointBPS + +Ƭ **BasisPointBPS**: `number` + +The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.2.0.ts:92 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.2.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.2.0.ts:88 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v1.2.0.ts:68 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v1.2.0.ts:72 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v1.2.0.ts:64 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v1.2.0.ts:56 + +___ + +### PartnerAccount + +Ƭ **PartnerAccount**: `string` + +The Ethereum address of the partner to receive the fee. + +#### Defined in + +generatedTypes/v1.2.0.ts:96 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v1_2_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v1.2.0.ts:80 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v1_2_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v1.2.0.ts:76 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v1.2.0.ts:24 + +___ + +### ReplacedOrderUID + +Ƭ **ReplacedOrderUID**: `string` + +The replaced order UID. + +#### Defined in + +generatedTypes/v1.2.0.ts:100 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v1.2.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `number` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.2.0.ts:48 + +___ + +### SmartSlippage + +Ƭ **SmartSlippage**: `boolean` + +Whether the given slippageBips used is originated from a Smart slippage suggestion + +#### Defined in + +generatedTypes/v1.2.0.ts:52 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v1.2.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v1.2.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v1.2.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v1.2.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v1.2.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.2.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.2.0.ts:60 diff --git a/docs/cow-protocol/sdks/app-data/namespaces/v1_3_0.md b/docs/cow-protocol/sdks/app-data/namespaces/v1_3_0.md new file mode 100644 index 000000000..97ef6c8a8 --- /dev/null +++ b/docs/cow-protocol/sdks/app-data/namespaces/v1_3_0.md @@ -0,0 +1,319 @@ +--- +id: "v1_3_0" +title: "Namespace: v1_3_0" +sidebar_label: "v1_3_0" +sidebar_position: 0 +custom_edit_url: null +--- + +## Interfaces + +- [AppDataRootSchema](../interfaces/v1_3_0.AppDataRootSchema.md) +- [CoWHook](../interfaces/v1_3_0.CoWHook.md) +- [Metadata](../interfaces/v1_3_0.Metadata.md) +- [OrderClass](../interfaces/v1_3_0.OrderClass.md) +- [OrderInteractionHooks](../interfaces/v1_3_0.OrderInteractionHooks.md) +- [PartnerFee](../interfaces/v1_3_0.PartnerFee.md) +- [Quote](../interfaces/v1_3_0.Quote.md) +- [Referrer](../interfaces/v1_3_0.Referrer.md) +- [ReplacedOrder](../interfaces/v1_3_0.ReplacedOrder.md) +- [UTMCodes](../interfaces/v1_3_0.UTMCodes.md) +- [Widget](../interfaces/v1_3_0.Widget.md) + +## Type Aliases + +### AppCode + +Ƭ **AppCode**: `string` + +The code identifying the CLI, UI, service generating the order. + +#### Defined in + +generatedTypes/v1.3.0.ts:15 + +___ + +### AppCode1 + +Ƭ **AppCode1**: `string` + +The code identifying the UI powering the widget + +#### Defined in + +generatedTypes/v1.3.0.ts:88 + +___ + +### BasisPointBPS + +Ƭ **BasisPointBPS**: `number` + +The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.3.0.ts:96 + +___ + +### Environment + +Ƭ **Environment**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.3.0.ts:19 + +___ + +### Environment1 + +Ƭ **Environment1**: `string` + +Environment from which the order came from. + +#### Defined in + +generatedTypes/v1.3.0.ts:92 + +___ + +### HookCallData + +Ƭ **HookCallData**: `string` + +The calldata to use when calling the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:68 + +___ + +### HookGasLimit + +Ƭ **HookGasLimit**: `string` + +The gas limit (in gas units) for the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:72 + +___ + +### HookTarget + +Ƭ **HookTarget**: `string` + +The contract to call for the hook + +#### Defined in + +generatedTypes/v1.3.0.ts:64 + +___ + +### IdOfTheDAppWhichHasBuiltTheHook + +Ƭ **IdOfTheDAppWhichHasBuiltTheHook**: `string` + +CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook. + +#### Defined in + +generatedTypes/v1.3.0.ts:76 + +___ + +### OrderClass1 + +Ƭ **OrderClass1**: ``"market"`` \| ``"limit"`` \| ``"liquidity"`` \| ``"twap"`` + +Indicator of the order class. + +#### Defined in + +generatedTypes/v1.3.0.ts:56 + +___ + +### PartnerAccount + +Ƭ **PartnerAccount**: `string` + +The Ethereum address of the partner to receive the fee. + +#### Defined in + +generatedTypes/v1.3.0.ts:100 + +___ + +### PostHooks + +Ƭ **PostHooks**: [`CoWHook`](../interfaces/v1_3_0.CoWHook.md)[] + +CoW Hooks to call after an order executes + +#### Defined in + +generatedTypes/v1.3.0.ts:84 + +___ + +### PreHooks + +Ƭ **PreHooks**: [`CoWHook`](../interfaces/v1_3_0.CoWHook.md)[] + +CoW Hooks to call before an order executes + +#### Defined in + +generatedTypes/v1.3.0.ts:80 + +___ + +### ReferrerAddress + +Ƭ **ReferrerAddress**: `string` + +#### Defined in + +generatedTypes/v1.3.0.ts:24 + +___ + +### ReplacedOrderUID + +Ƭ **ReplacedOrderUID**: `string` + +The replaced order UID. + +#### Defined in + +generatedTypes/v1.3.0.ts:104 + +___ + +### Signer + +Ƭ **Signer**: `string` + +The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + +#### Defined in + +generatedTypes/v1.3.0.ts:23 + +___ + +### SlippageBips + +Ƭ **SlippageBips**: `number` + +Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + +#### Defined in + +generatedTypes/v1.3.0.ts:48 + +___ + +### SmartSlippage + +Ƭ **SmartSlippage**: `boolean` + +Whether the given slippageBips used is originated from a Smart slippage suggestion + +#### Defined in + +generatedTypes/v1.3.0.ts:52 + +___ + +### UTMCampaign + +Ƭ **UTMCampaign**: `string` + +Track the performance of a specific campaign + +#### Defined in + +generatedTypes/v1.3.0.ts:36 + +___ + +### UTMContent + +Ƭ **UTMContent**: `string` + +Track which link was clicked + +#### Defined in + +generatedTypes/v1.3.0.ts:40 + +___ + +### UTMKeywordTerm + +Ƭ **UTMKeywordTerm**: `string` + +Track which keyword term a website visitor came from + +#### Defined in + +generatedTypes/v1.3.0.ts:44 + +___ + +### UTMMedium + +Ƭ **UTMMedium**: `string` + +Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + +#### Defined in + +generatedTypes/v1.3.0.ts:32 + +___ + +### UTMSource + +Ƭ **UTMSource**: `string` + +Tracks in which medium the traffic originated from (twitter, facebook, etc.) + +#### Defined in + +generatedTypes/v1.3.0.ts:28 + +___ + +### Version + +Ƭ **Version**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.3.0.ts:11 + +___ + +### Version1 + +Ƭ **Version1**: `string` + +Semantic versioning of document. + +#### Defined in + +generatedTypes/v1.3.0.ts:60 diff --git a/docs/cow-protocol/reference/sdks/cow-sdk/_category_.json b/docs/cow-protocol/sdks/cow-sdk/_category_.json similarity index 100% rename from docs/cow-protocol/reference/sdks/cow-sdk/_category_.json rename to docs/cow-protocol/sdks/cow-sdk/_category_.json diff --git a/docs/cow-protocol/sdks/cow-sdk/_category_.yml b/docs/cow-protocol/sdks/cow-sdk/_category_.yml new file mode 100644 index 000000000..b1d0b4b6d --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/_category_.yml @@ -0,0 +1,2 @@ +label: 'cow-sdk' +position: 1 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrder.md b/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrder.md new file mode 100644 index 000000000..8deea023d --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrder.md @@ -0,0 +1,657 @@ +--- +id: "ConditionalOrder" +title: "Class: ConditionalOrder" +sidebar_label: "ConditionalOrder" +sidebar_position: 0 +custom_edit_url: null +--- + +An abstract base class from which all conditional orders should inherit. + +This class provides some basic functionality to help with handling conditional orders, +such as: +- Validating the conditional order +- Creating a human-readable string representation of the conditional order +- Serializing the conditional order for use with the `IConditionalOrder` struct +- Getting any dependencies for the conditional order +- Getting the off-chain input for the conditional order + +**NOTE**: Instances of conditional orders have an `id` property that is a `keccak256` hash of + the serialized conditional order. + +## Type parameters + +| Name | +| :------ | +| `D` | +| `S` | + +## Hierarchy + +- **`ConditionalOrder`** + + ↳ [`Twap`](Twap.md) + +## Constructors + +### constructor + +• **new ConditionalOrder**<`D`, `S`\>(`params`): [`ConditionalOrder`](ConditionalOrder.md)<`D`, `S`\> + +A constructor that provides some basic validation for the conditional order. + +This constructor **MUST** be called by any class that inherits from `ConditionalOrder`. + +**NOTE**: The salt is optional and will be randomly generated if not provided. + +#### Type parameters + +| Name | +| :------ | +| `D` | +| `S` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderArguments`](../interfaces/ConditionalOrderArguments.md)<`D`\> | + +#### Returns + +[`ConditionalOrder`](ConditionalOrder.md)<`D`, `S`\> + +**`Throws`** + +If the handler is not a valid ethereum address. + +**`Throws`** + +If the salt is not a valid 32-byte string. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:54 + +## Properties + +### data + +• `Readonly` **data**: `D` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:37 + +___ + +### handler + +• `Readonly` **handler**: `string` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:35 + +___ + +### hasOffChainInput + +• `Readonly` **hasOffChainInput**: `boolean` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:39 + +___ + +### salt + +• `Readonly` **salt**: `string` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:36 + +___ + +### staticInput + +• `Readonly` **staticInput**: `S` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:38 + +## Accessors + +### context + +• `get` **context**(): `undefined` \| [`ContextFactory`](../modules.md#contextfactory) + +Get the context dependency for the conditional order. + +This is used when calling `createWithContext` or `setRootWithContext` on a ComposableCoW-enabled Safe. + +#### Returns + +`undefined` \| [`ContextFactory`](../modules.md#contextfactory) + +The context dependency. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:91 + +___ + +### createCalldata + +• `get` **createCalldata**(): `string` + +Get the calldata for creating the conditional order. + +This will automatically determine whether or not to use `create` or `createWithContext` based on the +order type's context dependency. + +**NOTE**: By default, this will cause the create to emit the `ConditionalOrderCreated` event. + +#### Returns + +`string` + +The calldata for creating the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:113 + +___ + +### ctx + +• `get` **ctx**(): `string` + +The context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet + +The context, relates to the 'ctx' in the contract: https://github.com/cowprotocol/composable-cow/blob/c7fb85ab10c05e28a1632ba97a1749fb261fcdfb/src/interfaces/IConditionalOrder.sol#L38 + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:166 + +___ + +### id + +• `get` **id**(): `string` + +Calculate the id of the conditional order (which also happens to be the key used for `ctx` in the ComposableCoW contract). + +This is a `keccak256` hash of the serialized conditional order. + +#### Returns + +`string` + +The id of the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:157 + +___ + +### isSingleOrder + +• `get` **isSingleOrder**(): `boolean` + +#### Returns + +`boolean` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:76 + +___ + +### leaf + +• `get` **leaf**(): [`ConditionalOrderParams`](../modules.md#conditionalorderparams) + +Get the `leaf` of the conditional order. This is the data that is used to create the merkle tree. + +For the purposes of this library, the `leaf` is the `ConditionalOrderParams` struct. + +#### Returns + +[`ConditionalOrderParams`](../modules.md#conditionalorderparams) + +The `leaf` of the conditional order. + +**`See`** + +ConditionalOrderParams + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:177 + +___ + +### offChainInput + +• `get` **offChainInput**(): `string` + +If the conditional order has off-chain input, return it! + +**NOTE**: This should be overridden by any conditional order that has off-chain input. + +#### Returns + +`string` + +The off-chain input. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:201 + +___ + +### orderType + +• `get` **orderType**(): `string` + +Get a descriptive name for the type of the conditional order (i.e twap, dca, etc). + +#### Returns + +`string` + +The concrete type of the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:83 + +___ + +### removeCalldata + +• `get` **removeCalldata**(): `string` + +Get the calldata for removing a conditional order that was created as a single order. + +#### Returns + +`string` + +The calldata for removing the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:145 + +## Methods + +### assertIsValid + +▸ **assertIsValid**(): `void` + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:95 + +___ + +### cabinet + +▸ **cabinet**(`params`): `Promise`<`string`\> + +Checks the value in the cabinet for a given owner and chain + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`OwnerContext`](../modules.md#ownercontext) | owner context, to be able to check the cabinet | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:337 + +___ + +### encodeStaticInput + +▸ **encodeStaticInput**(): `string` + +Encode the `staticInput` for the conditional order. + +#### Returns + +`string` + +The ABI-encoded `staticInput` for the conditional order. + +**`See`** + +ConditionalOrderParams + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:225 + +___ + +### encodeStaticInputHelper + +▸ **encodeStaticInputHelper**(`orderDataTypes`, `staticInput`): `string` + +A helper function for generically serializing a conditional order's static input. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderDataTypes` | `string`[] | ABI types for the order's data struct. | +| `staticInput` | `S` | - | + +#### Returns + +`string` + +An ABI-encoded representation of the order's data struct. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:234 + +___ + +### handlePollFailedAlreadyPresent + +▸ **handlePollFailedAlreadyPresent**(`orderUid`, `order`, `params`): `Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +This method lets the concrete conditional order decide what to do if the order yielded in the polling is already present in the Orderbook API. + +The concrete conditional order will have a chance to schedule the next poll. +For example, a TWAP order that has the current part already in the orderbook, can signal that the next poll should be done at the start time of the next part. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `orderUid` | `string` | +| `order` | `DataStruct` | +| `params` | [`PollParams`](../modules.md#pollparams) | + +#### Returns + +`Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:364 + +___ + +### isAuthorized + +▸ **isAuthorized**(`params`): `Promise`<`boolean`\> + +Checks if the owner authorized the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`OwnerContext`](../modules.md#ownercontext) | owner context, to be able to check if the order is authorized | + +#### Returns + +`Promise`<`boolean`\> + +true if the owner authorized the order, false otherwise. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:326 + +___ + +### isValid + +▸ **isValid**(): [`IsValidResult`](../modules.md#isvalidresult) + +#### Returns + +[`IsValidResult`](../modules.md#isvalidresult) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:102 + +___ + +### poll + +▸ **poll**(`params`): `Promise`<[`PollResult`](../modules.md#pollresult)\> + +Poll a conditional order to see if it is tradeable. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`PollParams`](../modules.md#pollparams) | + +#### Returns + +`Promise`<[`PollResult`](../modules.md#pollresult)\> + +The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order. + +**`Throws`** + +If the conditional order is not tradeable. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:249 + +___ + +### pollValidate + +▸ **pollValidate**(`params`): `Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +Allow concrete conditional orders to perform additional validation for the poll method. + +This will allow the concrete orders to decide when an order shouldn't be polled again. For example, if the orders is expired. +It also allows to signal when should the next check be done. For example, an order could signal that the validations will fail until a certain time or block. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`PollParams`](../modules.md#pollparams) | The poll parameters | + +#### Returns + +`Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +undefined if the concrete order can't make a decision. Otherwise, it returns a PollResultErrors object. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:354 + +___ + +### serialize + +▸ **serialize**(): `string` + +Serializes the conditional order into it's ABI-encoded form. + +#### Returns + +`string` + +The equivalent of `IConditionalOrder.Params` for the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:217 + +___ + +### toString + +▸ **toString**(`tokenFormatter?`): `string` + +Create a human-readable string representation of the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tokenFormatter?` | (`address`: `string`, `amount`: `BigNumber`) => `string` | An optional function that takes an address and an amount and returns a human-readable string. | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:210 + +___ + +### transformDataToStruct + +▸ **transformDataToStruct**(`params`): `S` + +Converts a friendly data object modelling the smart order into the struct that the contract expect as an encoded `staticInput`. + +**NOTE**: This should be overridden by any conditional order that requires transformations. +This implementation is a no-op if you use the same type for both. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | `D` | {S} Parameters that are passed in to the constructor. | + +#### Returns + +`S` + +The static input for the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:390 + +___ + +### transformStructToData + +▸ **transformStructToData**(`params`): `D` + +Convert the struct that the contract expect as an encoded `staticInput` into a friendly data object modelling the smart order. + +**NOTE**: This should be overridden by any conditional order that requires transformations. +This implementation is a no-op if you use the same type for both. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | `S` | {S} Parameters that are passed in to the constructor. | + +#### Returns + +`D` + +The static input for the conditional order. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:379 + +___ + +### deserializeHelper + +▸ **deserializeHelper**<`T`\>(`s`, `handler`, `orderDataTypes`, `callback`): `T` + +A helper function for generically deserializing a conditional order. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `s` | `string` | The ABI-encoded `IConditionalOrder.Params` struct to deserialize. | +| `handler` | `string` | Address of the handler for the conditional order. | +| `orderDataTypes` | `string`[] | ABI types for the order's data struct. | +| `callback` | (`d`: `any`, `salt`: `string`) => `T` | A callback function that takes the deserialized data struct and the salt and returns an instance of the class. | + +#### Returns + +`T` + +An instance of the conditional order class. + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:400 + +___ + +### leafToId + +▸ **leafToId**(`leaf`): `string` + +Calculate the id of the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `leaf` | [`ConditionalOrderParams`](../modules.md#conditionalorderparams) | The `leaf` representing the conditional order. | + +#### Returns + +`string` + +The id of the conditional order. + +**`See`** + +ConditionalOrderParams + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:191 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrderFactory.md b/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrderFactory.md new file mode 100644 index 000000000..4f1979d73 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/ConditionalOrderFactory.md @@ -0,0 +1,65 @@ +--- +id: "ConditionalOrderFactory" +title: "Class: ConditionalOrderFactory" +sidebar_label: "ConditionalOrderFactory" +sidebar_position: 0 +custom_edit_url: null +--- + +Factory for conditional orders. + +It uses a registry to instantiate the correct conditional order based on the handler. + +Knowing the handler, the factory will instantiate the correct conditional order using the staticInput data. + +## Constructors + +### constructor + +• **new ConditionalOrderFactory**(`registry`): [`ConditionalOrderFactory`](ConditionalOrderFactory.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `registry` | [`ConditionalOrderRegistry`](../modules.md#conditionalorderregistry) | + +#### Returns + +[`ConditionalOrderFactory`](ConditionalOrderFactory.md) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrderFactory.ts:17 + +## Properties + +### knownOrderTypes + +• **knownOrderTypes**: [`ConditionalOrderRegistry`](../modules.md#conditionalorderregistry) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrderFactory.ts:15 + +## Methods + +### fromParams + +▸ **fromParams**(`params`): `undefined` \| [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +Get the conditional order factory from the conditional order parameters + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderParams`](../modules.md#conditionalorderparams) | + +#### Returns + +`undefined` \| [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrderFactory.ts:28 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/CowError.md b/docs/cow-protocol/sdks/cow-sdk/classes/CowError.md new file mode 100644 index 000000000..6501205b4 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/CowError.md @@ -0,0 +1,166 @@ +--- +id: "CowError" +title: "Class: CowError" +sidebar_label: "CowError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- `Error` + + ↳ **`CowError`** + +## Constructors + +### constructor + +• **new CowError**(`message`, `error_code?`): [`CowError`](CowError.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `message` | `string` | +| `error_code?` | `string` | + +#### Returns + +[`CowError`](CowError.md) + +#### Overrides + +Error.constructor + +#### Defined in + +external/cow-sdk/src/common/cow-error.ts:4 + +## Properties + +### error\_code + +• `Optional` **error\_code**: `string` + +#### Defined in + +external/cow-sdk/src/common/cow-error.ts:2 + +___ + +### message + +• **message**: `string` + +#### Inherited from + +Error.message + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1068 + +___ + +### name + +• **name**: `string` + +#### Inherited from + +Error.name + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1067 + +___ + +### stack + +• `Optional` **stack**: `string` + +#### Inherited from + +Error.stack + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1069 + +___ + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +Error.prepareStackTrace + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:143 + +___ + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +Error.stackTraceLimit + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:145 + +## Methods + +### captureStackTrace + +▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +Error.captureStackTrace + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:136 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/CowShedHooks.md b/docs/cow-protocol/sdks/cow-sdk/classes/CowShedHooks.md new file mode 100644 index 000000000..78f86fed8 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/CowShedHooks.md @@ -0,0 +1,212 @@ +--- +id: "CowShedHooks" +title: "Class: CowShedHooks" +sidebar_label: "CowShedHooks" +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new CowShedHooks**(`chainId`, `customOptions?`): [`CowShedHooks`](CowShedHooks.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | +| `customOptions?` | [`ICoWShedOptions`](../interfaces/ICoWShedOptions.md) | + +#### Returns + +[`CowShedHooks`](CowShedHooks.md) + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:24 + +## Properties + +### chainId + +• `Private` **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:24 + +___ + +### customOptions + +• `Private` `Optional` **customOptions**: [`ICoWShedOptions`](../interfaces/ICoWShedOptions.md) + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:24 + +## Methods + +### encodeExecuteHooksForFactory + +▸ **encodeExecuteHooksForFactory**(`calls`, `nonce`, `deadline`, `user`, `signature`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `calls` | [`ICoWShedCall`](../interfaces/ICoWShedCall.md)[] | +| `nonce` | `string` | +| `deadline` | `bigint` | +| `user` | `string` | +| `signature` | `string` | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:38 + +___ + +### getDomain + +▸ **getDomain**(`proxy`): `TypedDataDomain` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `proxy` | `string` | + +#### Returns + +`TypedDataDomain` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:72 + +___ + +### getFactoryAddress + +▸ **getFactoryAddress**(): `string` + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:85 + +___ + +### getImplementationAddress + +▸ **getImplementationAddress**(): `string` + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:89 + +___ + +### infoToSign + +▸ **infoToSign**(`calls`, `nonce`, `deadline`, `proxy`): `Object` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `calls` | [`ICoWShedCall`](../interfaces/ICoWShedCall.md)[] | +| `nonce` | `string` | +| `deadline` | `bigint` | +| `proxy` | `string` | + +#### Returns + +`Object` + +| Name | Type | +| :------ | :------ | +| `domain` | `TypedDataDomain` | +| `message` | \{ `calls`: [`ICoWShedCall`](../interfaces/ICoWShedCall.md)[] ; `deadline`: `bigint` ; `nonce`: `string` } | +| `message.calls` | [`ICoWShedCall`](../interfaces/ICoWShedCall.md)[] | +| `message.deadline` | `bigint` | +| `message.nonce` | `string` | +| `types` | \{ `Call`: \{ `name`: `string` = 'target'; `type`: `string` = 'address' }[] ; `ExecuteHooks`: \{ `name`: `string` = 'calls'; `type`: `string` = 'Call[]' }[] } | +| `types.Call` | \{ `name`: `string` = 'target'; `type`: `string` = 'address' }[] | +| `types.ExecuteHooks` | \{ `name`: `string` = 'calls'; `type`: `string` = 'Call[]' }[] | + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:63 + +___ + +### proxyCreationCode + +▸ **proxyCreationCode**(): `string` + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:81 + +___ + +### proxyOf + +▸ **proxyOf**(`user`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `user` | `string` | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:26 + +___ + +### signCalls + +▸ **signCalls**(`calls`, `nonce`, `deadline`, `signer`, `signingScheme`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `calls` | [`ICoWShedCall`](../interfaces/ICoWShedCall.md)[] | +| `nonce` | `string` | +| `deadline` | `bigint` | +| `signer` | `Signer` | +| `signingScheme` | `EcdsaSigningScheme` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/cow-shed/CoWShedHooks.ts:48 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/Multiplexer.md b/docs/cow-protocol/sdks/cow-sdk/classes/Multiplexer.md new file mode 100644 index 000000000..ca0d0efb4 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/Multiplexer.md @@ -0,0 +1,615 @@ +--- +id: "Multiplexer" +title: "Class: Multiplexer" +sidebar_label: "Multiplexer" +sidebar_position: 0 +custom_edit_url: null +--- + +Multiplexer for conditional orders - using `ComposableCoW`! + +This class provides functionality to: +- Generate a merkle tree of conditional orders +- Generate proofs for all orders in the merkle tree +- Save proofs, with the ability to omit / skip specific conditional orders +- Support for passing an optional upload function to upload the proofs to a decentralized storage network + +## Constructors + +### constructor + +• **new Multiplexer**(`chain`, `orders?`, `root?`, `location?`): [`Multiplexer`](Multiplexer.md) + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `chain` | [`SupportedChainId`](../enums/SupportedChainId.md) | `undefined` | The `chainId` for where we're using `ComposableCoW`. | +| `orders?` | [`Orders`](../modules.md#orders) | `undefined` | An optional array of conditional orders to initialize the merkle tree with. | +| `root?` | `string` | `undefined` | An optional root to verify against. | +| `location` | [`ProofLocation`](../enums/ProofLocation.md) | `ProofLocation.PRIVATE` | The location of the proofs for the conditional orders. | + +#### Returns + +[`Multiplexer`](Multiplexer.md) + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:42 + +## Properties + +### chain + +• **chain**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:29 + +___ + +### ctx + +• `Private` `Optional` **ctx**: `string` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:34 + +___ + +### location + +• **location**: [`ProofLocation`](../enums/ProofLocation.md) + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:30 + +___ + +### orders + +• `Private` **orders**: [`Orders`](../modules.md#orders) = `{}` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:32 + +___ + +### tree + +• `Private` `Optional` **tree**: `StandardMerkleTree`<`string`[]\> + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:33 + +___ + +### orderTypeRegistry + +▪ `Static` **orderTypeRegistry**: `Record`<`string`, (...`args`: `unknown`[]) => [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\>\> = `{}` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:27 + +## Accessors + +### orderIds + +• `get` **orderIds**(): `string`[] + +Get all the conditional order ids in the multiplexer. + +#### Returns + +`string`[] + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:226 + +___ + +### root + +• `get` **root**(): `string` + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:230 + +## Methods + +### add + +▸ **add**<`T`, `P`\>(`order`): `void` + +Add a conditional order to the merkle tree. + +#### Type parameters + +| Name | +| :------ | +| `T` | +| `P` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `order` | [`ConditionalOrder`](ConditionalOrder.md)<`T`, `P`\> | The order to add to the merkle tree. | + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:168 + +___ + +### dumpProofs + +▸ **dumpProofs**(`filter?`): `string` + +The primary entry point for dumping the proofs and parameters for the conditional orders. + +This is to be used by watchtowers / indexers to store the proofs and parameters for the +conditional orders off-chain. The encoding returned by this method may **NOT** contain all +proofs and parameters, depending on the `filter` provided, and therefore should not be used +to rehydrate the multiplexer from a user's perspective. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter?` | (`v`: `string`[]) => `boolean` | [getProofs](Multiplexer.md#getproofs) | + +#### Returns + +`string` + +A JSON-encoded string of the proofs and parameters for the conditional orders. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:362 + +___ + +### dumpProofsAndParams + +▸ **dumpProofsAndParams**(`filter?`): [`ProofWithParams`](../modules.md#proofwithparams)[] + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `filter?` | (`v`: `string`[]) => `boolean` | + +#### Returns + +[`ProofWithParams`](../modules.md#proofwithparams)[] + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:366 + +___ + +### encodeToABI + +▸ **encodeToABI**(`filter?`): `string` + +ABI-encode the proofs and parameters for the conditional orders in the merkle tree. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter?` | (`v`: `string`[]) => `boolean` | [getProofs](Multiplexer.md#getproofs) | + +#### Returns + +`string` + +ABI-encoded `data` for the `ProofStruct`. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:408 + +___ + +### encodeToJSON + +▸ **encodeToJSON**(`filter?`): `string` + +JSON-encode the proofs and parameters for the conditional orders in the merkle tree. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter?` | (`v`: `string`[]) => `boolean` | [getProofs](Multiplexer.md#getproofs) | + +#### Returns + +`string` + +The JSON-encoded data for storage off-chain. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:417 + +___ + +### getById + +▸ **getById**(`id`): [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +Accessor for a given conditional order in the multiplexer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `id` | `string` | The `id` of the `ConditionalOrder` to retrieve. | + +#### Returns + +[`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +A `ConditionalOrder` with the given `id`. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:210 + +___ + +### getByIndex + +▸ **getByIndex**(`i`): [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +Accessor for a given conditional order in the multiplexer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `i` | `number` | The index of the `ConditionalOrder` to retrieve. | + +#### Returns + +[`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> + +A `ConditionalOrder` at the given index. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:219 + +___ + +### getOrGenerateTree + +▸ **getOrGenerateTree**(): `StandardMerkleTree`<`string`[]\> + +Retrieve the merkle tree of orders, or generate it if it doesn't exist. + +**CAUTION**: Developers of the SDK should prefer to use this method instead of generating the + merkle tree themselves. This method makes use of caching to avoid generating the + merkle tree needlessly. + +#### Returns + +`StandardMerkleTree`<`string`[]\> + +The merkle tree for the current set of conditional orders. + +**`Throws`** + +If the merkle tree cannot be generated. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:243 + +___ + +### getProofs + +▸ **getProofs**(`filter?`): [`ProofWithParams`](../modules.md#proofwithparams)[] + +Get the proofs with parameters for the conditional orders in the merkle tree. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `filter?` | (`v`: `string`[]) => `boolean` | A function that takes a conditional order and returns a boolean indicating whether the order should be included in the proof. | + +#### Returns + +[`ProofWithParams`](../modules.md#proofwithparams)[] + +An array of proofs and their order's parameters for the conditional orders in the + merkle tree. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:377 + +___ + +### prepareProofStruct + +▸ **prepareProofStruct**(`location?`, `filter?`, `uploader?`): `Promise`<`ProofStruct`\> + +The primary entry point for dapps integrating with `ComposableCoW` to generate the proofs and +parameters for the conditional orders. + +After populating the multiplexer with conditional orders, this method can be used to generate +the proofs and parameters for the conditional orders. The returned `ProofStruct` can then be +used with `setRoot` or `setRootWithContext` on a `ComposableCoW`-enabled Safe. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `location` | [`ProofLocation`](../enums/ProofLocation.md) | - | +| `filter?` | (`v`: `string`[]) => `boolean` | [getProofs](Multiplexer.md#getproofs) | +| `uploader?` | (`offChainEncoded`: `string`) => `Promise`<`string`\> | - | + +#### Returns + +`Promise`<`ProofStruct`\> + +The ABI-encoded `ProofStruct` for `setRoot` and `setRootWithContext`. + +**`Parma`** + +locFn A function that takes the off-chain encoded input, and returns the `location` + for the `ProofStruct`, and the `data` for the `ProofStruct`. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:280 + +___ + +### remove + +▸ **remove**(`id`): `void` + +Remove a conditional order from the merkle tree. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `id` | `string` | The id of the `ConditionalOrder` to remove from the merkle tree. | + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:179 + +___ + +### reset + +▸ **reset**(): `void` + +A helper to reset the merkle tree. + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:424 + +___ + +### toJSON + +▸ **toJSON**(): `string` + +Serialize the multiplexer to JSON. + +This will include all state necessary to reconstruct the multiplexer, including the root. + +#### Returns + +`string` + +The JSON representation of the multiplexer, including the root but excluding the merkle tree. + +**`Remarks`** + +This will **NOT** include the merkle tree. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:143 + +___ + +### update + +▸ **update**(`id`, `updater`): `void` + +Update a given conditional order in the merkle tree. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `id` | `string` | The id of the `ConditionalOrder` to update. | +| `updater` | (`order`: [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\>, `ctx?`: `string`) => [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> | A function that takes the existing `ConditionalOrder` and context, returning an updated `ConditionalOrder`. | + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:189 + +___ + +### decodeFromJSON + +▸ **decodeFromJSON**(`s`): [`ProofWithParams`](../modules.md#proofwithparams)[] + +The primary method for watch towers to use when deserializing the proofs and parameters for the conditional orders. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `s` | `string` | The serialized proofs with parameters for consumption by watchtowers / indexers. | + +#### Returns + +[`ProofWithParams`](../modules.md#proofwithparams)[] + +The `ProofWithParams` array. + +**`Throws`** + +If the `ProofWithParams` array cannot be deserialized. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:262 + +___ + +### fromJSON + +▸ **fromJSON**(`s`): [`Multiplexer`](Multiplexer.md) + +Given a serialized multiplexer, create the multiplexer and rehydrate all conditional orders. +Integrity of the multiplexer will be verified by generating the merkle tree and verifying +the root. + +**NOTE**: Before using this method, you must register all conditional order types using `Multiplexer.registerOrderType`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `s` | `string` | The serialized multiplexer. | + +#### Returns + +[`Multiplexer`](Multiplexer.md) + +The multiplexer with all conditional orders rehydrated. + +**`Throws`** + +If the multiplexer cannot be deserialized. + +**`Throws`** + +If the merkle tree cannot be generated. + +**`Throws`** + +If the merkle tree cannot be verified against the root. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:98 + +___ + +### poll + +▸ **poll**(`owner`, `p`, `chain`, `provider`, `offChainInputFn?`): `Promise`<[`DataStruct`, `string`]\> + +Poll a conditional order to see if it is tradeable. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `owner` | `string` | The owner of the conditional order. | +| `p` | [`ProofWithParams`](../modules.md#proofwithparams) | The proof and parameters. | +| `chain` | [`SupportedChainId`](../enums/SupportedChainId.md) | Which chain to use for the ComposableCoW contract. | +| `provider` | `Provider` | An RPC provider for the chain. | +| `offChainInputFn?` | (`owner`: `string`, `params`: [`ConditionalOrderParams`](../modules.md#conditionalorderparams)) => `Promise`<`string`\> | A function, if provided, that will return the off-chain input for the conditional order. | + +#### Returns + +`Promise`<[`DataStruct`, `string`]\> + +The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order. + +**`Throws`** + +If the conditional order is not tradeable. + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:339 + +___ + +### registerOrderType + +▸ **registerOrderType**(`orderType`, `conditionalOrderClass`): `void` + +Register a conditional order type with the multiplexer. + +**CAUTION**: This is required for using `Multiplexer.fromJSON` and `Multiplexer.toJSON`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderType` | `string` | The order type to register. | +| `conditionalOrderClass` | (...`args`: `any`[]) => [`ConditionalOrder`](ConditionalOrder.md)<`unknown`, `unknown`\> | The class to use for the given order type. | + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:435 + +___ + +### resetOrderTypeRegistry + +▸ **resetOrderTypeRegistry**(): `void` + +Reset the order type registry. + +#### Returns + +`void` + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:445 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApi.md b/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApi.md new file mode 100644 index 000000000..4b5ce8867 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApi.md @@ -0,0 +1,641 @@ +--- +id: "OrderBookApi" +title: "Class: OrderBookApi" +sidebar_label: "OrderBookApi" +sidebar_position: 0 +custom_edit_url: null +--- + +The CoW Protocol OrderBook API client. + +This is the main entry point for interacting with the CoW Protocol OrderBook API. The main advantage of using +this client is the batteries-included approach to interacting with the API. It handles: + +- Environment configuration (mainnet, staging, etc.) +- Rate limiting +- Retries +- Backoff +- Error handling +- Request signing +- Request validation + +**`Example`** + +```typescript +import { OrderBookApi, OrderSigningUtils, SupportedChainId } from '@cowprotocol/cow-sdk' +import { Web3Provider } from '@ethersproject/providers' + +const account = 'YOUR_WALLET_ADDRESS' +const chainId = 100 // Gnosis chain +const provider = new Web3Provider(window.ethereum) +const signer = provider.getSigner() + +const quoteRequest = { + sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + from: account, + receiver: account, + sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH + kind: OrderQuoteSide.kind.SELL, +} + +const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN }) + +async function main() { + const { quote } = await orderBookApi.getQuote(quoteRequest) + + const orderSigningResult = await OrderSigningUtils.signOrder(quote, chainId, signer) + + const orderId = await orderBookApi.sendOrder({ ...quote, ...orderSigningResult }) + + const order = await orderBookApi.getOrder(orderId) + + const trades = await orderBookApi.getTrades({ orderId }) + + const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + + const cancellationResult = await orderBookApi.sendSignedOrderCancellations({...orderCancellationSigningResult, orderUids: [orderId] }) + + console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) +} +``` + +**`See`** + + - Swagger documentation https://api.cow.fi/docs/#/ + - OrderBook API https://github.com/cowprotocol/services + +## Constructors + +### constructor + +• **new OrderBookApi**(`context?`): [`OrderBookApi`](OrderBookApi.md) + +Creates a new instance of the CoW Protocol OrderBook API client. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `context` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | The API context to use. If not provided, the default context will be used. | + +#### Returns + +[`OrderBookApi`](OrderBookApi.md) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:141 + +## Properties + +### context + +• **context**: [`ApiContext`](../interfaces/ApiContext.md) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:133 + +___ + +### rateLimiter + +• `Private` **rateLimiter**: `RateLimiter` + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:135 + +## Methods + +### fetch + +▸ **fetch**<`T`\>(`params`, `contextOverride?`): `Promise`<`T`\> + +Make a request to the API. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`FetchParams`](../interfaces/FetchParams.md) | The parameters for the request. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<`T`\> + +The response from the API. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:421 + +___ + +### getApiBaseUrls + +▸ **getApiBaseUrls**(`env`): [`ApiBaseUrls`](../modules.md#apibaseurls) + +Get the base URLs for the API endpoints given the environment. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `env` | [`CowEnv`](../modules.md#cowenv) | The environment to get the base URLs for. | + +#### Returns + +[`ApiBaseUrls`](../modules.md#apibaseurls) + +The base URLs for the API endpoints. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:409 + +___ + +### getAppData + +▸ **getAppData**(`appDataHash`, `contextOverride?`): `Promise`<[`AppDataObject`](../modules.md#appdataobject)\> + +Retrieve the full app data for a given app data hash. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDataHash` | `string` | `bytes32` hash of the app data | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`AppDataObject`](../modules.md#appdataobject)\> + +Full app data that was uploaded + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:339 + +___ + +### getContextWithOverride + +▸ **getContextWithOverride**(`contextOverride?`): [`ApiContext`](../interfaces/ApiContext.md) + +Apply an override to the context for a request. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +[`ApiContext`](../interfaces/ApiContext.md) + +New context with the override applied. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:400 + +___ + +### getNativePrice + +▸ **getNativePrice**(`tokenAddress`, `contextOverride?`): `Promise`<[`NativePriceResponse`](../modules.md#nativepriceresponse)\> + +Get the native price of a token. + +**NOTE**: The native price is the price of the token in the native currency of the chain. For example, on Ethereum +this would be the price of the token in ETH. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `tokenAddress` | `string` | The address of the ERC-20 token. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`NativePriceResponse`](../modules.md#nativepriceresponse)\> + +The native price of the token. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:319 + +___ + +### getOrder + +▸ **getOrder**(`orderUid`, `contextOverride?`): `Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)\> + +Get an order by its unique identifier, `orderUid`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUid` | `string` | The unique identifier of the order. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)\> + +The order matching the request. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:227 + +___ + +### getOrderCompetitionStatus + +▸ **getOrderCompetitionStatus**(`orderUid`, `contextOverride?`): `Promise`<[`CompetitionOrderStatus`](../modules.md#competitionorderstatus)\> + +Get the order status while open + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `orderUid` | `string` | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | + +#### Returns + +`Promise`<[`CompetitionOrderStatus`](../modules.md#competitionorderstatus)\> + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:236 + +___ + +### getOrderLink + +▸ **getOrderLink**(`orderUid`, `contextOverride?`): `string` + +Generate an API endpoint for an order by its unique identifier, `orderUid`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUid` | `string` | The unique identifier of the order. | +| `contextOverride?` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`string` + +The API endpoint to get the order. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:390 + +___ + +### getOrderMultiEnv + +▸ **getOrderMultiEnv**(`orderUid`, `contextOverride?`): `Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)\> + +Attempt to get an order by its unique identifier, `orderUid`, from multiple environments. + +**NOTE**: The environment refers to either `prod` or `staging`. This allows a conveience method to +attempt to get an order from both environments, in the event that the order is not found in the +environment specified in the context. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUid` | `string` | The unique identifier of the order. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)\> + +The order matching the request. + +**`Throws`** + +If the order is not found in any of the environments. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:251 + +___ + +### getOrders + +▸ **getOrders**(`request`, `contextOverride?`): `Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)[]\> + +Get a list of orders for a given `owner`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `request` | [`GetOrdersRequest`](../modules.md#getordersrequest) | The request parameters with `request.offset = 0` and `request.limit = 1000` by default. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)[]\> + +A list of orders matching the request. + +**`See`** + + - [GetOrdersRequest](../modules.md#getordersrequest) + - [EnrichedOrder](../interfaces/EnrichedOrder.md) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:189 + +___ + +### getQuote + +▸ **getQuote**(`requestBody`, `contextOverride?`): `Promise`<[`OrderQuoteResponse`](../modules.md#orderquoteresponse)\> + +Get a quote for an order. +This allows for the calculation of the total cost of an order, including fees, before signing and submitting. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `requestBody` | [`OrderQuoteRequest`](../modules.md#orderquoterequest) | The parameters for the order quote request. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`OrderQuoteResponse`](../modules.md#orderquoteresponse)\> + +A hydrated order matching the request ready to be signed. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:279 + +___ + +### getSolverCompetition + +▸ **getSolverCompetition**(`auctionId`, `contextOverride?`): `Promise`<[`SolverCompetitionResponse`](../modules.md#solvercompetitionresponse)\> + +Given an auction id or tx hash, get the details of the solver competition for that auction. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `auctionId` | `number` | - | +| `contextOverride?` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`SolverCompetitionResponse`](../modules.md#solvercompetitionresponse)\> + +An object containing the solver competition details + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:361 + +▸ **getSolverCompetition**(`txHash`, `contextOverride?`): `Promise`<[`SolverCompetitionResponse`](../modules.md#solvercompetitionresponse)\> + +Given an auction id or tx hash, get the details of the solver competition for that auction. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `txHash` | `string` | - | +| `contextOverride?` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`SolverCompetitionResponse`](../modules.md#solvercompetitionresponse)\> + +An object containing the solver competition details + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:363 + +___ + +### getTotalSurplus + +▸ **getTotalSurplus**(`address`, `contextOverride?`): `Promise`<[`TotalSurplus`](../modules.md#totalsurplus)\> + +Given a user's address, get the total surplus that they have earned. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `address` | `string` | The user's address | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`TotalSurplus`](../modules.md#totalsurplus)\> + +Calculated user's surplus + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:329 + +___ + +### getTrades + +▸ **getTrades**(`request`, `contextOverride?`): `Promise`<[`Trade`](../modules.md#trade)[]\> + +Get all the trades for either an `owner` **OR** `orderUid`. + +Given that an order *may* be partially fillable, it is possible that a discrete order (`orderUid`) +may have *multiple* trades. Therefore, this method returns a list of trades, either for *all* the orders +of a given `owner`, or for a discrete order (`orderUid`). + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `request` | `Object` | Either an `owner` or an `orderUid` **MUST** be specified. | +| `request.orderUid?` | `string` | - | +| `request.owner?` | `string` | - | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`Trade`](../modules.md#trade)[]\> + +A list of trades matching the request. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:166 + +___ + +### getTxOrders + +▸ **getTxOrders**(`txHash`, `contextOverride?`): `Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)[]\> + +Get a list of orders from a given settlement transaction hash. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `txHash` | `string` | The transaction hash. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`EnrichedOrder`](../interfaces/EnrichedOrder.md)[]\> + +A list of orders matching the request. + +**`See`** + +[EnrichedOrder](../interfaces/EnrichedOrder.md) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:212 + +___ + +### getVersion + +▸ **getVersion**(`contextOverride?`): `Promise`<`string`\> + +Get the version of the API. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<`string`\> + +The version of the API. + +**`See`** + +[https://api.cow.fi/docs/#/default/get_api_v1_version](https://api.cow.fi/docs/#/default/get_api_v1_version) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:152 + +___ + +### sendOrder + +▸ **sendOrder**(`requestBody`, `contextOverride?`): `Promise`<`string`\> + +Submit an order to the order book. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `requestBody` | [`OrderCreation`](../modules.md#ordercreation) | The signed order to be submitted. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<`string`\> + +The unique identifier of the order. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:306 + +___ + +### sendSignedOrderCancellations + +▸ **sendSignedOrderCancellations**(`requestBody`, `contextOverride?`): `Promise`<`void`\> + +Cancel one or more orders. + +**NOTE**: Cancellation is on a best-effort basis. Orders that are already in the process of being settled +(ie. transaction has been submitted to chain by the solver) cannot not be cancelled. +**CAUTION**: This method can only be used to cancel orders that were signed using `EIP-712` or `eth_sign (EIP-191)`. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `requestBody` | [`OrderCancellations`](../modules.md#ordercancellations) | Orders to be cancelled and signed instructions to cancel them. | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<`void`\> + +A list of order unique identifiers that were successfully cancelled. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:293 + +___ + +### uploadAppData + +▸ **uploadAppData**(`appDataHash`, `fullAppData`, `contextOverride?`): `Promise`<[`AppDataObject`](../modules.md#appdataobject)\> + +Upload the full app data that corresponds to a given app data hash. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appDataHash` | `string` | `bytes32` hash of the app data | +| `fullAppData` | `string` | Full app data to be uploaded | +| `contextOverride` | `Partial`<[`ApiContext`](../interfaces/ApiContext.md)\> | Optional context override for this request. | + +#### Returns + +`Promise`<[`AppDataObject`](../modules.md#appdataobject)\> + +The string encoding of the full app data that was uploaded. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:350 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApiError.md b/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApiError.md new file mode 100644 index 000000000..908f816e9 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/OrderBookApiError.md @@ -0,0 +1,196 @@ +--- +id: "OrderBookApiError" +title: "Class: OrderBookApiError" +sidebar_label: "OrderBookApiError" +sidebar_position: 0 +custom_edit_url: null +--- + +Error thrown when the CoW Protocol OrderBook API returns an error. + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `unknown` | + +## Hierarchy + +- `Error` + + ↳ **`OrderBookApiError`** + +## Constructors + +### constructor + +• **new OrderBookApiError**<`T`\>(`response`, `body`): [`OrderBookApiError`](OrderBookApiError.md)<`T`\> + +Error thrown when the CoW Protocol OrderBook API returns an error. + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `unknown` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `response` | `Response` | The response from the CoW Protocol OrderBook API. | +| `body` | `T` | The body of the response. | + +#### Returns + +[`OrderBookApiError`](OrderBookApiError.md)<`T`\> + +#### Overrides + +Error.constructor + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:14 + +## Properties + +### body + +• `Readonly` **body**: `T` + +The body of the response. + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:14 + +___ + +### message + +• **message**: `string` + +#### Inherited from + +Error.message + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1068 + +___ + +### name + +• **name**: `string` + +#### Inherited from + +Error.name + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1067 + +___ + +### response + +• `Readonly` **response**: `Response` + +The response from the CoW Protocol OrderBook API. + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:14 + +___ + +### stack + +• `Optional` **stack**: `string` + +#### Inherited from + +Error.stack + +#### Defined in + +node_modules/typescript/lib/lib.es5.d.ts:1069 + +___ + +### prepareStackTrace + +▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` + +#### Type declaration + +▸ (`err`, `stackTraces`): `any` + +Optional override for formatting stack traces + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `err` | `Error` | +| `stackTraces` | `CallSite`[] | + +##### Returns + +`any` + +**`See`** + +https://v8.dev/docs/stack-trace-api#customizing-stack-traces + +#### Inherited from + +Error.prepareStackTrace + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:143 + +___ + +### stackTraceLimit + +▪ `Static` **stackTraceLimit**: `number` + +#### Inherited from + +Error.stackTraceLimit + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:145 + +## Methods + +### captureStackTrace + +▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` + +Create .stack property on a target object + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `targetObject` | `object` | +| `constructorOpt?` | `Function` | + +#### Returns + +`void` + +#### Inherited from + +Error.captureStackTrace + +#### Defined in + +external/cow-sdk/node_modules/@types/node/globals.d.ts:136 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/OrderSigningUtils.md b/docs/cow-protocol/sdks/cow-sdk/classes/OrderSigningUtils.md new file mode 100644 index 000000000..5b34b4b2a --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/OrderSigningUtils.md @@ -0,0 +1,232 @@ +--- +id: "OrderSigningUtils" +title: "Class: OrderSigningUtils" +sidebar_label: "OrderSigningUtils" +sidebar_position: 0 +custom_edit_url: null +--- + +Utility class for signing order intents and cancellations. + +**`Remarks`** + +This class only supports `eth_sign` and wallet-native EIP-712 signing. For use of + `presign` and `eip1271` [see the docs](https://docs.cow.fi/). + +**`Example`** + +```typescript +import { OrderSigningUtils, SupportedChainId, UnsignedOrder } from '@cowprotocol/cow-sdk' +import { Web3Provider } from '@ethersproject/providers' + +const account = 'YOUR_WALLET_ADDRESS' +const chainId = 100 // Gnosis chain +const provider = new Web3Provider(window.ethereum) +const signer = provider.getSigner() + +async function main() { + const orderToSign: UnsignedOrder = { ... } + const orderSigningResult = await OrderSigningUtils.signOrder(orderToSign, chainId, signer) + + const orderId = await orderBookApi.sendOrder({ ...orderToSign, ...orderSigningResult }) + + const order = await orderBookApi.getOrder(orderId) + + const trades = await orderBookApi.getTrades({ orderId }) + + const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + + const cancellationResult = await orderBookApi.sendSignedOrderCancellations({...orderCancellationSigningResult, orderUids: [orderId] }) + + console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) +} +``` + +## Constructors + +### constructor + +• **new OrderSigningUtils**(): [`OrderSigningUtils`](OrderSigningUtils.md) + +#### Returns + +[`OrderSigningUtils`](OrderSigningUtils.md) + +## Methods + +### generateOrderId + +▸ **generateOrderId**(`chainId`, `order`, `params`): `Promise`<\{ `orderDigest`: `string` ; `orderId`: `string` }\> + +Hashes the order intent and generate deterministic order ID. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | The CoW Protocol `chainId` context that's being used. | +| `order` | `Order` | order to sign | +| `params` | `Pick`<`OrderUidParams`, ``"owner"``\> | order unique identifier parameters. | + +#### Returns + +`Promise`<\{ `orderDigest`: `string` ; `orderId`: `string` }\> + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:109 + +___ + +### getDomain + +▸ **getDomain**(`chainId`): `Promise`<`TypedDataDomain`\> + +Get the EIP-712 typed domain data being used for signing. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | The CoW Protocol `chainId` context that's being used. | + +#### Returns + +`Promise`<`TypedDataDomain`\> + +The EIP-712 typed domain data. + +**`See`** + +https://eips.ethereum.org/EIPS/eip-712 + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:98 + +___ + +### getDomainSeparator + +▸ **getDomainSeparator**(`chainId`): `Promise`<`string`\> + +Get the domain separator hash for the EIP-712 typed domain data being used for signing. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | {SupportedChainId} chainId The CoW Protocol protocol `chainId` context that's being used. | + +#### Returns + +`Promise`<`string`\> + +A string representation of the EIP-712 typed domain data hash. + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:123 + +___ + +### getEIP712Types + +▸ **getEIP712Types**(): `Record`<`string`, `unknown`\> + +Get the EIP-712 types used for signing a GPv2Order.Data struct. This is useful for when +signing orders using smart contracts, whereby this SDK cannot do the EIP-1271 signing for you. + +#### Returns + +`Record`<`string`, `unknown`\> + +The EIP-712 types used for signing. + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:134 + +___ + +### signOrder + +▸ **signOrder**(`order`, `chainId`, `signer`): `Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Sign the order intent with the specified signer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `order` | [`UnsignedOrder`](../modules.md#unsignedorder) | The unsigned order intent to be placed. | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | The CoW Protocol `chainId` context that's being used. | +| `signer` | `Signer` | The signer who is placing the order intent. | + +#### Returns + +`Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Encoded signature including signing scheme for the order. + +**`Remarks`** + +If the API reports an error with the signature, it is likely to be due to an incorrectly + specified `chainId`. Please ensure that the `chainId` is correct for the network you are + using. + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:55 + +___ + +### signOrderCancellation + +▸ **signOrderCancellation**(`orderUid`, `chainId`, `signer`): `Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Sign a cancellation message of an order intent with the specified signer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUid` | `string` | The unique identifier of the order to cancel. | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | The CoW Protocol `chainid` context that's being used. | +| `signer` | `Signer` | The signer who initially placed the order intent. | + +#### Returns + +`Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Encoded signature including signing scheme for the cancellation. + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:67 + +___ + +### signOrderCancellations + +▸ **signOrderCancellations**(`orderUids`, `chainId`, `signer`): `Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Sign a cancellation message of multiple order intents with the specified signer. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUids` | `string`[] | An array of `orderUid` to cancel. | +| `chainId` | [`SupportedChainId`](../enums/SupportedChainId.md) | The CoW Protocol `chainId` context that's being used. | +| `signer` | `Signer` | The signer who initially placed the order intents. | + +#### Returns + +`Promise`<[`SigningResult`](../modules.md#signingresult)\> + +Encoded signature including signing scheme for the cancellation. + +#### Defined in + +external/cow-sdk/src/order-signing/orderSigningUtils.ts:83 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/SubgraphApi.md b/docs/cow-protocol/sdks/cow-sdk/classes/SubgraphApi.md new file mode 100644 index 000000000..f7696b151 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/SubgraphApi.md @@ -0,0 +1,209 @@ +--- +id: "SubgraphApi" +title: "Class: SubgraphApi" +sidebar_label: "SubgraphApi" +sidebar_position: 0 +custom_edit_url: null +--- + +TheGraph API client for CoW Protocol. + +## Constructors + +### constructor + +• **new SubgraphApi**(`context?`): [`SubgraphApi`](SubgraphApi.md) + +Create a new CoW Protocol API instance. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `context` | `Partial`<`SubgraphApiContext`\> | Any properties of the SubgraphApiContext may be overridden by passing a PartialSubgraphApiContext. | + +#### Returns + +[`SubgraphApi`](SubgraphApi.md) + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:58 + +## Properties + +### API\_NAME + +• **API\_NAME**: `string` = `'CoW Protocol Subgraph'` + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:50 + +___ + +### context + +• **context**: `SubgraphApiContext` + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:52 + +## Methods + +### getContextWithOverride + +▸ **getContextWithOverride**(`contextOverride?`): `SubgraphApiContext` + +Override parts of the context for a specific call. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `contextOverride` | `Partial`<`SubgraphApiContext`\> | Override the context for this call only. | + +#### Returns + +`SubgraphApiContext` + +The context with the override applied. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:133 + +___ + +### getEnvConfigs + +▸ **getEnvConfigs**(`env`): `SubgraphApiBaseUrls` + +Get the base URLs for the given environment. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `env` | [`CowEnv`](../modules.md#cowenv) | The environment to get the base URLs for. | + +#### Returns + +`SubgraphApiBaseUrls` + +The base URLs for the given environment. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:142 + +___ + +### getLastDaysVolume + +▸ **getLastDaysVolume**(`days`, `contextOverride?`): `Promise`<`LastDaysVolumeQuery`\> + +Query the volume over the last N days from TheGraph for the CoW Protocol. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `days` | `number` | The number of days to query. | +| `contextOverride` | `Partial`<`SubgraphApiContext`\> | Override the context for this call only. | + +#### Returns + +`Promise`<`LastDaysVolumeQuery`\> + +The volume for the last N days. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:81 + +___ + +### getLastHoursVolume + +▸ **getLastHoursVolume**(`hours`, `contextOverride?`): `Promise`<`LastHoursVolumeQuery`\> + +Query the volume over the last N hours from TheGraph for the CoW Protocol. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `hours` | `number` | The number of hours to query. | +| `contextOverride` | `Partial`<`SubgraphApiContext`\> | Override the context for this call only. | + +#### Returns + +`Promise`<`LastHoursVolumeQuery`\> + +The volume for the last N hours. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:91 + +___ + +### getTotals + +▸ **getTotals**(`contextOverride?`): `Promise`<\{ `__typename?`: ``"Total"`` ; `feesEth?`: `any` ; `feesUsd?`: `any` ; `orders`: `any` ; `settlements`: `any` ; `tokens`: `any` ; `traders`: `any` ; `volumeEth?`: `any` ; `volumeUsd?`: `any` }\> + +Query the totals from TheGraph for the CoW Protocol. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `contextOverride` | `Partial`<`SubgraphApiContext`\> | Override the context for this call only. | + +#### Returns + +`Promise`<\{ `__typename?`: ``"Total"`` ; `feesEth?`: `any` ; `feesUsd?`: `any` ; `orders`: `any` ; `settlements`: `any` ; `tokens`: `any` ; `traders`: `any` ; `volumeEth?`: `any` ; `volumeUsd?`: `any` }\> + +The totals for the CoW Protocol. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:70 + +___ + +### runQuery + +▸ **runQuery**<`T`\>(`query`, `variables?`, `contextOverride?`): `Promise`<`T`\> + +Run a query against the CoW Protocol Subgraph. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Default value | Description | +| :------ | :------ | :------ | :------ | +| `query` | `string` \| `DocumentNode` | `undefined` | GQL query string or DocumentNode. | +| `variables` | `undefined` \| `Variables` | `undefined` | To be passed to the query. | +| `contextOverride` | `Partial`<`SubgraphApiContext`\> | `{}` | Override the context for this call only. | + +#### Returns + +`Promise`<`T`\> + +Results of the query. + +**`Throws`** + +[CowError](CowError.md) if the query fails. + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:106 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/TradingSdk.md b/docs/cow-protocol/sdks/cow-sdk/classes/TradingSdk.md new file mode 100644 index 000000000..105205fda --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/TradingSdk.md @@ -0,0 +1,169 @@ +--- +id: "TradingSdk" +title: "Class: TradingSdk" +sidebar_label: "TradingSdk" +sidebar_position: 0 +custom_edit_url: null +--- + +## Constructors + +### constructor + +• **new TradingSdk**(`traderParams`): [`TradingSdk`](TradingSdk.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `traderParams` | [`TraderParameters`](../interfaces/TraderParameters.md) | + +#### Returns + +[`TradingSdk`](TradingSdk.md) + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:17 + +## Properties + +### traderParams + +• `Readonly` **traderParams**: [`TraderParameters`](../interfaces/TraderParameters.md) + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:17 + +## Methods + +### getPreSignTransaction + +▸ **getPreSignTransaction**(`params`): `Promise`<[`TransactionParams`](../interfaces/TransactionParams.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | `Object` | +| `params.account` | `string` | +| `params.orderId` | `string` | + +#### Returns + +`Promise`<[`TransactionParams`](../interfaces/TransactionParams.md)\> + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:53 + +___ + +### getQuote + +▸ **getQuote**(`params`, `advancedSettings?`): `Promise`<[`QuoteAndPost`](../interfaces/QuoteAndPost.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`TradeParameters`](../interfaces/TradeParameters.md) | +| `advancedSettings?` | [`SwapAdvancedSettings`](../interfaces/SwapAdvancedSettings.md) | + +#### Returns + +`Promise`<[`QuoteAndPost`](../interfaces/QuoteAndPost.md)\> + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:19 + +___ + +### mergeParams + +▸ **mergeParams**<`T`\>(`params`): `T` & [`TraderParameters`](../interfaces/TraderParameters.md) + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | `T` | + +#### Returns + +`T` & [`TraderParameters`](../interfaces/TraderParameters.md) + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:59 + +___ + +### postLimitOrder + +▸ **postLimitOrder**(`params`, `advancedSettings?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`LimitTradeParameters`](../interfaces/LimitTradeParameters.md) | +| `advancedSettings?` | [`LimitOrderAdvancedSettings`](../interfaces/LimitOrderAdvancedSettings.md) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:32 + +___ + +### postSellNativeCurrencyOrder + +▸ **postSellNativeCurrencyOrder**(`params`, `advancedSettings?`): `Promise`<`Promise`<\{ `orderId`: `string` ; `txHash`: `string` }\>\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`TradeParameters`](../interfaces/TradeParameters.md) | +| `advancedSettings?` | [`SwapAdvancedSettings`](../interfaces/SwapAdvancedSettings.md) | + +#### Returns + +`Promise`<`Promise`<\{ `orderId`: `string` ; `txHash`: `string` }\>\> + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:36 + +___ + +### postSwapOrder + +▸ **postSwapOrder**(`params`, `advancedSettings?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`TradeParameters`](../interfaces/TradeParameters.md) | +| `advancedSettings?` | [`SwapAdvancedSettings`](../interfaces/SwapAdvancedSettings.md) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/tradingSdk.ts:28 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/Twap.md b/docs/cow-protocol/sdks/cow-sdk/classes/Twap.md new file mode 100644 index 000000000..0c7bc19e8 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/Twap.md @@ -0,0 +1,877 @@ +--- +id: "Twap" +title: "Class: Twap" +sidebar_label: "Twap" +sidebar_position: 0 +custom_edit_url: null +--- + +`ComposableCoW` implementation of a TWAP order. + +**`Author`** + +mfw78 + +## Hierarchy + +- [`ConditionalOrder`](ConditionalOrder.md)<[`TwapData`](../interfaces/TwapData.md), [`TwapStruct`](../interfaces/TwapStruct.md)\> + + ↳ **`Twap`** + +## Constructors + +### constructor + +• **new Twap**(`params`): [`Twap`](Twap.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderArguments`](../interfaces/ConditionalOrderArguments.md)<[`TwapData`](../interfaces/TwapData.md)\> | + +#### Returns + +[`Twap`](Twap.md) + +**`See`** + +[ConditionalOrder.constructor](ConditionalOrder.md#constructor) + +**`Throws`** + +If the TWAP order is invalid. + +**`Throws`** + +If the TWAP order is not ABI-encodable. + +**`Throws`** + +If the handler is not the TWAP address. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[constructor](ConditionalOrder.md#constructor) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:172 + +## Properties + +### data + +• `Readonly` **data**: [`TwapData`](../interfaces/TwapData.md) + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[data](ConditionalOrder.md#data) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:37 + +___ + +### handler + +• `Readonly` **handler**: `string` + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[handler](ConditionalOrder.md#handler) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:35 + +___ + +### hasOffChainInput + +• `Readonly` **hasOffChainInput**: `boolean` + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[hasOffChainInput](ConditionalOrder.md#hasoffchaininput) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:39 + +___ + +### isSingleOrder + +• **isSingleOrder**: `boolean` = `true` + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[isSingleOrder](ConditionalOrder.md#issingleorder) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:164 + +___ + +### salt + +• `Readonly` **salt**: `string` + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[salt](ConditionalOrder.md#salt) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:36 + +___ + +### staticInput + +• `Readonly` **staticInput**: [`TwapStruct`](../interfaces/TwapStruct.md) + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[staticInput](ConditionalOrder.md#staticinput) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:38 + +## Accessors + +### context + +• `get` **context**(): `undefined` \| [`ContextFactory`](../modules.md#contextfactory) + +Enforces that TWAPs will commence at the beginning of a block by use of the +`CurrentBlockTimestampFactory` contract to provide the current block timestamp +as the start time of the TWAP. + +#### Returns + +`undefined` \| [`ContextFactory`](../modules.md#contextfactory) + +#### Overrides + +ConditionalOrder.context + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:205 + +___ + +### createCalldata + +• `get` **createCalldata**(): `string` + +Get the calldata for creating the conditional order. + +This will automatically determine whether or not to use `create` or `createWithContext` based on the +order type's context dependency. + +**NOTE**: By default, this will cause the create to emit the `ConditionalOrderCreated` event. + +#### Returns + +`string` + +The calldata for creating the conditional order. + +#### Inherited from + +ConditionalOrder.createCalldata + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:113 + +___ + +### ctx + +• `get` **ctx**(): `string` + +The context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet + +The context, relates to the 'ctx' in the contract: https://github.com/cowprotocol/composable-cow/blob/c7fb85ab10c05e28a1632ba97a1749fb261fcdfb/src/interfaces/IConditionalOrder.sol#L38 + +#### Returns + +`string` + +#### Inherited from + +ConditionalOrder.ctx + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:166 + +___ + +### id + +• `get` **id**(): `string` + +Calculate the id of the conditional order (which also happens to be the key used for `ctx` in the ComposableCoW contract). + +This is a `keccak256` hash of the serialized conditional order. + +#### Returns + +`string` + +The id of the conditional order. + +#### Inherited from + +ConditionalOrder.id + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:157 + +___ + +### leaf + +• `get` **leaf**(): [`ConditionalOrderParams`](../modules.md#conditionalorderparams) + +Get the `leaf` of the conditional order. This is the data that is used to create the merkle tree. + +For the purposes of this library, the `leaf` is the `ConditionalOrderParams` struct. + +#### Returns + +[`ConditionalOrderParams`](../modules.md#conditionalorderparams) + +The `leaf` of the conditional order. + +**`See`** + +ConditionalOrderParams + +#### Inherited from + +ConditionalOrder.leaf + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:177 + +___ + +### offChainInput + +• `get` **offChainInput**(): `string` + +If the conditional order has off-chain input, return it! + +**NOTE**: This should be overridden by any conditional order that has off-chain input. + +#### Returns + +`string` + +The off-chain input. + +#### Inherited from + +ConditionalOrder.offChainInput + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:201 + +___ + +### orderType + +• `get` **orderType**(): `string` + +Get a descriptive name for the type of the conditional order (i.e twap, dca, etc). + +#### Returns + +`string` + +The concrete type of the conditional order. + +#### Overrides + +ConditionalOrder.orderType + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:219 + +___ + +### removeCalldata + +• `get` **removeCalldata**(): `string` + +Get the calldata for removing a conditional order that was created as a single order. + +#### Returns + +`string` + +The calldata for removing the conditional order. + +#### Inherited from + +ConditionalOrder.removeCalldata + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:145 + +## Methods + +### assertIsValid + +▸ **assertIsValid**(): `void` + +#### Returns + +`void` + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[assertIsValid](ConditionalOrder.md#assertisvalid) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:95 + +___ + +### cabinet + +▸ **cabinet**(`params`): `Promise`<`string`\> + +Checks the value in the cabinet for a given owner and chain + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`OwnerContext`](../modules.md#ownercontext) | owner context, to be able to check the cabinet | + +#### Returns + +`Promise`<`string`\> + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[cabinet](ConditionalOrder.md#cabinet) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:337 + +___ + +### encodeStaticInput + +▸ **encodeStaticInput**(): `string` + +Get the encoded static input for the TWAP order. + +#### Returns + +`string` + +The ABI-encoded TWAP order. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[encodeStaticInput](ConditionalOrder.md#encodestaticinput) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:449 + +___ + +### encodeStaticInputHelper + +▸ **encodeStaticInputHelper**(`orderDataTypes`, `staticInput`): `string` + +A helper function for generically serializing a conditional order's static input. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderDataTypes` | `string`[] | ABI types for the order's data struct. | +| `staticInput` | [`TwapStruct`](../interfaces/TwapStruct.md) | - | + +#### Returns + +`string` + +An ABI-encoded representation of the order's data struct. + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[encodeStaticInputHelper](ConditionalOrder.md#encodestaticinputhelper) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:234 + +___ + +### endTimestamp + +▸ **endTimestamp**(`startTimestamp`): `number` + +Given the start timestamp of the TWAP, calculate the end timestamp. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `startTimestamp` | `number` | The start timestamp of the TWAP. | + +#### Returns + +`number` + +The timestamp at which the TWAP will end. + +**`Dev`** + +As usually the `endTimestamp` is used when determining a TWAP's validity, we don't + do any lookup to the blockchain to determine the start timestamp, as this has likely + already been done during the verification flow. + +**`Dev`** + +Beware to handle the case of `span != 0` ie. `durationOfPart.durationType !== DurationType.AUTO`. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:302 + +___ + +### handlePollFailedAlreadyPresent + +▸ **handlePollFailedAlreadyPresent**(`_orderUid`, `_order`, `params`): `Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +Handles the error when the order is already present in the orderbook. + +Given the current part is in the book, it will signal to Watch Tower what to do: + - Wait until the next part starts + - Don't try again if current part is the last one + +NOTE: The error messages will refer to the parts 1-indexed, so first part is 1, second part is 2, etc. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `_orderUid` | `string` | +| `_order` | `DataStruct` | +| `params` | [`PollParams`](../modules.md#pollparams) | + +#### Returns + +`Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[handlePollFailedAlreadyPresent](ConditionalOrder.md#handlepollfailedalreadypresent) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:378 + +___ + +### isAuthorized + +▸ **isAuthorized**(`params`): `Promise`<`boolean`\> + +Checks if the owner authorized the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`OwnerContext`](../modules.md#ownercontext) | owner context, to be able to check if the order is authorized | + +#### Returns + +`Promise`<`boolean`\> + +true if the owner authorized the order, false otherwise. + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[isAuthorized](ConditionalOrder.md#isauthorized) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:326 + +___ + +### isValid + +▸ **isValid**(): [`IsValidResult`](../modules.md#isvalidresult) + +Validate the TWAP order. + +#### Returns + +[`IsValidResult`](../modules.md#isvalidresult) + +Whether the TWAP order is valid. + +**`Throws`** + +If the TWAP order is invalid. + +**`See`** + +[TwapStruct](../interfaces/TwapStruct.md) for the native struct. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[isValid](ConditionalOrder.md#isvalid) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:230 + +___ + +### poll + +▸ **poll**(`params`): `Promise`<[`PollResult`](../modules.md#pollresult)\> + +Poll a conditional order to see if it is tradeable. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`PollParams`](../modules.md#pollparams) | + +#### Returns + +`Promise`<[`PollResult`](../modules.md#pollresult)\> + +The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order. + +**`Throws`** + +If the conditional order is not tradeable. + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[poll](ConditionalOrder.md#poll) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:249 + +___ + +### pollValidate + +▸ **pollValidate**(`params`): `Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +Checks if the owner authorized the conditional order. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`PollParams`](../modules.md#pollparams) | + +#### Returns + +`Promise`<`undefined` \| [`PollResultErrors`](../modules.md#pollresulterrors)\> + +true if the owner authorized the order, false otherwise. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[pollValidate](ConditionalOrder.md#pollvalidate) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:320 + +___ + +### serialize + +▸ **serialize**(): `string` + +Serialize the TWAP order into it's ABI-encoded form. + +#### Returns + +`string` + +The ABI-encoded TWAP order. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[serialize](ConditionalOrder.md#serialize) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:441 + +___ + +### startTimestamp + +▸ **startTimestamp**(`params`): `Promise`<`number`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`OwnerContext`](../modules.md#ownercontext) | + +#### Returns + +`Promise`<`number`\> + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:268 + +___ + +### toString + +▸ **toString**(): `string` + +Create a human-readable string representation of the TWAP order. + +#### Returns + +`string` + +A human-readable string representation of the TWAP order. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[toString](ConditionalOrder.md#tostring) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:476 + +___ + +### transformDataToStruct + +▸ **transformDataToStruct**(`data`): [`TwapStruct`](../interfaces/TwapStruct.md) + +Transform parameters into a native struct. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | [`TwapData`](../interfaces/TwapData.md) | As passed by the consumer of the API. | + +#### Returns + +[`TwapStruct`](../interfaces/TwapStruct.md) + +A formatted struct as expected by the smart contract. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[transformDataToStruct](ConditionalOrder.md#transformdatatostruct) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:517 + +___ + +### transformStructToData + +▸ **transformStructToData**(`struct`): [`TwapData`](../interfaces/TwapData.md) + +Transform parameters into a TWAP order struct. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `struct` | [`TwapStruct`](../interfaces/TwapStruct.md) | + +#### Returns + +[`TwapData`](../interfaces/TwapData.md) + +A formatted struct as expected by the smart contract. + +#### Overrides + +[ConditionalOrder](ConditionalOrder.md).[transformStructToData](ConditionalOrder.md#transformstructtodata) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:527 + +___ + +### deserialize + +▸ **deserialize**(`twapSerialized`): [`Twap`](Twap.md) + +Deserialize a TWAP order from it's ABI-encoded form. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `twapSerialized` | `string` | ABI-encoded TWAP order to deserialize. | + +#### Returns + +[`Twap`](Twap.md) + +A deserialized TWAP order. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:458 + +___ + +### deserializeHelper + +▸ **deserializeHelper**<`T`\>(`s`, `handler`, `orderDataTypes`, `callback`): `T` + +A helper function for generically deserializing a conditional order. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `s` | `string` | The ABI-encoded `IConditionalOrder.Params` struct to deserialize. | +| `handler` | `string` | Address of the handler for the conditional order. | +| `orderDataTypes` | `string`[] | ABI types for the order's data struct. | +| `callback` | (`d`: `any`, `salt`: `string`) => `T` | A callback function that takes the deserialized data struct and the salt and returns an instance of the class. | + +#### Returns + +`T` + +An instance of the conditional order class. + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[deserializeHelper](ConditionalOrder.md#deserializehelper) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:400 + +___ + +### fromData + +▸ **fromData**(`data`, `salt?`): [`Twap`](Twap.md) + +Create a TWAP order with sound defaults. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | [`TwapData`](../interfaces/TwapData.md) | The TWAP order parameters in a more user-friendly format. | +| `salt?` | `string` | - | + +#### Returns + +[`Twap`](Twap.md) + +An instance of the TWAP order. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:187 + +___ + +### fromParams + +▸ **fromParams**(`params`): [`Twap`](Twap.md) + +Create a TWAP order with sound defaults. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderParams`](../modules.md#conditionalorderparams) | + +#### Returns + +[`Twap`](Twap.md) + +An instance of the TWAP order. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:196 + +___ + +### leafToId + +▸ **leafToId**(`leaf`): `string` + +Calculate the id of the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `leaf` | [`ConditionalOrderParams`](../modules.md#conditionalorderparams) | The `leaf` representing the conditional order. | + +#### Returns + +`string` + +The id of the conditional order. + +**`See`** + +ConditionalOrderParams + +#### Inherited from + +[ConditionalOrder](ConditionalOrder.md).[leafToId](ConditionalOrder.md#leaftoid) + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrder.ts:191 diff --git a/docs/cow-protocol/sdks/cow-sdk/classes/_category_.yml b/docs/cow-protocol/sdks/cow-sdk/classes/_category_.yml new file mode 100644 index 000000000..55c7980a4 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/classes/_category_.yml @@ -0,0 +1,2 @@ +label: "Classes" +position: 3 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/BuyTokenDestination.md b/docs/cow-protocol/sdks/cow-sdk/enums/BuyTokenDestination.md new file mode 100644 index 000000000..ed0826900 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/BuyTokenDestination.md @@ -0,0 +1,29 @@ +--- +id: "BuyTokenDestination" +title: "Enumeration: BuyTokenDestination" +sidebar_label: "BuyTokenDestination" +sidebar_position: 0 +custom_edit_url: null +--- + +Where should the `buyToken` be transferred to? + +## Enumeration Members + +### ERC20 + +• **ERC20** = ``"erc20"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts:9 + +___ + +### INTERNAL + +• **INTERNAL** = ``"internal"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts:10 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/CompetitionOrderStatus.type.md b/docs/cow-protocol/sdks/cow-sdk/enums/CompetitionOrderStatus.type.md new file mode 100644 index 000000000..ce48a230f --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/CompetitionOrderStatus.type.md @@ -0,0 +1,78 @@ +--- +id: "CompetitionOrderStatus.type" +title: "Enumeration: type" +sidebar_label: "type" +custom_edit_url: null +--- + +[CompetitionOrderStatus](../namespaces/CompetitionOrderStatus.md).type + +## Enumeration Members + +### ACTIVE + +• **ACTIVE** = ``"active"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:30 + +___ + +### CANCELLED + +• **CANCELLED** = ``"cancelled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:34 + +___ + +### EXECUTING + +• **EXECUTING** = ``"executing"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:32 + +___ + +### OPEN + +• **OPEN** = ``"open"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:28 + +___ + +### SCHEDULED + +• **SCHEDULED** = ``"scheduled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:29 + +___ + +### SOLVED + +• **SOLVED** = ``"solved"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:31 + +___ + +### TRADED + +• **TRADED** = ``"traded"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:33 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/DurationType.md b/docs/cow-protocol/sdks/cow-sdk/enums/DurationType.md new file mode 100644 index 000000000..2d123cbbb --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/DurationType.md @@ -0,0 +1,27 @@ +--- +id: "DurationType" +title: "Enumeration: DurationType" +sidebar_label: "DurationType" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### AUTO + +• **AUTO** = ``"AUTO"`` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:143 + +___ + +### LIMIT\_DURATION + +• **LIMIT\_DURATION** = ``"LIMIT_DURATION"`` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:144 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/EcdsaSigningScheme.md b/docs/cow-protocol/sdks/cow-sdk/enums/EcdsaSigningScheme.md new file mode 100644 index 000000000..ed7dd8966 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/EcdsaSigningScheme.md @@ -0,0 +1,29 @@ +--- +id: "EcdsaSigningScheme" +title: "Enumeration: EcdsaSigningScheme" +sidebar_label: "EcdsaSigningScheme" +sidebar_position: 0 +custom_edit_url: null +--- + +How was the order signed? + +## Enumeration Members + +### EIP712 + +• **EIP712** = ``"eip712"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts:9 + +___ + +### ETHSIGN + +• **ETHSIGN** = ``"ethsign"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts:10 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OnchainOrderData.placementError.md b/docs/cow-protocol/sdks/cow-sdk/enums/OnchainOrderData.placementError.md new file mode 100644 index 000000000..16841499f --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OnchainOrderData.placementError.md @@ -0,0 +1,40 @@ +--- +id: "OnchainOrderData.placementError" +title: "Enumeration: placementError" +sidebar_label: "placementError" +custom_edit_url: null +--- + +[OnchainOrderData](../namespaces/OnchainOrderData.md).placementError + +Describes the error, if the order placement was not successful. This could happen, for example, if the `validTo` is too high, or no valid quote was found or generated. + +## Enumeration Members + +### PRE\_VALIDATION\_ERROR + +• **PRE\_VALIDATION\_ERROR** = ``"PreValidationError"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts:29 + +___ + +### QUOTE\_NOT\_FOUND + +• **QUOTE\_NOT\_FOUND** = ``"QuoteNotFound"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts:27 + +___ + +### VALID\_TO\_TOO\_FAR\_IN\_FUTURE + +• **VALID\_TO\_TOO\_FAR\_IN\_FUTURE** = ``"ValidToTooFarInFuture"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts:28 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderCancellationError.errorType.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderCancellationError.errorType.md new file mode 100644 index 000000000..be185db0b --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderCancellationError.errorType.md @@ -0,0 +1,78 @@ +--- +id: "OrderCancellationError.errorType" +title: "Enumeration: errorType" +sidebar_label: "errorType" +custom_edit_url: null +--- + +[OrderCancellationError](../namespaces/OrderCancellationError.md).errorType + +## Enumeration Members + +### ALREADY\_CANCELLED + +• **ALREADY\_CANCELLED** = ``"AlreadyCancelled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:16 + +___ + +### INVALID\_SIGNATURE + +• **INVALID\_SIGNATURE** = ``"InvalidSignature"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:13 + +___ + +### ON\_CHAIN\_ORDER + +• **ON\_CHAIN\_ORDER** = ``"OnChainOrder"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:19 + +___ + +### ORDER\_EXPIRED + +• **ORDER\_EXPIRED** = ``"OrderExpired"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:18 + +___ + +### ORDER\_FULLY\_EXECUTED + +• **ORDER\_FULLY\_EXECUTED** = ``"OrderFullyExecuted"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:17 + +___ + +### ORDER\_NOT\_FOUND + +• **ORDER\_NOT\_FOUND** = ``"OrderNotFound"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:15 + +___ + +### WRONG\_OWNER + +• **WRONG\_OWNER** = ``"WrongOwner"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:14 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderClass.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderClass.md new file mode 100644 index 000000000..a0bbd3e1f --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderClass.md @@ -0,0 +1,39 @@ +--- +id: "OrderClass" +title: "Enumeration: OrderClass" +sidebar_label: "OrderClass" +sidebar_position: 0 +custom_edit_url: null +--- + +Order class. + +## Enumeration Members + +### LIMIT + +• **LIMIT** = ``"limit"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderClass.ts:10 + +___ + +### LIQUIDITY + +• **LIQUIDITY** = ``"liquidity"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderClass.ts:11 + +___ + +### MARKET + +• **MARKET** = ``"market"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderClass.ts:9 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderKind.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderKind.md new file mode 100644 index 000000000..0d4dd807a --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderKind.md @@ -0,0 +1,29 @@ +--- +id: "OrderKind" +title: "Enumeration: OrderKind" +sidebar_label: "OrderKind" +sidebar_position: 0 +custom_edit_url: null +--- + +Is this order a buy or sell? + +## Enumeration Members + +### BUY + +• **BUY** = ``"buy"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderKind.ts:9 + +___ + +### SELL + +• **SELL** = ``"sell"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderKind.ts:10 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderPostError.errorType.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderPostError.errorType.md new file mode 100644 index 000000000..e20cc7b00 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderPostError.errorType.md @@ -0,0 +1,278 @@ +--- +id: "OrderPostError.errorType" +title: "Enumeration: errorType" +sidebar_label: "errorType" +custom_edit_url: null +--- + +[OrderPostError](../namespaces/OrderPostError.md).errorType + +## Enumeration Members + +### APPDATA\_FROM\_MISMATCH + +• **APPDATA\_FROM\_MISMATCH** = ``"AppdataFromMismatch"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:39 + +___ + +### APP\_DATA\_HASH\_MISMATCH + +• **APP\_DATA\_HASH\_MISMATCH** = ``"AppDataHashMismatch"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:38 + +___ + +### DUPLICATED\_ORDER + +• **DUPLICATED\_ORDER** = ``"DuplicatedOrder"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:13 + +___ + +### EXCESSIVE\_VALID\_TO + +• **EXCESSIVE\_VALID\_TO** = ``"ExcessiveValidTo"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:33 + +___ + +### INCOMPATIBLE\_SIGNING\_SCHEME + +• **INCOMPATIBLE\_SIGNING\_SCHEME** = ``"IncompatibleSigningScheme"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:26 + +___ + +### INSUFFICIENT\_ALLOWANCE + +• **INSUFFICIENT\_ALLOWANCE** = ``"InsufficientAllowance"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:21 + +___ + +### INSUFFICIENT\_BALANCE + +• **INSUFFICIENT\_BALANCE** = ``"InsufficientBalance"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:20 + +___ + +### INSUFFICIENT\_VALID\_TO + +• **INSUFFICIENT\_VALID\_TO** = ``"InsufficientValidTo"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:32 + +___ + +### INVALID\_APP\_DATA + +• **INVALID\_APP\_DATA** = ``"InvalidAppData"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:37 + +___ + +### INVALID\_EIP1271SIGNATURE + +• **INVALID\_EIP1271SIGNATURE** = ``"InvalidEip1271Signature"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:19 + +___ + +### INVALID\_NATIVE\_SELL\_TOKEN + +• **INVALID\_NATIVE\_SELL\_TOKEN** = ``"InvalidNativeSellToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:34 + +___ + +### INVALID\_QUOTE + +• **INVALID\_QUOTE** = ``"InvalidQuote"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:16 + +___ + +### INVALID\_SIGNATURE + +• **INVALID\_SIGNATURE** = ``"InvalidSignature"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:22 + +___ + +### MISSING\_FROM + +• **MISSING\_FROM** = ``"MissingFrom"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:17 + +___ + +### QUOTE\_NOT\_FOUND + +• **QUOTE\_NOT\_FOUND** = ``"QuoteNotFound"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:14 + +___ + +### QUOTE\_NOT\_VERIFIED + +• **QUOTE\_NOT\_VERIFIED** = ``"QuoteNotVerified"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:15 + +___ + +### SAME\_BUY\_AND\_SELL\_TOKEN + +• **SAME\_BUY\_AND\_SELL\_TOKEN** = ``"SameBuyAndSellToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:35 + +___ + +### SELL\_AMOUNT\_OVERFLOW + +• **SELL\_AMOUNT\_OVERFLOW** = ``"SellAmountOverflow"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:23 + +___ + +### TOO\_MANY\_LIMIT\_ORDERS + +• **TOO\_MANY\_LIMIT\_ORDERS** = ``"TooManyLimitOrders"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:27 + +___ + +### TOO\_MUCH\_GAS + +• **TOO\_MUCH\_GAS** = ``"TooMuchGas"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:28 + +___ + +### TRANSFER\_SIMULATION\_FAILED + +• **TRANSFER\_SIMULATION\_FAILED** = ``"TransferSimulationFailed"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:24 + +___ + +### UNSUPPORTED\_BUY\_TOKEN\_DESTINATION + +• **UNSUPPORTED\_BUY\_TOKEN\_DESTINATION** = ``"UnsupportedBuyTokenDestination"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:29 + +___ + +### UNSUPPORTED\_ORDER\_TYPE + +• **UNSUPPORTED\_ORDER\_TYPE** = ``"UnsupportedOrderType"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:31 + +___ + +### UNSUPPORTED\_SELL\_TOKEN\_SOURCE + +• **UNSUPPORTED\_SELL\_TOKEN\_SOURCE** = ``"UnsupportedSellTokenSource"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:30 + +___ + +### UNSUPPORTED\_TOKEN + +• **UNSUPPORTED\_TOKEN** = ``"UnsupportedToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:36 + +___ + +### WRONG\_OWNER + +• **WRONG\_OWNER** = ``"WrongOwner"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:18 + +___ + +### ZERO\_AMOUNT + +• **ZERO\_AMOUNT** = ``"ZeroAmount"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:25 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindBuy.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindBuy.md new file mode 100644 index 000000000..c483e019e --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindBuy.md @@ -0,0 +1,17 @@ +--- +id: "OrderQuoteSideKindBuy" +title: "Enumeration: OrderQuoteSideKindBuy" +sidebar_label: "OrderQuoteSideKindBuy" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### BUY + +• **BUY** = ``"buy"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts:6 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindSell.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindSell.md new file mode 100644 index 000000000..84aa97988 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderQuoteSideKindSell.md @@ -0,0 +1,17 @@ +--- +id: "OrderQuoteSideKindSell" +title: "Enumeration: OrderQuoteSideKindSell" +sidebar_label: "OrderQuoteSideKindSell" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### SELL + +• **SELL** = ``"sell"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts:6 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/OrderStatus.md b/docs/cow-protocol/sdks/cow-sdk/enums/OrderStatus.md new file mode 100644 index 000000000..042176ec6 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/OrderStatus.md @@ -0,0 +1,59 @@ +--- +id: "OrderStatus" +title: "Enumeration: OrderStatus" +sidebar_label: "OrderStatus" +sidebar_position: 0 +custom_edit_url: null +--- + +The current order status. + +## Enumeration Members + +### CANCELLED + +• **CANCELLED** = ``"cancelled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderStatus.ts:12 + +___ + +### EXPIRED + +• **EXPIRED** = ``"expired"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderStatus.ts:13 + +___ + +### FULFILLED + +• **FULFILLED** = ``"fulfilled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderStatus.ts:11 + +___ + +### OPEN + +• **OPEN** = ``"open"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderStatus.ts:10 + +___ + +### PRESIGNATURE\_PENDING + +• **PRESIGNATURE\_PENDING** = ``"presignaturePending"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderStatus.ts:9 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/PollResultCode.md b/docs/cow-protocol/sdks/cow-sdk/enums/PollResultCode.md new file mode 100644 index 000000000..5d84d0d1f --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/PollResultCode.md @@ -0,0 +1,67 @@ +--- +id: "PollResultCode" +title: "Enumeration: PollResultCode" +sidebar_label: "PollResultCode" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### DONT\_TRY\_AGAIN + +• **DONT\_TRY\_AGAIN** = ``"DONT_TRY_AGAIN"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:122 + +___ + +### SUCCESS + +• **SUCCESS** = ``"SUCCESS"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:117 + +___ + +### TRY\_AT\_EPOCH + +• **TRY\_AT\_EPOCH** = ``"TRY_AT_EPOCH"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:121 + +___ + +### TRY\_NEXT\_BLOCK + +• **TRY\_NEXT\_BLOCK** = ``"TRY_NEXT_BLOCK"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:119 + +___ + +### TRY\_ON\_BLOCK + +• **TRY\_ON\_BLOCK** = ``"TRY_ON_BLOCK"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:120 + +___ + +### UNEXPECTED\_ERROR + +• **UNEXPECTED\_ERROR** = ``"UNEXPECTED_ERROR"`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:118 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/PriceEstimationError.errorType.md b/docs/cow-protocol/sdks/cow-sdk/enums/PriceEstimationError.errorType.md new file mode 100644 index 000000000..04930cf83 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/PriceEstimationError.errorType.md @@ -0,0 +1,48 @@ +--- +id: "PriceEstimationError.errorType" +title: "Enumeration: errorType" +sidebar_label: "errorType" +custom_edit_url: null +--- + +[PriceEstimationError](../namespaces/PriceEstimationError.md).errorType + +## Enumeration Members + +### QUOTE\_NOT\_VERIFIED + +• **QUOTE\_NOT\_VERIFIED** = ``"QuoteNotVerified"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:13 + +___ + +### UNSUPPORTED\_ORDER\_TYPE + +• **UNSUPPORTED\_ORDER\_TYPE** = ``"UnsupportedOrderType"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:16 + +___ + +### UNSUPPORTED\_TOKEN + +• **UNSUPPORTED\_TOKEN** = ``"UnsupportedToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:14 + +___ + +### ZERO\_AMOUNT + +• **ZERO\_AMOUNT** = ``"ZeroAmount"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:15 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/PriceQuality.md b/docs/cow-protocol/sdks/cow-sdk/enums/PriceQuality.md new file mode 100644 index 000000000..57c5225ca --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/PriceQuality.md @@ -0,0 +1,47 @@ +--- +id: "PriceQuality" +title: "Enumeration: PriceQuality" +sidebar_label: "PriceQuality" +sidebar_position: 0 +custom_edit_url: null +--- + +How good should the price estimate be? + +Fast: The price estimate is chosen among the fastest N price estimates. +Optimal: The price estimate is chosen among all price estimates. +Verified: The price estimate is chosen among all verified/simulated +price estimates. + +**NOTE**: Orders are supposed to be created from `verified` or `optimal` +price estimates. + +## Enumeration Members + +### FAST + +• **FAST** = ``"fast"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceQuality.ts:17 + +___ + +### OPTIMAL + +• **OPTIMAL** = ``"optimal"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceQuality.ts:18 + +___ + +### VERIFIED + +• **VERIFIED** = ``"verified"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceQuality.ts:19 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/ProofLocation.md b/docs/cow-protocol/sdks/cow-sdk/enums/ProofLocation.md new file mode 100644 index 000000000..83f2b881c --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/ProofLocation.md @@ -0,0 +1,67 @@ +--- +id: "ProofLocation" +title: "Enumeration: ProofLocation" +sidebar_label: "ProofLocation" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### EMITTED + +• **EMITTED** = ``1`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:23 + +___ + +### IPFS + +• **IPFS** = ``5`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:31 + +___ + +### PRIVATE + +• **PRIVATE** = ``0`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:21 + +___ + +### RESERVED + +• **RESERVED** = ``4`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:29 + +___ + +### SWARM + +• **SWARM** = ``2`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:25 + +___ + +### WAKU + +• **WAKU** = ``3`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:27 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/ReplaceOrderError.errorType.md b/docs/cow-protocol/sdks/cow-sdk/enums/ReplaceOrderError.errorType.md new file mode 100644 index 000000000..09880a7c6 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/ReplaceOrderError.errorType.md @@ -0,0 +1,218 @@ +--- +id: "ReplaceOrderError.errorType" +title: "Enumeration: errorType" +sidebar_label: "errorType" +custom_edit_url: null +--- + +[ReplaceOrderError](../namespaces/ReplaceOrderError.md).errorType + +## Enumeration Members + +### ALREADY\_CANCELLED + +• **ALREADY\_CANCELLED** = ``"AlreadyCancelled"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:13 + +___ + +### DUPLICATED\_ORDER + +• **DUPLICATED\_ORDER** = ``"DuplicatedOrder"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:17 + +___ + +### EXCESSIVE\_VALID\_TO + +• **EXCESSIVE\_VALID\_TO** = ``"ExcessiveValidTo"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:22 + +___ + +### INSUFFICIENT\_ALLOWANCE + +• **INSUFFICIENT\_ALLOWANCE** = ``"InsufficientAllowance"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:19 + +___ + +### INSUFFICIENT\_BALANCE + +• **INSUFFICIENT\_BALANCE** = ``"InsufficientBalance"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:20 + +___ + +### INSUFFICIENT\_FEE + +• **INSUFFICIENT\_FEE** = ``"InsufficientFee"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:18 + +___ + +### INSUFFICIENT\_VALID\_TO + +• **INSUFFICIENT\_VALID\_TO** = ``"InsufficientValidTo"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:21 + +___ + +### INVALID\_SIGNATURE + +• **INVALID\_SIGNATURE** = ``"InvalidSignature"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:23 + +___ + +### ON\_CHAIN\_ORDER + +• **ON\_CHAIN\_ORDER** = ``"OnChainOrder"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:16 + +___ + +### ORDER\_EXPIRED + +• **ORDER\_EXPIRED** = ``"OrderExpired"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:15 + +___ + +### ORDER\_FULLY\_EXECUTED + +• **ORDER\_FULLY\_EXECUTED** = ``"OrderFullyExecuted"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:14 + +___ + +### SAME\_BUY\_AND\_SELL\_TOKEN + +• **SAME\_BUY\_AND\_SELL\_TOKEN** = ``"SameBuyAndSellToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:28 + +___ + +### TRANSFER\_ETH\_TO\_CONTRACT + +• **TRANSFER\_ETH\_TO\_CONTRACT** = ``"TransferEthToContract"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:24 + +___ + +### TRANSFER\_SIMULATION\_FAILED + +• **TRANSFER\_SIMULATION\_FAILED** = ``"TransferSimulationFailed"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:25 + +___ + +### UNSUPPORTED\_BUY\_TOKEN\_DESTINATION + +• **UNSUPPORTED\_BUY\_TOKEN\_DESTINATION** = ``"UnsupportedBuyTokenDestination"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:30 + +___ + +### UNSUPPORTED\_ORDER\_TYPE + +• **UNSUPPORTED\_ORDER\_TYPE** = ``"UnsupportedOrderType"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:32 + +___ + +### UNSUPPORTED\_SELL\_TOKEN\_SOURCE + +• **UNSUPPORTED\_SELL\_TOKEN\_SOURCE** = ``"UnsupportedSellTokenSource"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:31 + +___ + +### UNSUPPORTED\_SIGNATURE + +• **UNSUPPORTED\_SIGNATURE** = ``"UnsupportedSignature"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:33 + +___ + +### UNSUPPORTED\_TOKEN + +• **UNSUPPORTED\_TOKEN** = ``"UnsupportedToken"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:26 + +___ + +### WRONG\_OWNER + +• **WRONG\_OWNER** = ``"WrongOwner"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:27 + +___ + +### ZERO\_AMOUNT + +• **ZERO\_AMOUNT** = ``"ZeroAmount"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ReplaceOrderError.ts:29 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/SellTokenSource.md b/docs/cow-protocol/sdks/cow-sdk/enums/SellTokenSource.md new file mode 100644 index 000000000..efb94fc46 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/SellTokenSource.md @@ -0,0 +1,39 @@ +--- +id: "SellTokenSource" +title: "Enumeration: SellTokenSource" +sidebar_label: "SellTokenSource" +sidebar_position: 0 +custom_edit_url: null +--- + +Where should the `sellToken` be drawn from? + +## Enumeration Members + +### ERC20 + +• **ERC20** = ``"erc20"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts:9 + +___ + +### EXTERNAL + +• **EXTERNAL** = ``"external"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts:11 + +___ + +### INTERNAL + +• **INTERNAL** = ``"internal"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts:10 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/SigningScheme.md b/docs/cow-protocol/sdks/cow-sdk/enums/SigningScheme.md new file mode 100644 index 000000000..12034d5c0 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/SigningScheme.md @@ -0,0 +1,49 @@ +--- +id: "SigningScheme" +title: "Enumeration: SigningScheme" +sidebar_label: "SigningScheme" +sidebar_position: 0 +custom_edit_url: null +--- + +How was the order signed? + +## Enumeration Members + +### EIP1271 + +• **EIP1271** = ``"eip1271"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SigningScheme.ts:12 + +___ + +### EIP712 + +• **EIP712** = ``"eip712"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SigningScheme.ts:9 + +___ + +### ETHSIGN + +• **ETHSIGN** = ``"ethsign"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SigningScheme.ts:10 + +___ + +### PRESIGN + +• **PRESIGN** = ``"presign"`` + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SigningScheme.ts:11 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/StartTimeValue.md b/docs/cow-protocol/sdks/cow-sdk/enums/StartTimeValue.md new file mode 100644 index 000000000..ce8c082d6 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/StartTimeValue.md @@ -0,0 +1,27 @@ +--- +id: "StartTimeValue" +title: "Enumeration: StartTimeValue" +sidebar_label: "StartTimeValue" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumeration Members + +### AT\_EPOCH + +• **AT\_EPOCH** = ``"AT_EPOCH"`` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:153 + +___ + +### AT\_MINING\_TIME + +• **AT\_MINING\_TIME** = ``"AT_MINING_TIME"`` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:152 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/SupportedChainId.md b/docs/cow-protocol/sdks/cow-sdk/enums/SupportedChainId.md new file mode 100644 index 000000000..5a3f11256 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/SupportedChainId.md @@ -0,0 +1,59 @@ +--- +id: "SupportedChainId" +title: "Enumeration: SupportedChainId" +sidebar_label: "SupportedChainId" +sidebar_position: 0 +custom_edit_url: null +--- + +Supported chains and their `chainId` for the SDK. + +## Enumeration Members + +### ARBITRUM\_ONE + +• **ARBITRUM\_ONE** = ``42161`` + +#### Defined in + +external/cow-sdk/src/common/chains.ts:8 + +___ + +### BASE + +• **BASE** = ``8453`` + +#### Defined in + +external/cow-sdk/src/common/chains.ts:9 + +___ + +### GNOSIS\_CHAIN + +• **GNOSIS\_CHAIN** = ``100`` + +#### Defined in + +external/cow-sdk/src/common/chains.ts:7 + +___ + +### MAINNET + +• **MAINNET** = ``1`` + +#### Defined in + +external/cow-sdk/src/common/chains.ts:6 + +___ + +### SEPOLIA + +• **SEPOLIA** = ``11155111`` + +#### Defined in + +external/cow-sdk/src/common/chains.ts:10 diff --git a/docs/cow-protocol/sdks/cow-sdk/enums/_category_.yml b/docs/cow-protocol/sdks/cow-sdk/enums/_category_.yml new file mode 100644 index 000000000..1687a9e03 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/enums/_category_.yml @@ -0,0 +1,2 @@ +label: "Enumerations" +position: 2 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/cow-sdk/index.md b/docs/cow-protocol/sdks/cow-sdk/index.md new file mode 100644 index 000000000..e7769ddd7 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/index.md @@ -0,0 +1,293 @@ +--- +id: "index" +title: "@cowprotocol/cow-sdk" +sidebar_label: "Readme" +sidebar_position: 0 +custom_edit_url: null +--- + +

+ +

+ +# CoW SDK + +## 📚 [Docs website](https://docs.cow.fi/) + +## Test coverage + +| Statements | Branches | Functions | Lines | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| ![Statements](https://img.shields.io/badge/statements-94.77%25-brightgreen.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-76.78%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-97.43%25-brightgreen.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-97.67%25-brightgreen.svg?style=flat) | + +## Getting started + +**Usage examples: [VanillaJS](https://github.com/cowprotocol/cow-sdk/blob/main/examples/vanilla/src/index.ts), [Create React App](https://github.com/cowprotocol/cow-sdk/blob/main/examples/cra/src/pages/getOrders/index.tsx), [NodeJS](https://github.com/cowprotocol/cow-sdk/blob/main/examples/nodejs/src/index.ts)** + +### Installation + +```bash +yarn add @cowprotocol/cow-sdk +``` + +## [Trading SDK](https://github.com/cowprotocol/cow-sdk/blob/main/src/trading/README.md) + +CoW Protocol is intent based, decentralized trading protocol that allows users to trade ERC-20 tokens. + +The basic swap flow: +1. 🔎 Get a quote (price) for a trade (_or define your own price with a limit order_) +2. ✍️ Sign the order +3. ✅ Post the order to the order-book + +The easiest way to start trading is to use the `TradingSdk`: + +```typescript +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' + +// Initialize the SDK +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +// Define trade parameters +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +// Post the order +const orderId = await sdk.postSwapOrder(parameters) + +console.log('Order created, id: ', orderId) +``` + +This example is the simplest way to trade on CoW Protocol. + +You might want to use more advanced parameters like `receiver`, `partiallyFillable`, `validTo` and others. +Check the [Trading SDK documentation](https://github.com/cowprotocol/cow-sdk/blob/main/src/trading/README.md) for more details. + +## Other utilities + +- `OrderBookApi` - provides the ability to retrieve orders and trades from the CoW Protocol order-book, as well as add and cancel them +- `OrderSigningUtils` - serves to sign orders and cancel them using [EIP-712](https://eips.ethereum.org/EIPS/eip-712) +- `SubgraphApi` - provides statistics data about CoW protocol from [Subgraph](https://github.com/cowprotocol/subgraph), such as trading volume, trade count and others + +```typescript +import { OrderBookApi, OrderSigningUtils, SubgraphApi } from '@cowprotocol/cow-sdk' + +const chainId = 100 // Gnosis chain + +const orderBookApi = new OrderBookApi({ chainId }) +const subgraphApi = new SubgraphApi({ chainId }) +const orderSigningUtils = new OrderSigningUtils() +``` + +### Sign, fetch, post and cancel order + +For clarity, let's look at the use of the API with a practical example: +Exchanging `0.4 GNO` to `WETH` on `Gnosis chain` network. + +We will do the following operations: + +1. Get a quote +2. Sign the order +3. Send the order to the order-book +4. Get the data of the created order +5. Get trades of the order +6. Cancel the order (signing + sending) + +[You also can check this code in the CRA example](https://github.com/cowprotocol/cow-sdk/blob/main/examples/cra/src/pages/quickStart/index.tsx) + +```typescript +import { OrderBookApi, OrderSigningUtils, SupportedChainId } from '@cowprotocol/cow-sdk' +import { Web3Provider } from '@ethersproject/providers' + +const account = 'YOUR_WALLET_ADDRESS' +const chainId = 100 // Gnosis chain +const provider = new Web3Provider(window.ethereum) +const signer = provider.getSigner() + +const quoteRequest = { + sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + from: account, + receiver: account, + sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH + kind: OrderQuoteSide.kind.SELL, +} + +const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN }) + +async function main() { + const { quote } = await orderBookApi.getQuote(quoteRequest) + + const orderSigningResult = await OrderSigningUtils.signOrder(quote, chainId, signer) + + const orderId = await orderBookApi.sendOrder({ ...quote, ...orderSigningResult }) + + const order = await orderBookApi.getOrder(orderId) + + const trades = await orderBookApi.getTrades({ orderId }) + + const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + + const cancellationResult = await orderBookApi.sendSignedOrderCancellations({ + ...orderCancellationSigningResult, + orderUids: [orderId], + }) + + console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) +} +``` + +### OrderBookApi + +`OrderBookApi` - is a main tool for working with [CoW Protocol API](https://api.cow.fi/docs/#/). +Since the API supports different networks and environments, there are some options to configure it. + +#### Environment configuration + +`chainId` - can be one of `SupportedChainId.MAINNET`, `SupportedChainId.GNOSIS_CHAIN`, `SupportedChainId.ARBITRUM_ONE`, `SupportedChainId.BASE` or `SupportedChainId.SEPOLIA` + +`env` - this parameter affects which environment will be used: + +- `https://api.cow.fi` for `prod` (default) +- `https://barn.api.cow.fi` for `staging` + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' + +const orderBookApi = new OrderBookApi({ + chainId: SupportedChainId.GNOSIS_CHAIN, + env: 'staging', // <----- +}) +``` + +#### API urls configuration + +In case you need to use custom endpoints (e.g. you use a proxy), you can do it this way: + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' + +const orderBookApi = new OrderBookApi({ + chainId: SupportedChainId.GNOSIS_CHAIN, + baseUrls: { + // <----- + [SupportedChainId.MAINNET]: 'https://YOUR_ENDPOINT/mainnet', + [SupportedChainId.GNOSIS_CHAIN]: 'https://YOUR_ENDPOINT/gnosis_chain', + [SupportedChainId.ARBITRUM]: 'https://YOUR_ENDPOINT/arbitrum_one', + [SupportedChainId.BASE]: 'https://YOUR_ENDPOINT/base', + [SupportedChainId.SEPOLIA]: 'https://YOUR_ENDPOINT/sepolia', + }, +}) +``` + +The [CoW Protocol API](https://api.cow.fi/docs/#/) has restrictions on the backend side to protect against DDOS and other issues. + +> The main restriction is request rate limit of: **5 requests per second for each IP address** + +The _client's_ limiter settings can be configured as well: + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' +import { BackoffOptions } from 'exponential-backoff' +import { RateLimiterOpts } from 'limiter' + +const limiterOpts: RateLimiterOpts = { + tokensPerInterval: 5, + interval: 'second', +} + +const backOffOpts: BackoffOptions = { + numOfAttempts: 5, + maxDelay: Infinity, + jitter: 'none', +} + +const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN, limiterOpts, backOffOpts }) +``` + +### Querying the CoW Subgraph + +The [Subgraph](https://github.com/cowprotocol/subgraph) is constantly indexing the protocol, making all the information more accessible. It provides information about trades, users, tokens and settlements. Additionally, it has some data aggregations which provides insights on the hourly/daily/totals USD volumes, trades, users, etc. + +The SDK provides an easy way to access all this information. + +You can query the CoW Subgraph either by running some common queries exposed by the `CowSubgraphApi` or by building your own: + +```typescript +import { SubgraphApi, SupportedChainId } from '@cowprotocol/cow-sdk' + +const cowSubgraphApi = new SubgraphApi({ chainId: SupportedChainId.MAINNET }) + +// Get CoW Protocol totals +const { tokens, orders, traders, settlements, volumeUsd, volumeEth, feesUsd, feesEth } = + await cowSubgraphApi.getTotals() +console.log({ tokens, orders, traders, settlements, volumeUsd, volumeEth, feesUsd, feesEth }) + +// Get last 24 hours volume in usd +const { hourlyTotals } = await cowSubgraphApi.getLastHoursVolume(24) +console.log(hourlyTotals) + +// Get last week volume in usd +const { dailyTotals } = await cowSubgraphApi.getLastDaysVolume(7) +console.log(dailyTotals) + +// Get the last 5 batches +const query = ` + query LastBatches($n: Int!) { + settlements(orderBy: firstTradeTimestamp, orderDirection: desc, first: $n) { + txHash + firstTradeTimestamp + } + } +` +const variables = { n: 5 } +const response = await cowSubgraphApi.runQuery(query, variables) +console.log(response) +``` + +## Architecture + +One way to make the most out of the SDK is to get familiar with its architecture. + +> See [SDK Architecture](https://github.com/cowprotocol/cow-sdk/blob/main/docs/architecture.md) + +## Development + +### Install Dependencies + +```bash +yarn +``` + +### Build + +```bash +yarn build + +# Build in watch mode +yarn start +``` + +### Unit testing + +```bash +yarn test +``` + +### Code generation + +Some parts of the SDK are automatically generated. This is the case for the Order Book API and the Subgraph API + +```bash +# Re-create automatically generated code +yarn codegen +``` diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/ApiContext.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/ApiContext.md new file mode 100644 index 000000000..4146265e4 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/ApiContext.md @@ -0,0 +1,81 @@ +--- +id: "ApiContext" +title: "Interface: ApiContext" +sidebar_label: "ApiContext" +sidebar_position: 0 +custom_edit_url: null +--- + +Define the context to use for the CoW Protocol API. + +CoW Protocol is a set of smart contracts and off-chain services, deployed on **multiple chains**. +[Supported chains](../enums/SupportedChainId.md) are: +- Mainnet +- Gnosis Chain +- Arbitrum One +- Base +- Sepolia + +Each chain has it's own API, and each API has it's own base URL. + +Options may be selectively overridden by passing a [PartialApiContext](../modules.md#partialapicontext) to the constructor. + +**`See`** + +[https://api.cow.fi/docs/#/](https://api.cow.fi/docs/#/) + +## Properties + +### backoffOpts + +• `Optional` **backoffOpts**: `Partial`<`IBackOffOptions`\> + +#### Defined in + +external/cow-sdk/src/common/configs.ts:75 + +___ + +### baseUrls + +• `Optional` **baseUrls**: [`ApiBaseUrls`](../modules.md#apibaseurls) + +URls that may be used to connect to this context. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:73 + +___ + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +The `chainId`` corresponding to this CoW Protocol API instance. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:71 + +___ + +### env + +• **env**: [`CowEnv`](../modules.md#cowenv) + +The environment that this context corresponds to. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:72 + +___ + +### limiterOpts + +• `Optional` **limiterOpts**: `RateLimiterOpts` + +#### Defined in + +external/cow-sdk/src/common/configs.ts:74 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/AppDataInfo.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/AppDataInfo.md new file mode 100644 index 000000000..bf8e4f66e --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/AppDataInfo.md @@ -0,0 +1,39 @@ +--- +id: "AppDataInfo" +title: "Interface: AppDataInfo" +sidebar_label: "AppDataInfo" +sidebar_position: 0 +custom_edit_url: null +--- + +https://github.com/cowprotocol/app-data + +## Properties + +### appDataKeccak256 + +• **appDataKeccak256**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:154 + +___ + +### doc + +• **doc**: `AppDataRootSchema` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:152 + +___ + +### fullAppData + +• **fullAppData**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:153 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/BuildAppDataParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/BuildAppDataParams.md new file mode 100644 index 000000000..a516c8037 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/BuildAppDataParams.md @@ -0,0 +1,37 @@ +--- +id: "BuildAppDataParams" +title: "Interface: BuildAppDataParams" +sidebar_label: "BuildAppDataParams" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:143 + +___ + +### orderClass + +• **orderClass**: `OrderClass1` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:145 + +___ + +### slippageBps + +• **slippageBps**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:144 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/ConditionalOrderArguments.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/ConditionalOrderArguments.md new file mode 100644 index 000000000..1765b2d76 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/ConditionalOrderArguments.md @@ -0,0 +1,53 @@ +--- +id: "ConditionalOrderArguments" +title: "Interface: ConditionalOrderArguments" +sidebar_label: "ConditionalOrderArguments" +sidebar_position: 0 +custom_edit_url: null +--- + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Properties + +### data + +• **data**: `T` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:8 + +___ + +### handler + +• **handler**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:7 + +___ + +### hasOffChainInput + +• `Optional` **hasOffChainInput**: `boolean` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:10 + +___ + +### salt + +• `Optional` **salt**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:9 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/EnrichedOrder.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/EnrichedOrder.md new file mode 100644 index 000000000..5bc759557 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/EnrichedOrder.md @@ -0,0 +1,617 @@ +--- +id: "EnrichedOrder" +title: "Interface: EnrichedOrder" +sidebar_label: "EnrichedOrder" +sidebar_position: 0 +custom_edit_url: null +--- + +An order with the total fee added. + +## Hierarchy + +- [`Order`](../modules.md#order) + + ↳ **`EnrichedOrder`** + +## Properties + +### appData + +• **appData**: `string` + +This field comes in two forms for backward compatibility. The hash form will eventually stop being accepted. + +#### Inherited from + +Order.appData + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:79 + +___ + +### appDataHash + +• `Optional` **appDataHash**: ``null`` \| `string` + +May be set for debugging purposes. If set, this field is compared to what the backend internally calculates as the app data hash based on the contents of `appData`. If the hash does not match, an error is returned. If this field is set, then `appData` **MUST** be a string encoding of a JSON object. + +#### Inherited from + +Order.appDataHash + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:84 + +___ + +### availableBalance + +• `Optional` **availableBalance**: ``null`` \| `string` + +Unused field that is currently always set to `null` and will be removed in the future. + +**`Deprecated`** + +#### Inherited from + +Order.availableBalance + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:31 + +___ + +### buyAmount + +• **buyAmount**: `string` + +see `OrderParameters::buyAmount` + +#### Inherited from + +Order.buyAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:38 + +___ + +### buyToken + +• **buyToken**: `string` + +see `OrderParameters::buyToken` + +#### Inherited from + +Order.buyToken + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:26 + +___ + +### buyTokenBalance + +• `Optional` **buyTokenBalance**: [`BuyTokenDestination`](../enums/BuyTokenDestination.md) + +see `OrderParameters::buyTokenBalance` + +#### Inherited from + +Order.buyTokenBalance + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:62 + +___ + +### class + +• **class**: [`OrderClass`](../enums/OrderClass.md) + +#### Inherited from + +Order.class + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:23 + +___ + +### creationDate + +• **creationDate**: `string` + +Creation time of the order. Encoded as ISO 8601 UTC. + +#### Inherited from + +Order.creationDate + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:22 + +___ + +### ethflowData + +• `Optional` **ethflowData**: [`EthflowData`](../modules.md#ethflowdata) + +#### Inherited from + +Order.ethflowData + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:75 + +___ + +### executedBuyAmount + +• **executedBuyAmount**: `string` + +The total amount of `buyToken` that has been executed for this order. + +#### Inherited from + +Order.executedBuyAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:46 + +___ + +### executedFee + +• `Optional` **executedFee**: `string` + +Total fee charged for execution of the order. Contains network fee and protocol fees. + +#### Inherited from + +Order.executedFee + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:95 + +___ + +### executedFeeAmount + +• **executedFeeAmount**: `string` + +The total amount of fees that have been executed for this order. + +#### Inherited from + +Order.executedFeeAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:50 + +___ + +### executedFeeToken + +• `Optional` **executedFeeToken**: `string` + +Token the executed fee was captured in. + +#### Inherited from + +Order.executedFeeToken + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:99 + +___ + +### executedSellAmount + +• **executedSellAmount**: `string` + +The total amount of `sellToken` that has been executed for this order including fees. + +#### Inherited from + +Order.executedSellAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:36 + +___ + +### executedSellAmountBeforeFees + +• **executedSellAmountBeforeFees**: `string` + +The total amount of `sellToken` that has been executed for this order without fees. + +#### Inherited from + +Order.executedSellAmountBeforeFees + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:41 + +___ + +### executedSurplusFee + +• `Optional` **executedSurplusFee**: `string` + +Surplus fee that the limit order was executed with. + +#### Inherited from + +Order.executedSurplusFee + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:91 + +___ + +### feeAmount + +• **feeAmount**: `string` + +see `OrderParameters::feeAmount` + +#### Inherited from + +Order.feeAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:46 + +___ + +### from + +• `Optional` **from**: ``null`` \| `string` + +If set, the backend enforces that this address matches what is decoded as the *signer* of the signature. This helps catch errors with invalid signature encodings as the backend might otherwise silently work with an unexpected address that for example does not have any balance. + +#### Inherited from + +Order.from + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:69 + +___ + +### fullAppData + +• `Optional` **fullAppData**: ``null`` \| `string` + +Full `appData`, which the contract-level `appData` is a hash of. See `OrderCreation` for more information. + +#### Inherited from + +Order.fullAppData + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:104 + +___ + +### fullFeeAmount + +• `Optional` **fullFeeAmount**: `string` + +Amount that the signed fee would be without subsidies. + +#### Inherited from + +Order.fullFeeAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:62 + +___ + +### invalidated + +• **invalidated**: `boolean` + +Has this order been invalidated? + +#### Inherited from + +Order.invalidated + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:54 + +___ + +### isLiquidityOrder + +• `Optional` **isLiquidityOrder**: `boolean` + +Liquidity orders are functionally the same as normal smart contract +orders but are not placed with the intent of actively getting +traded. Instead they facilitate the trade of normal orders by +allowing them to be matched against liquidity orders which uses less +gas and can have better prices than external liquidity. + +As such liquidity orders will only be used in order to improve +settlement of normal orders. They should not be expected to be +traded otherwise and should not expect to get surplus. + +#### Inherited from + +Order.isLiquidityOrder + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:74 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +see `OrderParameters::kind` + +#### Inherited from + +Order.kind + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:50 + +___ + +### onchainOrderData + +• `Optional` **onchainOrderData**: [`OnchainOrderData`](../modules.md#onchainorderdata) + +There is some data only available for orders that are placed on-chain. This data can be found in this object. + +#### Inherited from + +Order.onchainOrderData + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:87 + +___ + +### onchainUser + +• `Optional` **onchainUser**: `string` + +This represents the actual trader of an on-chain order. +### ethflow orders +In this case, the `owner` would be the `EthFlow` contract and *not* the actual trader. + +#### Inherited from + +Order.onchainUser + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:82 + +___ + +### owner + +• **owner**: `string` + +#### Inherited from + +Order.owner + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:24 + +___ + +### partiallyFillable + +• **partiallyFillable**: `boolean` + +see `OrderParameters::partiallyFillable` + +#### Inherited from + +Order.partiallyFillable + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:54 + +___ + +### quoteId + +• `Optional` **quoteId**: ``null`` \| `number` + +Orders can optionally include a quote ID. This way the order can be linked to a quote and enable providing more metadata when analysing order slippage. + +#### Inherited from + +Order.quoteId + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:74 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +see `OrderParameters::receiver` + +#### Inherited from + +Order.receiver + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:30 + +___ + +### sellAmount + +• **sellAmount**: `string` + +see `OrderParameters::sellAmount` + +#### Inherited from + +Order.sellAmount + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:34 + +___ + +### sellToken + +• **sellToken**: `string` + +see `OrderParameters::sellToken` + +#### Inherited from + +Order.sellToken + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:22 + +___ + +### sellTokenBalance + +• `Optional` **sellTokenBalance**: [`SellTokenSource`](../enums/SellTokenSource.md) + +see `OrderParameters::sellTokenBalance` + +#### Inherited from + +Order.sellTokenBalance + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:58 + +___ + +### signature + +• **signature**: `string` + +#### Inherited from + +Order.signature + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:64 + +___ + +### signingScheme + +• **signingScheme**: [`SigningScheme`](../enums/SigningScheme.md) + +#### Inherited from + +Order.signingScheme + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:63 + +___ + +### status + +• **status**: [`OrderStatus`](../enums/OrderStatus.md) + +Order status. + +#### Inherited from + +Order.status + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:58 + +___ + +### totalFee + +• **totalFee**: `string` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:7 + +___ + +### uid + +• **uid**: `string` + +#### Inherited from + +Order.uid + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:25 + +___ + +### validTo + +• **validTo**: `number` + +see `OrderParameters::validTo` + +#### Inherited from + +Order.validTo + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:42 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/EthFlowOrderExistsCallback.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/EthFlowOrderExistsCallback.md new file mode 100644 index 000000000..b22e40cb8 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/EthFlowOrderExistsCallback.md @@ -0,0 +1,28 @@ +--- +id: "EthFlowOrderExistsCallback" +title: "Interface: EthFlowOrderExistsCallback" +sidebar_label: "EthFlowOrderExistsCallback" +sidebar_position: 0 +custom_edit_url: null +--- + +## Callable + +### EthFlowOrderExistsCallback + +▸ **EthFlowOrderExistsCallback**(`orderId`, `orderDigest`): `Promise`<`boolean`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `orderId` | `string` | +| `orderDigest` | `string` | + +#### Returns + +`Promise`<`boolean`\> + +#### Defined in + +external/cow-sdk/src/trading/calculateUniqueOrderId.ts:13 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/FetchParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/FetchParams.md new file mode 100644 index 000000000..b8318aa1b --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/FetchParams.md @@ -0,0 +1,49 @@ +--- +id: "FetchParams" +title: "Interface: FetchParams" +sidebar_label: "FetchParams" +sidebar_position: 0 +custom_edit_url: null +--- + +Describe the parameters for a fetch request. + +## Properties + +### body + +• `Optional` **body**: `unknown` + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:70 + +___ + +### method + +• **method**: ``"GET"`` \| ``"POST"`` \| ``"DELETE"`` \| ``"PUT"`` + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:69 + +___ + +### path + +• **path**: `string` + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:68 + +___ + +### query + +• `Optional` **query**: `URLSearchParams` + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:71 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedCall.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedCall.md new file mode 100644 index 000000000..33903c64d --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedCall.md @@ -0,0 +1,57 @@ +--- +id: "ICoWShedCall" +title: "Interface: ICoWShedCall" +sidebar_label: "ICoWShedCall" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### allowFailure + +• **allowFailure**: `boolean` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:11 + +___ + +### callData + +• **callData**: `string` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:10 + +___ + +### isDelegateCall + +• **isDelegateCall**: `boolean` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:12 + +___ + +### target + +• **target**: `string` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:8 + +___ + +### value + +• **value**: `bigint` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:9 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedOptions.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedOptions.md new file mode 100644 index 000000000..d9ba97cc8 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/ICoWShedOptions.md @@ -0,0 +1,43 @@ +--- +id: "ICoWShedOptions" +title: "Interface: ICoWShedOptions" +sidebar_label: "ICoWShedOptions" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### factoryAddress + +• **factoryAddress**: `string` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:2 + +external/cow-sdk/src/cow-shed/types.ts:16 + +___ + +### implementationAddress + +• **implementationAddress**: `string` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:4 + +external/cow-sdk/src/cow-shed/types.ts:18 + +___ + +### proxyCreationCode + +• `Optional` **proxyCreationCode**: `string` + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:3 + +external/cow-sdk/src/cow-shed/types.ts:17 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/IpfsConfig.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/IpfsConfig.md new file mode 100644 index 000000000..be7eb9d76 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/IpfsConfig.md @@ -0,0 +1,71 @@ +--- +id: "IpfsConfig" +title: "Interface: IpfsConfig" +sidebar_label: "IpfsConfig" +sidebar_position: 0 +custom_edit_url: null +--- + +IPFS configuration. + +For production use, consider using Pinata: https://www.pinata.cloud/ + +## Properties + +### pinataApiKey + +• `Optional` **pinataApiKey**: `string` + +The API key to use for Pinata. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:19 + +___ + +### pinataApiSecret + +• `Optional` **pinataApiSecret**: `string` + +The API secret to use for Pinata. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:20 + +___ + +### readUri + +• `Optional` **readUri**: `string` + +The URI of the IPFS node to use for reading. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:18 + +___ + +### uri + +• `Optional` **uri**: `string` + +The URI of the IPFS node to use. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:16 + +___ + +### writeUri + +• `Optional` **writeUri**: `string` + +The URI of the IPFS node to use for writing. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:17 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/IsNotValid.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/IsNotValid.md new file mode 100644 index 000000000..148c88a03 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/IsNotValid.md @@ -0,0 +1,27 @@ +--- +id: "IsNotValid" +title: "Interface: IsNotValid" +sidebar_label: "IsNotValid" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### isValid + +• **isValid**: ``false`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:169 + +___ + +### reason + +• **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:170 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/IsValid.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/IsValid.md new file mode 100644 index 000000000..1d8fc146f --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/IsValid.md @@ -0,0 +1,17 @@ +--- +id: "IsValid" +title: "Interface: IsValid" +sidebar_label: "IsValid" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### isValid + +• **isValid**: ``true`` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:166 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderAdvancedSettings.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderAdvancedSettings.md new file mode 100644 index 000000000..04fceaddf --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderAdvancedSettings.md @@ -0,0 +1,17 @@ +--- +id: "LimitOrderAdvancedSettings" +title: "Interface: LimitOrderAdvancedSettings" +sidebar_label: "LimitOrderAdvancedSettings" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### appData + +• `Optional` **appData**: `Partial`<`Omit`<`AppDataRootSchema`, ``"version"``\>\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:114 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderParameters.md new file mode 100644 index 000000000..aaab9e008 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitOrderParameters.md @@ -0,0 +1,271 @@ +--- +id: "LimitOrderParameters" +title: "Interface: LimitOrderParameters" +sidebar_label: "LimitOrderParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Information about the trader. + +## Hierarchy + +- [`TraderParameters`](TraderParameters.md) + +- [`LimitTradeParameters`](LimitTradeParameters.md) + + ↳ **`LimitOrderParameters`** + +## Properties + +### appCode + +• **appCode**: `string` + +#### Inherited from + +[TraderParameters](TraderParameters.md).[appCode](TraderParameters.md#appcode) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:79 + +___ + +### buyAmount + +• **buyAmount**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyAmount](LimitTradeParameters.md#buyamount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:94 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyToken](LimitTradeParameters.md#buytoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyTokenDecimals](LimitTradeParameters.md#buytokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Inherited from + +[TraderParameters](TraderParameters.md).[chainId](TraderParameters.md#chainid) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:78 + +___ + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[env](LimitTradeParameters.md#env) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[kind](LimitTradeParameters.md#kind) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[partiallyFillable](LimitTradeParameters.md#partiallyfillable) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[partnerFee](LimitTradeParameters.md#partnerfee) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### quoteId + +• `Optional` **quoteId**: `number` + +Id of the quote to be used for the limit order. + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[quoteId](LimitTradeParameters.md#quoteid) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:98 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[receiver](LimitTradeParameters.md#receiver) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### sellAmount + +• **sellAmount**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellAmount](LimitTradeParameters.md#sellamount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:93 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellToken](LimitTradeParameters.md#selltoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellTokenDecimals](LimitTradeParameters.md#selltokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 + +___ + +### signer + +• **signer**: `string` \| `Signer` \| `ExternalProvider` + +#### Inherited from + +[TraderParameters](TraderParameters.md).[signer](TraderParameters.md#signer) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:80 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[slippageBps](LimitTradeParameters.md#slippagebps) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[validFor](LimitTradeParameters.md#validfor) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 + +___ + +### validTo + +• `Optional` **validTo**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[validTo](LimitTradeParameters.md#validto) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:99 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParameters.md new file mode 100644 index 000000000..766e19b57 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParameters.md @@ -0,0 +1,213 @@ +--- +id: "LimitTradeParameters" +title: "Interface: LimitTradeParameters" +sidebar_label: "LimitTradeParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- `Omit`<[`TradeParameters`](TradeParameters.md), ``"amount"``\> + + ↳ **`LimitTradeParameters`** + + ↳↳ [`LimitTradeParametersFromQuote`](LimitTradeParametersFromQuote.md) + + ↳↳ [`LimitOrderParameters`](LimitOrderParameters.md) + +## Properties + +### buyAmount + +• **buyAmount**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:94 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Inherited from + +Omit.buyToken + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Inherited from + +Omit.buyTokenDecimals + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Inherited from + +Omit.env + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Inherited from + +Omit.kind + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Inherited from + +Omit.partiallyFillable + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Inherited from + +Omit.partnerFee + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### quoteId + +• `Optional` **quoteId**: `number` + +Id of the quote to be used for the limit order. + +#### Defined in + +external/cow-sdk/src/trading/types.ts:98 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Inherited from + +Omit.receiver + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### sellAmount + +• **sellAmount**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:93 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Inherited from + +Omit.sellToken + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Inherited from + +Omit.sellTokenDecimals + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Inherited from + +Omit.slippageBps + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Inherited from + +Omit.validFor + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 + +___ + +### validTo + +• `Optional` **validTo**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:99 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParametersFromQuote.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParametersFromQuote.md new file mode 100644 index 000000000..9790cad18 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/LimitTradeParametersFromQuote.md @@ -0,0 +1,225 @@ +--- +id: "LimitTradeParametersFromQuote" +title: "Interface: LimitTradeParametersFromQuote" +sidebar_label: "LimitTradeParametersFromQuote" +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- [`LimitTradeParameters`](LimitTradeParameters.md) + + ↳ **`LimitTradeParametersFromQuote`** + +## Properties + +### buyAmount + +• **buyAmount**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyAmount](LimitTradeParameters.md#buyamount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:94 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyToken](LimitTradeParameters.md#buytoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[buyTokenDecimals](LimitTradeParameters.md#buytokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[env](LimitTradeParameters.md#env) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[kind](LimitTradeParameters.md#kind) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[partiallyFillable](LimitTradeParameters.md#partiallyfillable) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[partnerFee](LimitTradeParameters.md#partnerfee) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### quoteId + +• **quoteId**: `number` + +Id of the quote to be used for the limit order. + +#### Overrides + +[LimitTradeParameters](LimitTradeParameters.md).[quoteId](LimitTradeParameters.md#quoteid) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:103 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[receiver](LimitTradeParameters.md#receiver) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### sellAmount + +• **sellAmount**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellAmount](LimitTradeParameters.md#sellamount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:93 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellToken](LimitTradeParameters.md#selltoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[sellTokenDecimals](LimitTradeParameters.md#selltokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[slippageBps](LimitTradeParameters.md#slippagebps) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[validFor](LimitTradeParameters.md#validfor) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 + +___ + +### validTo + +• `Optional` **validTo**: `number` + +#### Inherited from + +[LimitTradeParameters](LimitTradeParameters.md).[validTo](LimitTradeParameters.md#validto) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:99 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/OrderTypedData.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/OrderTypedData.md new file mode 100644 index 000000000..83d4512f2 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/OrderTypedData.md @@ -0,0 +1,49 @@ +--- +id: "OrderTypedData" +title: "Interface: OrderTypedData" +sidebar_label: "OrderTypedData" +sidebar_position: 0 +custom_edit_url: null +--- + +EIP-712 typed data for an order. + +## Properties + +### domain + +• **domain**: `TypedDataDomain` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:44 + +___ + +### message + +• **message**: [`UnsignedOrder`](../modules.md#unsignedorder) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:47 + +___ + +### primaryType + +• **primaryType**: ``"Order"`` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:45 + +___ + +### types + +• **types**: `Record`<`string`, `TypedDataField`[]\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:46 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultDontTryAgain.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultDontTryAgain.md new file mode 100644 index 000000000..c6f1f6a20 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultDontTryAgain.md @@ -0,0 +1,27 @@ +--- +id: "PollResultDontTryAgain" +title: "Interface: PollResultDontTryAgain" +sidebar_label: "PollResultDontTryAgain" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### reason + +• `Optional` **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:161 + +___ + +### result + +• `Readonly` **result**: [`DONT_TRY_AGAIN`](../enums/PollResultCode.md#dont_try_again) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:160 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultSuccess.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultSuccess.md new file mode 100644 index 000000000..e4c92e9dc --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultSuccess.md @@ -0,0 +1,37 @@ +--- +id: "PollResultSuccess" +title: "Interface: PollResultSuccess" +sidebar_label: "PollResultSuccess" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### order + +• `Readonly` **order**: `DataStruct` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:126 + +___ + +### result + +• `Readonly` **result**: [`SUCCESS`](../enums/PollResultCode.md#success) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:125 + +___ + +### signature + +• `Readonly` **signature**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:127 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryAtEpoch.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryAtEpoch.md new file mode 100644 index 000000000..58d24e13e --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryAtEpoch.md @@ -0,0 +1,42 @@ +--- +id: "PollResultTryAtEpoch" +title: "Interface: PollResultTryAtEpoch" +sidebar_label: "PollResultTryAtEpoch" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### epoch + +• `Readonly` **epoch**: `number` + +The epoch after which it is ok to retry to to poll this order. +The value is expressed as a Unix timestamp (in seconds). + +This epoch will be inclusive, meaning that it is ok to retry at the block mined precisely at this epoch or later. + +#### Defined in + +external/cow-sdk/src/composable/types.ts:155 + +___ + +### reason + +• `Optional` **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:156 + +___ + +### result + +• `Readonly` **result**: [`TRY_AT_EPOCH`](../enums/PollResultCode.md#try_at_epoch) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:148 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryNextBlock.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryNextBlock.md new file mode 100644 index 000000000..fcce48b12 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryNextBlock.md @@ -0,0 +1,27 @@ +--- +id: "PollResultTryNextBlock" +title: "Interface: PollResultTryNextBlock" +sidebar_label: "PollResultTryNextBlock" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### reason + +• `Optional` **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:138 + +___ + +### result + +• `Readonly` **result**: [`TRY_NEXT_BLOCK`](../enums/PollResultCode.md#try_next_block) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:137 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryOnBlock.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryOnBlock.md new file mode 100644 index 000000000..b0fcbd04a --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultTryOnBlock.md @@ -0,0 +1,37 @@ +--- +id: "PollResultTryOnBlock" +title: "Interface: PollResultTryOnBlock" +sidebar_label: "PollResultTryOnBlock" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### blockNumber + +• `Readonly` **blockNumber**: `number` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:143 + +___ + +### reason + +• `Optional` **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:144 + +___ + +### result + +• `Readonly` **result**: [`TRY_ON_BLOCK`](../enums/PollResultCode.md#try_on_block) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:142 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultUnexpectedError.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultUnexpectedError.md new file mode 100644 index 000000000..91d23b863 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/PollResultUnexpectedError.md @@ -0,0 +1,37 @@ +--- +id: "PollResultUnexpectedError" +title: "Interface: PollResultUnexpectedError" +sidebar_label: "PollResultUnexpectedError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### error + +• `Readonly` **error**: `unknown` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:132 + +___ + +### reason + +• `Optional` **reason**: `string` + +#### Defined in + +external/cow-sdk/src/composable/types.ts:133 + +___ + +### result + +• `Readonly` **result**: [`UNEXPECTED_ERROR`](../enums/PollResultCode.md#unexpected_error) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:131 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAmountsAndCosts.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAmountsAndCosts.md new file mode 100644 index 000000000..cf58bc6d5 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAmountsAndCosts.md @@ -0,0 +1,95 @@ +--- +id: "QuoteAmountsAndCosts" +title: "Interface: QuoteAmountsAndCosts" +sidebar_label: "QuoteAmountsAndCosts" +sidebar_position: 0 +custom_edit_url: null +--- + +CoW Protocol quote has amounts (sell/buy) and costs (network fee), there is also partner fees. +Besides that, CoW Protocol supports both sell and buy orders and the fees and costs are calculated differently. + +The order of adding fees and costs is as follows: +1. Network fee is always added to the sell amount +2. Partner fee is added to the surplus amount (sell amount for sell-orders, buy amount for buy-orders) + +For sell-orders the partner fee is subtracted from the buy amount after network costs. +For buy-orders the partner fee is added on top of the sell amount after network costs. + +## Type parameters + +| Name | Type | +| :------ | :------ | +| `AmountType` | `bigint` | +| `Amounts` | \{ `buyAmount`: `AmountType` ; `sellAmount`: `AmountType` } | + +## Properties + +### afterNetworkCosts + +• **afterNetworkCosts**: `Amounts` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:42 + +___ + +### afterPartnerFees + +• **afterPartnerFees**: `Amounts` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:43 + +___ + +### afterSlippage + +• **afterSlippage**: `Amounts` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:44 + +___ + +### beforeNetworkCosts + +• **beforeNetworkCosts**: `Amounts` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:41 + +___ + +### costs + +• **costs**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `networkFee` | \{ `amountInBuyCurrency`: `AmountType` ; `amountInSellCurrency`: `AmountType` } | +| `networkFee.amountInBuyCurrency` | `AmountType` | +| `networkFee.amountInSellCurrency` | `AmountType` | +| `partnerFee` | \{ `amount`: `AmountType` ; `bps`: `number` } | +| `partnerFee.amount` | `AmountType` | +| `partnerFee.bps` | `number` | + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:30 + +___ + +### isSell + +• **isSell**: `boolean` + +#### Defined in + +external/cow-sdk/src/order-book/types.ts:28 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAndPost.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAndPost.md new file mode 100644 index 000000000..c58ecbb41 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteAndPost.md @@ -0,0 +1,31 @@ +--- +id: "QuoteAndPost" +title: "Interface: QuoteAndPost" +sidebar_label: "QuoteAndPost" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### quoteResults + +• **quoteResults**: [`QuoteResults`](QuoteResults.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:135 + +## Methods + +### postSwapOrderFromQuote + +▸ **postSwapOrderFromQuote**(): `Promise`<`string`\> + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:137 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResults.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResults.md new file mode 100644 index 000000000..e50f31812 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResults.md @@ -0,0 +1,70 @@ +--- +id: "QuoteResults" +title: "Interface: QuoteResults" +sidebar_label: "QuoteResults" +sidebar_position: 0 +custom_edit_url: null +--- + +Exhaustive set of data which includes information about trade, quote, order, "app-data", and more. +This data is used to create a trade, sign an order, and post it to the order book. + +## Properties + +### amountsAndCosts + +• **amountsAndCosts**: [`QuoteAmountsAndCosts`](QuoteAmountsAndCosts.md)<`bigint`, \{ `buyAmount`: `bigint` ; `sellAmount`: `bigint` }\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:123 + +___ + +### appDataInfo + +• **appDataInfo**: [`AppDataInfo`](AppDataInfo.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:126 + +___ + +### orderToSign + +• **orderToSign**: [`UnsignedOrder`](../modules.md#unsignedorder) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:124 + +___ + +### orderTypedData + +• **orderTypedData**: [`OrderTypedData`](OrderTypedData.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:127 + +___ + +### quoteResponse + +• **quoteResponse**: [`OrderQuoteResponse`](../modules.md#orderquoteresponse) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:125 + +___ + +### tradeParameters + +• **tradeParameters**: [`TradeParameters`](TradeParameters.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:122 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResultsSerialized.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResultsSerialized.md new file mode 100644 index 000000000..d47d65062 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/QuoteResultsSerialized.md @@ -0,0 +1,93 @@ +--- +id: "QuoteResultsSerialized" +title: "Interface: QuoteResultsSerialized" +sidebar_label: "QuoteResultsSerialized" +sidebar_position: 0 +custom_edit_url: null +--- + +## Hierarchy + +- `Omit`<[`QuoteResults`](QuoteResults.md), ``"amountsAndCosts"``\> + + ↳ **`QuoteResultsSerialized`** + +## Properties + +### amountsAndCosts + +• **amountsAndCosts**: [`QuoteAmountsAndCosts`](QuoteAmountsAndCosts.md)<`string`, \{ `buyAmount`: `string` ; `sellAmount`: `string` }\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:131 + +___ + +### appDataInfo + +• **appDataInfo**: [`AppDataInfo`](AppDataInfo.md) + +#### Inherited from + +Omit.appDataInfo + +#### Defined in + +external/cow-sdk/src/trading/types.ts:126 + +___ + +### orderToSign + +• **orderToSign**: [`UnsignedOrder`](../modules.md#unsignedorder) + +#### Inherited from + +Omit.orderToSign + +#### Defined in + +external/cow-sdk/src/trading/types.ts:124 + +___ + +### orderTypedData + +• **orderTypedData**: [`OrderTypedData`](OrderTypedData.md) + +#### Inherited from + +Omit.orderTypedData + +#### Defined in + +external/cow-sdk/src/trading/types.ts:127 + +___ + +### quoteResponse + +• **quoteResponse**: [`OrderQuoteResponse`](../modules.md#orderquoteresponse) + +#### Inherited from + +Omit.quoteResponse + +#### Defined in + +external/cow-sdk/src/trading/types.ts:125 + +___ + +### tradeParameters + +• **tradeParameters**: [`TradeParameters`](TradeParameters.md) + +#### Inherited from + +Omit.tradeParameters + +#### Defined in + +external/cow-sdk/src/trading/types.ts:122 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/RequestOptions.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/RequestOptions.md new file mode 100644 index 000000000..9fd489d80 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/RequestOptions.md @@ -0,0 +1,31 @@ +--- +id: "RequestOptions" +title: "Interface: RequestOptions" +sidebar_label: "RequestOptions" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### backoffOpts + +• `Optional` **backoffOpts**: `Partial`<`IBackOffOptions`\> + +The options to use for the backoff. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:29 + +___ + +### limiterOpts + +• `Optional` **limiterOpts**: `RateLimiterOpts` + +The options to use for the rate limiter. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:28 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationParams.md new file mode 100644 index 000000000..ffaa4ebba --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationParams.md @@ -0,0 +1,65 @@ +--- +id: "SignOrderCancellationParams" +title: "Interface: SignOrderCancellationParams" +sidebar_label: "SignOrderCancellationParams" +sidebar_position: 0 +custom_edit_url: null +--- + +Parameters for signing an order cancellation. + +**`Param`** + +The CoW Protocol `chainId` context that's being used. + +**`Param`** + +The signer who initially placed the order intent. + +**`Param`** + +The unique identifier of the order to cancel. + +**`Param`** + +The signing scheme to use for the signature. + +## Properties + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:37 + +___ + +### orderUid + +• **orderUid**: `string` + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:39 + +___ + +### signer + +• **signer**: `Signer` + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:38 + +___ + +### signingScheme + +• **signingScheme**: [`EcdsaSigningScheme`](../enums/EcdsaSigningScheme.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:40 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationsParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationsParams.md new file mode 100644 index 000000000..d2bd83918 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderCancellationsParams.md @@ -0,0 +1,65 @@ +--- +id: "SignOrderCancellationsParams" +title: "Interface: SignOrderCancellationsParams" +sidebar_label: "SignOrderCancellationsParams" +sidebar_position: 0 +custom_edit_url: null +--- + +Parameters for signing multiple bulk order cancellations. + +**`Param`** + +The CoW Protocol `chainId` context that's being used. + +**`Param`** + +The signer who initially placed the order intents. + +**`Param`** + +An array of `orderUid` to cancel. + +**`Param`** + +The signing scheme to use for the signature. + +## Properties + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:51 + +___ + +### orderUids + +• **orderUids**: `string`[] + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:53 + +___ + +### signer + +• **signer**: `Signer` + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:52 + +___ + +### signingScheme + +• **signingScheme**: [`EcdsaSigningScheme`](../enums/EcdsaSigningScheme.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:54 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderParams.md new file mode 100644 index 000000000..849713801 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/SignOrderParams.md @@ -0,0 +1,65 @@ +--- +id: "SignOrderParams" +title: "Interface: SignOrderParams" +sidebar_label: "SignOrderParams" +sidebar_position: 0 +custom_edit_url: null +--- + +Parameters for signing an order intent. + +**`Param`** + +The CoW Protocol `chainId` context that's being used. + +**`Param`** + +The signer who is placing the order intent. + +**`Param`** + +The unsigned order intent to be placed. + +**`Param`** + +The signing scheme to use for the signature. + +## Properties + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:23 + +___ + +### order + +• **order**: [`UnsignedOrder`](../modules.md#unsignedorder) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:25 + +___ + +### signer + +• **signer**: `Signer` + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:24 + +___ + +### signingScheme + +• **signingScheme**: [`EcdsaSigningScheme`](../enums/EcdsaSigningScheme.md) + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:26 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapAdvancedSettings.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapAdvancedSettings.md new file mode 100644 index 000000000..e050d6bbd --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapAdvancedSettings.md @@ -0,0 +1,27 @@ +--- +id: "SwapAdvancedSettings" +title: "Interface: SwapAdvancedSettings" +sidebar_label: "SwapAdvancedSettings" +sidebar_position: 0 +custom_edit_url: null +--- + +## Properties + +### appData + +• `Optional` **appData**: `Partial`<`Omit`<`AppDataRootSchema`, ``"version"``\>\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:110 + +___ + +### quoteRequest + +• `Optional` **quoteRequest**: `Partial`<`Omit`<[`OrderQuoteRequest`](../modules.md#orderquoterequest), ``"kind"``\>\> + +#### Defined in + +external/cow-sdk/src/trading/types.ts:109 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapParameters.md new file mode 100644 index 000000000..f537eb093 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/SwapParameters.md @@ -0,0 +1,227 @@ +--- +id: "SwapParameters" +title: "Interface: SwapParameters" +sidebar_label: "SwapParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Trade type, assets, amounts, and optional parameters. + +## Hierarchy + +- [`TradeParameters`](TradeParameters.md) + +- [`TraderParameters`](TraderParameters.md) + + ↳ **`SwapParameters`** + +## Properties + +### amount + +• **amount**: `string` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[amount](TradeParameters.md#amount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:59 + +___ + +### appCode + +• **appCode**: `string` + +#### Inherited from + +[TraderParameters](TraderParameters.md).[appCode](TraderParameters.md#appcode) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:79 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[buyToken](TradeParameters.md#buytoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[buyTokenDecimals](TradeParameters.md#buytokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Inherited from + +[TraderParameters](TraderParameters.md).[chainId](TraderParameters.md#chainid) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:78 + +___ + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Inherited from + +[TradeParameters](TradeParameters.md).[env](TradeParameters.md#env) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Inherited from + +[TradeParameters](TradeParameters.md).[kind](TradeParameters.md#kind) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[partiallyFillable](TradeParameters.md#partiallyfillable) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[partnerFee](TradeParameters.md#partnerfee) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[receiver](TradeParameters.md#receiver) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[sellToken](TradeParameters.md#selltoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[sellTokenDecimals](TradeParameters.md#selltokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 + +___ + +### signer + +• **signer**: `string` \| `Signer` \| `ExternalProvider` + +#### Inherited from + +[TraderParameters](TraderParameters.md).[signer](TraderParameters.md#signer) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:80 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[slippageBps](TradeParameters.md#slippagebps) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Inherited from + +[TradeParameters](TradeParameters.md).[validFor](TradeParameters.md#validfor) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeBaseParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeBaseParameters.md new file mode 100644 index 000000000..84c13f632 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeBaseParameters.md @@ -0,0 +1,75 @@ +--- +id: "TradeBaseParameters" +title: "Interface: TradeBaseParameters" +sidebar_label: "TradeBaseParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Minimal set of parameters to create a trade. + +## Hierarchy + +- **`TradeBaseParameters`** + + ↳ [`TradeParameters`](TradeParameters.md) + +## Properties + +### amount + +• **amount**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:59 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeOptionalParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeOptionalParameters.md new file mode 100644 index 000000000..8a31c3966 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeOptionalParameters.md @@ -0,0 +1,75 @@ +--- +id: "TradeOptionalParameters" +title: "Interface: TradeOptionalParameters" +sidebar_label: "TradeOptionalParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Optional parameters to create a trade. + +## Hierarchy + +- **`TradeOptionalParameters`** + + ↳ [`TradeParameters`](TradeParameters.md) + +## Properties + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeParameters.md new file mode 100644 index 000000000..bcb16eae2 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TradeParameters.md @@ -0,0 +1,187 @@ +--- +id: "TradeParameters" +title: "Interface: TradeParameters" +sidebar_label: "TradeParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Trade type, assets, amounts, and optional parameters. + +## Hierarchy + +- [`TradeBaseParameters`](TradeBaseParameters.md) + +- [`TradeOptionalParameters`](TradeOptionalParameters.md) + + ↳ **`TradeParameters`** + + ↳↳ [`SwapParameters`](SwapParameters.md) + +## Properties + +### amount + +• **amount**: `string` + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[amount](TradeBaseParameters.md#amount) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:59 + +___ + +### buyToken + +• **buyToken**: `string` + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[buyToken](TradeBaseParameters.md#buytoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:57 + +___ + +### buyTokenDecimals + +• **buyTokenDecimals**: `number` + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[buyTokenDecimals](TradeBaseParameters.md#buytokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:58 + +___ + +### env + +• `Optional` **env**: [`CowEnv`](../modules.md#cowenv) + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[env](TradeOptionalParameters.md#env) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:66 + +___ + +### kind + +• **kind**: [`OrderKind`](../enums/OrderKind.md) + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[kind](TradeBaseParameters.md#kind) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:54 + +___ + +### partiallyFillable + +• `Optional` **partiallyFillable**: `boolean` + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[partiallyFillable](TradeOptionalParameters.md#partiallyfillable) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:67 + +___ + +### partnerFee + +• `Optional` **partnerFee**: `PartnerFee` + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[partnerFee](TradeOptionalParameters.md#partnerfee) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:71 + +___ + +### receiver + +• `Optional` **receiver**: ``null`` \| `string` + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[receiver](TradeOptionalParameters.md#receiver) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:69 + +___ + +### sellToken + +• **sellToken**: `string` + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[sellToken](TradeBaseParameters.md#selltoken) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:55 + +___ + +### sellTokenDecimals + +• **sellTokenDecimals**: `number` + +#### Inherited from + +[TradeBaseParameters](TradeBaseParameters.md).[sellTokenDecimals](TradeBaseParameters.md#selltokendecimals) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:56 + +___ + +### slippageBps + +• `Optional` **slippageBps**: `number` + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[slippageBps](TradeOptionalParameters.md#slippagebps) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:68 + +___ + +### validFor + +• `Optional` **validFor**: `number` + +#### Inherited from + +[TradeOptionalParameters](TradeOptionalParameters.md).[validFor](TradeOptionalParameters.md#validfor) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:70 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TraderParameters.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TraderParameters.md new file mode 100644 index 000000000..ab3a567b8 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TraderParameters.md @@ -0,0 +1,47 @@ +--- +id: "TraderParameters" +title: "Interface: TraderParameters" +sidebar_label: "TraderParameters" +sidebar_position: 0 +custom_edit_url: null +--- + +Information about the trader. + +## Hierarchy + +- **`TraderParameters`** + + ↳ [`SwapParameters`](SwapParameters.md) + + ↳ [`LimitOrderParameters`](LimitOrderParameters.md) + +## Properties + +### appCode + +• **appCode**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:79 + +___ + +### chainId + +• **chainId**: [`SupportedChainId`](../enums/SupportedChainId.md) + +#### Defined in + +external/cow-sdk/src/trading/types.ts:78 + +___ + +### signer + +• **signer**: `string` \| `Signer` \| `ExternalProvider` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:80 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TransactionParams.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TransactionParams.md new file mode 100644 index 000000000..468b77b18 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TransactionParams.md @@ -0,0 +1,49 @@ +--- +id: "TransactionParams" +title: "Interface: TransactionParams" +sidebar_label: "TransactionParams" +sidebar_position: 0 +custom_edit_url: null +--- + +A standard Ethereum transaction object + +## Properties + +### data + +• **data**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:161 + +___ + +### gas + +• **gas**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:162 + +___ + +### to + +• **to**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:163 + +___ + +### value + +• **value**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:164 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapData.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapData.md new file mode 100644 index 000000000..0bddeb04c --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapData.md @@ -0,0 +1,157 @@ +--- +id: "TwapData" +title: "Interface: TwapData" +sidebar_label: "TwapData" +sidebar_position: 0 +custom_edit_url: null +--- + +Parameters for a TWAP order, made a little more user-friendly for SDK users. + +**`See`** + +[TwapStruct](TwapStruct.md) for the native struct. + +## Hierarchy + +- [`TwapDataBase`](../modules.md#twapdatabase) + + ↳ **`TwapData`** + +## Properties + +### appData + +• `Readonly` **appData**: `string` + +Meta-data associated with the order. Normally would be the keccak256 hash of the document generated in http://github.com/cowprotocol/app-data + +This hash should have been uploaded to the API https://api.cow.fi/docs/#/default/put_api_v1_app_data__app_data_hash_ and potentially to other data availability protocols like IPFS. + +#### Inherited from + +TwapDataBase.appData + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:63 + +___ + +### buyAmount + +• `Readonly` **buyAmount**: `BigNumber` + +minimum amount of buyToken that must be bought across the entire TWAP + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:115 + +___ + +### buyToken + +• `Readonly` **buyToken**: `string` + +which token to buy + +#### Inherited from + +TwapDataBase.buyToken + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:50 + +___ + +### durationOfPart + +• `Optional` `Readonly` **durationOfPart**: [`DurationOfPart`](../modules.md#durationofpart) + +whether the TWAP is valid for the entire interval or not + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:135 + +___ + +### numberOfParts + +• `Readonly` **numberOfParts**: `BigNumber` + +number of parts + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:125 + +___ + +### receiver + +• `Readonly` **receiver**: `string` + +who to send the tokens to + +#### Inherited from + +TwapDataBase.receiver + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:55 + +___ + +### sellAmount + +• `Readonly` **sellAmount**: `BigNumber` + +total amount of sellToken to sell across the entire TWAP + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:110 + +___ + +### sellToken + +• `Readonly` **sellToken**: `string` + +which token to sell + +#### Inherited from + +TwapDataBase.sellToken + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:45 + +___ + +### startTime + +• `Optional` `Readonly` **startTime**: [`StartTime`](../modules.md#starttime) + +start time of the TWAP + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:120 + +___ + +### timeBetweenParts + +• `Readonly` **timeBetweenParts**: `BigNumber` + +duration of the TWAP interval + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:130 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapStruct.md b/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapStruct.md new file mode 100644 index 000000000..ff4df6793 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/TwapStruct.md @@ -0,0 +1,153 @@ +--- +id: "TwapStruct" +title: "Interface: TwapStruct" +sidebar_label: "TwapStruct" +sidebar_position: 0 +custom_edit_url: null +--- + +Parameters for a TWAP order, as expected by the contract's `staticInput`. + +## Hierarchy + +- [`TwapDataBase`](../modules.md#twapdatabase) + + ↳ **`TwapStruct`** + +## Properties + +### appData + +• `Readonly` **appData**: `string` + +Meta-data associated with the order. Normally would be the keccak256 hash of the document generated in http://github.com/cowprotocol/app-data + +This hash should have been uploaded to the API https://api.cow.fi/docs/#/default/put_api_v1_app_data__app_data_hash_ and potentially to other data availability protocols like IPFS. + +#### Inherited from + +TwapDataBase.appData + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:63 + +___ + +### buyToken + +• `Readonly` **buyToken**: `string` + +which token to buy + +#### Inherited from + +TwapDataBase.buyToken + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:50 + +___ + +### minPartLimit + +• `Readonly` **minPartLimit**: `BigNumber` + +minimum amount of buyToken that must be bought in each part + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:78 + +___ + +### n + +• `Readonly` **n**: `BigNumber` + +number of parts + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:88 + +___ + +### partSellAmount + +• `Readonly` **partSellAmount**: `BigNumber` + +amount of sellToken to sell in each part + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:73 + +___ + +### receiver + +• `Readonly` **receiver**: `string` + +who to send the tokens to + +#### Inherited from + +TwapDataBase.receiver + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:55 + +___ + +### sellToken + +• `Readonly` **sellToken**: `string` + +which token to sell + +#### Inherited from + +TwapDataBase.sellToken + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:45 + +___ + +### span + +• `Readonly` **span**: `BigNumber` + +whether the TWAP is valid for the entire interval or not + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:98 + +___ + +### t + +• `Readonly` **t**: `BigNumber` + +duration of the TWAP interval + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:93 + +___ + +### t0 + +• `Readonly` **t0**: `BigNumber` + +start time of the TWAP + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:83 diff --git a/docs/cow-protocol/sdks/cow-sdk/interfaces/_category_.yml b/docs/cow-protocol/sdks/cow-sdk/interfaces/_category_.yml new file mode 100644 index 000000000..43bec88cf --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/interfaces/_category_.yml @@ -0,0 +1,2 @@ +label: "Interfaces" +position: 4 \ No newline at end of file diff --git a/docs/cow-protocol/sdks/cow-sdk/modules.md b/docs/cow-protocol/sdks/cow-sdk/modules.md new file mode 100644 index 000000000..95a95286e --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/modules.md @@ -0,0 +1,2526 @@ +--- +id: "modules" +title: "@cowprotocol/cow-sdk" +sidebar_label: "Exports" +sidebar_position: 0.5 +custom_edit_url: null +--- + +## Namespaces + +- [CompetitionOrderStatus](namespaces/CompetitionOrderStatus.md) +- [OnchainOrderData](namespaces/OnchainOrderData.md) +- [OrderCancellationError](namespaces/OrderCancellationError.md) +- [OrderPostError](namespaces/OrderPostError.md) +- [PriceEstimationError](namespaces/PriceEstimationError.md) + +## Enumerations + +- [BuyTokenDestination](enums/BuyTokenDestination.md) +- [DurationType](enums/DurationType.md) +- [EcdsaSigningScheme](enums/EcdsaSigningScheme.md) +- [OrderClass](enums/OrderClass.md) +- [OrderKind](enums/OrderKind.md) +- [OrderQuoteSideKindBuy](enums/OrderQuoteSideKindBuy.md) +- [OrderQuoteSideKindSell](enums/OrderQuoteSideKindSell.md) +- [OrderStatus](enums/OrderStatus.md) +- [PollResultCode](enums/PollResultCode.md) +- [PriceQuality](enums/PriceQuality.md) +- [ProofLocation](enums/ProofLocation.md) +- [SellTokenSource](enums/SellTokenSource.md) +- [SigningScheme](enums/SigningScheme.md) +- [StartTimeValue](enums/StartTimeValue.md) +- [SupportedChainId](enums/SupportedChainId.md) + +## Classes + +- [ConditionalOrder](classes/ConditionalOrder.md) +- [ConditionalOrderFactory](classes/ConditionalOrderFactory.md) +- [CowError](classes/CowError.md) +- [CowShedHooks](classes/CowShedHooks.md) +- [Multiplexer](classes/Multiplexer.md) +- [OrderBookApi](classes/OrderBookApi.md) +- [OrderBookApiError](classes/OrderBookApiError.md) +- [OrderSigningUtils](classes/OrderSigningUtils.md) +- [SubgraphApi](classes/SubgraphApi.md) +- [TradingSdk](classes/TradingSdk.md) +- [Twap](classes/Twap.md) + +## Interfaces + +- [ApiContext](interfaces/ApiContext.md) +- [AppDataInfo](interfaces/AppDataInfo.md) +- [BuildAppDataParams](interfaces/BuildAppDataParams.md) +- [ConditionalOrderArguments](interfaces/ConditionalOrderArguments.md) +- [EnrichedOrder](interfaces/EnrichedOrder.md) +- [EthFlowOrderExistsCallback](interfaces/EthFlowOrderExistsCallback.md) +- [FetchParams](interfaces/FetchParams.md) +- [ICoWShedCall](interfaces/ICoWShedCall.md) +- [ICoWShedOptions](interfaces/ICoWShedOptions.md) +- [IpfsConfig](interfaces/IpfsConfig.md) +- [IsNotValid](interfaces/IsNotValid.md) +- [IsValid](interfaces/IsValid.md) +- [LimitOrderAdvancedSettings](interfaces/LimitOrderAdvancedSettings.md) +- [LimitOrderParameters](interfaces/LimitOrderParameters.md) +- [LimitTradeParameters](interfaces/LimitTradeParameters.md) +- [LimitTradeParametersFromQuote](interfaces/LimitTradeParametersFromQuote.md) +- [OrderTypedData](interfaces/OrderTypedData.md) +- [PollResultDontTryAgain](interfaces/PollResultDontTryAgain.md) +- [PollResultSuccess](interfaces/PollResultSuccess.md) +- [PollResultTryAtEpoch](interfaces/PollResultTryAtEpoch.md) +- [PollResultTryNextBlock](interfaces/PollResultTryNextBlock.md) +- [PollResultTryOnBlock](interfaces/PollResultTryOnBlock.md) +- [PollResultUnexpectedError](interfaces/PollResultUnexpectedError.md) +- [QuoteAmountsAndCosts](interfaces/QuoteAmountsAndCosts.md) +- [QuoteAndPost](interfaces/QuoteAndPost.md) +- [QuoteResults](interfaces/QuoteResults.md) +- [QuoteResultsSerialized](interfaces/QuoteResultsSerialized.md) +- [RequestOptions](interfaces/RequestOptions.md) +- [SignOrderCancellationParams](interfaces/SignOrderCancellationParams.md) +- [SignOrderCancellationsParams](interfaces/SignOrderCancellationsParams.md) +- [SignOrderParams](interfaces/SignOrderParams.md) +- [SwapAdvancedSettings](interfaces/SwapAdvancedSettings.md) +- [SwapParameters](interfaces/SwapParameters.md) +- [TradeBaseParameters](interfaces/TradeBaseParameters.md) +- [TradeOptionalParameters](interfaces/TradeOptionalParameters.md) +- [TradeParameters](interfaces/TradeParameters.md) +- [TraderParameters](interfaces/TraderParameters.md) +- [TransactionParams](interfaces/TransactionParams.md) +- [TwapData](interfaces/TwapData.md) +- [TwapStruct](interfaces/TwapStruct.md) + +## Type Aliases + +### AccountAddress + +Ƭ **AccountAddress**: \`0x$\{string}\` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:18 + +___ + +### Address + +Ƭ **Address**: `string` + +20 byte Ethereum address encoded as a hex with `0x` prefix. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Address.ts:8 + +___ + +### ApiBaseUrls + +Ƭ **ApiBaseUrls**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +#### Defined in + +external/cow-sdk/src/common/configs.ts:49 + +___ + +### AppData + +Ƭ **AppData**: `string` + +The string encoding of a JSON object representing some `appData`. The +format of the JSON expected in the `appData` field is defined +[here](https://github.com/cowprotocol/app-data). + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/AppData.ts:11 + +___ + +### AppDataHash + +Ƭ **AppDataHash**: `string` + +32 bytes encoded as hex with `0x` prefix. +It's expected to be the hash of the stringified JSON object representing the `appData`. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/AppDataHash.ts:10 + +___ + +### AppDataObject + +Ƭ **AppDataObject**: `Object` + +An `appData` document that is registered with the API. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `fullAppData?` | [`AppData`](modules.md#appdata) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/AppDataObject.ts:10 + +___ + +### AppDataRootSchema + +Ƭ **AppDataRootSchema**: `latest.AppDataRootSchema` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:140 + +___ + +### Auction + +Ƭ **Auction**: `Object` + +A batch auction for solving. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `block?` | `number` | The block number for the auction. Orders and prices are guaranteed to be valid on this block. Proposed settlements should be valid for this block as well. | +| `id?` | `number` | The unique identifier of the auction. Increment whenever the backend creates a new auction. | +| `orders?` | [`AuctionOrder`](modules.md#auctionorder)[] | The solvable orders included in the auction. | +| `prices?` | [`AuctionPrices`](modules.md#auctionprices) | - | +| `surplusCapturingJitOrderOwners?` | [`Address`](modules.md#address)[] | List of addresses on whose surplus will count towards the objective value of their solution (unlike other orders that were created by the solver). | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Auction.ts:13 + +___ + +### AuctionOrder + +Ƭ **AuctionOrder**: `Object` + +A solvable order included in the current batch auction. Contains the data forwarded to solvers for solving. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | [`AppDataHash`](modules.md#appdatahash) | - | +| `buyAmount` | [`TokenAmount`](modules.md#tokenamount) | see `OrderParameters::buyAmount` | +| `buyToken` | [`Address`](modules.md#address) | see `OrderParameters::buyToken` | +| `buyTokenBalance` | [`BuyTokenDestination`](enums/BuyTokenDestination.md) | see `OrderParameters::buyTokenBalance` | +| `class` | [`OrderClass`](enums/OrderClass.md) | - | +| `created` | `string` | Creation time of the order. Denominated in epoch seconds. | +| `executed` | [`TokenAmount`](modules.md#tokenamount) | Currently executed amount of sell/buy token, depending on the order kind. | +| `kind` | [`OrderKind`](enums/OrderKind.md) | see `OrderParameters::kind` | +| `owner` | [`Address`](modules.md#address) | - | +| `partiallyFillable` | `boolean` | see `OrderParameters::partiallyFillable` | +| `postInteractions` | [`InteractionData`](modules.md#interactiondata)[] | The post-interactions that need to be executed after the execution of the order. | +| `preInteractions` | [`InteractionData`](modules.md#interactiondata)[] | The pre-interactions that need to be executed before the first execution of the order. | +| `protocolFees` | [`FeePolicy`](modules.md#feepolicy)[] | The fee policies that are used to compute the protocol fees for this order. | +| `quote?` | [`Quote`](modules.md#quote) | A winning quote. | +| `receiver` | [`Address`](modules.md#address) \| ``null`` | see `OrderParameters::receiver` | +| `sellAmount` | [`TokenAmount`](modules.md#tokenamount) | see `OrderParameters::sellAmount` | +| `sellToken` | [`Address`](modules.md#address) | see `OrderParameters::sellToken` | +| `sellTokenBalance` | [`SellTokenSource`](enums/SellTokenSource.md) | see `OrderParameters::sellTokenBalance` | +| `signature` | [`Signature`](modules.md#signature) | - | +| `uid` | [`UID`](modules.md#uid) | - | +| `validTo` | `number` | see `OrderParameters::validTo` | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/AuctionOrder.ts:22 + +___ + +### AuctionPrices + +Ƭ **AuctionPrices**: `Record`<`string`, [`BigUint`](modules.md#biguint)\> + +The reference prices for all traded tokens in the auction as a mapping from token addresses to a price denominated in native token (i.e. 1e18 represents a token that trades one to one with the native token). These prices are used for solution competition for computing surplus and converting fees to native token. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/AuctionPrices.ts:11 + +___ + +### BigUint + +Ƭ **BigUint**: `string` + +A big unsigned integer encoded in decimal. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/BigUint.ts:8 + +___ + +### BlockInfo + +Ƭ **BlockInfo**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `blockNumber` | `number` | +| `blockTimestamp` | `number` | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:102 + +___ + +### CallData + +Ƭ **CallData**: `string` + +Some `calldata` sent to a contract in a transaction encoded as a hex with `0x` prefix. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CallData.ts:8 + +___ + +### CompetitionAuction + +Ƭ **CompetitionAuction**: `Object` + +The components that describe a batch auction for the solver competition. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orders?` | [`UID`](modules.md#uid)[] | The UIDs of the orders included in the auction. | +| `prices?` | [`AuctionPrices`](modules.md#auctionprices) | - | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts:12 + +___ + +### CompetitionOrderStatus + +Ƭ **CompetitionOrderStatus**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `type` | [`type`](enums/CompetitionOrderStatus.type.md) | - | +| `value?` | \{ `executedAmounts?`: [`ExecutedAmounts`](modules.md#executedamounts) ; `solver`: `string` }[] | A list of solvers who participated in the latest competition, sorted by score in ascending order, where the last element is the winner. The presence of executed amounts defines whether the solver provided a solution for the desired order. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:7 + +external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts:25 + +___ + +### ConditionalOrderParams + +Ƭ **ConditionalOrderParams**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `handler` | `string` | +| `salt` | `string` | +| `staticInput` | `string` | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:13 + +___ + +### ConditionalOrderRegistry + +Ƭ **ConditionalOrderRegistry**: `Record`<`string`, [`FromParams`](modules.md#fromparams)<`unknown`, `unknown`\>\> + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrderFactory.ts:5 + +___ + +### ContextFactory + +Ƭ **ContextFactory**: `Object` + +A factory and it's arguments that are called at transaction mining time to generate the context +for a conditional order(s). + +This allows to support the case where conditional orders may want to *commence* validity at the +time of transaction mining, like in the case of a `TWAP` executed by a DAO or `Safe` that takes +a reasonable amount of time to aggregate signatures or collect votes. + +**`Remarks`** + +This is used in conjunction with `setRootWithContext` or `createWithContext`. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `address` | `string` | +| `factoryArgs?` | \{ `args`: `unknown`[] ; `argsType`: `string`[] } | +| `factoryArgs.args` | `unknown`[] | +| `factoryArgs.argsType` | `string`[] | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:44 + +___ + +### CowEnv + +Ƭ **CowEnv**: ``"prod"`` \| ``"staging"`` + +The environment to use for the Cow API. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:35 + +___ + +### DurationOfPart + +Ƭ **DurationOfPart**: \{ `durationType`: [`AUTO`](enums/DurationType.md#auto) } \| \{ `duration`: `BigNumber` ; `durationType`: [`LIMIT_DURATION`](enums/DurationType.md#limit_duration) } + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:138 + +___ + +### EcdsaSignature + +Ƭ **EcdsaSignature**: `string` + +65 bytes encoded as hex with `0x` prefix. `r || s || v` from the spec. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts:8 + +___ + +### EthflowData + +Ƭ **EthflowData**: `Object` + +Provides the additional data for ethflow orders. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `refundTxHash` | [`TransactionHash`](modules.md#transactionhash) \| ``null`` | Specifies in which transaction the order was refunded. If this field is null the order was not yet refunded. | +| `userValidTo` | `number` | Describes the `validTo` of an order ethflow order. **NOTE**: For ethflow orders, the `validTo` encoded in the smart contract is `type(uint256).max`. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/EthflowData.ts:10 + +___ + +### ExecutedAmounts + +Ƭ **ExecutedAmounts**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `buy` | [`BigUint`](modules.md#biguint) | +| `sell` | [`BigUint`](modules.md#biguint) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts:7 + +___ + +### ExecutedProtocolFee + +Ƭ **ExecutedProtocolFee**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `amount?` | [`TokenAmount`](modules.md#tokenamount) | +| `policy?` | [`FeePolicy`](modules.md#feepolicy) | +| `token?` | [`Address`](modules.md#address) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts:9 + +___ + +### FeePolicy + +Ƭ **FeePolicy**: [`Surplus`](modules.md#surplus) \| [`Volume`](modules.md#volume) \| [`PriceImprovement`](modules.md#priceimprovement) + +Defines the ways to calculate the protocol fee. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/FeePolicy.ts:12 + +___ + +### FromParams + +Ƭ **FromParams**<`D`, `S`\>: (`params`: [`ConditionalOrderParams`](modules.md#conditionalorderparams)) => [`ConditionalOrder`](classes/ConditionalOrder.md)<`D`, `S`\> + +#### Type parameters + +| Name | +| :------ | +| `D` | +| `S` | + +#### Type declaration + +▸ (`params`): [`ConditionalOrder`](classes/ConditionalOrder.md)<`D`, `S`\> + +##### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderParams`](modules.md#conditionalorderparams) | + +##### Returns + +[`ConditionalOrder`](classes/ConditionalOrder.md)<`D`, `S`\> + +#### Defined in + +external/cow-sdk/src/composable/ConditionalOrderFactory.ts:4 + +___ + +### GetOrdersRequest + +Ƭ **GetOrdersRequest**: `Object` + +The parameters for the `getOrders` request. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `limit?` | `number` | +| `offset?` | `number` | +| `owner` | [`Address`](modules.md#address) | + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:68 + +___ + +### InteractionData + +Ƭ **InteractionData**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `call_data?` | [`CallData`](modules.md#calldata)[] | The call data to be used for the interaction. | +| `target?` | [`Address`](modules.md#address) | - | +| `value?` | [`TokenAmount`](modules.md#tokenamount) | - | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/InteractionData.ts:9 + +___ + +### IsValidResult + +Ƭ **IsValidResult**: [`IsValid`](interfaces/IsValid.md) \| [`IsNotValid`](interfaces/IsNotValid.md) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:164 + +___ + +### NativePriceResponse + +Ƭ **NativePriceResponse**: `Object` + +The estimated native price for the token + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `price?` | `number` | Estimated price of the token. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts:9 + +___ + +### OnchainOrderData + +Ƭ **OnchainOrderData**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `placementError?` | [`placementError`](enums/OnchainOrderData.placementError.md) | Describes the error, if the order placement was not successful. This could happen, for example, if the `validTo` is too high, or no valid quote was found or generated. | +| `sender` | [`Address`](modules.md#address) | If orders are placed as on-chain orders, the owner of the order might be a smart contract, but not the user placing the order. The actual user will be provided in this field. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts:7 + +external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts:20 + +___ + +### Order + +Ƭ **Order**: [`OrderCreation`](modules.md#ordercreation) & [`OrderMetaData`](modules.md#ordermetadata) + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Order.ts:8 + +___ + +### OrderCancellation + +Ƭ **OrderCancellation**: `Object` + +[EIP-712](https://eips.ethereum.org/EIPS/eip-712) signature of struct +`OrderCancellation(bytes orderUid)` from the order's owner. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `signature` | [`EcdsaSignature`](modules.md#ecdsasignature) | OrderCancellation signed by owner | +| `signingScheme` | [`EcdsaSigningScheme`](enums/EcdsaSigningScheme.md) | - | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellation.ts:13 + +___ + +### OrderCancellationError + +Ƭ **OrderCancellationError**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `description` | `string` | +| `errorType` | [`errorType`](enums/OrderCancellationError.errorType.md) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:5 + +external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts:10 + +___ + +### OrderCancellations + +Ƭ **OrderCancellations**: `Object` + +EIP-712 signature of struct OrderCancellations { orderUid: bytes[] } from the order's owner. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `orderUids?` | [`UID`](modules.md#uid)[] | UIDs of orders to cancel. | +| `signature` | [`EcdsaSignature`](modules.md#ecdsasignature) | `OrderCancellation` signed by the owner. | +| `signingScheme` | [`EcdsaSigningScheme`](enums/EcdsaSigningScheme.md) | - | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCancellations.ts:13 + +___ + +### OrderCreation + +Ƭ **OrderCreation**: `Object` + +Data a user provides when creating a new order. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | [`AppData`](modules.md#appdata) \| [`AppDataHash`](modules.md#appdatahash) | This field comes in two forms for backward compatibility. The hash form will eventually stop being accepted. | +| `appDataHash?` | [`AppDataHash`](modules.md#appdatahash) \| ``null`` | May be set for debugging purposes. If set, this field is compared to what the backend internally calculates as the app data hash based on the contents of `appData`. If the hash does not match, an error is returned. If this field is set, then `appData` **MUST** be a string encoding of a JSON object. | +| `buyAmount` | [`TokenAmount`](modules.md#tokenamount) | see `OrderParameters::buyAmount` | +| `buyToken` | [`Address`](modules.md#address) | see `OrderParameters::buyToken` | +| `buyTokenBalance?` | [`BuyTokenDestination`](enums/BuyTokenDestination.md) | see `OrderParameters::buyTokenBalance` | +| `feeAmount` | [`TokenAmount`](modules.md#tokenamount) | see `OrderParameters::feeAmount` | +| `from?` | [`Address`](modules.md#address) \| ``null`` | If set, the backend enforces that this address matches what is decoded as the *signer* of the signature. This helps catch errors with invalid signature encodings as the backend might otherwise silently work with an unexpected address that for example does not have any balance. | +| `kind` | [`OrderKind`](enums/OrderKind.md) | see `OrderParameters::kind` | +| `partiallyFillable` | `boolean` | see `OrderParameters::partiallyFillable` | +| `quoteId?` | `number` \| ``null`` | Orders can optionally include a quote ID. This way the order can be linked to a quote and enable providing more metadata when analysing order slippage. | +| `receiver?` | [`Address`](modules.md#address) \| ``null`` | see `OrderParameters::receiver` | +| `sellAmount` | [`TokenAmount`](modules.md#tokenamount) | see `OrderParameters::sellAmount` | +| `sellToken` | [`Address`](modules.md#address) | see `OrderParameters::sellToken` | +| `sellTokenBalance?` | [`SellTokenSource`](enums/SellTokenSource.md) | see `OrderParameters::sellTokenBalance` | +| `signature` | [`Signature`](modules.md#signature) | - | +| `signingScheme` | [`SigningScheme`](enums/SigningScheme.md) | - | +| `validTo` | `number` | see `OrderParameters::validTo` | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderCreation.ts:18 + +___ + +### OrderMetaData + +Ƭ **OrderMetaData**: `Object` + +Extra order data that is returned to users when querying orders but not provided by users when creating orders. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `availableBalance?` | [`TokenAmount`](modules.md#tokenamount) \| ``null`` | Unused field that is currently always set to `null` and will be removed in the future. **`Deprecated`** | +| `class` | [`OrderClass`](enums/OrderClass.md) | - | +| `creationDate` | `string` | Creation time of the order. Encoded as ISO 8601 UTC. | +| `ethflowData?` | [`EthflowData`](modules.md#ethflowdata) | - | +| `executedBuyAmount` | [`BigUint`](modules.md#biguint) | The total amount of `buyToken` that has been executed for this order. | +| `executedFee?` | [`BigUint`](modules.md#biguint) | Total fee charged for execution of the order. Contains network fee and protocol fees. | +| `executedFeeAmount` | [`BigUint`](modules.md#biguint) | The total amount of fees that have been executed for this order. | +| `executedFeeToken?` | [`Address`](modules.md#address) | Token the executed fee was captured in. | +| `executedSellAmount` | [`BigUint`](modules.md#biguint) | The total amount of `sellToken` that has been executed for this order including fees. | +| `executedSellAmountBeforeFees` | [`BigUint`](modules.md#biguint) | The total amount of `sellToken` that has been executed for this order without fees. | +| `executedSurplusFee?` | [`BigUint`](modules.md#biguint) | Surplus fee that the limit order was executed with. | +| `fullAppData?` | `string` \| ``null`` | Full `appData`, which the contract-level `appData` is a hash of. See `OrderCreation` for more information. | +| `fullFeeAmount?` | [`TokenAmount`](modules.md#tokenamount) | Amount that the signed fee would be without subsidies. | +| `invalidated` | `boolean` | Has this order been invalidated? | +| `isLiquidityOrder?` | `boolean` | Liquidity orders are functionally the same as normal smart contract orders but are not placed with the intent of actively getting traded. Instead they facilitate the trade of normal orders by allowing them to be matched against liquidity orders which uses less gas and can have better prices than external liquidity. As such liquidity orders will only be used in order to improve settlement of normal orders. They should not be expected to be traded otherwise and should not expect to get surplus. | +| `onchainOrderData?` | [`OnchainOrderData`](modules.md#onchainorderdata) | There is some data only available for orders that are placed on-chain. This data can be found in this object. | +| `onchainUser?` | [`Address`](modules.md#address) | This represents the actual trader of an on-chain order. ### ethflow orders In this case, the `owner` would be the `EthFlow` contract and *not* the actual trader. | +| `owner` | [`Address`](modules.md#address) | - | +| `status` | [`OrderStatus`](enums/OrderStatus.md) | Order status. | +| `uid` | [`UID`](modules.md#uid) | - | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts:18 + +___ + +### OrderParameters + +Ƭ **OrderParameters**: `Object` + +Order parameters. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | [`AppDataHash`](modules.md#appdatahash) | - | +| `buyAmount` | [`TokenAmount`](modules.md#tokenamount) | Amount of `buyToken` to be bought in atoms. | +| `buyToken` | [`Address`](modules.md#address) | ERC-20 token to be bought. | +| `buyTokenBalance?` | [`BuyTokenDestination`](enums/BuyTokenDestination.md) | - | +| `feeAmount` | [`TokenAmount`](modules.md#tokenamount) | feeRatio * sellAmount + minimal_fee in atoms. | +| `kind` | [`OrderKind`](enums/OrderKind.md) | The kind is either a buy or sell order. | +| `partiallyFillable` | `boolean` | Is the order fill-or-kill or partially fillable? | +| `receiver?` | [`Address`](modules.md#address) \| ``null`` | An optional Ethereum address to receive the proceeds of the trade instead of the owner (i.e. the order signer). | +| `sellAmount` | [`TokenAmount`](modules.md#tokenamount) | Amount of `sellToken` to be sold in atoms. | +| `sellToken` | [`Address`](modules.md#address) | ERC-20 token to be sold. | +| `sellTokenBalance?` | [`SellTokenSource`](enums/SellTokenSource.md) | - | +| `signingScheme?` | [`SigningScheme`](enums/SigningScheme.md) | - | +| `validTo` | `number` | Unix timestamp (`uint32`) until which the order is valid. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderParameters.ts:16 + +___ + +### OrderPostError + +Ƭ **OrderPostError**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `description` | `string` | +| `errorType` | [`errorType`](enums/OrderPostError.errorType.md) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:5 + +external/cow-sdk/src/order-book/generated/models/OrderPostError.ts:10 + +___ + +### OrderQuoteRequest + +Ƭ **OrderQuoteRequest**: [`OrderQuoteSide`](modules.md#orderquoteside) & [`OrderQuoteValidity`](modules.md#orderquotevalidity) & \{ `appData?`: [`AppData`](modules.md#appdata) \| [`AppDataHash`](modules.md#appdatahash) ; `appDataHash?`: [`AppDataHash`](modules.md#appdatahash) ; `buyToken`: [`Address`](modules.md#address) ; `buyTokenBalance?`: [`BuyTokenDestination`](enums/BuyTokenDestination.md) ; `from`: [`Address`](modules.md#address) ; `onchainOrder?`: `any` ; `priceQuality?`: [`PriceQuality`](enums/PriceQuality.md) ; `receiver?`: [`Address`](modules.md#address) \| ``null`` ; `sellToken`: [`Address`](modules.md#address) ; `sellTokenBalance?`: [`SellTokenSource`](enums/SellTokenSource.md) ; `signingScheme?`: [`SigningScheme`](enums/SigningScheme.md) } + +Request fee and price quote. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts:18 + +___ + +### OrderQuoteResponse + +Ƭ **OrderQuoteResponse**: `Object` + +An order quoted by the backend that can be directly signed and +submitted to the order creation backend. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `expiration` | `string` | Expiration date of the offered fee. Order service might not accept the fee after this expiration date. Encoded as ISO 8601 UTC. | +| `from?` | [`Address`](modules.md#address) | - | +| `id?` | `number` | Quote ID linked to a quote to enable providing more metadata when analysing order slippage. | +| `quote` | [`OrderParameters`](modules.md#orderparameters) | - | +| `verified` | `boolean` | Whether it was possible to verify that the quoted amounts are accurate using a simulation. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts:13 + +___ + +### OrderQuoteSide + +Ƭ **OrderQuoteSide**: \{ `kind`: [`OrderQuoteSideKindSell`](enums/OrderQuoteSideKindSell.md) ; `sellAmountBeforeFee`: [`TokenAmount`](modules.md#tokenamount) } \| \{ `kind`: [`OrderQuoteSideKindSell`](enums/OrderQuoteSideKindSell.md) ; `sellAmountAfterFee`: [`TokenAmount`](modules.md#tokenamount) } \| \{ `buyAmountAfterFee`: [`TokenAmount`](modules.md#tokenamount) ; `kind`: [`OrderQuoteSideKindBuy`](enums/OrderQuoteSideKindBuy.md) } + +The buy or sell side when quoting an order. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts:12 + +___ + +### OrderQuoteValidity + +Ƭ **OrderQuoteValidity**: \{ `validTo?`: `number` } \| \{ `validFor?`: `number` } + +The validity for the order. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts:8 + +___ + +### Orders + +Ƭ **Orders**: `Record`<`string`, [`ConditionalOrder`](classes/ConditionalOrder.md)<`unknown`, `unknown`\>\> + +#### Defined in + +external/cow-sdk/src/composable/Multiplexer.ts:15 + +___ + +### OwnerContext + +Ƭ **OwnerContext**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | +| `owner` | `string` | +| `provider` | `providers.Provider` | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:85 + +___ + +### PartialApiContext + +Ƭ **PartialApiContext**: `Partial`<[`ApiContext`](interfaces/ApiContext.md)\> + +Override some properties of the [ApiContext](interfaces/ApiContext.md). + +#### Defined in + +external/cow-sdk/src/common/configs.ts:40 + +___ + +### PayloadLocationEmitted + +Ƭ **PayloadLocationEmitted**: `Object` + +Payload for emitting a merkle root to a ComposableCoW-enabled Safe. + +If setting `ProofLocation.EMITTED`, this type should be used as the `data` in the `Proof` struct. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `proofs` | [`ProofWithParams`](modules.md#proofwithparams)[] | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:70 + +___ + +### PollParams + +Ƭ **PollParams**: [`OwnerContext`](modules.md#ownercontext) & \{ `blockInfo?`: [`BlockInfo`](modules.md#blockinfo) ; `offchainInput?`: `string` ; `orderBookApi`: [`OrderBookApi`](classes/OrderBookApi.md) ; `proof?`: `string`[] } + +#### Defined in + +external/cow-sdk/src/composable/types.ts:91 + +___ + +### PollResult + +Ƭ **PollResult**: [`PollResultSuccess`](interfaces/PollResultSuccess.md) \| [`PollResultErrors`](modules.md#pollresulterrors) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:107 + +___ + +### PollResultErrors + +Ƭ **PollResultErrors**: [`PollResultTryNextBlock`](interfaces/PollResultTryNextBlock.md) \| [`PollResultTryOnBlock`](interfaces/PollResultTryOnBlock.md) \| [`PollResultTryAtEpoch`](interfaces/PollResultTryAtEpoch.md) \| [`PollResultUnexpectedError`](interfaces/PollResultUnexpectedError.md) \| [`PollResultDontTryAgain`](interfaces/PollResultDontTryAgain.md) + +#### Defined in + +external/cow-sdk/src/composable/types.ts:109 + +___ + +### PreSignature + +Ƭ **PreSignature**: `string` + +Empty signature bytes. Used for "presign" signatures. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PreSignature.ts:8 + +___ + +### PriceEstimationError + +Ƭ **PriceEstimationError**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `description` | `string` | +| `errorType` | [`errorType`](enums/PriceEstimationError.errorType.md) | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:5 + +external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts:10 + +___ + +### PriceImprovement + +Ƭ **PriceImprovement**: `Object` + +The protocol fee is taken as a percent of the order price improvement which is a difference between the executed price and the best quote. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `factor` | `number` | - | +| `maxVolumeFactor` | `number` | - | +| `quote` | [`Quote`](modules.md#quote) | The best quote received. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/PriceImprovement.ts:10 + +___ + +### PrivateKey + +Ƭ **PrivateKey**: `string` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:17 + +___ + +### ProofStruct + +Ƭ **ProofStruct**: `Object` + +A struct for a proof that can be used with `setRoot` and `setRootWithContext` on a +ComposableCoW-enabled Safe. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `data` | `string` \| ``"0x"`` | +| `location` | [`ProofLocation`](enums/ProofLocation.md) | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:58 + +___ + +### ProofWithParams + +Ƭ **ProofWithParams**: `Object` + +A proof for a conditional order and it's parameters. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `params` | [`ConditionalOrderParams`](modules.md#conditionalorderparams) | +| `proof` | `string`[] | + +#### Defined in + +external/cow-sdk/src/composable/types.ts:78 + +___ + +### Quote + +Ƭ **Quote**: `Object` + +A calculated order quote. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `buyAmount?` | [`TokenAmount`](modules.md#tokenamount) | The amount of the buy token. | +| `fee?` | [`TokenAmount`](modules.md#tokenamount) | The amount that needs to be paid, denominated in the sell token. | +| `sellAmount?` | [`TokenAmount`](modules.md#tokenamount) | The amount of the sell token. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Quote.ts:11 + +___ + +### QuoterParameters + +Ƭ **QuoterParameters**: `Omit`<[`TraderParameters`](interfaces/TraderParameters.md), ``"signer"``\> & \{ `account`: [`AccountAddress`](modules.md#accountaddress) } + +#### Defined in + +external/cow-sdk/src/trading/types.ts:83 + +___ + +### Signature + +Ƭ **Signature**: [`EcdsaSignature`](modules.md#ecdsasignature) \| [`PreSignature`](modules.md#presignature) + +A signature. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Signature.ts:11 + +___ + +### SigningResult + +Ƭ **SigningResult**: `Object` + +Encoded signature including signing scheme for the order. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `signature` | `string` | +| `signingScheme` | [`EcdsaSigningScheme`](enums/EcdsaSigningScheme.md) | + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:13 + +___ + +### SolverCompetitionResponse + +Ƭ **SolverCompetitionResponse**: `Object` + +The settlements submitted by every solver for a specific auction. +The `auctionId` corresponds to the id external solvers are provided +with. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `auction?` | [`CompetitionAuction`](modules.md#competitionauction) | - | +| `auctionId?` | `number` | The ID of the auction the competition info is for. | +| `competitionSimulationBlock?` | `number` | - | +| `gasPrice?` | `number` | Gas price used for ranking solutions. | +| `liquidityCollectedBlock?` | `number` | - | +| `solutions?` | [`SolverSettlement`](modules.md#solversettlement)[] | Maps from solver name to object describing that solver's settlement. | +| `transactionHash?` | [`TransactionHash`](modules.md#transactionhash) \| ``null`` | The hash of the transaction that the winning solution of this info was submitted in. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts:15 + +___ + +### SolverSettlement + +Ƭ **SolverSettlement**: `Object` + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `clearingPrices?` | `Record`<`string`, [`BigUint`](modules.md#biguint)\> | The prices of tokens for settled user orders as passed to the settlement contract. | +| `isWinner?` | `boolean` | whether the solution is a winner (received the right to get executed) or not | +| `objective?` | \{ `cost?`: `number` ; `fees?`: `number` ; `gas?`: `number` ; `surplus?`: `number` ; `total?`: `number` } | - | +| `objective.cost?` | `number` | - | +| `objective.fees?` | `number` | - | +| `objective.gas?` | `number` | - | +| `objective.surplus?` | `number` | - | +| `objective.total?` | `number` | The total objective value used for ranking solutions. | +| `orders?` | \{ `executedAmount?`: [`BigUint`](modules.md#biguint) ; `id?`: [`UID`](modules.md#uid) }[] | Touched orders. | +| `score?` | [`BigUint`](modules.md#biguint) \| ``null`` | The score of the current auction as defined in [CIP-20](https://snapshot.org/#/cow.eth/proposal/0x2d3f9bd1ea72dca84b03e97dda3efc1f4a42a772c54bd2037e8b62e7d09a491f). It is `null` for old auctions. | +| `solver?` | `string` | Name of the solver. | +| `solverAddress?` | `string` | The address used by the solver to execute the settlement on-chain. This field is missing for old settlements, the zero address has been used instead. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/SolverSettlement.ts:8 + +___ + +### StartTime + +Ƭ **StartTime**: \{ `startType`: [`AT_MINING_TIME`](enums/StartTimeValue.md#at_mining_time) } \| \{ `epoch`: `BigNumber` ; `startType`: [`AT_EPOCH`](enums/StartTimeValue.md#at_epoch) } + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:147 + +___ + +### Surplus + +Ƭ **Surplus**: `Object` + +The protocol fee is taken as a percent of the surplus. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `factor` | `number` | +| `maxVolumeFactor` | `number` | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Surplus.ts:8 + +___ + +### TokenAmount + +Ƭ **TokenAmount**: `string` + +Amount of a token. `uint256` encoded in decimal. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/TokenAmount.ts:8 + +___ + +### TotalSurplus + +Ƭ **TotalSurplus**: `Object` + +The total surplus. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `totalSurplus?` | `string` | The total surplus. | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/TotalSurplus.ts:9 + +___ + +### Trade + +Ƭ **Trade**: `Object` + +Trade data such as executed amounts, fees, `orderUid` and `block` number. + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `blockNumber` | `number` | Block in which trade occurred. | +| `buyAmount` | [`TokenAmount`](modules.md#tokenamount) | Total amount of `buyToken` received in this trade. | +| `buyToken` | [`Address`](modules.md#address) | Address of token bought. | +| `executedProtocolFees?` | [`ExecutedProtocolFee`](modules.md#executedprotocolfee)[] | Executed protocol fees for this trade, together with the fee policies used. Listed in the order they got applied. | +| `logIndex` | `number` | Index in which transaction was included in block. | +| `orderUid` | [`UID`](modules.md#uid) | UID of the order matched by this trade. | +| `owner` | [`Address`](modules.md#address) | Address of trader. | +| `sellAmount` | [`TokenAmount`](modules.md#tokenamount) | Total amount of `sellToken` that has been executed for this trade (including fees). | +| `sellAmountBeforeFees` | [`BigUint`](modules.md#biguint) | The total amount of `sellToken` that has been executed for this order without fees. | +| `sellToken` | [`Address`](modules.md#address) | Address of token sold. | +| `txHash` | [`TransactionHash`](modules.md#transactionhash) \| ``null`` | Transaction hash of the corresponding settlement transaction containing the trade (if available). | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Trade.ts:16 + +___ + +### TransactionHash + +Ƭ **TransactionHash**: `string` + +32 byte digest encoded as a hex with `0x` prefix. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/TransactionHash.ts:8 + +___ + +### TwapDataBase + +Ƭ **TwapDataBase**: `Object` + +Base parameters for a TWAP order. Shared by: + - TwapStruct (modelling the contract's struct used for `staticInput`). + - TwapData (modelling the friendly SDK interface). + +#### Type declaration + +| Name | Type | Description | +| :------ | :------ | :------ | +| `appData` | `string` | Meta-data associated with the order. Normally would be the keccak256 hash of the document generated in http://github.com/cowprotocol/app-data This hash should have been uploaded to the API https://api.cow.fi/docs/#/default/put_api_v1_app_data__app_data_hash_ and potentially to other data availability protocols like IPFS. | +| `buyToken` | `string` | which token to buy | +| `receiver` | `string` | who to send the tokens to | +| `sellToken` | `string` | which token to sell | + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:41 + +___ + +### UID + +Ƭ **UID**: `string` + +Unique identifier for the order: 56 bytes encoded as hex with `0x` +prefix. + +Bytes 0..32 are the order digest, bytes 30..52 the owner address and +bytes 52..56 the expiry (`validTo`) as a `uint32` unix epoch timestamp. + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/UID.ts:12 + +___ + +### UnsignedOrder + +Ƭ **UnsignedOrder**: `Omit`<[`OrderParameters`](modules.md#orderparameters), ``"receiver"``\> & \{ `receiver`: `string` } + +Unsigned order intent to be placed. + +#### Defined in + +external/cow-sdk/src/order-signing/types.ts:8 + +___ + +### Volume + +Ƭ **Volume**: `Object` + +The protocol fee is taken as a percent of the order volume. + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `factor` | `number` | + +#### Defined in + +external/cow-sdk/src/order-book/generated/models/Volume.ts:8 + +## Variables + +### ALL\_SUPPORTED\_CHAIN\_IDS + +• `Const` **ALL\_SUPPORTED\_CHAIN\_IDS**: [`SupportedChainId`](enums/SupportedChainId.md)[] + +The list of supported chains. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:16 + +___ + +### BARN\_ETH\_FLOW\_ADDRESSES + +• `Const` **BARN\_ETH\_FLOW\_ADDRESSES**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +#### Defined in + +external/cow-sdk/src/common/consts.ts:78 + +___ + +### COMPOSABLE\_COW + +• `Const` **COMPOSABLE\_COW**: ``"0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74"`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:5 + +___ + +### COMPOSABLE\_COW\_CONTRACT\_ADDRESS + +• `Const` **COMPOSABLE\_COW\_CONTRACT\_ADDRESS**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of the `ComposableCow` contracts for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:54 + +___ + +### CONDITIONAL\_ORDER\_PARAMS\_ABI + +• `Const` **CONDITIONAL\_ORDER\_PARAMS\_ABI**: `string`[] + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:19 + +___ + +### COW\_PROTOCOL\_SETTLEMENT\_CONTRACT\_ADDRESS + +• `Const` **COW\_PROTOCOL\_SETTLEMENT\_CONTRACT\_ADDRESS**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of the CoW Protocol settlement contracts for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:39 + +___ + +### COW\_PROTOCOL\_VAULT\_RELAYER\_ADDRESS + +• `Const` **COW\_PROTOCOL\_VAULT\_RELAYER\_ADDRESS**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of the CoW Protocol Vault realyer contracts for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:44 + +___ + +### COW\_SHED\_712\_TYPES + +• `Const` **COW\_SHED\_712\_TYPES**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `Call` | \{ `name`: `string` = 'target'; `type`: `string` = 'address' }[] | +| `ExecuteHooks` | \{ `name`: `string` = 'calls'; `type`: `string` = 'Call[]' }[] | + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:30 + +___ + +### COW\_SHED\_FACTORY + +• `Const` **COW\_SHED\_FACTORY**: ``"0x00E989b87700514118Fa55326CD1cCE82faebEF6"`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:7 + +___ + +### COW\_SHED\_IMPLEMENTATION + +• `Const` **COW\_SHED\_IMPLEMENTATION**: ``"0x2CFFA8cf11B90C9F437567b86352169dF4009F73"`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:8 + +___ + +### COW\_SHED\_PROXY\_INIT\_CODE + +• `Const` **COW\_SHED\_PROXY\_INIT\_CODE**: ``"0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033"`` + +#### Defined in + +external/cow-sdk/src/cow-shed/proxyInitCode.ts:1 + +___ + +### CURRENT\_BLOCK\_TIMESTAMP\_FACTORY\_ADDRESS + +• `Const` **CURRENT\_BLOCK\_TIMESTAMP\_FACTORY\_ADDRESS**: ``"0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc"`` + +The address of the `CurrentBlockTimestampFactory` contract + +**NOTE**: This is used in the event that TWAP's have a `t0` of `0`. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:26 + +___ + +### DEFAULT\_BACKOFF\_OPTIONS + +• `Const` **DEFAULT\_BACKOFF\_OPTIONS**: `BackoffOptions` + +The default backoff options for CoW Protocol's API + +**`See`** + +Backoff configuration: https://www.npmjs.com/package/@insertish/exponential-backoff + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:41 + +___ + +### DEFAULT\_CONDITIONAL\_ORDER\_REGISTRY + +• `Const` **DEFAULT\_CONDITIONAL\_ORDER\_REGISTRY**: [`ConditionalOrderRegistry`](modules.md#conditionalorderregistry) + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/index.ts:5 + +___ + +### DEFAULT\_COW\_API\_CONTEXT + +• `Const` **DEFAULT\_COW\_API\_CONTEXT**: [`ApiContext`](interfaces/ApiContext.md) + +The default CoW Protocol API context. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:86 + +___ + +### DEFAULT\_IPFS\_READ\_URI + +• `Const` **DEFAULT\_IPFS\_READ\_URI**: ``"https://gnosis.mypinata.cloud/ipfs"`` + +#### Defined in + +external/cow-sdk/src/common/ipfs.ts:1 + +___ + +### DEFAULT\_IPFS\_WRITE\_URI + +• `Const` **DEFAULT\_IPFS\_WRITE\_URI**: ``"https://api.pinata.cloud"`` + +#### Defined in + +external/cow-sdk/src/common/ipfs.ts:2 + +___ + +### DEFAULT\_LIMITER\_OPTIONS + +• `Const` **DEFAULT\_LIMITER\_OPTIONS**: `RateLimiterOpts` + +The default rate limiter options for CoW Protocol's API. + +**CAUTION**: The CoW Protocol OrderBook API is limited to 5 requests per second per IP. + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:59 + +___ + +### DOMAIN\_TYPE + +• `Const` **DOMAIN\_TYPE**: `Object` + +#### Type declaration + +| Name | Type | +| :------ | :------ | +| `EIP712Domain` | \{ `name`: `string` = 'name'; `type`: `string` = 'string' }[] | + +#### Defined in + +external/cow-sdk/src/cow-shed/types.ts:21 + +___ + +### ENVS\_LIST + +• `Const` **ENVS\_LIST**: [`CowEnv`](modules.md#cowenv)[] + +The list of available environments. + +#### Defined in + +external/cow-sdk/src/common/configs.ts:81 + +___ + +### ETH\_ADDRESS + +• `Const` **ETH\_ADDRESS**: ``"0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:3 + +___ + +### ETH\_FLOW\_ADDRESSES + +• `Const` **ETH\_FLOW\_ADDRESSES**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of ETH flow contracts for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:70 + +___ + +### EXTENSIBLE\_FALLBACK\_HANDLER + +• `Const` **EXTENSIBLE\_FALLBACK\_HANDLER**: ``"0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5"`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:4 + +___ + +### EXTENSIBLE\_FALLBACK\_HANDLER\_CONTRACT\_ADDRESS + +• `Const` **EXTENSIBLE\_FALLBACK\_HANDLER\_CONTRACT\_ADDRESS**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of the `ExtensibleFallbackHandler` contracts for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:49 + +___ + +### MAX\_FREQUENCY + +• `Const` **MAX\_FREQUENCY**: `BigNumber` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:29 + +___ + +### MAX\_UINT32 + +• `Const` **MAX\_UINT32**: `BigNumber` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:28 + +___ + +### MAX\_VALID\_TO\_EPOCH + +• `Const` **MAX\_VALID\_TO\_EPOCH**: ``4294967295`` + +#### Defined in + +external/cow-sdk/src/common/consts.ts:86 + +___ + +### ORDER\_BOOK\_PROD\_CONFIG + +• `Const` **ORDER\_BOOK\_PROD\_CONFIG**: [`ApiBaseUrls`](modules.md#apibaseurls) + +An object containing *production* environment base URLs for each supported `chainId`. + +**`See`** + +[https://api.cow.fi/docs/#/](https://api.cow.fi/docs/#/) + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:38 + +___ + +### ORDER\_BOOK\_STAGING\_CONFIG + +• `Const` **ORDER\_BOOK\_STAGING\_CONFIG**: [`ApiBaseUrls`](modules.md#apibaseurls) + +An object containing *staging* environment base URLs for each supported `chainId`. + +#### Defined in + +external/cow-sdk/src/order-book/api.ts:49 + +___ + +### ORDER\_PRIMARY\_TYPE + +• `Const` **ORDER\_PRIMARY\_TYPE**: ``"Order"`` + +#### Defined in + +external/cow-sdk/src/trading/types.ts:20 + +___ + +### SUBGRAPH\_PROD\_CONFIG + +• `Const` **SUBGRAPH\_PROD\_CONFIG**: `SubgraphApiBaseUrls` + +CoW Protocol Production Subgraph API configuration. + +**`See`** + + - [https://api.thegraph.com/subgraphs/name/cowprotocol/cow](https://api.thegraph.com/subgraphs/name/cowprotocol/cow) + - [https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc](https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc) + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:24 + +___ + +### SUBGRAPH\_STAGING\_CONFIG + +• `Const` **SUBGRAPH\_STAGING\_CONFIG**: `SubgraphApiBaseUrls` + +CoW Protocol Staging Subgraph API configuration. + +**`Deprecated`** + +**`See`** + + - [https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging](https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging) + - [https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging](https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging) + +#### Defined in + +external/cow-sdk/src/subgraph/api.ts:38 + +___ + +### TWAP\_ADDRESS + +• `Const` **TWAP\_ADDRESS**: ``"0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5"`` + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:20 + +___ + +### WRAPPED\_NATIVE\_CURRENCIES + +• `Const` **WRAPPED\_NATIVE\_CURRENCIES**: `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +An object containing the addresses of wrapped native currencies for each supported chain. + +#### Defined in + +external/cow-sdk/src/common/consts.ts:59 + +___ + +### logPrefix + +• `Const` **logPrefix**: ``"cow-sdk:"`` + +#### Defined in + +external/cow-sdk/src/common/cow-error.ts:10 + +## Functions + +### DEFAULT\_TOKEN\_FORMATTER + +▸ **DEFAULT_TOKEN_FORMATTER**(`address`, `amount`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `address` | `string` | +| `amount` | `BigNumber` | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:21 + +___ + +### buildAppData + +▸ **buildAppData**(`«destructured»`, `advancedParams?`): `Promise`<[`AppDataInfo`](interfaces/AppDataInfo.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `«destructured»` | [`BuildAppDataParams`](interfaces/BuildAppDataParams.md) | +| `advancedParams?` | `Partial`<`Omit`<`AppDataRootSchema`, ``"version"``\>\> | + +#### Returns + +`Promise`<[`AppDataInfo`](interfaces/AppDataInfo.md)\> + +#### Defined in + +external/cow-sdk/src/trading/appDataUtils.ts:5 + +___ + +### calculateUniqueOrderId + +▸ **calculateUniqueOrderId**(`chainId`, `order`, `checkEthFlowOrderExists?`, `env?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | +| `order` | [`UnsignedOrder`](modules.md#unsignedorder) | +| `checkEthFlowOrderExists?` | [`EthFlowOrderExistsCallback`](interfaces/EthFlowOrderExistsCallback.md) | +| `env?` | [`CowEnv`](modules.md#cowenv) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/calculateUniqueOrderId.ts:16 + +___ + +### createSetDomainVerifierTx + +▸ **createSetDomainVerifierTx**(`domain`, `verifier`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `domain` | `string` | +| `verifier` | `string` | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:44 + +___ + +### decodeParams + +▸ **decodeParams**(`encoded`): [`ConditionalOrderParams`](modules.md#conditionalorderparams) + +Decode the `ConditionalOrderParams` for the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `encoded` | `string` | The encoded conditional order. | + +#### Returns + +[`ConditionalOrderParams`](modules.md#conditionalorderparams) + +The decoded conditional order. + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:68 + +___ + +### encodeParams + +▸ **encodeParams**(`params`): `string` + +Encode the `ConditionalOrderParams` for the conditional order. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `params` | [`ConditionalOrderParams`](modules.md#conditionalorderparams) | The `ConditionalOrderParams` struct representing the conditional order as taken from a merkle tree. | + +#### Returns + +`string` + +The ABI-encoded conditional order. + +**`See`** + +ConditionalOrderParams + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:58 + +___ + +### formatEpoch + +▸ **formatEpoch**(`epoch`): `string` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `epoch` | `number` | + +#### Returns + +`string` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:97 + +___ + +### fromStructToOrder + +▸ **fromStructToOrder**(`order`): `Order` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `order` | `DataStruct` | + +#### Returns + +`Order` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:135 + +___ + +### generateAppDataFromDoc + +▸ **generateAppDataFromDoc**(`doc`): `Promise`<`Pick`<[`AppDataInfo`](interfaces/AppDataInfo.md), ``"fullAppData"`` \| ``"appDataKeccak256"``\>\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `doc` | `AppDataRootSchema` | + +#### Returns + +`Promise`<`Pick`<[`AppDataInfo`](interfaces/AppDataInfo.md), ``"fullAppData"`` \| ``"appDataKeccak256"``\>\> + +#### Defined in + +external/cow-sdk/src/trading/appDataUtils.ts:28 + +___ + +### getBlockInfo + +▸ **getBlockInfo**(`provider`): `Promise`<[`BlockInfo`](modules.md#blockinfo)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `provider` | `Provider` | + +#### Returns + +`Promise`<[`BlockInfo`](modules.md#blockinfo)\> + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:88 + +___ + +### getCoWShedFactoryInterface + +▸ **getCoWShedFactoryInterface**(): `CoWShedFactoryInterface` + +#### Returns + +`CoWShedFactoryInterface` + +#### Defined in + +external/cow-sdk/src/cow-shed/contracts.ts:16 + +___ + +### getCoWShedInterface + +▸ **getCoWShedInterface**(): `CoWShedInterface` + +#### Returns + +`CoWShedInterface` + +#### Defined in + +external/cow-sdk/src/cow-shed/contracts.ts:8 + +___ + +### getDomainVerifier + +▸ **getDomainVerifier**(`safe`, `domain`, `chainId`, `provider`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `safe` | `string` | +| `domain` | `string` | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | +| `provider` | `Provider` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:31 + +___ + +### getEthFlowTransaction + +▸ **getEthFlowTransaction**(`signer`, `appDataKeccak256`, `_params`, `networkCostsAmount?`, `checkEthFlowOrderExists?`): `Promise`<\{ `orderId`: `string` ; `transaction`: [`TransactionParams`](interfaces/TransactionParams.md) }\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `signer` | `Signer` | `undefined` | +| `appDataKeccak256` | `string` | `undefined` | +| `_params` | [`LimitTradeParametersFromQuote`](interfaces/LimitTradeParametersFromQuote.md) | `undefined` | +| `networkCostsAmount` | `string` | `'0'` | +| `checkEthFlowOrderExists?` | [`EthFlowOrderExistsCallback`](interfaces/EthFlowOrderExistsCallback.md) | `undefined` | + +#### Returns + +`Promise`<\{ `orderId`: `string` ; `transaction`: [`TransactionParams`](interfaces/TransactionParams.md) }\> + +#### Defined in + +external/cow-sdk/src/trading/getEthFlowTransaction.ts:17 + +___ + +### getOrderToSign + +▸ **getOrderToSign**(`«destructured»`, `limitOrderParams`, `appDataKeccak256`): [`UnsignedOrder`](modules.md#unsignedorder) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `«destructured»` | `OrderToSignParams` | +| `limitOrderParams` | [`LimitTradeParameters`](interfaces/LimitTradeParameters.md) | +| `appDataKeccak256` | `string` | + +#### Returns + +[`UnsignedOrder`](modules.md#unsignedorder) + +#### Defined in + +external/cow-sdk/src/trading/getOrderToSign.ts:11 + +___ + +### getPreSignTransaction + +▸ **getPreSignTransaction**(`signer`, `chainId`, `account`, `orderId`): `Promise`<[`TransactionParams`](interfaces/TransactionParams.md)\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `signer` | `Signer` | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | +| `account` | `string` | +| `orderId` | `string` | + +#### Returns + +`Promise`<[`TransactionParams`](interfaces/TransactionParams.md)\> + +#### Defined in + +external/cow-sdk/src/trading/getPreSignTransaction.ts:9 + +___ + +### getQuote + +▸ **getQuote**(`_tradeParameters`, `trader`, `advancedSettings?`, `_orderBookApi?`): `Promise`<\{ `orderBookApi`: [`OrderBookApi`](classes/OrderBookApi.md) ; `result`: [`QuoteResults`](interfaces/QuoteResults.md) }\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `_tradeParameters` | [`TradeParameters`](interfaces/TradeParameters.md) | +| `trader` | [`QuoterParameters`](modules.md#quoterparameters) | +| `advancedSettings?` | [`SwapAdvancedSettings`](interfaces/SwapAdvancedSettings.md) | +| `_orderBookApi?` | [`OrderBookApi`](classes/OrderBookApi.md) | + +#### Returns + +`Promise`<\{ `orderBookApi`: [`OrderBookApi`](classes/OrderBookApi.md) ; `result`: [`QuoteResults`](interfaces/QuoteResults.md) }\> + +#### Defined in + +external/cow-sdk/src/trading/getQuote.ts:39 + +___ + +### getQuoteAmountsAndCosts + +▸ **getQuoteAmountsAndCosts**(`params`): [`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | `Params` | + +#### Returns + +[`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md) + +#### Defined in + +external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts:14 + +___ + +### getQuoteWithSigner + +▸ **getQuoteWithSigner**(`swapParameters`, `advancedSettings?`, `orderBookApi?`): `Promise`<`QuoteResultsWithSigner`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `swapParameters` | [`SwapParameters`](interfaces/SwapParameters.md) | +| `advancedSettings?` | [`SwapAdvancedSettings`](interfaces/SwapAdvancedSettings.md) | +| `orderBookApi?` | [`OrderBookApi`](classes/OrderBookApi.md) | + +#### Returns + +`Promise`<`QuoteResultsWithSigner`\> + +#### Defined in + +external/cow-sdk/src/trading/getQuote.ts:139 + +___ + +### isComposableCow + +▸ **isComposableCow**(`handler`, `chainId`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `handler` | `string` | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | + +#### Returns + +`boolean` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:27 + +___ + +### isExtensibleFallbackHandler + +▸ **isExtensibleFallbackHandler**(`handler`, `chainId`): `boolean` + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `handler` | `string` | +| `chainId` | [`SupportedChainId`](enums/SupportedChainId.md) | + +#### Returns + +`boolean` + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:23 + +___ + +### isValidAbi + +▸ **isValidAbi**(`types`, `values`): `boolean` + +Helper method for validating ABI types. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `types` | readonly (`string` \| `ParamType`)[] | ABI types to validate against. | +| `values` | `any`[] | The values to validate. | + +#### Returns + +`boolean` + +Whether the values are valid ABI for the given types. + +#### Defined in + +external/cow-sdk/src/composable/utils.ts:79 + +___ + +### mapAddressToSupportedNetworks + +▸ **mapAddressToSupportedNetworks**(`address`): `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `address` | `string` | + +#### Returns + +`Record`<[`SupportedChainId`](enums/SupportedChainId.md), `string`\> + +#### Defined in + +external/cow-sdk/src/common/consts.ts:32 + +___ + +### mapQuoteAmountsAndCosts + +▸ **mapQuoteAmountsAndCosts**<`T`, `R`\>(`value`, `mapper`): [`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md)<`R`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | +| `R` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | [`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md)<`T`, \{ `buyAmount`: `T` ; `sellAmount`: `T` }\> | +| `mapper` | (`value`: `T`) => `R` | + +#### Returns + +[`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md)<`R`\> + +#### Defined in + +external/cow-sdk/src/trading/utils.ts:44 + +___ + +### mapSupportedNetworks + +▸ **mapSupportedNetworks**<`T`\>(`value`): `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `T`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | (`chainId`: [`SupportedChainId`](enums/SupportedChainId.md)) => `T` | + +#### Returns + +`Record`<[`SupportedChainId`](enums/SupportedChainId.md), `T`\> + +#### Defined in + +external/cow-sdk/src/common/consts.ts:20 + +▸ **mapSupportedNetworks**<`T`\>(`value`): `Record`<[`SupportedChainId`](enums/SupportedChainId.md), `T`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `T` | + +#### Returns + +`Record`<[`SupportedChainId`](enums/SupportedChainId.md), `T`\> + +#### Defined in + +external/cow-sdk/src/common/consts.ts:21 + +___ + +### postCoWProtocolTrade + +▸ **postCoWProtocolTrade**(`orderBookApi`, `signer`, `appData`, `params`, `networkCostsAmount?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `orderBookApi` | [`OrderBookApi`](classes/OrderBookApi.md) | `undefined` | +| `signer` | `Signer` | `undefined` | +| `appData` | [`AppDataInfo`](interfaces/AppDataInfo.md) | `undefined` | +| `params` | [`LimitTradeParameters`](interfaces/LimitTradeParameters.md) | `undefined` | +| `networkCostsAmount` | `string` | `'0'` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/postCoWProtocolTrade.ts:10 + +___ + +### postLimitOrder + +▸ **postLimitOrder**(`params`, `advancedSettings?`, `_orderBookApi?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`LimitOrderParameters`](interfaces/LimitOrderParameters.md) | +| `advancedSettings?` | [`LimitOrderAdvancedSettings`](interfaces/LimitOrderAdvancedSettings.md) | +| `_orderBookApi?` | [`OrderBookApi`](classes/OrderBookApi.md) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/postLimitOrder.ts:8 + +___ + +### postSellNativeCurrencyOrder + +▸ **postSellNativeCurrencyOrder**(`orderBookApi`, `signer`, `appData`, `_params`, `networkCostsAmount?`, `checkEthFlowOrderExists?`): `Promise`<\{ `orderId`: `string` ; `txHash`: `string` }\> + +#### Parameters + +| Name | Type | Default value | +| :------ | :------ | :------ | +| `orderBookApi` | [`OrderBookApi`](classes/OrderBookApi.md) | `undefined` | +| `signer` | `Signer` | `undefined` | +| `appData` | `Pick`<[`AppDataInfo`](interfaces/AppDataInfo.md), ``"fullAppData"`` \| ``"appDataKeccak256"``\> | `undefined` | +| `_params` | [`LimitTradeParametersFromQuote`](interfaces/LimitTradeParametersFromQuote.md) | `undefined` | +| `networkCostsAmount` | `string` | `'0'` | +| `checkEthFlowOrderExists?` | [`EthFlowOrderExistsCallback`](interfaces/EthFlowOrderExistsCallback.md) | `undefined` | + +#### Returns + +`Promise`<\{ `orderId`: `string` ; `txHash`: `string` }\> + +#### Defined in + +external/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts:9 + +___ + +### postSwapOrder + +▸ **postSwapOrder**(`params`, `advancedSettings?`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`SwapParameters`](interfaces/SwapParameters.md) | +| `advancedSettings?` | [`SwapAdvancedSettings`](interfaces/SwapAdvancedSettings.md) | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/postSwapOrder.ts:7 + +___ + +### postSwapOrderFromQuote + +▸ **postSwapOrderFromQuote**(`«destructured»`): `Promise`<`string`\> + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `«destructured»` | `QuoteResultsWithSigner` | + +#### Returns + +`Promise`<`string`\> + +#### Defined in + +external/cow-sdk/src/trading/postSwapOrder.ts:11 + +___ + +### request + +▸ **request**<`T`\>(`baseUrl`, `«destructured»`, `rateLimiter`, `backoffOpts`): `Promise`<`T`\> + +Helper function to make a rate-limited request to an API. + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `baseUrl` | `string` | The base URL of the API. | +| `«destructured»` | [`FetchParams`](interfaces/FetchParams.md) | - | +| `rateLimiter` | `RateLimiter` | The rate limiter to use. | +| `backoffOpts` | `Partial`<`IBackOffOptions`\> | The backoff options to use. | + +#### Returns + +`Promise`<`T`\> + +The response of the request. + +**`Throws`** + +If the API returns an error or if the request fails. + +#### Defined in + +external/cow-sdk/src/order-book/request.ts:104 + +___ + +### swapParamsToLimitOrderParams + +▸ **swapParamsToLimitOrderParams**(`params`, `quoteId`, `amounts`): [`LimitTradeParametersFromQuote`](interfaces/LimitTradeParametersFromQuote.md) + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `params` | [`TradeParameters`](interfaces/TradeParameters.md) | +| `quoteId` | `number` | +| `amounts` | [`QuoteAmountsAndCosts`](interfaces/QuoteAmountsAndCosts.md)<`bigint`, \{ `buyAmount`: `bigint` ; `sellAmount`: `bigint` }\> | + +#### Returns + +[`LimitTradeParametersFromQuote`](interfaces/LimitTradeParametersFromQuote.md) + +#### Defined in + +external/cow-sdk/src/trading/utils.ts:7 + +___ + +### transformDataToStruct + +▸ **transformDataToStruct**(`data`): [`TwapStruct`](interfaces/TwapStruct.md) + +Transform parameters into a native struct. + +#### Parameters + +| Name | Type | Description | +| :------ | :------ | :------ | +| `data` | [`TwapData`](interfaces/TwapData.md) | As passed by the consumer of the API. | + +#### Returns + +[`TwapStruct`](interfaces/TwapStruct.md) + +A formatted struct as expected by the smart contract. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:538 + +___ + +### transformStructToData + +▸ **transformStructToData**(`struct`): [`TwapData`](interfaces/TwapData.md) + +Transform parameters into a TWAP order struct. + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `struct` | [`TwapStruct`](interfaces/TwapStruct.md) | + +#### Returns + +[`TwapData`](interfaces/TwapData.md) + +A formatted struct as expected by the smart contract. + +#### Defined in + +external/cow-sdk/src/composable/orderTypes/Twap.ts:580 diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/CompetitionOrderStatus.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/CompetitionOrderStatus.md new file mode 100644 index 000000000..6549ef82d --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/CompetitionOrderStatus.md @@ -0,0 +1,11 @@ +--- +id: "CompetitionOrderStatus" +title: "Namespace: CompetitionOrderStatus" +sidebar_label: "CompetitionOrderStatus" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [type](../enums/CompetitionOrderStatus.type.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/OnchainOrderData.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/OnchainOrderData.md new file mode 100644 index 000000000..b4d6aeded --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/OnchainOrderData.md @@ -0,0 +1,11 @@ +--- +id: "OnchainOrderData" +title: "Namespace: OnchainOrderData" +sidebar_label: "OnchainOrderData" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [placementError](../enums/OnchainOrderData.placementError.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderCancellationError.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderCancellationError.md new file mode 100644 index 000000000..3c85f477e --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderCancellationError.md @@ -0,0 +1,11 @@ +--- +id: "OrderCancellationError" +title: "Namespace: OrderCancellationError" +sidebar_label: "OrderCancellationError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [errorType](../enums/OrderCancellationError.errorType.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderPostError.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderPostError.md new file mode 100644 index 000000000..e54136e14 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/OrderPostError.md @@ -0,0 +1,11 @@ +--- +id: "OrderPostError" +title: "Namespace: OrderPostError" +sidebar_label: "OrderPostError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [errorType](../enums/OrderPostError.errorType.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/PriceEstimationError.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/PriceEstimationError.md new file mode 100644 index 000000000..96a803d4a --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/PriceEstimationError.md @@ -0,0 +1,11 @@ +--- +id: "PriceEstimationError" +title: "Namespace: PriceEstimationError" +sidebar_label: "PriceEstimationError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [errorType](../enums/PriceEstimationError.errorType.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/ReplaceOrderError.md b/docs/cow-protocol/sdks/cow-sdk/namespaces/ReplaceOrderError.md new file mode 100644 index 000000000..83ce4bb84 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/ReplaceOrderError.md @@ -0,0 +1,11 @@ +--- +id: "ReplaceOrderError" +title: "Namespace: ReplaceOrderError" +sidebar_label: "ReplaceOrderError" +sidebar_position: 0 +custom_edit_url: null +--- + +## Enumerations + +- [errorType](../enums/ReplaceOrderError.errorType.md) diff --git a/docs/cow-protocol/sdks/cow-sdk/namespaces/_category_.yml b/docs/cow-protocol/sdks/cow-sdk/namespaces/_category_.yml new file mode 100644 index 000000000..1833bbb58 --- /dev/null +++ b/docs/cow-protocol/sdks/cow-sdk/namespaces/_category_.yml @@ -0,0 +1,2 @@ +label: "Namespaces" +position: 1 \ No newline at end of file diff --git a/docs/cow-protocol/tutorials/arbitrate/autopilot.md b/docs/cow-protocol/tutorials/arbitrate/autopilot.md index 1aff6d331..f8c703275 100644 --- a/docs/cow-protocol/tutorials/arbitrate/autopilot.md +++ b/docs/cow-protocol/tutorials/arbitrate/autopilot.md @@ -85,14 +85,14 @@ The database stores the vast majority of available order information, including Other information can only be retrieved on-chain and is updated every time a new block is mined. For example, it needs to know from the protocol: -- Which [pre-signatures](/cow-protocol/reference/core/signing-schemes#presign) have been set -- If new [native token orders](/cow-protocol/reference/contracts/periphery/eth-flow) have been created -- Tracking which orders have been [invalidated](/cow-protocol/reference/contracts/core/settlement#invalidateorder) by the user +- Which [pre-signatures](/cow-protocol/reference/signing-schemes#presign) have been set +- If new [native token orders](/cow-protocol/contracts/periphery/eth-flow) have been created +- Tracking which orders have been [invalidated](/cow-protocol/contracts/core/settlement#invalidateorder) by the user - Detecting if a batch has been settled and it should prepare a new auction Retrieved information isn't limited to the CoW Protocol itself. The autopilot needs to provide a reference price for each token in an order (a numéraire); -the reference price is used to normalize the value of the [surplus](/cow-protocol/reference/core/auctions/the-problem), since the surplus must be comparable for all orders and two orders could use the most disparate `ERC-20` tokens. +the reference price is used to normalize the value of the [surplus](/cow-protocol/reference/auctions/the-problem), since the surplus must be comparable for all orders and two orders could use the most disparate `ERC-20` tokens. The reference token is usually the chain's native token, since it's the token used to pay for the gas needed when executing a transaction. Orders whose price can't be fetched are discarded and won't be included in an auction. @@ -106,7 +106,7 @@ Orders that can't be settled are filtered out. This is the case if, for example: * the approval to the vault relayer is missing * the involved tokens aren't supported by the protocol -The autopilot also checks that [`ERC-1271`](/cow-protocol/reference/core/signing-schemes#erc-1271) signatures are currently valid. +The autopilot also checks that [`ERC-1271`](/cow-protocol/reference/signing-schemes#erc-1271) signatures are currently valid. More in general, the autopilot aims to remove from the auction all orders that have no chance to be settled. Still, this doesn't mean that all orders that appear in the auction can be settled: orders whose ability to be settled is ambiguous or unclear are remitted to the solvers' own judgment. @@ -114,8 +114,8 @@ Still, this doesn't mean that all orders that appear in the auction can be settl ### Solver competition Once an auction is ready, the autopilot sends a `/solve` request to each solver. -Solvers have a short amount of time (seconds) to come up with a [solution](/cow-protocol/reference/core/auctions/the-problem#solution) and return its _score_ to the autopilot, which represents the quality of a solution. -The scoring process is described in detail in the [description of CoW Protocol's optimization problem](/cow-protocol/reference/core/auctions/the-problem). +Solvers have a short amount of time (seconds) to come up with a [solution](/cow-protocol/reference/auctions/the-problem#solution) and return its _score_ to the autopilot, which represents the quality of a solution. +The scoring process is described in detail in the [description of CoW Protocol's optimization problem](/cow-protocol/reference/auctions/the-problem). The autopilot selects the winner according to the highest score once the allotted time expires or all solvers have returned their batch proposal. Up to this point, the autopilot only knows the score. @@ -128,7 +128,7 @@ The data returned by the solver is stored by the autopilot in the database. Other auction data is recorded as well, for example surplus fee for limit orders and the score returned by each solver. It also records the result of executing the settlement on-chain in order to track the difference in score caused by negative or positive slippage. -This data will be used to compute the [solver payouts](/cow-protocol/reference/core/auctions/rewards). +This data will be used to compute the [solver payouts](/cow-protocol/reference/auctions/rewards). ## Considerations @@ -146,5 +146,5 @@ For this purpose, it's only responsible for documenting the proposed solution an Misbehavior is detected and accounted for when computing the solver payouts based on the data collected by the autopilot. The solver payouts are handled outside of the autopilot code. -In the same way, the autopilot doesn't verify that the [rules of the game](/cow-protocol/reference/core/auctions/competition-rules) have been upheld. +In the same way, the autopilot doesn't verify that the [rules of the game](/cow-protocol/reference/auctions/competition-rules) have been upheld. This is handled in the solver payout stage as well; in exceptional circumstances the DAO can decide to slash the amount the solver staked for vouching. diff --git a/docs/cow-protocol/tutorials/arbitrate/orderbook.md b/docs/cow-protocol/tutorials/arbitrate/orderbook.md index bf2352d96..02a26f016 100644 --- a/docs/cow-protocol/tutorials/arbitrate/orderbook.md +++ b/docs/cow-protocol/tutorials/arbitrate/orderbook.md @@ -6,7 +6,7 @@ sidebar_position: 1 The orderbook is the main API that traders, UIs and other integrations use to interact with CoW Protocol. -Its implementation can be found [here](https://github.com/cowprotocol/services/tree/main/crates/orderbook). The API is documented in detail [here](../../reference/apis/orderbook). +Its implementation can be found [here](https://github.com/cowprotocol/services/tree/main/crates/orderbook). The API is documented in detail [here](../../apis/orderbook). ## Overview @@ -103,8 +103,8 @@ Before an order is accepted in the database it is validated. Validation steps include - Asserting the order is well formed and all fields are properly encoded - The user has sufficient balance/allowance to place this order -- The [signature type](/cow-protocol/reference/core/signing-schemes) is supported and the signature is valid -- The pre-image for the order's [appData](/cow-protocol/reference/core/intents/app-data) hash is either provided in the request or publicly available on IPFS (to ensure any additional information about the order can be properly interpreted by the orderbook) +- The [signature type](/cow-protocol/reference/signing-schemes) is supported and the signature is valid +- The pre-image for the order's [appData](/cow-protocol/reference/intents/app-data) hash is either provided in the request or publicly available on IPFS (to ensure any additional information about the order can be properly interpreted by the orderbook) Each order is also associated with a quote for classification as either in or out of market price. This may have an effect on the fee policy used. For this either the trader provided `quoteId` is looked up or a fresh quote is created. @@ -113,7 +113,7 @@ For this either the trader provided `quoteId` is looked up or a fresh quote is c The orderbook synchronizes state with the autopilot via a shared database. It communicates with solvers to produce price estimates. -It uses IPFS to update and fetch [appData](/cow-protocol/reference/core/intents/app-data) documents. +It uses IPFS to update and fetch [appData](/cow-protocol/reference/intents/app-data) documents. It also depends on on-chain state for: - checking the trader has sufficient balance/approval to place the order - simulate smart contract signatures and hooks diff --git a/docs/cow-protocol/tutorials/arbitrate/solver/driver.md b/docs/cow-protocol/tutorials/arbitrate/solver/driver.md index 3d9aba264..3d47ff145 100644 --- a/docs/cow-protocol/tutorials/arbitrate/solver/driver.md +++ b/docs/cow-protocol/tutorials/arbitrate/solver/driver.md @@ -43,7 +43,7 @@ sequenceDiagram Splitting the driver from the solver engine is just a design decision to keep the barrier of entry for new solvers low. However, there is nothing preventing you from patching, forking or reimplementing the driver. -You can even merge the responsibilities of the driver and solver engine into one if you want to build the most optimal solver possible; the only hard requirement is that the component the autopilot interfaces with implements this [interface](/cow-protocol/reference/apis/driver). +You can even merge the responsibilities of the driver and solver engine into one if you want to build the most optimal solver possible; the only hard requirement is that the component the autopilot interfaces with implements this [interface](/cow-protocol/apis/driver). ## Methodology @@ -136,9 +136,9 @@ sequenceDiagram #### Flash Loans Encoding -If a solver decides to encode the transaction without the help of the reference driver, the solver must call the `IFlashLoanRouter` contract's [flashLoanAndSettle](../../../reference/contracts/periphery/flash-loans.md#flashloanandsettle) function instead of the settlement contract's [settle](../../../reference/contracts/core/settlement.md#settle) function. The solver must provide all necessary flash loan inputs for the settlement, as well as the settle calldata, which will be executed within the same context by the `IFlashLoanRouter` contract. The `IFlashLoanRouter` contract will then request the specified flash loans and, once received, execute the settlement as instructed. +If a solver decides to encode the transaction without the help of the reference driver, the solver must call the `IFlashLoanRouter` contract's [flashLoanAndSettle](../../../contracts/periphery/flash-loans.md#flashloanandsettle) function instead of the settlement contract's [settle](../../../contracts/core/settlement.md#settle) function. The solver must provide all necessary flash loan inputs for the settlement, as well as the settle calldata, which will be executed within the same context by the `IFlashLoanRouter` contract. The `IFlashLoanRouter` contract will then request the specified flash loans and, once received, execute the settlement as instructed. -The entry point to the router contract ([IFlashLoanRouter](../../../reference/contracts/periphery/flash-loans.md#iflashloanrouter-contract)) is the function `flashLoanAndSettle`. +The entry point to the router contract ([IFlashLoanRouter](../../../contracts/periphery/flash-loans.md#iflashloanrouter-contract)) is the function `flashLoanAndSettle`. It takes a list of loans with the following entries for each loan: - The loaned amount and ERC-20 token. @@ -152,7 +152,7 @@ The flash-loan router is a solver for CoW Protocol and calls `settle` directly o The borrowers are the contracts that are called back by the lender once the flash loan is initiated; they are the contracts that receive the flash-loan proceeds and that are eventually responsible to repay the loan. The only way to move funds out of a borrower is through an ERC-20 approval transaction from the spender. -Approvals can be set by calling the [approve](../../../reference/contracts/periphery/flash-loans.md#approve) function on the borrower contract ([IBorrower](../../../reference/contracts/periphery/flash-loans.md#iborrower-contract)) from the context of a settlement. +Approvals can be set by calling the [approve](../../../contracts/periphery/flash-loans.md#approve) function on the borrower contract ([IBorrower](../../../contracts/periphery/flash-loans.md#iborrower-contract)) from the context of a settlement. For safe operations, like an approval for the settlement contract to spend the funds of the borrower, it's enough to set the approval once for an unlimited amount and reuse the same approval in future settlements. At the start of the settlement, it's expected that the loaned funds are transferred from the borrowers to where they are needed. For example, this can be the settlement contract itself, or the address of a user who wants to use the loan to retrieve the collateral needed to avoid liquidations. diff --git a/docs/cow-protocol/tutorials/arbitrate/solver/solver-engine.md b/docs/cow-protocol/tutorials/arbitrate/solver/solver-engine.md index ad28c7115..f0a8b9d61 100644 --- a/docs/cow-protocol/tutorials/arbitrate/solver/solver-engine.md +++ b/docs/cow-protocol/tutorials/arbitrate/solver/solver-engine.md @@ -30,7 +30,7 @@ Each mode comes with its own set of configuration parameters (cf. [examples](htt ## Architecture -Solver Engines implement the [API](../../../reference/apis/solver) expected by the driver component. +Solver Engines implement the [API](../../../apis/solver) expected by the driver component. ```mermaid sequenceDiagram @@ -99,7 +99,7 @@ The solver can receive an optional object with each order that provides hints fo - Use the provided hint: The solver can directly copy the flash loan hint included with the order. - Define a custom hint: The solver can specify a different flash loan hint, allowing for better optimization of flash loan usage. -A key requirement for flash loans is that all steps must take place within the same caller context. By maintaining this context, flash loans remain risk-free, as the transaction can be reverted if the tokens cannot be returned at the end. However, CoW Protocol cannot hold on to this context directly. To ensure that all steps execute within the same caller context, the GPv2 Settlement contract's [settle](../../../reference/contracts/core/settlement.md#settle) function is called from within the [IFlashLoanRouter](../../../reference/contracts/periphery/flash-loans.md#iflashloanrouter-contract) contract callback. Rather than directly calling the GPv2 Settlement contract, the solver first interacts with the `IFlashLoanRouter` contract. +A key requirement for flash loans is that all steps must take place within the same caller context. By maintaining this context, flash loans remain risk-free, as the transaction can be reverted if the tokens cannot be returned at the end. However, CoW Protocol cannot hold on to this context directly. To ensure that all steps execute within the same caller context, the GPv2 Settlement contract's [settle](../../../contracts/core/settlement.md#settle) function is called from within the [IFlashLoanRouter](../../../contracts/periphery/flash-loans.md#iflashloanrouter-contract) contract callback. Rather than directly calling the GPv2 Settlement contract, the solver first interacts with the `IFlashLoanRouter` contract. The solver must consider the gas cost implications of using a flash loan, as the associated overhead is non-negligible. diff --git a/docs/cow-protocol/tutorials/building.mdx b/docs/cow-protocol/tutorials/building.mdx index 5582e1914..0262537a1 100644 --- a/docs/cow-protocol/tutorials/building.mdx +++ b/docs/cow-protocol/tutorials/building.mdx @@ -24,7 +24,7 @@ It comes pre-configured with the CoW Protocol SDK and get's straight to the poin ## Detailed documentation -You've found our new documentation already! Did you know that the documentation also includes an extensive [technical reference](/category/technical-reference) covering: +You've found our new documentation already! Did you know that the documentation also includes an extensive technical reference (see sidebar) covering: - JavaScript SDKs (`cow-sdk` / `app-data`) - Rest APIs (`orderbook`, `solver`, `driver`) diff --git a/docs/cow-protocol/tutorials/cow-explorer/README.mdx b/docs/cow-protocol/tutorials/cow-explorer/README.mdx index 640def681..66ae9092b 100644 --- a/docs/cow-protocol/tutorials/cow-explorer/README.mdx +++ b/docs/cow-protocol/tutorials/cow-explorer/README.mdx @@ -3,7 +3,7 @@ As CoW Protocol utilizes an off-chain orderbook, and settles on-chain, getting a holistic view of the current state of CoW Protocol requires a combination of on-chain and off-chain data. Individually, this information is available from the following: -- [Order book API](/cow-protocol/reference/apis/orderbook) (off-chain) +- [Order book API](/cow-protocol/apis/orderbook) (off-chain) - CoW Protocol Subgraph (on-chain) Switching between these tools, and reading raw JSON data is better suited for computers, not humans. diff --git a/docs/cow-protocol/tutorials/cow-explorer/order.md b/docs/cow-protocol/tutorials/cow-explorer/order.md index 592f7a704..ff1f2eb69 100644 --- a/docs/cow-protocol/tutorials/cow-explorer/order.md +++ b/docs/cow-protocol/tutorials/cow-explorer/order.md @@ -45,7 +45,7 @@ Below is a simple example of Order ID [`56ac15a9`](https://explorer.cow.fi/order ## Partially fillable -A more complex example may be a user who has placed a _partially fillable_ order. This means that the user has expressed a swap intent for a certain amount of tokens, but the order may be filled in multiple batches. This can only be used with [Limit orders](../cow-swap/limit). +A more complex example may be a user who has placed a _partially fillable_ order. This means that the user has expressed a swap intent for a certain amount of tokens, but the order may be filled in multiple batches. This can only be used with [Limit orders](/cow-swap/limit). ![Partially fillable order overview](/img/explorer/order_partial_overview.png) diff --git a/docs/cow-protocol/tutorials/solvers/README.mdx b/docs/cow-protocol/tutorials/solvers/README.mdx index 1ba04d758..ef9a38bc2 100644 --- a/docs/cow-protocol/tutorials/solvers/README.mdx +++ b/docs/cow-protocol/tutorials/solvers/README.mdx @@ -2,7 +2,7 @@ ## What is a Solver? -At the heart of the CoW Protocol there are _solvers_. In essence, a solver is a computer program that takes the orderbook as input, then computes the prices and traded amounts of all orders and liquidity sources (AMMs) that make the best possible overall trading experience. This problem, known as the [batch auction problem](/cow-protocol/reference/core/auctions/the-problem), is an interesting and challenging optimization problem for which there is _not a perfect algorithm_ for (and most [likely will never be](https://en.wikipedia.org/wiki/P_versus_NP_problem)). +At the heart of the CoW Protocol there are _solvers_. In essence, a solver is a computer program that takes the orderbook as input, then computes the prices and traded amounts of all orders and liquidity sources (AMMs) that make the best possible overall trading experience. This problem, known as the [batch auction problem](/cow-protocol/reference/auctions/the-problem), is an interesting and challenging optimization problem for which there is _not a perfect algorithm_ for (and most [likely will never be](https://en.wikipedia.org/wiki/P_versus_NP_problem)). In the spirit of decentralization, on CoW Protocol multiple independent solvers compete for finding the best solution to the batch auction problem. Every few seconds, a round of the competition takes place, giving participating solvers the chance to solve a batch reflecting the most recent orderbook state. The solver that outputs the _best_ solution is rewarded, and thus its solution is the one to be settled on-chain. @@ -17,7 +17,7 @@ There are different avenues to explore for designing a solver that is competitiv ## Landscape of Solvers -In the spirit of decentralization and transparency, CoW Protocol maintains comprehensive [dashboards on Dune analytics](https://dune.com/cowprotocol/solver-info) detailing the performance of all solvers that have participated in the [solver auction](/cow-protocol/reference/core/auctions/rewards). +In the spirit of decentralization and transparency, CoW Protocol maintains comprehensive [dashboards on Dune analytics](https://dune.com/cowprotocol/solver-info) detailing the performance of all solvers that have participated in the [solver auction](/cow-protocol/reference/auctions/rewards). Solvers that have participated to date: diff --git a/docs/cow-protocol/tutorials/solvers/from_shadow_to_prod.md b/docs/cow-protocol/tutorials/solvers/from_shadow_to_prod.md index 80920da17..53c1969d1 100644 --- a/docs/cow-protocol/tutorials/solvers/from_shadow_to_prod.md +++ b/docs/cow-protocol/tutorials/solvers/from_shadow_to_prod.md @@ -17,7 +17,7 @@ In order to get connected to the shadow competition, feel free to reach out to a ## Live competition (production) -- To connect to the live competition, each solver is required to be part of a "bonding pool", as specified by [CIP-7](https://snapshot.org/#/cow.eth/proposal/0x267edf7a0bd3c771cfca763322f011ee106d8d5158612c11da29183260d1dba7); see [this section](/cow-protocol/reference/core/auctions/bonding-pools) for more details. +- To connect to the live competition, each solver is required to be part of a "bonding pool", as specified by [CIP-7](https://snapshot.org/#/cow.eth/proposal/0x267edf7a0bd3c771cfca763322f011ee106d8d5158612c11da29183260d1dba7); see [this section](/cow-protocol/reference/auctions/bonding-pools) for more details. :::note diff --git a/docs/cow-protocol/tutorials/swap-in-safe-app/README.mdx b/docs/cow-protocol/tutorials/swap-in-safe-app/README.mdx index ecf004f14..f2e50f292 100644 --- a/docs/cow-protocol/tutorials/swap-in-safe-app/README.mdx +++ b/docs/cow-protocol/tutorials/swap-in-safe-app/README.mdx @@ -9,7 +9,7 @@ Safe Dapps, are third party interfaces that live inside the [Safe Wallet Web](ht This is interesting for Safe Dapps because: * 🧱 Cut the development costs, building a good trading experience is hard! * ☔️ Offer users all CoW Protocol innovations, like protection from MEV, just-in-time path finding (optimised for Multisigs), batching of transactions and more. -* 🤑 Create a revenue model for your Dapp by using the `partnerFee` (see [Fees](/governance/fees#partner-fees)). +* 🤑 Create a revenue model for your Dapp by using the `partnerFee` (see [Fees](/cow-dao/fees#partner-fees)). The easiest way to get started is to follow the steps below. diff --git a/docs/cow-protocol/tutorials/cow-swap/README.mdx b/docs/cow-swap/README.mdx similarity index 94% rename from docs/cow-protocol/tutorials/cow-swap/README.mdx rename to docs/cow-swap/README.mdx index 46f7a408c..263f24ee3 100644 --- a/docs/cow-protocol/tutorials/cow-swap/README.mdx +++ b/docs/cow-swap/README.mdx @@ -1,3 +1,8 @@ +--- +sidebar_position: 0 +sidebar_label: "About CoW Swap" +--- + # CoW Swap [CoW Swap](https://swap.cow.fi/#/swap?utm_source=docs.cow.fi&utm_content=cow-swap-tutorial) is the first interface built on top of CoW Protocol and serves as a reference implementation for developers wishing to build user interfaces for CoW Protocol. @@ -15,6 +20,6 @@ CoW Swap supports many popular wallets including: - Any wallet supporting [WalletConnect v2](https://walletconnect.com) such as most mobile wallets. - Hardware wallets such as [Trezor](https://trezor.io), either directly, or through integration with injected wallets such us Rabby or Metamask. -If you've developed a wallet that supports [`EIP-712`](https://eips.ethereum.org/EIPS/eip-712) or [`ERC-1271`](https://eips.ethereum.org/EIPS/eip-1271) signing, and would like to have your wallet supported by CoW Swap, please [file an issue](https://github.com/cowprotocol/cowswap/issues/new) or reach out to us on [Discord](https://discord.com/invite/cowprotocol). +If you've developed a wallet that supports [`EIP-712`](https://eips.ethereum.org/EIPS/eip-712) or [`ERC-1271`](https://eips.ethereum.org/EIPS/eip-1271) signing, and would like to have your wallet supported by CoW Swap, please [file an issue](https://github.com/cowprotocol/cowswap/issues/new) or reach out to us on [Discord](https://discord.com/invite/cowprotocol). Alternatively, you may wish to integrate CoW Swap directly into your wallet interface. If you would like to integrate CoW Swap to your wallet, and would like support in the integration process, please reach out to us on bd@cow.fi. diff --git a/docs/cow-swap/_category_.json b/docs/cow-swap/_category_.json new file mode 100644 index 000000000..ae4a68140 --- /dev/null +++ b/docs/cow-swap/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 1, + "label": "🔄 CoW Swap", + "collapsible": true, + "collapsed": false +} diff --git a/docs/cow-protocol/tutorials/cow-swap/custom-links.md b/docs/cow-swap/custom-links.md similarity index 98% rename from docs/cow-protocol/tutorials/cow-swap/custom-links.md rename to docs/cow-swap/custom-links.md index 16a76e4f9..47570daff 100644 --- a/docs/cow-protocol/tutorials/cow-swap/custom-links.md +++ b/docs/cow-swap/custom-links.md @@ -49,7 +49,7 @@ All parameters are optional. If a parameter is not set, the default value will b | **Parameter** | **Type** | **Default** | **Description** | | -------------------------- | --------------------------- | ------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `chainId` | Integer | `1` - Ethereum Mainnet | [Supported blockchains](/cow-protocol/reference/contracts/core#deployments) | +| `chainId` | Integer | `1` - Ethereum Mainnet | [Supported blockchains](/cow-protocol/contracts/core#deployments) | | `sellTokenSymbolOrAddress` | Token `symbol` or `address` | Wrapped native token symbol for the current network (for Mainnet: `WETH`) | Sell token `symbol` or `address` | | `buyTokenSymbolOrAddress` | Token `symbol` or `address` | | Buy token `symbol` or `address` | | `recipient` | `address` | `undefined` | Valid Ethereum account address | diff --git a/docs/cow-protocol/tutorials/cow-swap/flash-loans.mdx b/docs/cow-swap/flash-loans.mdx similarity index 97% rename from docs/cow-protocol/tutorials/cow-swap/flash-loans.mdx rename to docs/cow-swap/flash-loans.mdx index a854c5e0d..779adb87b 100644 --- a/docs/cow-protocol/tutorials/cow-swap/flash-loans.mdx +++ b/docs/cow-swap/flash-loans.mdx @@ -41,7 +41,7 @@ In a production network (e.g. mainnet), these considerations generally won’t a ::: ## Aave repay pre-hook -We need to define a [pre-hook](/cow-protocol/reference/core/intents/hooks) to repay the 5,000 USDT debt on Aave, ensuring the Aave pool allows us to withdraw the associated collateral. +We need to define a [pre-hook](/cow-protocol/reference/intents/hooks) to repay the 5,000 USDT debt on Aave, ensuring the Aave pool allows us to withdraw the associated collateral. As part of the settlement, we want to call the [`repay` function on Aave's pool](https://aave.com/docs/developers/smart-contracts/pool#write-methods-repay): ```solidity @@ -206,7 +206,7 @@ We've now placed our order on CoW Swap. You can track its progress on [CoW Explo ## Setting the pre-signature of the order -After placing the order, its pre-signature must be submitted by calling the [`setPresignature` function on the CoW Settlement contract](https://docs.cow.fi/cow-protocol/reference/contracts/core/settlement#setpresignature): +After placing the order, its pre-signature must be submitted by calling the [`setPresignature` function on the CoW Settlement contract](https://docs.cow.fi/cow-protocol/contracts/core/settlement#setpresignature): ```solidity function setPreSignature(bytes calldata orderUid, bool signed) external; ``` @@ -247,7 +247,7 @@ With an EIP-1271 signature, the `setPreSignature` transaction would not be neces Once an order is placed within the CoW Protocol, it enters an auction batch. When a solution is found, the following steps occur: -1. The winning solver calls the flash loan [`IFlashLoanRouter`](/cow-protocol/reference/contracts/periphery/flashloans#iflashloanrouter-contract) contract. +1. The winning solver calls the flash loan [`IFlashLoanRouter`](/cow-protocol/contracts/periphery/flashloans#iflashloanrouter-contract) contract. 2. The 5,000 USDT gets transferred to the flash loan `IFlashLoanRouter` contract. 3. In the pre-hook: - Transfer 5,000 USDC from the flash loan `IFlashLoanRouter` contract to the user. diff --git a/docs/cow-protocol/tutorials/hook-dapp/hook-dapp.md b/docs/cow-swap/hook-dapp.md similarity index 99% rename from docs/cow-protocol/tutorials/hook-dapp/hook-dapp.md rename to docs/cow-swap/hook-dapp.md index abffefa85..321791acc 100644 --- a/docs/cow-protocol/tutorials/hook-dapp/hook-dapp.md +++ b/docs/cow-swap/hook-dapp.md @@ -6,7 +6,7 @@ sidebar_position: 5 ### [What are CoW Hooks?](/cow-protocol/concepts/order-types/cow-hooks) -### [Technical specification](/cow-protocol/reference/core/intents/hooks) +### [Technical specification](/cow-protocol/reference/intents/hooks) | Demo | Demo | | ------------------------------------------------------------------ | ----------------------------------------------------------------------- | diff --git a/docs/cow-protocol/tutorials/cow-swap/limit.mdx b/docs/cow-swap/limit.mdx similarity index 97% rename from docs/cow-protocol/tutorials/cow-swap/limit.mdx rename to docs/cow-swap/limit.mdx index a262acadc..910cc3dc3 100644 --- a/docs/cow-protocol/tutorials/cow-swap/limit.mdx +++ b/docs/cow-swap/limit.mdx @@ -2,7 +2,7 @@ sidebar_position: 3 --- -import CancellationOffChainOnChain from '../../../partials/_cancellation_offchain_versus_onchain.mdx' +import CancellationOffChainOnChain from '../partials/_cancellation_offchain_versus_onchain.mdx' # Limit orders diff --git a/docs/cow-protocol/tutorials/cow-swap/native.mdx b/docs/cow-swap/native.mdx similarity index 80% rename from docs/cow-protocol/tutorials/cow-swap/native.mdx rename to docs/cow-swap/native.mdx index 712de86d2..255e16efe 100644 --- a/docs/cow-protocol/tutorials/cow-swap/native.mdx +++ b/docs/cow-swap/native.mdx @@ -3,8 +3,8 @@ sidebar_position: 5 --- import Image from '@theme/IdealImage'; -import EthFlowTip from '../../../partials/_eth_flow.mdx' -import CancellationNotGuaranteed from '../../../partials/_cancellation_not_guaranteed.mdx' +import EthFlowTip from '../partials/_eth_flow.mdx' +import CancellationNotGuaranteed from '../partials/_cancellation_not_guaranteed.mdx' # Native tokens @@ -53,7 +53,7 @@ After wrapping the token, you can simply select the wrapped token as your sell t ## Option 2) Use Eth-flow {#use-eth-flow} -In an attempt to smoothen the user experience, CoW Protocol has introduced the [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) contract. This allows users to automate the [above process](#wrap-native-tokens) and wrap + swap in a single **on-chain** transaction. +In an attempt to smoothen the user experience, CoW Protocol has introduced the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) contract. This allows users to automate the [above process](#wrap-native-tokens) and wrap + swap in a single **on-chain** transaction. Eth-flow get the following benefits: 1. Lower overall fees (if you need to swap just once) @@ -74,13 +74,13 @@ After selecting your tokens, CoW Swap will prompt you to confirm the swap. This -Once you have confirmed the swap, your wallet will prompt you to sign and create the on-chain transaction interacting with the [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) contract. On completion of this transaction, your order will be placed on CoW Protocol. +Once you have confirmed the swap, your wallet will prompt you to sign and create the on-chain transaction interacting with the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) contract. On completion of this transaction, your order will be placed on CoW Protocol. ![Eth-flow Transaction](/img/cowswap/native_tx.png) :::note -When using the [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) contract, your order is only placed once the transaction that sends your ETH into the Eth-flow contract is confirmed. +When using the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) contract, your order is only placed once the transaction that sends your ETH into the Eth-flow contract is confirmed. This means you may see ETH missing in your account before the buy tokens arrive. @@ -91,20 +91,20 @@ The refund can be triggered by any account and should happen automatically if yo :::note -The [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) option is ONLY available for [Swaps](/cow-protocol/tutorials/cow-swap/swap). +The [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) option is ONLY available for [Swaps](/cow-swap/swap). ::: :::note -The [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) option is NOT available for Smart Contract wallets **in CoW Swap**. +The [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) option is NOT available for Smart Contract wallets **in CoW Swap**. ::: :::tip -While the CoW Swap UI doesn't support the [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) contract, it's possible to bundle the **wrap**, **approval** (if needed) and **order placement** via the special integration with the [Safe](https://app.safe.global) when using [CoW Swap's Safe app](https://app.safe.global/share/safe-app?appUrl=https%3A%2F%2Fswap.cow.fi&chain=eth). +While the CoW Swap UI doesn't support the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) contract, it's possible to bundle the **wrap**, **approval** (if needed) and **order placement** via the special integration with the [Safe](https://app.safe.global) when using [CoW Swap's Safe app](https://app.safe.global/share/safe-app?appUrl=https%3A%2F%2Fswap.cow.fi&chain=eth). Wrap and order placement bundle with Safe CoW Swap app. View of CoW Swap SWAP form. diff --git a/docs/cow-swap/partials/_cancellation_not_guaranteed.mdx b/docs/cow-swap/partials/_cancellation_not_guaranteed.mdx new file mode 100644 index 000000000..7bc7961b1 --- /dev/null +++ b/docs/cow-swap/partials/_cancellation_not_guaranteed.mdx @@ -0,0 +1,5 @@ +:::note + +Please note that our solvers can be quite quick, so it is entirely possible that your order will have already been filled before it can be invalidated. + +::: diff --git a/docs/cow-swap/partials/_cancellation_offchain_versus_onchain.mdx b/docs/cow-swap/partials/_cancellation_offchain_versus_onchain.mdx new file mode 100644 index 000000000..e86d87413 --- /dev/null +++ b/docs/cow-swap/partials/_cancellation_offchain_versus_onchain.mdx @@ -0,0 +1,27 @@ +import Image from "@theme/IdealImage" + + +Cancelling orders `off-chain` is free and does *not* require a transaction. However, there is a risk that the order is matched between the time you cancel it and the time the cancellation is processed `off-chain`. + +:::note + +Cancellations are not immediate, and your order may settle before the cancellation goes through. + +::: + +To proceed with an `off-chain` cancellation, click "Request cancellation" as shown below. + +<> +

+ + +If you do not want to place trust in the API to cancel your order, you may wish to cancel your order via an `on-chain` cancellation transaction. +This will cost gas. +To do so, toggle the type of cancellation to `on-chain` by clicking on `off-chain`. + +:::note + +Even with `on-chain` cancellations, there is still a risk that the order is matched before the `on-chain` cancellation transaction is confirmed. +Make sure to set a high priority fee and sign swiftly. + +::: diff --git a/docs/cow-swap/partials/_eth_flow.mdx b/docs/cow-swap/partials/_eth_flow.mdx new file mode 100644 index 000000000..2565a66a5 --- /dev/null +++ b/docs/cow-swap/partials/_eth_flow.mdx @@ -0,0 +1,8 @@ +:::tip + +If you intend to swap ETH frequently, consider wrapping some of your Ether into WETH to save on network fees. + +The network costs of using the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) multiple times are typically higher than wrapping the native token a single time and swapping with WETH multiple times on CoW Protocol. +Moreover, non-native token swaps allow for gasless cancellations. + +::: diff --git a/docs/cow-swap/partials/_gpv2.mdx b/docs/cow-swap/partials/_gpv2.mdx new file mode 100644 index 000000000..30433528d --- /dev/null +++ b/docs/cow-swap/partials/_gpv2.mdx @@ -0,0 +1,5 @@ +:::note + +CoW Protocol was formerly known as Gnosis Protocol v2. The domain separator is still named `Gnosis Protocol` as the change would have required a new deployment of the settlement contract. + +::: \ No newline at end of file diff --git a/docs/cow-swap/partials/_receiver.mdx b/docs/cow-swap/partials/_receiver.mdx new file mode 100644 index 000000000..4a7267a28 --- /dev/null +++ b/docs/cow-swap/partials/_receiver.mdx @@ -0,0 +1,13 @@ +:::danger Warning + +Ensure that the `receiver` address is correct. Fake CoW Swap websites have been observed and often substitute this parameter with their own address. +This **should be set to 0x0...0 or your signer's address** to indicate that the tokens will be sent to the order signer's address. +If you have set a custom receiver, you should verify that the address is correct. + +The user interface should display a warning if the `receiver` address is not the address from which you are signing the order. + +::: + +Be careful when signing an order. +All of the associated parameters are final and cannot be changed once the order is signed and submitted to the API. +If you make a mistake, you will need to cancel the order and create a new one. diff --git a/docs/cow-swap/partials/_token_approvals.mdx b/docs/cow-swap/partials/_token_approvals.mdx new file mode 100644 index 000000000..e288e30ea --- /dev/null +++ b/docs/cow-swap/partials/_token_approvals.mdx @@ -0,0 +1,7 @@ +:::caution + +A user should be careful when signing approval transactions. Verify carefully that the spender address is correct (in this case {props.spender}'s address). + +If in doubt about any of the above, do *not* sign the transaction. To review your approvals, you can use https://revoke.cash/. + +::: diff --git a/docs/cow-swap/partials/_unaudited.mdx b/docs/cow-swap/partials/_unaudited.mdx new file mode 100644 index 000000000..c481309a8 --- /dev/null +++ b/docs/cow-swap/partials/_unaudited.mdx @@ -0,0 +1,5 @@ +:::caution + +The following smart contract is for demonstration purposes only. It is not audited and should not be used in production. Use at your own risk. + +::: \ No newline at end of file diff --git a/docs/cow-protocol/tutorials/cow-swap/swap-and-bridge.mdx b/docs/cow-swap/swap-and-bridge.mdx similarity index 99% rename from docs/cow-protocol/tutorials/cow-swap/swap-and-bridge.mdx rename to docs/cow-swap/swap-and-bridge.mdx index d4a07d17e..05b68f30c 100644 --- a/docs/cow-protocol/tutorials/cow-swap/swap-and-bridge.mdx +++ b/docs/cow-swap/swap-and-bridge.mdx @@ -154,7 +154,7 @@ In the Swap form you can see a detailed breakdown of the expected swap and bridg ## 5. Understanding the Account Proxy -The [**Account Proxy**](https://swap.cow.fi/#/1/account-proxy) (also known as **CoW Shed**) is a helper contract that powers advanced features like [**CoW Hooks**](/cow-protocol/reference/core/intents/hooks). +The [**Account Proxy**](https://swap.cow.fi/#/1/account-proxy) (also known as **CoW Shed**) is a helper contract that powers advanced features like [**CoW Hooks**](/cow-protocol/reference/intents/hooks). * **CoW Hooks** allow solvers to execute additional Ethereum calls before or after your order is settled. * Your funds are safe: diff --git a/docs/cow-protocol/tutorials/cow-swap/swap.mdx b/docs/cow-swap/swap.mdx similarity index 86% rename from docs/cow-protocol/tutorials/cow-swap/swap.mdx rename to docs/cow-swap/swap.mdx index deea67d8a..c7f94f9f6 100644 --- a/docs/cow-protocol/tutorials/cow-swap/swap.mdx +++ b/docs/cow-swap/swap.mdx @@ -3,9 +3,9 @@ sidebar_position: 1 --- import Image from "@theme/IdealImage" -import TokenApprovalWarning from "../../../partials/_token_approvals.mdx" -import ReceiverAndOrderWarning from "../../../partials/_receiver.mdx" -import CancellationOffChainOnChain from "../../../partials/_cancellation_offchain_versus_onchain.mdx" +import TokenApprovalWarning from "../partials/_token_approvals.mdx" +import ReceiverAndOrderWarning from "../partials/_receiver.mdx" +import CancellationOffChainOnChain from "../partials/_cancellation_offchain_versus_onchain.mdx" # Market orders (swap) @@ -48,8 +48,8 @@ Consider an example swapping 0.05 `WETH` for `COW`. alt="GPv2VaultRelayer approval required" /> -When you do a swap on CoW Swap for the first time, you must give approval for the [_vault relayer_](/cow-protocol/reference/contracts/core/vault-relayer) contract to spend your token (in this case, `WETH`). -This is because this is the contract that will pull the `WETH` from your wallet and send it to the [_settlement_](/cow-protocol/reference/contracts/core/settlement) contract that will co-ordinate the swap on your behalf. +When you do a swap on CoW Swap for the first time, you must give approval for the [_vault relayer_](/cow-protocol/contracts/core/vault-relayer) contract to spend your token (in this case, `WETH`). +This is because this is the contract that will pull the `WETH` from your wallet and send it to the [_settlement_](/cow-protocol/contracts/core/settlement) contract that will co-ordinate the swap on your behalf. Both contracts are audited, battle-tested and non-upgradeable. @@ -62,7 +62,7 @@ Moreover, the settlement contract is the only address that can request the vault :::tip -Some tokens, such as `USDC`, `DAI`, `COW` and many others support gasless approvals. This means that you can approve the [vault relayer](/cow-protocol/reference/contracts/core/vault-relayer) contract to spend your tokens without having any initial gas for an on-chain transaction. This is a great way to save on gas costs! +Some tokens, such as `USDC`, `DAI`, `COW` and many others support gasless approvals. This means that you can approve the [vault relayer](/cow-protocol/contracts/core/vault-relayer) contract to spend your tokens without having any initial gas for an on-chain transaction. This is a great way to save on gas costs! You don't have to worry about this, as CoW Swap will automatically detect if the token supports gasless approvals and will guide you through the process. @@ -77,7 +77,7 @@ Just look for the `gasless approval` flag when picking the tokens to get started :::note -Trade of gasless compatible tokens is supported on Swap and [Limit](/cow-protocol/tutorials/cow-swap/limit) orders, and are NOT available for Smart Contract wallets. +Trade of gasless compatible tokens is supported on Swap and [Limit](/cow-swap/limit) orders, and are NOT available for Smart Contract wallets. ::: @@ -86,7 +86,7 @@ Trade of gasless compatible tokens is supported on Swap and [Limit](/cow-protoco alt="GPv2VaultRelayer default approval" /> -By default, CoW Swap prompts you to give [vault relayer](/cow-protocol/reference/contracts/core/vault-relayer) an "unlimited" allowance for the sell token. +By default, CoW Swap prompts you to give [vault relayer](/cow-protocol/contracts/core/vault-relayer) an "unlimited" allowance for the sell token. This has the benefits of: diff --git a/docs/cow-protocol/tutorials/cow-swap/twap.mdx b/docs/cow-swap/twap.mdx similarity index 99% rename from docs/cow-protocol/tutorials/cow-swap/twap.mdx rename to docs/cow-swap/twap.mdx index febdb378a..eaacdd23a 100644 --- a/docs/cow-protocol/tutorials/cow-swap/twap.mdx +++ b/docs/cow-swap/twap.mdx @@ -3,7 +3,7 @@ sidebar_position: 4 --- import Image from '@theme/IdealImage'; -import TokenApprovalWarning from '../../../partials/_token_approvals.mdx' +import TokenApprovalWarning from '../partials/_token_approvals.mdx' # TWAP orders diff --git a/docs/cow-widget/README.mdx b/docs/cow-widget/README.mdx new file mode 100644 index 000000000..d5d448267 --- /dev/null +++ b/docs/cow-widget/README.mdx @@ -0,0 +1,47 @@ +--- +sidebar_position: 0 +sidebar_label: "About CoW Widget" +--- + +# CoW Widget + +## Bring reliable, MEV-protected swaps to your users + +Integrate the CoW Swap widget to bring seamless, MEV-protected trading to your website or dApp. Delight your users while adding an extra revenue stream for your project - it's a win-win. + +## Why CoW Widget? + +The CoW Swap widget allows you to embed the power of CoW Protocol directly into your application, providing your users with: + +### 🛡️ MEV Protection +Protect your users from front-running, sandwich attacks, and other forms of MEV extraction. CoW Protocol's batch auction mechanism ensures fair pricing for all trades. + +### 💰 Best Prices +Access deep liquidity across multiple DEXs and solvers competing to find the best execution path for every trade. + +### ⚡ Gasless Trading +Users can trade without holding native tokens for gas fees. The trading fee is deducted from the sell amount, making DeFi more accessible. + +### 💸 Earn Revenue +Generate additional revenue for your project through affiliate fees. Earn a share of the trading fees from swaps made through your widget. + +### 🎨 Customizable Design +Tailor the widget's appearance to match your brand. Customize colors, themes, and UI elements to create a seamless user experience. + +## Key Features + +- **Easy Integration**: Add the widget to your site with just a few lines of code +- **Fully Responsive**: Works seamlessly across desktop and mobile devices +- **No Backend Required**: The widget handles all blockchain interactions +- **Open Source**: Built on transparent, audited smart contracts +- **Multi-chain Support**: Available on Ethereum, Gnosis Chain, Arbitrum, and more + +## Get Started + +Ready to integrate CoW Swap into your application? Check out our [integration tutorial](/cow-widget/tutorial) to get started. + +## Learn More + +- Visit the [CoW Widget page](https://cow.fi/widget) for live demos and examples +- Explore the [CoW Protocol documentation](/cow-protocol) to understand the underlying technology +- Join our [Discord](https://discord.gg/cowprotocol) for integration support diff --git a/docs/cow-widget/_category_.json b/docs/cow-widget/_category_.json new file mode 100644 index 000000000..5848a775b --- /dev/null +++ b/docs/cow-widget/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "CoW Widget", + "position": 1, + "collapsed": false +} diff --git a/docs/cow-protocol/tutorials/widget/widget.md b/docs/cow-widget/tutorial.md similarity index 99% rename from docs/cow-protocol/tutorials/widget/widget.md rename to docs/cow-widget/tutorial.md index 4ccdfa1f9..ef0f6dc26 100644 --- a/docs/cow-protocol/tutorials/widget/widget.md +++ b/docs/cow-widget/tutorial.md @@ -1,10 +1,10 @@ --- -sidebar_position: 4 +sidebar_position: 1 --- -# CoW Swap Widget +# Integration Tutorial -Integrate the power of `CoW Swap` into your product! +Integrate the power of CoW Swap into your product! With the widget, you can create an incredible trading interface. Specify the required pair of currencies, customize the look and much more! @@ -267,7 +267,7 @@ Once you have set up the partner fee, you will see the fee in the CoW Swap UI: [Terms and conditions](https://cow.fi/widget/terms-and-conditions) apply. -See [here](/governance/fees/partner-fee) for detailed info about fee calculation and examples. +See [here](/cow-dao/fees/partner-fee) for detailed info about fee calculation and examples. --- diff --git a/docs/governance/README.mdx b/docs/governance/README.mdx index 637fb3c6f..3bca9d805 100644 --- a/docs/governance/README.mdx +++ b/docs/governance/README.mdx @@ -1,6 +1,15 @@ +--- +sidebar_position: 0 +sidebar_label: "About CoW DAO" +--- + import Living from "./_living.md" -# Governance +# CoW DAO + +CoW DAO develops the most user-protective products in DeFi – so you can do more with less worry. + +[Learn more about CoW DAO](https://cow.fi) @@ -14,7 +23,7 @@ CoW DAO's forum is the main venue for governance-related discussion. Signing up ### [Snapshot](https://snapshot.org/#/cow.eth) -CoW DAO's snapshot space is a simple voting interface that allows members to vote on [CIPs](/governance/process/#cow-dao-improvement-proposals-cips). Votes on snapshot are weighted by the number of vCOW+COW held or delegated to the address used to vote. +CoW DAO's snapshot space is a simple voting interface that allows members to vote on [CIPs](/cow-dao/process#cow-dao-improvement-proposals-cips). Votes on snapshot are weighted by the number of vCOW+COW held or delegated to the address used to vote. ### [Discord](https://discord.gg/cowprotocol) diff --git a/docs/governance/_category_.json b/docs/governance/_category_.json index 0e6e13d17..7763aaaea 100644 --- a/docs/governance/_category_.json +++ b/docs/governance/_category_.json @@ -1,6 +1,6 @@ { - "position": 4, - "label": "🗳️ Governance", + "position": 1, + "label": "🗳️ CoW DAO", "collapsible": true, - "collapsed": true + "collapsed": false } diff --git a/docs/governance/fees/fees.md b/docs/governance/fees/fees.md index f93d61c27..012467134 100644 --- a/docs/governance/fees/fees.md +++ b/docs/governance/fees/fees.md @@ -56,4 +56,4 @@ The purpose of this page is to let users know which fee models are active at any ### Partner fees Partners may charge a fee when integrating CoW Protocol. -See the [Partner Fee](/governance/fees/partner-fee) section of these docs for details on how the partner fee is calculated, with examples and payment details. +See the [Partner Fee](/cow-dao/fees/partner-fee) section of these docs for details on how the partner fee is calculated, with examples and payment details. diff --git a/docs/governance/fees/partner-fee.md b/docs/governance/fees/partner-fee.md index 396c8f2b5..24c32dd9e 100644 --- a/docs/governance/fees/partner-fee.md +++ b/docs/governance/fees/partner-fee.md @@ -5,7 +5,7 @@ id: partner-fee ### Partner Fee Calculation -The Partner Fee is calculated as the sum of all transactions traded through your integration with CoW Protocol with Partner Fee defined in the `appData`, multiplied by the percentage of the Partner Fee bps defined in the [`appData`](/cow-protocol/reference/core/intents/app-data). +The Partner Fee is calculated as the sum of all transactions traded through your integration with CoW Protocol with Partner Fee defined in the `appData`, multiplied by the percentage of the Partner Fee bps defined in the [`appData`](/cow-protocol/reference/intents/app-data). The Partner Fee per order is calculated in the surplus token of the order (i.e. buy token for sell orders, and sell token for buy orders) and is then converted into WETH using an external price provider at the time of order settlement. @@ -70,7 +70,7 @@ The Partner Fee is currently only applicable to [Market order](https://docs.cow. ### Partner Fee Payment Process 1. Upon completing the implementation of the Partner Fee parameters on your Widget, you will be eligible to receive the Partner Fee on trades executed by your users through the Widget. -2. A data script will be run on a weekly basis on your project's eligible Partner Fee amount calculated based on the sum of all transactions traded through your project's Widget integration associated with Partner Fee defined in the [`appData`](/cow-protocol/reference/core/intents/app-data) your AppKey. +2. A data script will be run on a weekly basis on your project's eligible Partner Fee amount calculated based on the sum of all transactions traded through your project's Widget integration associated with Partner Fee defined in the [`appData`](/cow-protocol/reference/intents/app-data) your AppKey. 3. The Net Partner Fee (refer to the [Partner Fee Calculation](#partner-fee-calculation) section for details on calculations) will be transferred to your designated Ethereum wallet address defined under the Partner Fee "Recipient" parameter of the Widget on a weekly basis. :::note diff --git a/docs/governance/grants/README.mdx b/docs/governance/grants/README.mdx index c65719642..2befa216b 100644 --- a/docs/governance/grants/README.mdx +++ b/docs/governance/grants/README.mdx @@ -4,7 +4,7 @@ sidebar_position: 1 # CoW Grants Program Overview -The CoW Grants Program (CGP) funds initiatives that support the growth of the CoW Protocol ecosystem, aligned with the [CoW DAO mission statement](/governance/mission). +The CoW Grants Program (CGP) funds initiatives that support the growth of the CoW Protocol ecosystem, aligned with the [CoW DAO mission statement](/cow-dao/mission). ## Current Mandate @@ -34,6 +34,6 @@ The committee's operations follow the updated structure approved in CIP-63, allo ## Navigation -- [How to Apply](/governance/grants/how-to-apply) - Application process and guidelines -- [Grant Types](/governance/grants/grant-types) - Different types of available grants -- [Program Structure](/governance/grants/program-structure) - Governance and operational details +- [How to Apply](/cow-dao/grants/how-to-apply) - Application process and guidelines +- [Grant Types](/cow-dao/grants/grant-types) - Different types of available grants +- [Program Structure](/cow-dao/grants/program-structure) - Governance and operational details diff --git a/docs/governance/mission.md b/docs/governance/mission.md index 6706cd1da..cb3b4b08b 100644 --- a/docs/governance/mission.md +++ b/docs/governance/mission.md @@ -2,6 +2,8 @@ sidebar_position: 1 --- +import ProductGrid from '@site/src/components/ProductGrid'; + # Mission statement CoW DAO is an open organization of developers, market makers, and community contributors on a mission to create a fairer, more-protective financial system. CoW DAO currently supports CoW Swap, CoW Protocol and MEV Blocker – decentralized trading products that leverage order flow auctions to shield users from MEV attacks and give them more than they ask for. @@ -10,4 +12,8 @@ CoW DAO is an open organization of developers, market makers, and community cont We foresee a future where all kinds of assets will be tokenized on Ethereum and other decentralized blockchains, where everyone - individuals and collectives - can have full custody of their tokenized assets. CoW DAO's vision is a decentralized future where digital assets can be traded in a fair, efficient and reliable manner among people, organizations, smart contracts and communities around the world. Our mission is to build products that help users exchange digital assets in the most user-friendly and price-effective ways possible, enabling all users to trade securely and know their trades are protected. -We are committed to applying continuous innovation, cultivating intellectual bravery and – by expanding the CoW DAO ecosystem – inviting the brightest minds to join the community. +We are committed to applying continuous innovation, cultivating intellectual bravery and – by expanding the CoW DAO ecosystem – inviting the brightest minds to join the community. + +## Our Products + + diff --git a/docs/mevblocker/README.mdx b/docs/mevblocker/README.mdx index 41940af38..d5274e02f 100644 --- a/docs/mevblocker/README.mdx +++ b/docs/mevblocker/README.mdx @@ -1,3 +1,8 @@ +--- +sidebar_position: 0 +sidebar_label: "About MEV Blocker" +--- + # Overview ## MEV Blocker is the #1 leading MEV-protection RPC solution by transaction volume and rebates. diff --git a/docs/partials/_eth_flow.mdx b/docs/partials/_eth_flow.mdx index 501d434b7..2565a66a5 100644 --- a/docs/partials/_eth_flow.mdx +++ b/docs/partials/_eth_flow.mdx @@ -2,7 +2,7 @@ If you intend to swap ETH frequently, consider wrapping some of your Ether into WETH to save on network fees. -The network costs of using the [Eth-flow](/cow-protocol/reference/contracts/periphery/eth-flow) multiple times are typically higher than wrapping the native token a single time and swapping with WETH multiple times on CoW Protocol. +The network costs of using the [Eth-flow](/cow-protocol/contracts/periphery/eth-flow) multiple times are typically higher than wrapping the native token a single time and swapping with WETH multiple times on CoW Protocol. Moreover, non-native token swaps allow for gasless cancellations. ::: diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 6ac049ba6..a668d4623 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -27,6 +27,10 @@ const config: Config = { trailingSlash: false, + clientModules: [ + require.resolve('./src/clientModules/gtagFix.js'), + ], + // Even if you don't use internalization, you can use this field to set useful // metadata like html lang. For example, if your site is Chinese, you may want // to replace "en" with "zh-Hans". @@ -45,18 +49,8 @@ const config: Config = { [ 'classic', { - docs: { - routeBasePath: '/', - sidebarPath: require.resolve('./sidebars.js'), - remarkPlugins: [ - remarkMath, - [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], - ], - rehypePlugins: [rehypeKatex], - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: 'https://github.com/cowprotocol/docs/tree/main', - }, + docs: false, // Disable default docs + blog: false, // Disable blog theme: { customCss: require.resolve('./src/css/custom.css'), }, @@ -65,6 +59,96 @@ const config: Config = { ], plugins: [ + [ + '@docusaurus/plugin-content-docs', + { + id: 'cow-protocol', + path: 'docs/cow-protocol', + routeBasePath: 'cow-protocol', + sidebarPath: require.resolve('./sidebars-cow-protocol.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], + [ + '@docusaurus/plugin-content-docs', + { + id: 'cow-swap', + path: 'docs/cow-swap', + routeBasePath: 'cow-swap', + sidebarPath: require.resolve('./sidebars-cow-swap.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], + [ + '@docusaurus/plugin-content-docs', + { + id: 'cow-widget', + path: 'docs/cow-widget', + routeBasePath: 'cow-widget', + sidebarPath: require.resolve('./sidebars-cow-widget.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], + [ + '@docusaurus/plugin-content-docs', + { + id: 'cow-amm', + path: 'docs/cow-amm', + routeBasePath: 'cow-amm', + sidebarPath: require.resolve('./sidebars-cow-amm.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], + [ + '@docusaurus/plugin-content-docs', + { + id: 'mevblocker', + path: 'docs/mevblocker', + routeBasePath: 'mevblocker', + sidebarPath: require.resolve('./sidebars-mevblocker.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], + [ + '@docusaurus/plugin-content-docs', + { + id: 'cow-dao', + path: 'docs/governance', + routeBasePath: 'cow-dao', + sidebarPath: require.resolve('./sidebars-cow-dao.ts'), + remarkPlugins: [ + remarkMath, + [require('@docusaurus/remark-plugin-npm2yarn'), { sync: true, converters: ['yarn', 'pnpm'] }], + ], + rehypePlugins: [rehypeKatex], + editUrl: 'https://github.com/cowprotocol/docs/tree/main', + }, + ], [ '@docusaurus/plugin-ideal-image', { @@ -112,9 +196,9 @@ const config: Config = { // Replace with your project's social card image: 'img/og-meta-cowprotocol.png', navbar: { - title: 'Documentation - CoW DAO', + title: 'Docs', logo: { - alt: 'Documentation - CoW DAO', + alt: 'CoW DAO Documentation', src: 'img/cow-logo.svg', srcDark: 'img/cow-logo-dark.svg', href: '/', @@ -128,6 +212,44 @@ const config: Config = { margin: 'auto 12px auto 0', }, }, + items: [ + { + type: 'dropdown', + label: 'Products', + position: 'left', + items: [ + { + label: 'CoW Protocol', + to: '/cow-protocol', + }, + { + label: 'CoW Swap', + to: '/cow-swap', + }, + { + label: 'CoW Widget', + to: '/cow-widget', + }, + { + label: 'CoW AMM', + to: '/cow-amm', + }, + { + label: 'MEV Blocker', + to: '/mevblocker', + }, + ], + }, + { + label: 'CoW DAO', + to: '/cow-dao', + position: 'left', + }, + { + type: 'search', + position: 'right', + }, + ], }, footer: { style: 'dark', @@ -183,6 +305,10 @@ const config: Config = { appId: '9SHPK9O441', apiKey: '03080030278ba4994327d955f694f2a4', indexName: 'cow', + contextualSearch: true, + searchParameters: { + facetFilters: ['type:content'], + }, }, } satisfies Preset.ThemeConfig, } diff --git a/external/app-data/.editorconfig b/external/app-data/.editorconfig new file mode 100644 index 000000000..610fc82f8 --- /dev/null +++ b/external/app-data/.editorconfig @@ -0,0 +1,15 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf + +[{*.ts,*.tsx}] +ij_typescript_force_quote_style = true +ij_typescript_use_double_quotes = false +ij_typescript_use_semicolon_after_statement = false diff --git a/external/app-data/.github/workflows/build.yml b/external/app-data/.github/workflows/build.yml new file mode 100644 index 000000000..8808b9383 --- /dev/null +++ b/external/app-data/.github/workflows/build.yml @@ -0,0 +1,41 @@ +name: Build + +# Run on pushes to main or PRs +on: + # Pull request hook without any config. Launches for every pull request + pull_request: + # Launches for pushes to main or dev + push: + branches: + - main + # Launches build when release is published + release: + types: [published] + +jobs: + build: + name: Build Package + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 14 + + - name: Cache Yarn dependencies + uses: actions/cache@v2 + with: + path: | + node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install + + - name: Build app + run: yarn build diff --git a/external/app-data/.github/workflows/cla.yml b/external/app-data/.github/workflows/cla.yml new file mode 100644 index 000000000..ef95e6244 --- /dev/null +++ b/external/app-data/.github/workflows/cla.yml @@ -0,0 +1,29 @@ +name: 'cla' + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +permissions: + actions: write + contents: write + pull-requests: write + statuses: write + +jobs: + cla: + runs-on: ubuntu-latest + steps: + - name: 'CLA Assistant' + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: contributor-assistant/github-action@v2.2.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.ORG_TOKEN }} + with: + branch: 'cla-signatures' + path-to-signatures: 'signatures/version1/cla.json' + path-to-document: 'https://github.com/cowprotocol/cla/blob/main/CLA.md' + allowlist: '*[bot]' diff --git a/external/app-data/.github/workflows/publish.yml b/external/app-data/.github/workflows/publish.yml new file mode 100644 index 000000000..e718f21c4 --- /dev/null +++ b/external/app-data/.github/workflows/publish.yml @@ -0,0 +1,36 @@ +name: Publish package to NPM + +on: + release: + types: + - published + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 14 + always-auth: true + env: + NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} + + - name: Cache Yarn dependencies + uses: actions/cache@v2 + with: + path: | + node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install + + - run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NODE_AUTH_TOKEN }}" > ~/.npmrc + + - run: yarn publish diff --git a/external/app-data/.github/workflows/test.yml b/external/app-data/.github/workflows/test.yml new file mode 100644 index 000000000..c22682368 --- /dev/null +++ b/external/app-data/.github/workflows/test.yml @@ -0,0 +1,28 @@ +name: Unit tests +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 14 + + - name: Cache Yarn dependencies + uses: actions/cache@v2 + with: + path: | + node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Install dependencies + run: yarn install + + - name: Run tests + run: yarn test diff --git a/external/app-data/.gitignore b/external/app-data/.gitignore new file mode 100644 index 000000000..cbf032eb1 --- /dev/null +++ b/external/app-data/.gitignore @@ -0,0 +1,6 @@ +.idea/ +node_modules/ +dist/ +schemas/ +!src/schemas/ +/*.log diff --git a/external/app-data/.prettierrc b/external/app-data/.prettierrc new file mode 100644 index 000000000..31ba22d84 --- /dev/null +++ b/external/app-data/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 120 +} diff --git a/external/app-data/LICENSE b/external/app-data/LICENSE new file mode 100644 index 000000000..2bbbd2ab1 --- /dev/null +++ b/external/app-data/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 CoW Protocol + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/app-data/README.md b/external/app-data/README.md new file mode 100644 index 000000000..57694344b --- /dev/null +++ b/external/app-data/README.md @@ -0,0 +1,149 @@ +# @cowprotocol/app-data + +AppData schema definitions + +These schemas are used in the data encoded on `appData` field for CowProtocol orders. + +For more details, check [the docs](https://docs.cow.fi/cow-sdk/order-meta-data-appdata). + +## Installation + +```bash +yarn add @cowprotocol/app-data +``` + +## Usage + +```typescript +import { MetadataApi } from '@cowprotocol/app-data' + +export const metadataApi = new MetadataApi() + +const appCode = 'YOUR_APP_CODE' +const environment = 'prod' +const referrer = { address: `REFERRER_ADDRESS` } + +const quote = { slippageBips: 1 } // Slippage percent, it's 0 to 100 +const orderClass = { orderClass: 'market' } // "market" | "limit" | "liquidity" + +const appDataDoc = await metadataApi.generateAppDataDoc({ + appCode, + environment, + metadata: { + referrer, + quote, + orderClass, + }, +}) +``` + +### Schemas + +Schemas are exposed as json files, where the version is the file name: + +```js +// Getting the version v0.4.0 +const schema = require('@cowprotocol/app-data/schemas/v0.4.0.json') + +// Now you can for example run validation against a schema +``` + +### Type definitions + +There are also type definitions + +```js +import { v0_4_0 } from '@cowprotocol/app-data' + +// Note: this example is +function createAppDataV0_4_0(appCode: v0_4_0.AppCode, metadata: v0_4_0.Metadata): v0_4_0.AppDataRootSchema { + return { + version: '0.4.0', + appCode, + metadata, + } +} +``` + +### Constants + +The latest version names are exposed as constants + +```js +import { + LATEST_APP_DATA_VERSION, + LATEST_QUOTE_METADATA_VERSION, + LATEST_REFERRER_METADATA_VERSION, +} from '@cowprotocol/app-data' +``` + +### Utils + +_Get appData schema_ + +To get a schema definition by version + +```js +import { getAppDataSchema } from '@cowprotocol/app-data' + +const schema = getAppDataSchema('0.1.0') +``` + +It'll throw if the version does not exist + +_Validate appDataDoc_ + +To validate a document, pass it to `validateAppDataDoc`. +It'll return an object with a boolean indicating `success` and `errors`, if any. +The version to validate against will be taken from the doc itself. + +```js +import { validateAppDataDoc } from '@cowprotocol/app-data' + +let doc = { version: '0.4.0', metadata: {} } + +let result = await validateAppDataDoc(doc) +console.log(result) // { success: true } + +doc = { version: '0.0.0', metadata: {} } + +result = await validateAppDataDoc(doc) +// Contrary to `getAppDataSchema`, invalid or non-existing schemas won't throw +console.log(result) // { success: false, errors: 'AppData version 0.0.0 doesn\'t exist'} +``` + +# Contribute + +Fork the repo so you can create a new PR. Then: + +1. Add a new version for the schema using the [semver](https://semver.org/) convention + +- Just duplicate the latest version i.e. `src/schemas/.json` to `src/schemas/.json` + +2. If you are adding a new meta-data + +- We create one directory per schema, so we can keep track of all versions. Create the directory and initial schema definition: `/v0.1.0.json` +- Add it to the main schema you just created in step 1: `"$ref": "/v0.1.0.json#"`. +- Example: + +3. If you are modifying an existing meta-data + +- Version it using the [semver](https://semver.org/) convention +- You will need to create the new file for the meta-data schema: `/.json` +- Update it in the main schema you just created in step 1: Set it to `"": { "$ref": "/.json#" }` + +4. Modify the `compile.ts` script + +- Add the exported constant with the latest version in, and the new metadata: + - For example: + +4. Generate the typescript types + +- Run `yarn build` + +5. Make a test focusing on the new or modified meta-data: + +- +- Don't forget to use the right version of the schema in your test: + +6. Create the PR and document it together with the motivation for the changes diff --git a/external/app-data/package.json b/external/app-data/package.json new file mode 100644 index 000000000..b12670183 --- /dev/null +++ b/external/app-data/package.json @@ -0,0 +1,90 @@ +{ + "name": "@cowprotocol/app-data", + "version": "2.5.1", + "description": "CowProtocol AppData schema definitions", + "type": "module", + "source": "src/index.ts", + "exports": { + "require": "./dist/index.cjs", + "default": "./dist/index.modern.mjs" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.module.js", + "unpkg": "./dist/index.umd.js", + "types": "dist/index.d.ts", + "files": [ + "/dist", + "/schemas" + ], + "scripts": { + "clean": "rm -rf dist/* && rm -rf src/generatedTypes/* && rm -rf schemas/", + "compile": "node --loader ts-node/esm src/scripts/compile.ts --experimental-specifier-resolution=node", + "build": "yarn clean && yarn compile && microbundle -f modern,esm,cjs", + "test": "jest", + "prepare": "yarn build && yarn test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/cowprotocol/app-data.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/cowprotocol/app-data/issues" + }, + "homepage": "https://github.com/cowprotocol/app-data#readme", + "devDependencies": { + "ethers": "^5.0.26", + "@babel/core": "^7.18.9", + "@babel/preset-env": "^7.18.9", + "@babel/preset-typescript": "^7.18.6", + "@types/jest": "^29.4.0", + "@types/semver-sort": "^0.0.1", + "babel-jest": "^28.1.3", + "jest": "^29.4.2", + "jest-fetch-mock": "^3.0.3", + "json-schema-ref-parser": "^9.0.9", + "json-schema-to-typescript": "^10.1.5", + "microbundle": "^0.15.1", + "prettier": "^2.7.1", + "semver-sort": "^1.0.0", + "ts-node": "^10.8.2", + "typescript": "^4.9.5" + }, + "dependencies": { + "ajv": "^8.11.0", + "cross-fetch": "^3.1.5", + "ipfs-only-hash": "^4.0.0", + "json-stringify-deterministic": "^1.0.8", + "multiformats": "^9.6.4" + }, + "peerDependencies": { + "cross-fetch": "^3.x", + "ethers": "^5.0.0", + "ipfs-only-hash": "^4.x", + "multiformats": "^9.x" + }, + "jest": { + "automock": false, + "resetMocks": false, + "setupFiles": [ + "/setupTests.js" + ], + "collectCoverageFrom": [ + "src/**/*.{ts,tsx}", + "test/*.{ts,tsx}" + ] + }, + "babel": { + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "node": "current" + } + } + ], + "@babel/preset-typescript" + ] + } +} diff --git a/external/app-data/setupTests.js b/external/app-data/setupTests.js new file mode 100644 index 000000000..2360fc52c --- /dev/null +++ b/external/app-data/setupTests.js @@ -0,0 +1,8 @@ +import fetchMock from 'jest-fetch-mock' + +global.window = global + +fetchMock.enableMocks() + +jest.setMock('cross-fetch', fetchMock) + diff --git a/external/app-data/src/api/appDataHexToCid.spec.ts b/external/app-data/src/api/appDataHexToCid.spec.ts new file mode 100644 index 000000000..471988926 --- /dev/null +++ b/external/app-data/src/api/appDataHexToCid.spec.ts @@ -0,0 +1,34 @@ +import { APP_DATA_HEX, APP_DATA_HEX_LEGACY, CID, CID_LEGACY } from '../mocks' +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' + +describe('appDataHexToCid', () => { + test('Happy path', async () => { + // when + const decodedAppDataHex = await appDataHexToCid(APP_DATA_HEX) + // then + expect(decodedAppDataHex).toEqual(CID) + }) + + test('Throws with wrong hash format ', async () => { + // when + const promise = appDataHexToCid('invalidHash') + // then + await expect(promise).rejects.toThrow() + }) +}) + +describe('appDataHexToCidLegacy', () => { + test('Happy path', async () => { + // when + const decodedAppDataHex = await appDataHexToCidLegacy(APP_DATA_HEX_LEGACY) + // then + expect(decodedAppDataHex).toEqual(CID_LEGACY) + }) + + test('Throws with wrong hash format ', async () => { + // when + const promise = appDataHexToCidLegacy('invalidHash') + // then + await expect(promise).rejects.toThrow() + }) +}) diff --git a/external/app-data/src/api/appDataHexToCid.ts b/external/app-data/src/api/appDataHexToCid.ts new file mode 100644 index 000000000..ae57a7441 --- /dev/null +++ b/external/app-data/src/api/appDataHexToCid.ts @@ -0,0 +1,94 @@ +import { MetaDataError } from '../consts' + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataHex + * @returns + */ +export async function appDataHexToCid(appDataHex: string): Promise { + const cid = await _appDataHexToCid(appDataHex) + _assertCid(cid, appDataHex) + + return cid +} + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataHex + * @returns + */ +export async function appDataHexToCidLegacy(appDataHex: string): Promise { + const cid = await _appDataHexToCidLegacy(appDataHex) + _assertCid(cid, appDataHex) + + return cid +} + +export async function _assertCid(cid: string, appDataHex: string) { + if (!cid) throw new MetaDataError('Error getting CID from appDataHex: ' + appDataHex) +} + +/** + * Derive the IPFS CID v1 from the appData hex + * + * For reference see https://github.com/cowprotocol/services/issues/1465 and https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs + * + * @param appDataHex hex with tha appData hash + * @returns the IPFS CID v0 of the content + */ +async function _appDataHexToCid(appDataHex: string): Promise { + const cidBytes = await _toCidBytes({ + version: 0x01, // CIDv1 + multicodec: 0x55, // Raw codec + hashingAlgorithm: 0x1b, // keccak hash algorithm + hashingLength: 32, // keccak hash length (0x20 = 32) + multihashHex: appDataHex, // 32 bytes of the keccak256 hash + }) + + // Encode to base16 + const { base16 } = await import('multiformats/bases/base16') + return base16.encode(cidBytes) +} + +async function _appDataHexToCidLegacy(appDataHex: string): Promise { + const cidBytes = await _toCidBytes({ + version: 0x01, // CIDv1 + multicodec: 0x70, // dag-pb + hashingAlgorithm: 0x12, // sha2-256 hash algorithm + hashingLength: 32, // SHA-256 length (0x20 = 32) + multihashHex: appDataHex, // 32 bytes of the sha2-256 hash + }) + + const { CID } = await import('multiformats/cid') + return CID.decode(cidBytes).toV0().toString() +} + +interface ToCidParmams { + version: number + multicodec: number + hashingAlgorithm: number + hashingLength: number + multihashHex: string +} + +async function _toCidBytes({ + version, + multicodec, + hashingAlgorithm, + hashingLength, + multihashHex, +}: ToCidParmams): Promise { + const module = await import('ethers/lib/utils') + const { arrayify } = module.default || module + const hashBytes = arrayify(multihashHex) + + // Concat prefix and multihash + const cidPrefix = Uint8Array.from([version, multicodec, hashingAlgorithm, hashingLength]) + var cidBytes = new Uint8Array(cidPrefix.length + hashBytes.length) + cidBytes.set(cidPrefix) + cidBytes.set(hashBytes, cidPrefix.length) + + return cidBytes +} diff --git a/external/app-data/src/api/appDataToCid.spec.ts b/external/app-data/src/api/appDataToCid.spec.ts new file mode 100644 index 000000000..37dfc0ea8 --- /dev/null +++ b/external/app-data/src/api/appDataToCid.spec.ts @@ -0,0 +1,95 @@ +import fetchMock from 'jest-fetch-mock' +import { + APP_DATA_DOC, + APP_DATA_HEX, + APP_DATA_HEX_2, + APP_DATA_HEX_LEGACY, + APP_DATA_STRING, + APP_DATA_STRING_2, + CID, + CID_2, + CID_LEGACY, +} from '../mocks' +import { appDataToCid, appDataToCidLegacy } from './appDataToCid' +import { stringifyDeterministic } from '..' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('appDataToCid', () => { + test('Happy path with fullAppData string', async () => { + // when + const result = await appDataToCid(APP_DATA_STRING) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ cid: CID, appDataHex: APP_DATA_HEX, appDataContent: APP_DATA_STRING }) + }) + + test('Happy path with appData doc ', async () => { + // when + const result = await appDataToCid(APP_DATA_DOC) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ + cid: CID, + appDataHex: APP_DATA_HEX, + appDataContent: await stringifyDeterministic(APP_DATA_DOC), + }) + }) + + test('Happy path with appData doc 2 ', async () => { + // when + const result = await appDataToCid(APP_DATA_STRING_2) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ cid: CID_2, appDataHex: APP_DATA_HEX_2, appDataContent: APP_DATA_STRING_2 }) + }) + + test('Throws with invalid appDoc', async () => { + // given + const doc = { + ...APP_DATA_DOC, + metadata: { quote: { sellAmount: 'fsdfas', buyAmount: '41231', version: '0.1.0' } }, + } + + // when + const promise = appDataToCid(doc) + + // then + await expect(promise).rejects.toThrow('Invalid appData provided') + }) +}) + +describe('appDataToCidLegacy', () => { + test('Happy path', async () => { + // when + const result = await appDataToCidLegacy(APP_DATA_DOC) + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ + cid: CID_LEGACY, + appDataHex: APP_DATA_HEX_LEGACY, + appDataContent: JSON.stringify(APP_DATA_DOC), // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + }) + }) + + test('Throws with invalid appDoc', async () => { + // given + const doc = { + ...APP_DATA_DOC, + metadata: { quote: { sellAmount: 'fsdfas', buyAmount: '41231', version: '0.1.0' } }, + } + // when + const promise = appDataToCidLegacy(doc) + // then + await expect(promise).rejects.toThrow('Invalid appData provided') + }) +}) diff --git a/external/app-data/src/api/appDataToCid.ts b/external/app-data/src/api/appDataToCid.ts new file mode 100644 index 000000000..c38e58ac1 --- /dev/null +++ b/external/app-data/src/api/appDataToCid.ts @@ -0,0 +1,131 @@ +import { MetaDataError } from '../consts' +import { AnyAppDataDocVersion } from '../generatedTypes' +import { IpfsHashInfo } from '../types' +import { extractDigest } from '../utils/ipfs' +import { stringifyDeterministic } from '../utils/stringify' +import { appDataHexToCid } from './appDataHexToCid' +import { validateAppDataDoc } from './validateAppDataDoc' + +/** + * Calculates appDataHex without publishing file to IPFS + * + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * This method is intended to quickly generate the appDataHex independent + * of IPFS upload/pinning + * + * @param appData JSON document which will be stringified in a deterministic way to calculate the IPFS hash + */ +export async function appDataToCid(appData: AnyAppDataDocVersion): Promise + +/** + * Calculates appDataHex without publishing file to IPFS + * + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * This method is intended to quickly generate the appDataHex independent + * of IPFS upload/pinning + * + * @param fullAppData JSON string with the full appData document + */ +export async function appDataToCid(fullAppData: string): Promise + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataAux + * @returns + */ +export async function appDataToCid(appDataAux: AnyAppDataDocVersion | string): Promise { + return _appDataToCidAux(appDataAux, _appDataToCid) +} + +/** + * Calculates appDataHex without publishing file to IPFS + * + * This method is intended to quickly generate the appDataHex independent + * of IPFS upload/pinning + * + * @deprecated Old way of deriving th hash + * + * @param appData JSON document which will be stringified in a deterministic way to calculate the IPFS hash + */ +export async function appDataToCidLegacy(appData: AnyAppDataDocVersion): Promise + +/** + * Calculates appDataHex without publishing file to IPFS + * + * This method is intended to quickly generate the appDataHex independent + * of IPFS upload/pinning + * + * @deprecated Old way of deriving th hash + * + * @param fullAppData JSON string with the full appData document + */ +export async function appDataToCidLegacy(fullAppData: string): Promise + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataAux + * @returns + */ +export async function appDataToCidLegacy(appDataAux: AnyAppDataDocVersion | string): Promise { + // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + const fullAppData = JSON.stringify(appDataAux) + return _appDataToCidAux(fullAppData, _appDataToCidLegacy) +} + +export async function _appDataToCidAux( + appDataAux: AnyAppDataDocVersion | string, + deriveCid: (fullAppData: string) => Promise +): Promise { + const [appDataDoc, fullAppData] = + typeof appDataAux === 'string' + ? [JSON.parse(appDataAux), appDataAux] + : [appDataAux, await stringifyDeterministic(appDataAux)] + + const validation = await validateAppDataDoc(appDataDoc) + + if (!validation?.success) { + throw new MetaDataError(`Invalid appData provided: ${validation?.errors}`) + } + + try { + const cid = await deriveCid(fullAppData) + const appDataHex = await extractDigest(cid) + + if (!appDataHex) { + throw new MetaDataError(`Could not extract appDataHex from calculated cid ${cid}`) + } + + return { cid, appDataHex, appDataContent: fullAppData } + } catch (e) { + const error = e as MetaDataError + console.error('Failed to calculate appDataHex', error) + throw new MetaDataError(`Failed to calculate appDataHex: ${error.message}`) + } +} + +/** + * Derive the IPFS CID v0 from the full appData JSON content + * + * @param fullAppData string with the full AppData in JSON format. It is a string to make the hashing deterministic (do not rely on stringification of objects) + * @returns the IPFS CID v0 of the content + */ +async function _appDataToCid(fullAppDataJson: string): Promise { + const module = await import('ethers/lib/utils') + const { keccak256, toUtf8Bytes } = module.default || module + + const appDataHex = await keccak256(toUtf8Bytes(fullAppDataJson)) + return appDataHexToCid(appDataHex) +} + +export async function _appDataToCidLegacy(doc: AnyAppDataDocVersion | string): Promise { + const fullAppData = typeof doc === 'string' ? doc : stringifyDeterministic(doc) + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const { of } = await import('ipfs-only-hash') + return of(fullAppData, { cidVersion: 0 }) +} diff --git a/external/app-data/src/api/cidToAppDataHex.test.ts b/external/app-data/src/api/cidToAppDataHex.test.ts new file mode 100644 index 000000000..7a1bed08e --- /dev/null +++ b/external/app-data/src/api/cidToAppDataHex.test.ts @@ -0,0 +1,39 @@ +import fetchMock from 'jest-fetch-mock' +import { APP_DATA_HEX, APP_DATA_HEX_2, CID, CID_2 } from '../mocks' +import { cidToAppDataHex } from './cidToAppDataHex' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('cidToAppDataHex', () => { + test('Happy path', async () => { + // when + const result = await cidToAppDataHex(CID) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual(APP_DATA_HEX) + }) + + test('Happy path 2', async () => { + // when + const result = await cidToAppDataHex(CID_2) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual(APP_DATA_HEX_2) + }) + + test('Malformed CID', async () => { + // when + const promise = cidToAppDataHex('invalidCid') + + // then + expect(promise).rejects.toThrow() + }) +}) diff --git a/external/app-data/src/api/cidToAppDataHex.ts b/external/app-data/src/api/cidToAppDataHex.ts new file mode 100644 index 000000000..4e1f0bd33 --- /dev/null +++ b/external/app-data/src/api/cidToAppDataHex.ts @@ -0,0 +1,11 @@ +import { extractDigest } from '../utils/ipfs' + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param cid + * @returns + */ +export async function cidToAppDataHex(cid: string): Promise { + return extractDigest(cid) +} diff --git a/external/app-data/src/api/fetchDocFromAppData.spec.ts b/external/app-data/src/api/fetchDocFromAppData.spec.ts new file mode 100644 index 000000000..f6e5f6977 --- /dev/null +++ b/external/app-data/src/api/fetchDocFromAppData.spec.ts @@ -0,0 +1,42 @@ +import { DEFAULT_IPFS_READ_URI } from '../consts' +import { + APP_DATA_DOC_CUSTOM, + APP_DATA_HEX_LEGACY, + CID_LEGACY, + HTTP_STATUS_INTERNAL_ERROR, + HTTP_STATUS_OK, +} from '../mocks' + +import { fetchDocFromAppDataHex, fetchDocFromAppDataHexLegacy } from './fetchDocFromAppData' + +// beforeEach(() => { +// fetchMock.resetMocks() +// }) + +// afterEach(() => { +// jest.restoreAllMocks() +// }) + +describe('fetchDocFromAppData', () => { + test('Decodes appData', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify(APP_DATA_DOC_CUSTOM), { status: HTTP_STATUS_OK }) + + // when + const appDataDoc = await fetchDocFromAppDataHexLegacy(APP_DATA_HEX_LEGACY) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(`${DEFAULT_IPFS_READ_URI}/${CID_LEGACY}`) + expect(appDataDoc).toEqual(APP_DATA_DOC_CUSTOM) + }) + + test('Throws with wrong hash format', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({}), { status: HTTP_STATUS_INTERNAL_ERROR }) + // when + const promise = fetchDocFromAppDataHex('invalidHash') + // then + await expect(promise).rejects.toThrow(/Error decoding AppData:/) + }) +}) diff --git a/external/app-data/src/api/fetchDocFromAppData.ts b/external/app-data/src/api/fetchDocFromAppData.ts new file mode 100644 index 000000000..ed88f57e8 --- /dev/null +++ b/external/app-data/src/api/fetchDocFromAppData.ts @@ -0,0 +1,52 @@ +import { MetaDataError } from '../consts' +import { AnyAppDataDocVersion } from '../generatedTypes' +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' +import { fetchDocFromCid } from './fetchDocFromCid' + +/** + * + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataHex Derives the CID from the appData hex, and fetches and parses the document from IPFS + * @param ipfsUri URL of the IPFS gateway to use for the fetch + * + * @returns a parsed AppData document + */ +export async function fetchDocFromAppDataHex( + appDataHex: string, + ipfsUri?: string +): Promise { + return _fetchDocFromCidAux(appDataHexToCid, appDataHex, ipfsUri) +} + +/** + * Fetches the document from IPFS using the appData hex + * + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param appDataHex + * @param ipfsUri + * @returns + */ +export async function fetchDocFromAppDataHexLegacy( + appDataHex: string, + ipfsUri?: string +): Promise { + return _fetchDocFromCidAux(appDataHexToCidLegacy, appDataHex, ipfsUri) +} + +export async function _fetchDocFromCidAux( + hexToCid: (appDataHex: string) => Promise, + appDataHex: string, + ipfsUri?: string +): Promise { + try { + const cid = await hexToCid(appDataHex) + if (!cid) throw new MetaDataError('Error getting serialized CID') + return fetchDocFromCid(cid, ipfsUri) + } catch (e) { + const error = e as MetaDataError + // console.error(`Error fetching the IPFS document: appDataHex=${appDataHex}`, error) + throw new MetaDataError(`Error decoding AppData: appDataHex=${appDataHex}, message=${error.message}`) + } +} diff --git a/external/app-data/src/api/fetchDocFromCid.spec.ts b/external/app-data/src/api/fetchDocFromCid.spec.ts new file mode 100644 index 000000000..f1e74289c --- /dev/null +++ b/external/app-data/src/api/fetchDocFromCid.spec.ts @@ -0,0 +1,20 @@ +import { DEFAULT_IPFS_READ_URI } from '../consts' +import { fetchDocFromCid } from './fetchDocFromCid' + +describe('fetchDocFromCid', () => { + test('Valid IPFS appData from CID', async () => { + // given + const validSerializedCid = 'QmZZhNnqMF1gRywNKnTPuZksX7rVjQgTT3TJAZ7R6VE3b2' + const expected = + '{"appCode":"CowSwap","metadata":{"referrer":{"address":"0x1f5B740436Fc5935622e92aa3b46818906F416E9","version":"0.1.0"}},"version":"0.1.0"}' + fetchMock.mockResponseOnce(expected) + + // when + const appDataDocument = await fetchDocFromCid(validSerializedCid) + + // then + expect(appDataDocument).toEqual(JSON.parse(expected)) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(`${DEFAULT_IPFS_READ_URI}/${validSerializedCid}`) + }) +}) diff --git a/external/app-data/src/api/fetchDocFromCid.ts b/external/app-data/src/api/fetchDocFromCid.ts new file mode 100644 index 000000000..832c8502d --- /dev/null +++ b/external/app-data/src/api/fetchDocFromCid.ts @@ -0,0 +1,16 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' +import { DEFAULT_IPFS_READ_URI } from '../consts' + +/** + * @deprecated AppData is not longer stored on IPFS nor it's derived from IPFS content hashes + * + * @param cid + * @param ipfsUri + * @returns + */ +export async function fetchDocFromCid(cid: string, ipfsUri = DEFAULT_IPFS_READ_URI): Promise { + const { default: fetch } = await import('cross-fetch') + const response = await fetch(`${ipfsUri}/${cid}`) + + return await response.json() +} diff --git a/external/app-data/src/api/generateAppDataDoc.spec.ts b/external/app-data/src/api/generateAppDataDoc.spec.ts new file mode 100644 index 000000000..f3e7538f3 --- /dev/null +++ b/external/app-data/src/api/generateAppDataDoc.spec.ts @@ -0,0 +1,48 @@ +import fetchMock from 'jest-fetch-mock' +import { APP_DATA_DOC_CUSTOM } from '../mocks' +import { generateAppDataDoc } from './generateAppDataDoc' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('generateAppDataDoc', () => { + test('Creates appDataDoc with empty metadata ', async () => { + // when + const appDataDoc = await generateAppDataDoc({}) + + const { metadata, version, appCode, environment } = appDataDoc + + // then + expect(version).toBeTruthy() + expect(metadata).toEqual({}) + expect(appCode).toEqual(APP_DATA_DOC_CUSTOM.appCode) + expect(environment).toBeUndefined() + }) + + test('Creates appDataDoc with custom metadata ', async () => { + // given + const { referrer, quote } = APP_DATA_DOC_CUSTOM.metadata + const params = { + environment: APP_DATA_DOC_CUSTOM.environment, + metadata: { + referrer, + quote, + }, + } + // when + const appDataDoc = await generateAppDataDoc(params) + + // then + expect(appDataDoc).toBeTruthy() + const { metadata, version, appCode, environment } = appDataDoc + expect(version).toBeTruthy() + expect(metadata).toEqual(APP_DATA_DOC_CUSTOM.metadata) + expect(appCode).toEqual(APP_DATA_DOC_CUSTOM.appCode) + expect(environment).toEqual(APP_DATA_DOC_CUSTOM.environment) + }) +}) diff --git a/external/app-data/src/api/generateAppDataDoc.ts b/external/app-data/src/api/generateAppDataDoc.ts new file mode 100644 index 000000000..d4feb5169 --- /dev/null +++ b/external/app-data/src/api/generateAppDataDoc.ts @@ -0,0 +1,38 @@ +import { LATEST_APP_DATA_VERSION, LatestAppDataDocVersion } from '../generatedTypes' +import { AppDataParams } from '../types' + +const DEFAULT_APP_CODE = 'CoW Swap' +const DEFAULT_APP_DATA_DOC = { + appCode: DEFAULT_APP_CODE, + metadata: {}, + version: LATEST_APP_DATA_VERSION, +} + +/** + * Creates an appData document using the latest specification of the format + * + * Without params creates a default minimum appData doc + * Optionally creates metadata docs + * + * Example of result: + * { + * "appCode": "CoW Swap", + * "environment": "local", + * "metadata": { + * "quote": { + * "slippageBips": 50 + * }, + * "orderClass": { + * "orderClass": "market" + * } + * }, + * "version": "1.2.0" + * } + */ +export async function generateAppDataDoc(params?: AppDataParams): Promise { + return { + ...DEFAULT_APP_DATA_DOC, + ...params, + version: LATEST_APP_DATA_VERSION, + } +} diff --git a/external/app-data/src/api/getAppDataSchema.spec.ts b/external/app-data/src/api/getAppDataSchema.spec.ts new file mode 100644 index 000000000..c43bbed3d --- /dev/null +++ b/external/app-data/src/api/getAppDataSchema.spec.ts @@ -0,0 +1,55 @@ +import { getAppDataSchema } from './getAppDataSchema' + +describe('getAppDataSchema', () => { + test('Returns existing schema', async () => { + // given + const version = '0.4.0' + // when + const schema = await getAppDataSchema(version) + // then + // @ts-ignore + expect(schema.$id).toMatch(version) + }) + + test('Throws on invalid schema', async () => { + // given + const version = '0.0.0' + // when + const promise = getAppDataSchema(version) + // then + await expect(promise).rejects.toThrow(`AppData version ${version} doesn't exist`) + }) + + test('Non-existent version throws', async () => { + // given + const version = '0.0.0' + // when + const schemaPromise = getAppDataSchema(version) + // then + await expect(schemaPromise).rejects.toThrow(`AppData version ${version} doesn't exist`) + }) + + test('Non-semver version throws', async () => { + // given + const version = 'not semver' + // when + const schemaPromise = getAppDataSchema(version) + // then + await expect(schemaPromise).rejects.toThrow(`AppData version ${version} is not a valid version`) + }) + + test('Version 0.1.0', _buildAssertVersionFn('0.1.0')) + test('Version 0.2.0', _buildAssertVersionFn('0.2.0')) + test('Version 0.3.0', _buildAssertVersionFn('0.3.0')) + test('Version 0.4.0', _buildAssertVersionFn('0.4.0')) +}) + +function _buildAssertVersionFn(version: string) { + return async () => { + // when + const schema = await getAppDataSchema(version) + // then + // @ts-ignore + expect(schema.$id).toMatch(version) + } +} diff --git a/external/app-data/src/api/getAppDataSchema.ts b/external/app-data/src/api/getAppDataSchema.ts new file mode 100644 index 000000000..abd758264 --- /dev/null +++ b/external/app-data/src/api/getAppDataSchema.ts @@ -0,0 +1,19 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' +import { MetaDataError } from '../consts' +import { importSchema } from '../importSchema' + +/** + * Wrapper around @cowprotocol/app-data getAppDataSchema + * + * Returns the appData schema for given version, if any + * Throws CowError when version doesn't exist + */ +export async function getAppDataSchema(version: string): Promise { + try { + return await importSchema(version) + } catch (e) { + // Wrapping @cowprotocol/app-data Error into CowError + const error = e as Error + throw new MetaDataError(error.message) + } +} diff --git a/external/app-data/src/api/index.ts b/external/app-data/src/api/index.ts new file mode 100644 index 000000000..58e05ed4b --- /dev/null +++ b/external/app-data/src/api/index.ts @@ -0,0 +1,34 @@ +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' +import { appDataToCid, appDataToCidLegacy } from './appDataToCid' +import { cidToAppDataHex } from './cidToAppDataHex' +import { fetchDocFromAppDataHex, fetchDocFromAppDataHexLegacy } from './fetchDocFromAppData' +import { fetchDocFromCid } from './fetchDocFromCid' + +import { generateAppDataDoc } from './generateAppDataDoc' +import { getAppDataSchema } from './getAppDataSchema' +import { uploadMetadataDocToIpfsLegacy } from './uploadMetadataDocToIpfsLegacy' +import { validateAppDataDoc } from './validateAppDataDoc' + +export class MetadataApi { + // Schema & Doc generation/validation + getAppDataSchema = getAppDataSchema + generateAppDataDoc = generateAppDataDoc + validateAppDataDoc = validateAppDataDoc + + // ---- Deprecated methods ---- + + // appData / CID conversion (deprecated) + appDataToCid = appDataToCid // (appData | fullAppData) --> cid + appDataHexToCid = appDataHexToCid // appDataHex --> cid + cidToAppDataHex = cidToAppDataHex // cid --> appDataHex + + // Fetch appData document from IPFS (deprecated) + fetchDocFromCid = fetchDocFromCid // cid --> document + fetchDocFromAppDataHex = fetchDocFromAppDataHex // appDataHex --> appData + + // Upload to IPFS (deprecated) + uploadMetadataDocToIpfsLegacy = uploadMetadataDocToIpfsLegacy // appData --> cid + publish IPFS + appDataToCidLegacy = appDataToCidLegacy // (appData | fullAppData) --> cid + appDataHexToCidLegacy = appDataHexToCidLegacy // appDataHex --> cid + fetchDocFromAppDataHexLegacy = fetchDocFromAppDataHexLegacy // appDataHex --> appData +} diff --git a/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts b/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts new file mode 100644 index 000000000..905b66cf9 --- /dev/null +++ b/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts @@ -0,0 +1,82 @@ +import { DEFAULT_IPFS_WRITE_URI } from '../consts' +import { APP_DATA_DOC_CUSTOM } from '../mocks' +import { generateAppDataDoc } from './generateAppDataDoc' +import { uploadMetadataDocToIpfsLegacy } from './uploadMetadataDocToIpfsLegacy' + +const HTTP_STATUS_OK = 200 +const HTTP_STATUS_INTERNAL_ERROR = 500 + +const IPFS_HASH = 'QmU4j5Y6JM9DqQ6yxB6nMHq4GChWg1zPehs1U7nGPHABRu' +const APP_DATA_HEX = '0x5511c4eac66ab272d9a6ab90e07977d00ff7375fc4dc1038a3c05b2c16ca0b74' + +const PINATA_API_KEY = 'apikey' +const PINATA_API_SECRET = 'apiSecret' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('uploadMetadataDocToIpfsLegacy', () => { + test('Fails without passing credentials', async () => { + // given + const appDataDoc = await generateAppDataDoc({ + metadata: { + referrer: APP_DATA_DOC_CUSTOM.metadata.referrer, + }, + }) + // when + const promise = uploadMetadataDocToIpfsLegacy(appDataDoc, {}) + // then + await expect(promise).rejects.toThrow('You need to pass IPFS api credentials.') + }) + + test('Fails with wrong credentials', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ error: { details: 'IPFS api keys are invalid' } }), { + status: HTTP_STATUS_INTERNAL_ERROR, + }) + const appDataDoc = await generateAppDataDoc({}) + // when + const promise = uploadMetadataDocToIpfsLegacy(appDataDoc, { + pinataApiKey: PINATA_API_KEY, + pinataApiSecret: PINATA_API_SECRET, + }) + // then + await expect(promise).rejects.toThrow('IPFS api keys are invalid') + expect(fetchMock).toHaveBeenCalledTimes(1) + }) + + test('Uploads to IPFS', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ IpfsHash: IPFS_HASH }), { status: HTTP_STATUS_OK }) + const appDataDoc = await generateAppDataDoc({ + metadata: { referrer: APP_DATA_DOC_CUSTOM.metadata.referrer }, + }) + + // when + const uploadResult = await uploadMetadataDocToIpfsLegacy(appDataDoc, { + pinataApiKey: PINATA_API_KEY, + pinataApiSecret: PINATA_API_SECRET, + }) + + // then + expect(uploadResult).toEqual({ + appData: APP_DATA_HEX, + cid: IPFS_HASH, + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(DEFAULT_IPFS_WRITE_URI + '/pinning/pinJSONToIPFS', { + body: JSON.stringify({ pinataContent: appDataDoc, pinataMetadata: { name: 'appData' } }), + headers: { + 'Content-Type': 'application/json', + pinata_api_key: PINATA_API_KEY, + pinata_secret_api_key: PINATA_API_SECRET, + }, + method: 'POST', + }) + }) +}) diff --git a/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts b/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts new file mode 100644 index 000000000..46e9196fd --- /dev/null +++ b/external/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts @@ -0,0 +1,74 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' + +import { Ipfs } from '../types' +import { DEFAULT_IPFS_WRITE_URI, MetaDataError } from '../consts' +import { extractDigest } from '../utils/ipfs' +import { stringifyDeterministic } from '../utils/stringify' + +export interface IpfsUploadResult { + appData: string + cid: string +} + +/** + * Uploads a appDocument to IPFS + * + * @deprecated Pinata IPFS automatically pins the uploaded document using some implicity encoding and hashing algorithm. This method is not used anymore to make it more explicit these parameters and therefore less depednent on the default impleemntation of Pinata + * + * @param appDataDoc Document to upload + * @param ipfsConfig keys to access the IPFS API + * + * @returns the IPFS CID v0 of the content + */ +export async function uploadMetadataDocToIpfsLegacy( + appDataDoc: AnyAppDataDocVersion, + ipfsConfig: Ipfs +): Promise { + const { IpfsHash: cid } = await _pinJsonInPinataIpfs(appDataDoc, ipfsConfig) + + return { + appData: await extractDigest(cid), + cid, + } +} + +type PinataPinResponse = { + IpfsHash: string + PinSize: number + Timestamp: string +} + +export async function _pinJsonInPinataIpfs( + file: unknown, + { writeUri = DEFAULT_IPFS_WRITE_URI, pinataApiKey = '', pinataApiSecret = '' }: Ipfs +): Promise { + const { default: fetch } = await import('cross-fetch') + + if (!pinataApiKey || !pinataApiSecret) { + throw new MetaDataError('You need to pass IPFS api credentials.') + } + + const body = await stringifyDeterministic({ + pinataContent: file, + pinataMetadata: { name: 'appData' }, + }) + + const pinataUrl = `${writeUri}/pinning/pinJSONToIPFS` + const response = await fetch(pinataUrl, { + method: 'POST', + body, + headers: { + 'Content-Type': 'application/json', + pinata_api_key: pinataApiKey, + pinata_secret_api_key: pinataApiSecret, + }, + }) + + const data = await response.json() + + if (response.status !== 200) { + throw new Error(data.error.details || data.error) + } + + return data +} diff --git a/external/app-data/src/api/validateAppDataDoc.spec.ts b/external/app-data/src/api/validateAppDataDoc.spec.ts new file mode 100644 index 000000000..f596a0c08 --- /dev/null +++ b/external/app-data/src/api/validateAppDataDoc.spec.ts @@ -0,0 +1,71 @@ +import { APP_DATA_DOC } from '../mocks' +import { validateAppDataDoc } from './validateAppDataDoc' + +describe('validateAppDataDocument', () => { + const v010Doc = { + ...APP_DATA_DOC, + metatadata: { + referrer: { address: '0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9', version: '0.1.0' }, + }, + } + const v040Doc = { + ...v010Doc, + version: '0.4.0', + metadata: { ...v010Doc.metadata, quote: { slippageBips: '1', version: '0.2.0' } }, + } + + test('Version matches schema', async () => { + // when + const v010Validation = await validateAppDataDoc(v010Doc) + const v040Validation = await validateAppDataDoc(v040Doc) + // then + expect(v010Validation.success).toBeTruthy() + expect(v040Validation.success).toBeTruthy() + }) + + test("Version doesn't match schema", async () => { + // when + const v030Validation = await validateAppDataDoc({ ...v040Doc, version: '0.3.0' }) + // then + expect(v030Validation.success).toBeFalsy() + expect(v030Validation.errors).toEqual("data/metadata/quote must have required property 'sellAmount'") + }) + + test("Version doesn't exist", async () => { + // when + const validation = await validateAppDataDoc({ ...v010Doc, version: '0.0.0' }) + // then + expect(validation.success).toBeFalsy() + expect(validation.errors).toEqual("AppData version 0.0.0 doesn't exist") + }) + + test('Valid doc', async () => { + // given + const doc = { version: '0.4.0', metadata: {} } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeTruthy() + expect(result.errors).toBeUndefined() + }) + + test('Invalid doc', async () => { + // given + const doc = { version: '0.4.0', metadata: { referrer: { version: '312313', address: '0xssss' } } } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeFalsy() + expect(result.errors).toEqual('data/metadata/referrer/address must match pattern "^0x[a-fA-F0-9]{40}$"') + }) + + test('Non existent version', async () => { + // given + const doc = { version: '0.0.0', metadata: {} } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeFalsy() + expect(result.errors).toEqual(`AppData version 0.0.0 doesn't exist`) + }) +}) diff --git a/external/app-data/src/api/validateAppDataDoc.ts b/external/app-data/src/api/validateAppDataDoc.ts new file mode 100644 index 000000000..8953435e4 --- /dev/null +++ b/external/app-data/src/api/validateAppDataDoc.ts @@ -0,0 +1,63 @@ +import type { default as AjvType, ValidateFunction } from 'ajv' +import { AnyValidateFunction } from 'ajv/dist/core' +import { ValidationResult } from '../types' + +import { AnyAppDataDocVersion } from '../generatedTypes' +import { importSchema } from '../importSchema' + +let _ajvPromise: Promise | undefined +let _validatorPromises: Record> | undefined> = {} + +async function getAjv(): Promise { + if (!_ajvPromise) { + _ajvPromise = import('ajv').then(({ default: Ajv }) => new Ajv()) + } + + return _ajvPromise +} + +async function _createValidator(ajv: AjvType, version: string): Promise> { + let validator = ajv.getSchema(version) + + if (!validator) { + const schema = await importSchema(version) + ajv.addSchema(schema, version) + validator = ajv.getSchema(version) as ValidateFunction + } + + return validator +} + +async function getValidator(ajv: AjvType, version: string): Promise> { + let validatorPromise = _validatorPromises[version] + + // Instantiate the validator for the current version if it doesn't exist yet + if (!validatorPromise) { + validatorPromise = _createValidator(ajv, version) + _validatorPromises[version] = validatorPromise + } + + return validatorPromise +} + +export async function validateAppDataDoc(appDataDoc: AnyAppDataDocVersion): Promise { + const { version } = appDataDoc + + try { + const ajv = await getAjv() + const validator = await getValidator(ajv, version) + const success = !!validator(appDataDoc) + const errors = validator.errors ? ajv.errorsText(validator.errors) : undefined + + return { success, errors } + } catch (e) { + if (e instanceof Error) { + return { + success: false, + errors: e.message, + } + } else { + throw e + } + } +} diff --git a/external/app-data/src/consts.ts b/external/app-data/src/consts.ts new file mode 100644 index 000000000..d68c227cf --- /dev/null +++ b/external/app-data/src/consts.ts @@ -0,0 +1,4 @@ +export const DEFAULT_IPFS_READ_URI = 'https://cloudflare-ipfs.com/ipfs' +export const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud' + +export class MetaDataError extends Error {} diff --git a/external/app-data/src/exports.ts b/external/app-data/src/exports.ts new file mode 100644 index 000000000..5453ef26b --- /dev/null +++ b/external/app-data/src/exports.ts @@ -0,0 +1,3 @@ +export * from './api' +export * from './types' +export { stringifyDeterministic } from './utils/stringify' diff --git a/external/app-data/src/generatedTypes/index.ts b/external/app-data/src/generatedTypes/index.ts new file mode 100644 index 000000000..79eef8849 --- /dev/null +++ b/external/app-data/src/generatedTypes/index.ts @@ -0,0 +1,66 @@ +// generated file, do not edit manually + +import * as v0_1_0 from './v0.1.0' +import * as v0_10_0 from './v0.10.0' +import * as v0_11_0 from './v0.11.0' +import * as v0_2_0 from './v0.2.0' +import * as v0_3_0 from './v0.3.0' +import * as v0_4_0 from './v0.4.0' +import * as v0_5_0 from './v0.5.0' +import * as v0_6_0 from './v0.6.0' +import * as v0_7_0 from './v0.7.0' +import * as v0_8_0 from './v0.8.0' +import * as v0_9_0 from './v0.9.0' +import * as v1_0_0 from './v1.0.0' +import * as v1_1_0 from './v1.1.0' +import * as v1_2_0 from './v1.2.0' +import * as v1_3_0 from './v1.3.0' + +export * from './latest' + +export const LATEST_APP_DATA_VERSION = '1.3.0' +export const LATEST_QUOTE_METADATA_VERSION = '1.1.0' +export const LATEST_REFERRER_METADATA_VERSION = '0.2.0' +export const LATEST_ORDER_CLASS_METADATA_VERSION = '0.3.0' +export const LATEST_UTM_METADATA_VERSION = '0.2.0' +export const LATEST_HOOKS_METADATA_VERSION = '0.2.0' +export const LATEST_SIGNER_METADATA_VERSION = '0.1.0' +export const LATEST_WIDGET_METADATA_VERSION = '0.1.0' +export const LATEST_PARTNER_FEE_METADATA_VERSION = '0.1.0' +export const LATEST_REPLACED_ORDER_METADATA_VERSION = '0.1.0' + +export type LatestAppDataDocVersion = v1_3_0.AppDataRootSchema +export type AnyAppDataDocVersion = + | v1_3_0.AppDataRootSchema + | v1_2_0.AppDataRootSchema + | v1_1_0.AppDataRootSchema + | v1_0_0.AppDataRootSchema + | v0_11_0.AppDataRootSchema + | v0_10_0.AppDataRootSchema + | v0_9_0.AppDataRootSchema + | v0_8_0.AppDataRootSchema + | v0_7_0.AppDataRootSchema + | v0_6_0.AppDataRootSchema + | v0_5_0.AppDataRootSchema + | v0_4_0.AppDataRootSchema + | v0_3_0.AppDataRootSchema + | v0_2_0.AppDataRootSchema + | v0_1_0.AppDataRootSchema + +export { + v1_3_0, + v1_2_0, + v1_1_0, + v1_0_0, + v0_11_0, + v0_10_0, + v0_9_0, + v0_8_0, + v0_7_0, + v0_6_0, + v0_5_0, + v0_4_0, + v0_3_0, + v0_2_0, + v0_1_0 +} diff --git a/external/app-data/src/generatedTypes/latest.ts b/external/app-data/src/generatedTypes/latest.ts new file mode 100644 index 000000000..fc02d718b --- /dev/null +++ b/external/app-data/src/generatedTypes/latest.ts @@ -0,0 +1,3 @@ +// generated file, do not edit manually + +export * as latest from './v1.3.0' diff --git a/external/app-data/src/generatedTypes/v0.1.0.ts b/external/app-data/src/generatedTypes/v0.1.0.ts new file mode 100644 index 000000000..b5d04253c --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.1.0.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.10.0.ts b/external/app-data/src/generatedTypes/v0.10.0.ts new file mode 100644 index 000000000..9e38ab1a8 --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.10.0.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} diff --git a/external/app-data/src/generatedTypes/v0.11.0.ts b/external/app-data/src/generatedTypes/v0.11.0.ts new file mode 100644 index 000000000..cda95a66c --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.11.0.ts @@ -0,0 +1,139 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} diff --git a/external/app-data/src/generatedTypes/v0.2.0.ts b/external/app-data/src/generatedTypes/v0.2.0.ts new file mode 100644 index 000000000..f95491201 --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.2.0.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +export type QuoteId = string; +export type QuoteSellAmount = string; +export type QuoteBuyAmount = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + id?: QuoteId; + sellAmount: QuoteSellAmount; + buyAmount: QuoteBuyAmount; + version: Version2; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.3.0.ts b/external/app-data/src/generatedTypes/v0.3.0.ts new file mode 100644 index 000000000..804b132a1 --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.3.0.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +export type QuoteId = string; +export type QuoteSellAmount = string; +export type QuoteBuyAmount = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + id?: QuoteId; + sellAmount: QuoteSellAmount; + buyAmount: QuoteBuyAmount; + version: Version2; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.4.0.ts b/external/app-data/src/generatedTypes/v0.4.0.ts new file mode 100644 index 000000000..0346e909e --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.4.0.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.5.0.ts b/external/app-data/src/generatedTypes/v0.5.0.ts new file mode 100644 index 000000000..fea347d03 --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.5.0.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.6.0.ts b/external/app-data/src/generatedTypes/v0.6.0.ts new file mode 100644 index 000000000..72c831eca --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.6.0.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.7.0.ts b/external/app-data/src/generatedTypes/v0.7.0.ts new file mode 100644 index 000000000..0b3b38fcf --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.7.0.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/external/app-data/src/generatedTypes/v0.8.0.ts b/external/app-data/src/generatedTypes/v0.8.0.ts new file mode 100644 index 000000000..d7d219ada --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.8.0.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} diff --git a/external/app-data/src/generatedTypes/v0.9.0.ts b/external/app-data/src/generatedTypes/v0.9.0.ts new file mode 100644 index 000000000..abdf75069 --- /dev/null +++ b/external/app-data/src/generatedTypes/v0.9.0.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} diff --git a/external/app-data/src/generatedTypes/v1.0.0.ts b/external/app-data/src/generatedTypes/v1.0.0.ts new file mode 100644 index 000000000..952545fbe --- /dev/null +++ b/external/app-data/src/generatedTypes/v1.0.0.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} diff --git a/external/app-data/src/generatedTypes/v1.1.0.ts b/external/app-data/src/generatedTypes/v1.1.0.ts new file mode 100644 index 000000000..e6f91cba3 --- /dev/null +++ b/external/app-data/src/generatedTypes/v1.1.0.ts @@ -0,0 +1,160 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/external/app-data/src/generatedTypes/v1.2.0.ts b/external/app-data/src/generatedTypes/v1.2.0.ts new file mode 100644 index 000000000..e19b4079a --- /dev/null +++ b/external/app-data/src/generatedTypes/v1.2.0.ts @@ -0,0 +1,165 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Whether the given slippageBips used is originated from a Smart slippage suggestion + */ +export type SmartSlippage = boolean; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; + smartSlippage?: SmartSlippage; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/external/app-data/src/generatedTypes/v1.3.0.ts b/external/app-data/src/generatedTypes/v1.3.0.ts new file mode 100644 index 000000000..a11fcf7af --- /dev/null +++ b/external/app-data/src/generatedTypes/v1.3.0.ts @@ -0,0 +1,170 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Whether the given slippageBips used is originated from a Smart slippage suggestion + */ +export type SmartSlippage = boolean; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook. + */ +export type IdOfTheDAppWhichHasBuiltTheHook = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; + smartSlippage?: SmartSlippage; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; + dappId?: IdOfTheDAppWhichHasBuiltTheHook; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/external/app-data/src/importSchema.ts b/external/app-data/src/importSchema.ts new file mode 100644 index 000000000..4d3cdb2f8 --- /dev/null +++ b/external/app-data/src/importSchema.ts @@ -0,0 +1,12 @@ +import { AnyAppDataDocVersion } from './generatedTypes' + +export async function importSchema(version: string): Promise { + if (!/^\d+\.\d+\.\d+$/.test(version)) { + throw new Error(`AppData version ${version} is not a valid version`) + } + try { + return await import(`../schemas/v${version}.json`) + } catch (e) { + throw new Error(`AppData version ${version} doesn't exist`) + } +} diff --git a/external/app-data/src/index.ts b/external/app-data/src/index.ts new file mode 100644 index 000000000..9eabd95e7 --- /dev/null +++ b/external/app-data/src/index.ts @@ -0,0 +1,2 @@ +export * from './exports' +export * from './generatedTypes' diff --git a/external/app-data/src/latest.ts b/external/app-data/src/latest.ts new file mode 100644 index 000000000..3253f3bf2 --- /dev/null +++ b/external/app-data/src/latest.ts @@ -0,0 +1,2 @@ +export * from './exports' +export * from './generatedTypes/latest' diff --git a/external/app-data/src/mocks.ts b/external/app-data/src/mocks.ts new file mode 100644 index 000000000..7ab9e11b5 --- /dev/null +++ b/external/app-data/src/mocks.ts @@ -0,0 +1,42 @@ +export const HTTP_STATUS_OK = 200 +export const HTTP_STATUS_INTERNAL_ERROR = 500 + +export const APP_DATA_DOC = { + version: '0.7.0', + appCode: 'CoW Swap', + metadata: {}, +} + +export const APP_DATA_STRING = '{"appCode":"CoW Swap","metadata":{},"version":"0.7.0"}' +export const CID = 'f01551b20337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df' // https://cid.ipfs.tech/#f01551b20337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df +export const APP_DATA_HEX = '0x337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df' + +export const APP_DATA_DOC_CUSTOM = { + ...APP_DATA_DOC, + environment: 'test', + metadata: { + referrer: { + address: '0x1f5B740436Fc5935622e92aa3b46818906F416E9', + version: '0.1.0', + }, + quote: { + slippageBips: 1, + version: '0.2.0', + }, + }, +} + +// Another example of AppData (same as the backend uses in the tests +// See https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs#L64 +export const APP_DATA_STRING_2 = + '{"appCode":"CoW Swap","environment":"production","metadata":{"quote":{"slippageBips":"50","version":"0.2.0"},"orderClass":{"orderClass":"market","version":"0.1.0"}},"version":"0.6.0"}' +export const CID_2 = 'f01551b208af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424' // https://cid.ipfs.tech/#f01551b208af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424 +export const APP_DATA_HEX_2 = '0x8af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424' + +// Legacy IPFS Hash format and AppData +export const APP_DATA_STRING_LEGACY = '{"version":"0.7.0","appCode":"CowSwap","metadata":{}}' // Slightly different than FULL_APP_DATA because legacy used undeterministic JSON.stringify while now we use stringifyDeterministic method +export const CID_LEGACY = 'QmSwrFbdFcryazEr361YmSwtGcN4uo4U5DKpzA4KbGxw4Q' // https://cid.ipfs.tech/#QmUbsYUqP4DXDvXDipKDG6hKhKnb6dADMeBiHHYJiizr25 +export const APP_DATA_HEX_LEGACY = '0x447320af985c5e834321dc495545f764ad20d8397eeed2f4a2dcbee44a56b725' + +export const PINATA_API_KEY = 'apikey' +export const PINATA_API_SECRET = 'apiSecret' diff --git a/external/app-data/src/schemas/definitions.json b/external/app-data/src/schemas/definitions.json new file mode 100644 index 000000000..06f3165ba --- /dev/null +++ b/external/app-data/src/schemas/definitions.json @@ -0,0 +1,52 @@ +{ + "$id": "#definitions.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Definitions sub-schema", + "definitions": { + "version": { + "$id": "#/definitions/version", + "description": "Semantic versioning of document.", + "readOnly": true, + "examples": ["1.0.0", "1.2.3"], + "title": "Version", + "type": "string" + }, + "ethereumAddress": { + "$id": "#/definitions/ethereumAddress", + "pattern": "^0x[a-fA-F0-9]{40}$", + "title": "Ethereum compatible address", + "examples": ["0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9"], + "type": "string" + }, + "bigNumber": { + "$id": "#/definitions/bigNumber", + "pattern": "^\\d+$", + "title": "BigNumber", + "examples": ["90741097240912730913", "0", "75891372"], + "type": "string" + }, + "bps": { + "$id": "#/definitions/bps", + "title": "Basis Point (BPS)", + "description": "One basis point is equivalent to 0.01% (1/100th of a percent)", + "examples": [0, 10, 50], + "type": "integer", + "maximum": 10000, + "minimum": 0 + }, + "orderUid": { + "$id": "#/definitions/orderUid", + "pattern": "^0x[a-fA-F0-9]{112}$", + "title": "Order UID", + "examples": ["0xff2e2e54d178997f173266817c1e9ed6fee1a1aae4b43971c53b543cffcc2969845c6f5599fbb25dbdd1b9b013daf85c03f3c63763e4bc4a"], + "type": "string" + }, + "dappId": { + "$id": "#/definitions/dappId", + "pattern": "^[a-fA-F0-9]{64}$", + "title": "A hex string representing a dApp ID", + "examples": ["75716a3cb48fdbb43ebdff58ce6c541f6a2c269be690513131355800367f2da2"], + "type": "string" + } + } +} diff --git a/external/app-data/src/schemas/hook/v0.1.0.json b/external/app-data/src/schemas/hook/v0.1.0.json new file mode 100644 index 000000000..28c157171 --- /dev/null +++ b/external/app-data/src/schemas/hook/v0.1.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hook/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "target", + "callData", + "gasLimit" + ], + "title": "CoW Hook", + "type": "object", + "additionalProperties": false, + "properties": { + "target": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Hook Target", + "description": "The contract to call for the hook" + }, + "callData": { + "$id": "#/properties/callData", + "title": "Hook CallData", + "description": "The calldata to use when calling the hook", + "type": "string", + "pattern": "^0x[a-fA-F0-9]*$", + "examples": [ + "0x", + "0x01020304" + ] + }, + "gasLimit": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Hook Gas Limit", + "description": "The gas limit (in gas units) for the hook" + } + } +} diff --git a/external/app-data/src/schemas/hook/v0.2.0.json b/external/app-data/src/schemas/hook/v0.2.0.json new file mode 100644 index 000000000..5e29ea972 --- /dev/null +++ b/external/app-data/src/schemas/hook/v0.2.0.json @@ -0,0 +1,40 @@ +{ + "$id": "#hook/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "target", + "callData", + "gasLimit" + ], + "title": "CoW Hook", + "type": "object", + "additionalProperties": false, + "properties": { + "target": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Hook Target", + "description": "The contract to call for the hook" + }, + "callData": { + "$id": "#/properties/callData", + "title": "Hook CallData", + "description": "The calldata to use when calling the hook", + "type": "string", + "pattern": "^0x[a-fA-F0-9]*$", + "examples": [ + "0x", + "0x01020304" + ] + }, + "gasLimit": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Hook Gas Limit", + "description": "The gas limit (in gas units) for the hook" + }, + "dappId": { + "$ref": "../definitions.json#/definitions/dappId", + "title": "Id of the dApp which has built the hook", + "description": "CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook." + } + } +} diff --git a/external/app-data/src/schemas/hooks/v0.1.0.json b/external/app-data/src/schemas/hooks/v0.1.0.json new file mode 100644 index 000000000..37a1c6e05 --- /dev/null +++ b/external/app-data/src/schemas/hooks/v0.1.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hooks/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "default": {}, + "required": [], + "title": "Order interaction hooks", + "description": "Optional Pre and Post order interaction hooks attached to a single order", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "pre": { + "$id": "#/properties/hooks/pre", + "title": "Pre-Hooks", + "description": "CoW Hooks to call before an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.1.0.json#" + } + }, + "post": { + "$id": "#/properties/hooks/post", + "title": "Post-Hooks", + "description": "CoW Hooks to call after an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.1.0.json#" + } + } + } +} diff --git a/external/app-data/src/schemas/hooks/v0.2.0.json b/external/app-data/src/schemas/hooks/v0.2.0.json new file mode 100644 index 000000000..53b7ccc4a --- /dev/null +++ b/external/app-data/src/schemas/hooks/v0.2.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hooks/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "default": {}, + "required": [], + "title": "Order interaction hooks", + "description": "Optional Pre and Post order interaction hooks attached to a single order", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "pre": { + "$id": "#/properties/hooks/pre", + "title": "Pre-Hooks", + "description": "CoW Hooks to call before an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.2.0.json#" + } + }, + "post": { + "$id": "#/properties/hooks/post", + "title": "Post-Hooks", + "description": "CoW Hooks to call after an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.2.0.json#" + } + } + } +} diff --git a/external/app-data/src/schemas/orderClass/v0.1.0.json b/external/app-data/src/schemas/orderClass/v0.1.0.json new file mode 100644 index 000000000..dc97fd7d3 --- /dev/null +++ b/external/app-data/src/schemas/orderClass/v0.1.0.json @@ -0,0 +1,33 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "orderClass" + ], + "title": "Order class", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity" + ] + } + } +} diff --git a/external/app-data/src/schemas/orderClass/v0.2.0.json b/external/app-data/src/schemas/orderClass/v0.2.0.json new file mode 100644 index 000000000..4a09255c2 --- /dev/null +++ b/external/app-data/src/schemas/orderClass/v0.2.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "orderClass" + ], + "title": "Order class", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity", + "twap" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity", + "twap" + ] + } + } +} diff --git a/external/app-data/src/schemas/orderClass/v0.3.0.json b/external/app-data/src/schemas/orderClass/v0.3.0.json new file mode 100644 index 000000000..7491429fc --- /dev/null +++ b/external/app-data/src/schemas/orderClass/v0.3.0.json @@ -0,0 +1,30 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "orderClass" + ], + "title": "Order class", + "type": "object", + "additionalProperties": false, + "properties": { + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity", + "twap" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity", + "twap" + ] + } + } +} diff --git a/external/app-data/src/schemas/partnerFee/v0.1.0.json b/external/app-data/src/schemas/partnerFee/v0.1.0.json new file mode 100644 index 000000000..ea8eb5a05 --- /dev/null +++ b/external/app-data/src/schemas/partnerFee/v0.1.0.json @@ -0,0 +1,20 @@ +{ + "$id": "#partnerFee/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["bps", "recipient"], + "title": "Partner fee", + "type": "object", + "additionalProperties": false, + "properties": { + "bps": { + "title": "Basis Point (BPS)", + "description": "The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + }, + "recipient": { + "title": "Partner account", + "description": "The Ethereum address of the partner to receive the fee.", + "$ref": "../definitions.json#/definitions/ethereumAddress" + } + } +} diff --git a/external/app-data/src/schemas/quote/v0.1.0.json b/external/app-data/src/schemas/quote/v0.1.0.json new file mode 100644 index 000000000..905399f15 --- /dev/null +++ b/external/app-data/src/schemas/quote/v0.1.0.json @@ -0,0 +1,34 @@ +{ + "$id": "#quote/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "sellAmount", + "buyAmount", + "version" + ], + "title": "Quote", + "type": "object", + "properties": { + "id": { + "$id": "#/properties/id", + "title": "Quote id", + "examples": [ + "XA23443543534FF" + ], + "type": "string" + }, + "sellAmount": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Quote sell amount" + }, + "buyAmount": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Quote buy amount" + }, + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + } + } +} diff --git a/external/app-data/src/schemas/quote/v0.2.0.json b/external/app-data/src/schemas/quote/v0.2.0.json new file mode 100644 index 000000000..62bc155a3 --- /dev/null +++ b/external/app-data/src/schemas/quote/v0.2.0.json @@ -0,0 +1,22 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["version", "slippageBips"], + "title": "Quote", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.2.0" + }, + "slippageBips": { + "$id": "#/properties/slippageBips", + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS)", + "examples": ["5", "10", "20", "100"], + "pattern": "^\\d+(\\.\\d+)?$", + "type": "string" + } + } +} diff --git a/external/app-data/src/schemas/quote/v0.3.0.json b/external/app-data/src/schemas/quote/v0.3.0.json new file mode 100644 index 000000000..815920510 --- /dev/null +++ b/external/app-data/src/schemas/quote/v0.3.0.json @@ -0,0 +1,18 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["slippageBips"], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "$id": "#/properties/slippageBips", + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS)", + "examples": ["5", "10", "20", "100"], + "pattern": "^\\d+(\\.\\d+)?$", + "type": "string" + } + } +} diff --git a/external/app-data/src/schemas/quote/v1.0.0.json b/external/app-data/src/schemas/quote/v1.0.0.json new file mode 100644 index 000000000..6500a008f --- /dev/null +++ b/external/app-data/src/schemas/quote/v1.0.0.json @@ -0,0 +1,15 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["slippageBips"], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + } + } +} diff --git a/external/app-data/src/schemas/quote/v1.1.0.json b/external/app-data/src/schemas/quote/v1.1.0.json new file mode 100644 index 000000000..160808bd6 --- /dev/null +++ b/external/app-data/src/schemas/quote/v1.1.0.json @@ -0,0 +1,23 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "slippageBips" + ], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + }, + "smartSlippage": { + "title": "Smart Slippage", + "description": "Whether the given slippageBips used is originated from a Smart slippage suggestion", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/external/app-data/src/schemas/referrer/v0.1.0.json b/external/app-data/src/schemas/referrer/v0.1.0.json new file mode 100644 index 000000000..642161973 --- /dev/null +++ b/external/app-data/src/schemas/referrer/v0.1.0.json @@ -0,0 +1,21 @@ +{ + "$id": "#referrer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "address" + ], + "title": "Referrer", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "address": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Referrer address" + } + } +} diff --git a/external/app-data/src/schemas/referrer/v0.2.0.json b/external/app-data/src/schemas/referrer/v0.2.0.json new file mode 100644 index 000000000..635830ce6 --- /dev/null +++ b/external/app-data/src/schemas/referrer/v0.2.0.json @@ -0,0 +1,16 @@ +{ + "$id": "#referrer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "address" + ], + "title": "Referrer", + "type": "object", + "additionalProperties": false, + "properties": { + "address": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Referrer address" + } + } +} diff --git a/external/app-data/src/schemas/replacedOrder/v0.1.0.json b/external/app-data/src/schemas/replacedOrder/v0.1.0.json new file mode 100644 index 000000000..ecba827a9 --- /dev/null +++ b/external/app-data/src/schemas/replacedOrder/v0.1.0.json @@ -0,0 +1,15 @@ +{ + "$id": "#replacedOrder/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["uid"], + "title": "Replaced order", + "type": "object", + "additionalProperties": false, + "properties": { + "uid": { + "title": "Replaced order UID", + "description": "The replaced order UID.", + "$ref": "../definitions.json#/definitions/orderUid" + } + } +} diff --git a/external/app-data/src/schemas/signer/v0.1.0.json b/external/app-data/src/schemas/signer/v0.1.0.json new file mode 100644 index 000000000..aeda275af --- /dev/null +++ b/external/app-data/src/schemas/signer/v0.1.0.json @@ -0,0 +1,7 @@ +{ + "$id": "#signer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Signer", + "description": "The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures." +} diff --git a/external/app-data/src/schemas/utm/v0.1.0.json b/external/app-data/src/schemas/utm/v0.1.0.json new file mode 100644 index 000000000..a9a4d27a0 --- /dev/null +++ b/external/app-data/src/schemas/utm/v0.1.0.json @@ -0,0 +1,54 @@ +{ + "$id": "#utm/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [], + "title": "UTM Codes", + "type": "object", + "properties": { + "utmSource": { + "$id": "#/properties/utmSource", + "title": "UTM Source", + "type": "string", + "examples": [ + "twitter" + ], + "description": "Tracks in which medium the traffic originated from (twitter, facebook, etc.)" + }, + "utmMedium": { + "$id": "#/properties/utmMedium", + "title": "UTM Medium", + "type": "string", + "examples": [ + "email" + ], + "description": "Tracks in which medium the traffic originated from (mail, CPC, social, etc.)" + }, + "utmCampaign": { + "$id": "#/properties/utmCampagin", + "title": "UTM Campaign", + "type": "string", + "examples": [ + "everyone-loves-cows-2023" + ], + "description": "Track the performance of a specific campaign" + }, + "utmContent": { + "$id": "#/properties/utmContent", + "title": "UTM Content", + "type": "string", + "examples": [ + "big-fat-button" + ], + "description": "Track which link was clicked" + }, + "utmTerm": { + "$id": "#/properties/utmTem", + "title": "UTM Keyword Term", + "type": "string", + "examples": [ + "coincidence+of+wants" + ], + "description": "Track which keyword term a website visitor came from" + } + } +} diff --git a/external/app-data/src/schemas/utm/v0.2.0.json b/external/app-data/src/schemas/utm/v0.2.0.json new file mode 100644 index 000000000..ce085c74c --- /dev/null +++ b/external/app-data/src/schemas/utm/v0.2.0.json @@ -0,0 +1,55 @@ +{ + "$id": "#utm/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [], + "title": "UTM Codes", + "type": "object", + "additionalProperties": false, + "properties": { + "utmSource": { + "$id": "#/properties/utmSource", + "title": "UTM Source", + "type": "string", + "examples": [ + "twitter" + ], + "description": "Tracks in which medium the traffic originated from (twitter, facebook, etc.)" + }, + "utmMedium": { + "$id": "#/properties/utmMedium", + "title": "UTM Medium", + "type": "string", + "examples": [ + "email" + ], + "description": "Tracks in which medium the traffic originated from (mail, CPC, social, etc.)" + }, + "utmCampaign": { + "$id": "#/properties/utmCampagin", + "title": "UTM Campaign", + "type": "string", + "examples": [ + "everyone-loves-cows-2023" + ], + "description": "Track the performance of a specific campaign" + }, + "utmContent": { + "$id": "#/properties/utmContent", + "title": "UTM Content", + "type": "string", + "examples": [ + "big-fat-button" + ], + "description": "Track which link was clicked" + }, + "utmTerm": { + "$id": "#/properties/utmTem", + "title": "UTM Keyword Term", + "type": "string", + "examples": [ + "coincidence+of+wants" + ], + "description": "Track which keyword term a website visitor came from" + } + } +} diff --git a/external/app-data/src/schemas/v0.1.0.json b/external/app-data/src/schemas/v0.1.0.json new file mode 100644 index 000000000..2d17438e9 --- /dev/null +++ b/external/app-data/src/schemas/v0.1.0.json @@ -0,0 +1,40 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.10.0.json b/external/app-data/src/schemas/v0.10.0.json new file mode 100644 index 000000000..af27492d3 --- /dev/null +++ b/external/app-data/src/schemas/v0.10.0.json @@ -0,0 +1,69 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.10.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.10.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.11.0.json b/external/app-data/src/schemas/v0.11.0.json new file mode 100644 index 000000000..5dcd00f12 --- /dev/null +++ b/external/app-data/src/schemas/v0.11.0.json @@ -0,0 +1,62 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.11.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.2.0.json b/external/app-data/src/schemas/v0.2.0.json new file mode 100644 index 000000000..a8c2dd664 --- /dev/null +++ b/external/app-data/src/schemas/v0.2.0.json @@ -0,0 +1,43 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.2.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.3.0.json b/external/app-data/src/schemas/v0.3.0.json new file mode 100644 index 000000000..ebdd17689 --- /dev/null +++ b/external/app-data/src/schemas/v0.3.0.json @@ -0,0 +1,55 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.3.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.3.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.4.0.json b/external/app-data/src/schemas/v0.4.0.json new file mode 100644 index 000000000..5c215212f --- /dev/null +++ b/external/app-data/src/schemas/v0.4.0.json @@ -0,0 +1,55 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.4.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.4.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.5.0.json b/external/app-data/src/schemas/v0.5.0.json new file mode 100644 index 000000000..413e3c6d3 --- /dev/null +++ b/external/app-data/src/schemas/v0.5.0.json @@ -0,0 +1,58 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.5.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.5.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.6.0.json b/external/app-data/src/schemas/v0.6.0.json new file mode 100644 index 000000000..83db135cc --- /dev/null +++ b/external/app-data/src/schemas/v0.6.0.json @@ -0,0 +1,61 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.6.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.6.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "utm": { + "$ref": "utm/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.7.0.json b/external/app-data/src/schemas/v0.7.0.json new file mode 100644 index 000000000..f044f0d2e --- /dev/null +++ b/external/app-data/src/schemas/v0.7.0.json @@ -0,0 +1,61 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.7.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "utm": { + "$ref": "utm/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.2.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.8.0.json b/external/app-data/src/schemas/v0.8.0.json new file mode 100644 index 000000000..9cb15c5fd --- /dev/null +++ b/external/app-data/src/schemas/v0.8.0.json @@ -0,0 +1,63 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.8.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v0.9.0.json b/external/app-data/src/schemas/v0.9.0.json new file mode 100644 index 000000000..c253f1d56 --- /dev/null +++ b/external/app-data/src/schemas/v0.9.0.json @@ -0,0 +1,66 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.9.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v1.0.0.json b/external/app-data/src/schemas/v1.0.0.json new file mode 100644 index 000000000..0add611c5 --- /dev/null +++ b/external/app-data/src/schemas/v1.0.0.json @@ -0,0 +1,65 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.11.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.0.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v1.1.0.json b/external/app-data/src/schemas/v1.1.0.json new file mode 100644 index 000000000..319227684 --- /dev/null +++ b/external/app-data/src/schemas/v1.1.0.json @@ -0,0 +1,68 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.0.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/v1.2.0.json b/external/app-data/src/schemas/v1.2.0.json new file mode 100644 index 000000000..ad463b7b0 --- /dev/null +++ b/external/app-data/src/schemas/v1.2.0.json @@ -0,0 +1,78 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "1.2.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.1.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} \ No newline at end of file diff --git a/external/app-data/src/schemas/v1.3.0.json b/external/app-data/src/schemas/v1.3.0.json new file mode 100644 index 000000000..10d614a3c --- /dev/null +++ b/external/app-data/src/schemas/v1.3.0.json @@ -0,0 +1,78 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.3.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "1.3.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.1.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.2.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} diff --git a/external/app-data/src/schemas/widget/v0.1.0.json b/external/app-data/src/schemas/widget/v0.1.0.json new file mode 100644 index 000000000..b5f14f4b9 --- /dev/null +++ b/external/app-data/src/schemas/widget/v0.1.0.json @@ -0,0 +1,24 @@ +{ + "$id": "#widget/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["appCode"], + "title": "Widget", + "type": "object", + "additionalProperties": false, + "properties": { + "appCode": { + "$id": "#/properties/appCodeWidget", + "description": "The code identifying the UI powering the widget", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environmentWidget", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + } + } +} diff --git a/external/app-data/src/scripts/compile.ts b/external/app-data/src/scripts/compile.ts new file mode 100644 index 000000000..c775dba56 --- /dev/null +++ b/external/app-data/src/scripts/compile.ts @@ -0,0 +1,136 @@ +import * as fs from 'fs' +import $RefParser from 'json-schema-ref-parser' +import { compileFromFile } from 'json-schema-to-typescript' +import * as path from 'path' +import semverSort from 'semver-sort' + +const SCHEMAS_SRC_PATH = path.join('src', 'schemas') +const SCHEMAS_DEST_PATH = 'schemas' +const TYPES_DEST_PATH = path.join('src', 'generatedTypes') + +async function compile(): Promise { + // Creates destinations dirs + console.info(`Creating '${TYPES_DEST_PATH}' and '${SCHEMAS_DEST_PATH}' dirs`) + await fs.promises.mkdir(TYPES_DEST_PATH, { recursive: true }) + await fs.promises.mkdir(SCHEMAS_DEST_PATH) + + // Generates out file for types/index.ts + const typesIndexPath = path.join(TYPES_DEST_PATH, 'index.ts') + console.info(`Creating ${typesIndexPath} file`) + const typesIndexFile = await fs.promises.open(typesIndexPath, 'w') + + // Generates out file for types/latest.ts + const latestIndexPath = path.join(TYPES_DEST_PATH, 'latest.ts') + const latestIndexFile = await fs.promises.open(latestIndexPath, 'w') + + const generatedFiles = [typesIndexFile, latestIndexFile] + await generatedFiles.forEach(async (file) => { + file.write(`// generated file, do not edit manually\n\n`) + }) + + // Lists all schemas + const schemas = await fs.promises.readdir(SCHEMAS_SRC_PATH, { withFileTypes: true }) + const versions: string[] = [] + + for (const schemaFileName of schemas) { + // Ignores folders and non version schemas + if (!schemaFileName.isFile() || !/^v\d+\.\d+\.\d+\.json$/.test(schemaFileName.name)) continue + + // Extracts version from file name + const [version] = schemaFileName.name.split('.json') + versions.push(version) + + // Get schema path relative to repo root + const schemaPath = path.join(SCHEMAS_SRC_PATH, schemaFileName.name) + + // Compiles schema files de-referencing `$ref`s + console.info(`Compiling bundled schema file for ${schemaPath}`) + const newSchemaFile = await $RefParser.bundle(schemaPath) + await fs.promises.writeFile(path.join(SCHEMAS_DEST_PATH, `${version}.json`), JSON.stringify(newSchemaFile)) + + // Compiles schema onto ts type declarations + console.info(`Compiling ts typings for ${schemaPath}`) + const tsFile = await compileFromFile(schemaPath, { cwd: SCHEMAS_SRC_PATH }) + await fs.promises.writeFile(path.join(TYPES_DEST_PATH, `${version}.ts`), tsFile) + + // Add export on types/index.ts for this version + console.info(`Adding ts export for ${version}`) + const exportName = version.replace(/\./g, '_') + const versionImportPath = `./${version}` + await typesIndexFile.write(`import * as ${exportName} from '${versionImportPath}'\n`) + } + + // Select latest version and also expose all versions + if (versions.length) { + const latest = semverSort.desc(versions)[0] + const latestExport = versionNameToExport(latest) + const allVersions = versions.map((version) => `\n | ${versionNameToExport(version)}.AppDataRootSchema`).join('') + const latestQuoteVersion = await getLatestMetadataDocVersion('quote') + const latestReferrerVersion = await getLatestMetadataDocVersion('referrer') + const latestOrderClassVersion = await getLatestMetadataDocVersion('orderClass') + const latestUtmVersion = await getLatestMetadataDocVersion('utm') + const latestHooksVersion = await getLatestMetadataDocVersion('hooks') + const latestSignerVersion = await getLatestMetadataDocVersion('signer') + const latestWidgetVersion = await getLatestMetadataDocVersion('widget') + const latestPartnerFeeVersion = await getLatestMetadataDocVersion('partnerFee') + const latestReplacedOrderVersion = await getLatestMetadataDocVersion('replacedOrder') + + const additionalTypesExport = ` +export * from './latest' + +export const LATEST_APP_DATA_VERSION = '${extractSemver(latest)}' +export const LATEST_QUOTE_METADATA_VERSION = '${extractSemver(latestQuoteVersion)}' +export const LATEST_REFERRER_METADATA_VERSION = '${extractSemver(latestReferrerVersion)}' +export const LATEST_ORDER_CLASS_METADATA_VERSION = '${extractSemver(latestOrderClassVersion)}' +export const LATEST_UTM_METADATA_VERSION = '${extractSemver(latestUtmVersion)}' +export const LATEST_HOOKS_METADATA_VERSION = '${extractSemver(latestHooksVersion)}' +export const LATEST_SIGNER_METADATA_VERSION = '${extractSemver(latestSignerVersion)}' +export const LATEST_WIDGET_METADATA_VERSION = '${extractSemver(latestWidgetVersion)}' +export const LATEST_PARTNER_FEE_METADATA_VERSION = '${extractSemver(latestPartnerFeeVersion)}' +export const LATEST_REPLACED_ORDER_METADATA_VERSION = '${extractSemver(latestReplacedOrderVersion)}' + +export type LatestAppDataDocVersion = ${latestExport}.AppDataRootSchema +export type AnyAppDataDocVersion = ${allVersions} + +export {${versions.map((version) => `\n ${versionNameToExport(version)}`)} +} +` + // Writes exports to types/index.ts + await typesIndexFile.write(additionalTypesExport) + + // Writes exports to types/latest.ts + await latestIndexFile.write(`export * as latest from './${latest}'\n`) + } + + // Closes all files + for (const file of generatedFiles) { + await file.close() + } +} + +compile().then(() => console.log('Done')) + +function versionNameToExport(name: string): string { + return name.replace(/\./g, '_') +} + +function extractSemver(name: string): string { + return /(\d+\.\d+\.\d+)/.exec(name)?.[0] || '' +} + +async function getLatestMetadataDocVersion( + metadataDocName: + | 'quote' + | 'referrer' + | 'orderClass' + | 'utm' + | 'hooks' + | 'signer' + | 'widget' + | 'partnerFee' + | 'replacedOrder' +): Promise { + const metadataPath = path.join(SCHEMAS_SRC_PATH, metadataDocName) + const versions = await fs.promises.readdir(metadataPath) + return semverSort.desc(versions)[0] +} diff --git a/external/app-data/src/types.ts b/external/app-data/src/types.ts new file mode 100644 index 000000000..34483f982 --- /dev/null +++ b/external/app-data/src/types.ts @@ -0,0 +1,41 @@ +import { latest } from './generatedTypes' + +export type AppDataParams = Partial> + +export type IpfsHashInfo = { + /** + * IPFS's content identifier + * See https://docs.ipfs.io/concepts/content-addressing/#identifier-formats + */ + cid: string + + /** + * Full appData content. It will be a the exact string that if hashed using keccak-256 you would get the returned appDataHex + */ + appDataContent: string + + /** + * appData hex for CoW Orders. Its value is the multihash part of the IPFS CID, therefore it points to a IPFS document. + * Because its just the multihash, it doesn't have any infomation regarding the encoding and hashing algorithm. These parts are implicit. + * + * Currently, the implicit encoding is base16 and the implicit hashing algorithm is keccak256. + * See https://github.com/cowprotocol/app-data/blob/app-data-v1/src/api/appDataToCid.ts#L102 + * + * Previous versions used a different encoding and hashing algorithm (base58btc, dag-pb, sha2-256) + * + */ + appDataHex: string +} + +export interface Ipfs { + uri?: string + writeUri?: string + readUri?: string + pinataApiKey?: string + pinataApiSecret?: string +} + +export type ValidationResult = { + success: boolean + errors?: string +} diff --git a/external/app-data/src/utils/ipfs.ts b/external/app-data/src/utils/ipfs.ts new file mode 100644 index 000000000..86245200d --- /dev/null +++ b/external/app-data/src/utils/ipfs.ts @@ -0,0 +1,36 @@ +import type { CID, MultibaseDecoder } from 'multiformats/cid' + +// CID uses multibase to self-describe the encoding used (See https://github.com/multiformats/multibase) +// - Most reference implementations (multiformats/cid or Pinata, etc) use base58btc encoding +// - However, the backend uses base16 encoding (See https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs#L64) +const MULTIBASE_BASE16 = 'f' + +export async function parseCid(ipfsHash: string): Promise { + const { CID } = await import('multiformats/cid') + + const decoder = await getDecoder(ipfsHash) + return CID.parse(ipfsHash, decoder) +} + +export async function decodeCid(bytes: Uint8Array): Promise { + const { CID } = await import('multiformats/cid') + return CID.decode(bytes) +} + +async function getDecoder(ipfsHash: string): Promise | undefined> { + if (ipfsHash[0] === MULTIBASE_BASE16) { + // Base 16 encoding + const { base16 } = await import('multiformats/bases/base16') + return base16 + } + + // Use default decoder (base58btc) + return undefined +} + +export async function extractDigest(cid: string): Promise { + const cidDetails = await parseCid(cid) + const { digest } = cidDetails.multihash + + return `0x${Buffer.from(digest).toString('hex')}` +} diff --git a/external/app-data/src/utils/stringify.ts b/external/app-data/src/utils/stringify.ts new file mode 100644 index 000000000..68f1825f7 --- /dev/null +++ b/external/app-data/src/utils/stringify.ts @@ -0,0 +1,4 @@ +export async function stringifyDeterministic(obj: any): Promise { + const { default: stringify } = await import('json-stringify-deterministic') + return stringify(obj) +} diff --git a/external/app-data/src/workflows/publish.sh b/external/app-data/src/workflows/publish.sh new file mode 100755 index 000000000..7bc1aa543 --- /dev/null +++ b/external/app-data/src/workflows/publish.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -o nounset +set -o pipefail +set -o errexit + +fail_if_unset() { + local var_name="$1" + if [[ -z "${!var_name:-""}" ]]; then + printf '%s not set\n' "$var_name" >&2 + exit 1 + fi +} + +package_exists() { + npm view --json "$1" &>/dev/null +} + +fail_if_unset NODE_AUTH_TOKEN + +package_name="$(jq --raw-output .name ./package.json)" +version="$(jq --raw-output .version ./package.json)" + +if package_exists "$package_name" && grep --silent --line-regexp --fixed-strings -- "$version" \ + <(npm view --json "$package_name" | jq '.versions[] | .' --raw-output); then + echo "Version $version already published" + exit 1 +fi + +version_tag="v$version" +if ! git fetch --end-of-options origin "refs/tags/$version_tag" 2>/dev/null; then + echo "Tag $version_tag is not created. Create the Release first." + exit 1 +fi + +latest_tag="$(git describe --tags --abbrev=0)" +if ! [ "$version_tag" = "$latest_tag" ]; then + echo "Latest tag $latest_tag version doesn't match package.json version $version" + exit 1 +fi + +npm publish --access public + +echo "Package $package_name version $version successfully published." diff --git a/external/app-data/test/schema.spec.ts b/external/app-data/test/schema.spec.ts new file mode 100644 index 000000000..fd8b95945 --- /dev/null +++ b/external/app-data/test/schema.spec.ts @@ -0,0 +1,1040 @@ +import Ajv, { ValidateFunction } from 'ajv' + +import schemaV0_1_0 from '../schemas/v0.1.0.json' +import schemaV0_10_0 from '../schemas/v0.10.0.json' +import schemaV0_11_0 from '../schemas/v0.11.0.json' +import schemaV0_2_0 from '../schemas/v0.2.0.json' +import schemaV0_3_0 from '../schemas/v0.3.0.json' +import schemaV0_4_0 from '../schemas/v0.4.0.json' +import schemaV0_5_0 from '../schemas/v0.5.0.json' +import schemaV0_6_0 from '../schemas/v0.6.0.json' +import schemaV0_9_0 from '../schemas/v0.9.0.json' +import schemaV1_0_0 from '../schemas/v1.0.0.json' +import schemaV1_1_0 from '../schemas/v1.1.0.json' +import schemaV1_2_0 from '../schemas/v1.2.0.json' + +const ADDRESS = '0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9' +const REFERRER_V0_1_0 = { address: ADDRESS, version: '0.1.0' } +const REFERRER_V0_2_0 = { address: ADDRESS } +const ORDER_CLASS_V0_1_0 = { orderClass: 'limit', version: '0.1.0' } +const ORDER_CLASS_V0_3_0 = { orderClass: 'twap' } +const QUOTE_V0_1_0 = { sellAmount: '123123', buyAmount: '1314123', version: '0.1.0' } +const QUOTE_V0_2_0 = { slippageBips: '1', version: '0.2.0' } +const QUOTE_V0_3_0 = { slippageBips: '1' } +const UTM_V0_2_0 = { + utmSource: 'google', + utmMedium: 'cpc', + utmCampaign: 'campaign', + utmContent: 'content', +} + +const MISSING_VERSION_ERROR = [ + { + instancePath: '', + keyword: 'required', + message: "must have required property 'version'", + params: { missingProperty: 'version' }, + schemaPath: '#/required', + }, +] + +describe('Schema v0.1.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_1_0) + + const BASE_DOCUMENT = { + version: '0.1.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With referrer metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + }, + }) + ) + + test( + 'With invalid referrer metadata', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: { address: '0xas', version: '0.1.0' }, + }, + }, + [ + { + instancePath: '/metadata/referrer/address', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/referrer/properties/address/pattern', + }, + ] + ) + ) +}) + +describe('Schema v0.2.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_2_0) + + const BASE_DOCUMENT = { + version: '0.2.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With referrer v0.1.0 and quote v0.1.0 metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }) + ) + + test( + 'With invalid quote metadata v0.1.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + quote: { sellAmount: 'xx12d', buyAmount: 0.13, version: '0.1.0' }, + }, + }, + [ + { + instancePath: '/metadata/quote/sellAmount', + keyword: 'pattern', + message: 'must match pattern "^\\d+$"', + params: { pattern: '^\\d+$' }, + schemaPath: '#/properties/metadata/properties/quote/properties/buyAmount/pattern', + }, + ] + ) + ) +}) + +describe('Schema v0.3.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_3_0) + + const BASE_DOCUMENT = { + version: '0.3.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With environment and full metadata (both v0.1.0)', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }) + ) +}) + +describe('Schema v0.4.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_4_0) + + const BASE_DOCUMENT = { + version: '0.4.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With quote metadata v0.2.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + }, + }) + ) + + test( + 'With invalid quote metadata v0.2.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) +}) + +describe('Schema v0.5.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_5_0) + + const BASE_DOCUMENT = { + version: '0.5.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With order class v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + orderClass: ORDER_CLASS_V0_1_0, + }, + }) + ) + + test( + 'With invalid order class v0.1.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + orderClass: { orderClass: 'mooo', version: '0.1.0' }, // Invalid value + }, + }, + [ + { + instancePath: '/metadata/orderClass/orderClass', + keyword: 'enum', + message: 'must be equal to one of the allowed values', + params: { allowedValues: ['market', 'limit', 'liquidity'] }, + schemaPath: '#/properties/metadata/properties/orderClass/properties/orderClass/enum', + }, + ] + ) + ) +}) + +describe('Schema v0.6.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_6_0) + + const BASE_DOCUMENT = { + version: '0.6.0', + metadata: {}, + } + + test( + 'UTM Source', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmSource: 'twitter', + }, + }) + ) + + test( + 'UTM Medium', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmMedium: 'email', + }, + }) + ) + + test( + 'UTM Campaign', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmCampaign: 'everyone-loves-cows-2023', + }, + }) + ) + + test( + 'UTM Content', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmContent: 'big-fat-button', + }, + }) + ) + + test( + 'UTM Term', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmTerm: 'coincidence+of+wants', + }, + }) + ) + + test( + 'UTM all at once', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmSource: 'twitter', + utmMedium: 'email', + utmCampaign: 'everyone-loves-cows-2023', + utmContent: 'big-fat-button', + utmTerm: 'coincidence+of+wants', + }, + }) + ) +}) + +describe('Schema v0.9.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_9_0) + + const BASE_DOCUMENT = { + version: '0.9.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With minimal hooks v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { hooks: {} }, + }) + ) + + test( + 'With pre-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With post-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With pre- and post-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + ], + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With hooks and full metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + quote: QUOTE_V0_3_0, + referrer: REFERRER_V0_2_0, + orderClass: ORDER_CLASS_V0_3_0, + utm: UTM_V0_2_0, + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + ], + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With missing required hook fields', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + gasLimit: '10000', + }, + ], + }, + }, + }, + [ + { + instancePath: '/metadata/hooks/pre/0', + keyword: 'required', + message: "must have required property 'callData'", + params: { missingProperty: 'callData' }, + schemaPath: '#/properties/metadata/properties/hooks/properties/pre/items/required', + }, + ] + ) + ) +}) + +describe('Schema v0.10.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_10_0) + + const BASE_DOCUMENT = { + version: '0.10.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With signer v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { signer: ADDRESS }, + }) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: '0xinvalid', + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/signer/pattern', + }, + ] + ) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: { address: ADDRESS }, + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'type', + message: 'must be string', + params: { type: 'string' }, + schemaPath: '#/properties/metadata/properties/signer/type', + }, + ] + ) + ) +}) + +describe('Schema v0.11.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_11_0) + + const BASE_DOCUMENT = { + version: '0.11.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With widget v0.11.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { widget: { appCode: 'Pig Swap', environment: 'production' } }, + }) + ) + + test( + 'With widget and no environment v0.11.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { widget: { appCode: 'Pig Swap' } }, + }) + ) + + test( + 'Widget with no appCode v0.11.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + widget: { + environment: 'production', + }, + }, + }, + [ + { + instancePath: '/metadata/widget', + keyword: 'required', + message: "must have required property 'appCode'", + params: { missingProperty: 'appCode' }, + schemaPath: '#/properties/metadata/properties/widget/required', + }, + ] + ) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: '0xinvalid', + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/signer/pattern', + }, + ] + ) + ) +}) + +describe('Schema v1.0.0: Add partner fee', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_0_0) + + const BASE_DOCUMENT = { + version: '1.0.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'Valid partner fee', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 50, recipient: ADDRESS } }, + }) + ) + + test( + 'Valid zero partner fee', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 0, recipient: ADDRESS } }, + }) + ) + + test( + 'Invalid partner fee: missing bps', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee', + keyword: 'required', + message: "must have required property 'bps'", + params: { missingProperty: 'bps' }, + schemaPath: '#/properties/metadata/properties/partnerFee/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing recipient', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 50 } }, + }, + [ + { + instancePath: '/metadata/partnerFee', + keyword: 'required', + message: "must have required property 'recipient'", + params: { missingProperty: 'recipient' }, + schemaPath: '#/properties/metadata/properties/partnerFee/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: BIPs is too low (negative)', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: -1, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'minimum', + message: 'must be >= 0', + params: { + comparison: '>=', + limit: 0, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/minimum', + }, + ] + ) + ) + + test( + 'Invalid partner fee: BIPs is too high (over 100%)', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 10001, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'maximum', + message: 'must be <= 10000', + params: { + comparison: '<=', + limit: 10000, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/maximum', + }, + ] + ) + ) + + test( + "Invalid partner fee: BIPs don't allow decimals", + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 10.5, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'type', + message: 'must be integer', + params: { + type: 'integer', + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/type', + }, + ] + ) + ) +}) + +describe('Schema v1.0.0: Update quote definition', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_0_0) + + const BASE_DOCUMENT = { + version: '1.0.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'Valid quote', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 50 } }, + }) + ) + + test( + 'Valid quote, with zero slippage', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 0 } }, + }) + ) + + test( + 'Valid quote, with maximum slippage (10,000)', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 10000 } }, + }) + ) + + test( + 'Invalid partner fee: unknown field', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: {} }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: -1 } }, + }, + [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'minimum', + message: 'must be >= 0', + params: { + comparison: '>=', + limit: 0, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/minimum', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 100001 } }, + }, + [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'maximum', + message: 'must be <= 10000', + params: { + comparison: '<=', + limit: 10000, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/maximum', + }, + ] + ) + ) +}) + +describe('Schema v1.1.0: Add replaced order', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_1_0) + + const BASE_DOCUMENT = { + version: '1.1.0', + metadata: {}, + } + + test( + 'Valid order id', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + replacedOrder: { + uid: '0xff2e2e54d178997f173266817c1e9ed6fee1a1aae4b43971c53b543cffcc2969845c6f5599fbb25dbdd1b9b013daf85c03f3c63763e4bc4a', + }, + }, + }) + ) + + test( + 'Invalid order id length', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { replacedOrder: { uid: '0xgogogog' } }, + }, + [ + { + instancePath: '/metadata/replacedOrder/uid', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{112}$"', + params: { pattern: '^0x[a-fA-F0-9]{112}$' }, + schemaPath: '#/properties/metadata/properties/replacedOrder/properties/uid/pattern', + }, + ] + ) + ) + + test( + 'Invalid order id length', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { replacedOrder: {} }, + }, + [ + { + instancePath: '/metadata/replacedOrder', + keyword: 'required', + message: "must have required property 'uid'", + params: { missingProperty: 'uid' }, + schemaPath: '#/properties/metadata/properties/replacedOrder/required', + }, + ] + ) + ) +}) + +describe('Schema v1.2.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_2_0) + + const BASE_DOCUMENT = { + version: '1.2.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('With quote metadata v1.1.0', () => { + const validQuote = { + slippageBips: 5, + smartSlippage: true, + } + + const validDocument = { + ...BASE_DOCUMENT, + metadata: { + quote: validQuote, + }, + } + + expect(validator(validDocument)).toBe(true) + }) + + test('With valid metadata (without smartSlippage)', () => { + const quote = { + slippageBips: 5, + } + + const validDocument = { + ...BASE_DOCUMENT, + metadata: { + quote, + }, + } + + expect(validator(validDocument)).toBe(true) + }) + + test('With invalid quote metadata (invalid slippageBips)', () => { + const invalidQuote = { + slippageBips: 'invalid', + smartSlippage: true, + } + + const invalidDocument = { + ...BASE_DOCUMENT, + metadata: { + quote: invalidQuote, + }, + } + + const errors = [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'pattern', + message: 'must match pattern "^\\d+$"', + params: { pattern: '^\\d+$' }, + schemaPath: '#/properties/metadata/properties/quote/properties/slippageBips/pattern', + }, + ] + + expect(_buildAssertInvalidFn(validator, invalidDocument, errors)).toBeTruthy() + }) +}) + +function _buildAssertValidFn(validator: ValidateFunction, doc: any) { + return () => { + // when + const actual = validator(doc) + // then + expect(validator.errors).toBeFalsy() + expect(actual).toBeTruthy() + } +} + +function _buildAssertInvalidFn(validator: ValidateFunction, doc: any, errors: any) { + return () => { + // when + const actual = validator(doc) + // then + expect(actual).toBeFalsy() + expect(validator.errors).toEqual(errors) + } +} diff --git a/external/app-data/tsconfig.json b/external/app-data/tsconfig.json new file mode 100644 index 000000000..826a5b38a --- /dev/null +++ b/external/app-data/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext", + "target": "ESNext", + "strict": true, + "alwaysStrict": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true, + "skipLibCheck": true, + "baseUrl": "src" + } +} diff --git a/external/app-data/yarn.lock b/external/app-data/yarn.lock new file mode 100644 index 000000000..59d2a9ecd --- /dev/null +++ b/external/app-data/yarn.lock @@ -0,0 +1,6701 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apidevtools/json-schema-ref-parser@9.0.9": + version "9.0.9" + resolved "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz" + integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== + +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.12.10": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz" + integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helpers" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.6": + version "7.18.7" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz" + integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A== + dependencies: + "@babel/types" "^7.18.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz" + integrity sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.12.1", "@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz" + integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz" + integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz" + integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz" + integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz" + integrity sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz" + integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== + +"@babel/helper-plugin-utils@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz" + integrity sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-wrap-function" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-replace-supers@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz" + integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz" + integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz" + integrity sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw== + dependencies: + "@babel/helper-function-name" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helpers@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + +"@babel/parser@^7.18.6", "@babel/parser@^7.3.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz" + integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== + +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz" + integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + +"@babel/plugin-proposal-async-generator-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz" + integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz" + integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz" + integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.6" + +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.18.8" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz" + integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz" + integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-classes@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz" + integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz" + integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-destructuring@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz" + integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz" + integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.18.6.tgz" + integrity sha512-wE0xtA7csz+hw4fKPwxmu5jnzAsXPIO57XnRwzXP3T19jWh1BODnPGoG9xKYwvAwusP7iUktHayRFbMPGtODaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz" + integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz" + integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== + dependencies: + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz" + integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz" + integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-identifier" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz" + integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.18.6.tgz" + integrity sha512-Mz7xMPxoy9kPS/JScj6fJs03TZ/fZ1dJPlMjRAgTaxaS0fUBk8FV/A2rRgfPsVCZqALNwMexD+0Uaf5zlcKPpw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz" + integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz" + integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz" + integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz#303feb7a920e650f2213ef37b36bbf327e6fa5a0" + integrity sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-typescript" "^7.18.6" + +"@babel/plugin-transform-unicode-escapes@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.12.11": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz" + integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.6" + "@babel/plugin-transform-classes" "^7.18.6" + "@babel/plugin-transform-computed-properties" "^7.18.6" + "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.6" + "@babel/plugin-transform-function-name" "^7.18.6" + "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.6" + "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.6" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-env@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.9" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-flow@^7.12.1": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.10": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz" + integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.4.4": + version "7.18.7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz" + integrity sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.4.3.tgz#1f25a99f7f860e4c46423b5b1038262466fadde1" + integrity sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A== + dependencies: + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.4.3" + jest-util "^29.4.3" + slash "^3.0.0" + +"@jest/core@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.4.3.tgz#829dd65bffdb490de5b0f69e97de8e3b5eadd94b" + integrity sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ== + dependencies: + "@jest/console" "^29.4.3" + "@jest/reporters" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.4.3" + jest-config "^29.4.3" + jest-haste-map "^29.4.3" + jest-message-util "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-resolve-dependencies "^29.4.3" + jest-runner "^29.4.3" + jest-runtime "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" + jest-watcher "^29.4.3" + micromatch "^4.0.4" + pretty-format "^29.4.3" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.4.3.tgz#9fe2f3169c3b33815dc4bd3960a064a83eba6548" + integrity sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA== + dependencies: + "@jest/fake-timers" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + jest-mock "^29.4.3" + +"@jest/expect-utils@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.3.tgz#95ce4df62952f071bcd618225ac7c47eaa81431e" + integrity sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.4.3.tgz#d31a28492e45a6bcd0f204a81f783fe717045c6e" + integrity sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ== + dependencies: + expect "^29.4.3" + jest-snapshot "^29.4.3" + +"@jest/fake-timers@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.4.3.tgz#31e982638c60fa657d310d4b9d24e023064027b0" + integrity sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw== + dependencies: + "@jest/types" "^29.4.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.4.3" + jest-mock "^29.4.3" + jest-util "^29.4.3" + +"@jest/globals@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.4.3.tgz#63a2c4200d11bc6d46f12bbe25b07f771fce9279" + integrity sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/expect" "^29.4.3" + "@jest/types" "^29.4.3" + jest-mock "^29.4.3" + +"@jest/reporters@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.4.3.tgz#0a68a0c0f20554760cc2e5443177a0018969e353" + integrity sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" + "@jridgewell/trace-mapping" "^0.3.15" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.4.3" + jest-util "^29.4.3" + jest-worker "^29.4.3" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/source-map@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" + integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.15" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.4.3.tgz#e13d973d16c8c7cc0c597082d5f3b9e7f796ccb8" + integrity sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA== + dependencies: + "@jest/console" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.4.3.tgz#0862e876a22993385a0f3e7ea1cc126f208a2898" + integrity sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw== + dependencies: + "@jest/test-result" "^29.4.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.3" + slash "^3.0.0" + +"@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.3" + "@jridgewell/trace-mapping" "^0.3.13" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + +"@jest/transform@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.4.3.tgz#f7d17eac9cb5bb2e1222ea199c7c7e0835e0c037" + integrity sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.4.3" + "@jridgewell/trace-mapping" "^0.3.15" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.3" + jest-regex-util "^29.4.3" + jest-util "^29.4.3" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.3.tgz#9069145f4ef09adf10cec1b2901b2d390031431f" + integrity sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.15": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jridgewell/trace-mapping@^0.3.17": + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@rollup/plugin-alias@^3.1.1": + version "3.1.9" + resolved "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz" + integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== + dependencies: + slash "^3.0.0" + +"@rollup/plugin-babel@^5.2.2": + version "5.3.1" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-commonjs@^17.0.0": + version "17.1.0" + resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz" + integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^11.0.1": + version "11.2.1" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rollup/pluginutils@^4.1.2": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@sinclair/typebox@^0.24.1": + version "0.24.20" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" + integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ== + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.2": + version "2.2.3" + resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/estree@*": + version "0.0.52" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.52.tgz" + integrity sha512-BZWrtCU0bMVAIliIV+HJO1f1PR41M7NKjfxrFJwwhKI1KwhwOxYw1SXg9ao+CIMt774nFuGiG6eU+udtbEI9oQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@*": + version "7.2.0" + resolved "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.4.0": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" + integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@^7.0.6": + version "7.0.11" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/lodash@^4.14.168": + version "4.14.182" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.182.tgz" + integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/minimist@^1.2.0": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + +"@types/node@*": + version "18.0.0" + resolved "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + +"@types/node@>=13.7.0": + version "18.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.14.6.tgz#ae1973dd2b1eeb1825695bb11ebfb746d27e3e93" + integrity sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA== + +"@types/normalize-package-data@^2.4.0": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" + integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.5": + version "2.6.3" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/semver-sort@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@types/semver-sort/-/semver-sort-0.0.1.tgz#1a4ffd49cfe7c2705f01baae5ce2005dc960d702" + integrity sha512-abYNwum55FpJWDxcWjT1eNI3J5/KXS7cWY7KUgbr/l/vn/5vaB1ejUpipLPZba8BvdbJBAJCWIXfJYZvc4SwTA== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== + dependencies: + "@types/yargs-parser" "*" + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1, acorn@^8.5.0: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +ajv@^8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asyncro@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/asyncro/-/asyncro-3.0.0.tgz" + integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== + +autoprefixer@^10.1.0: + version "10.4.7" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== + dependencies: + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== + dependencies: + "@jest/transform" "^28.1.3" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-jest@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.4.3.tgz#478b84d430972b277ad67dd631be94abea676792" + integrity sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw== + dependencies: + "@jest/transform" "^29.4.3" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.4.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-jest-hoist@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.4.3.tgz#ad1dfb5d31940957e00410ef7d9b2aa94b216101" + integrity sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-plugin-transform-async-to-promises@^0.8.18: + version "0.8.18" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz#f4dc5980b8afa0fc9c784b8d931afde913413e39" + integrity sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw== + +babel-plugin-transform-replace-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz" + integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== + dependencies: + "@babel/parser" "^7.3.3" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== + dependencies: + babel-plugin-jest-hoist "^28.1.3" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-jest@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.4.3.tgz#bb926b66ae253b69c6e3ef87511b8bb5c53c5b52" + integrity sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw== + dependencies: + babel-plugin-jest-hoist "^29.4.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +brotli-size@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/brotli-size/-/brotli-size-4.0.0.tgz" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + dependencies: + duplexer "0.1.1" + +browserslist@^4.0.0, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.0: + version "4.21.1" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz" + integrity sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ== + dependencies: + caniuse-lite "^1.0.30001359" + electron-to-chromium "^1.4.172" + node-releases "^2.0.5" + update-browserslist-db "^1.0.4" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" + integrity sha512-wCyFsDQkKPwwF8BDwOiWNx/9K45L/hvggQiDbve+viMNMQnWhrlYIuBk09offfwCRtCO9P6XwUttufzU11WCVw== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001359: + version "1.0.30001361" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001361.tgz" + integrity sha512-ybhCrjNtkFji1/Wto6SSJKkWk6kZgVQsDq5QI83SafsF6FXv2JB4df9eEdH6g8sdGgqTXrFLjAxqBGgYoU3azQ== + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +cli-color@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/cli-color/-/cli-color-2.0.2.tgz" + integrity sha512-g4JYjrTW9MGtCziFNjkqp3IMpGhnJyeB0lOtRPjQkYhXzKYr6tYnXKyEVnMzITxhpbahsEW9KsxOYIDKwcsIBw== + dependencies: + d "^1.0.1" + es5-ext "^0.10.59" + es6-iterator "^2.0.3" + memoizee "^0.4.15" + timers-ext "^0.1.7" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-with-sourcemaps@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.3" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.3.tgz" + integrity sha512-WSzUs2h2vvmKsacLHNTdpyOC9k43AEhcGoFlVgCY4L7aw98oSBKtPL6vD0/TqZjRWRQYdDSLkzZIni4Crbbiqw== + dependencies: + browserslist "^4.21.0" + semver "7.0.0" + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.0.4, cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz" + integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.12: + version "5.2.12" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz" + integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== + dependencies: + css-declaration-sorter "^6.3.0" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.2" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.6" + postcss-merge-rules "^5.1.2" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.3" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.1: + version "5.1.12" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz" + integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== + dependencies: + cssnano-preset-default "^5.2.12" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/d/-/d-1.0.1.tgz" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +duplexer@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz" + integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== + +duplexer@^0.1.1, duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.172: + version "1.4.176" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz" + integrity sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.5: + version "1.20.1" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.59, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.61" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.61.tgz" + integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethers@^5.0.26: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^29.0.0, expect@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.3.tgz#5e47757316df744fe3b8926c3ae8a3ebdafff7fe" + integrity sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg== + dependencies: + "@jest/expect-utils" "^29.4.3" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-util "^29.4.3" + +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +figures@^1.0.1: + version "1.7.0" + resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filesize@^6.1.0: + version "6.4.0" + resolved "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz" + integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== + dependencies: + loader-utils "^3.2.0" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-promise@^3.4.0: + version "3.4.0" + resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-3.4.0.tgz" + integrity sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw== + dependencies: + "@types/glob" "*" + +glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz" + integrity sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w== + dependencies: + duplexer "^0.1.1" + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hamt-sharding@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" + integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^3.0.0" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz" + integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== + +icss-utils@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +interface-ipld-format@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" + integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== + dependencies: + cids "^1.1.6" + multicodec "^3.0.1" + multihashes "^4.0.2" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +ipfs-only-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6" + integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== + dependencies: + ipfs-unixfs-importer "^7.0.1" + meow "^9.0.0" + +ipfs-unixfs-importer@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz#b850e831ca9647d589ef50bc33421f65bab7bba6" + integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== + dependencies: + bl "^5.0.0" + cids "^1.1.5" + err-code "^3.0.1" + hamt-sharding "^2.0.0" + ipfs-unixfs "^4.0.3" + ipld-dag-pb "^0.22.2" + it-all "^1.0.5" + it-batch "^1.0.8" + it-first "^1.0.6" + it-parallel-batch "^1.0.9" + merge-options "^3.0.4" + multihashing-async "^2.1.0" + rabin-wasm "^0.1.4" + uint8arrays "^2.1.2" + +ipfs-unixfs@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" + integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipld-dag-pb@^0.22.2: + version "0.22.3" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" + integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== + dependencies: + cids "^1.0.0" + interface-ipld-format "^1.0.0" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + protobufjs "^6.10.2" + stable "^0.1.8" + uint8arrays "^2.0.5" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-core-module@^2.5.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +it-all@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-batch@^1.0.8, it-batch@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" + integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-parallel-batch@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz#f889b4e1c7a62ef24111dbafbaaa010b33d00f69" + integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== + dependencies: + it-batch "^1.0.9" + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.4.3.tgz#7961fe32536b9b6d5c28dfa0abcfab31abcf50a7" + integrity sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.4.3.tgz#fff7be1cf5f06224dd36a857d52a9efeb005ba04" + integrity sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/expect" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-runtime "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" + p-limit "^3.1.0" + pretty-format "^29.4.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.4.3.tgz#fe31fdd0c90c765f392b8b7c97e4845071cd2163" + integrity sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg== + dependencies: + "@jest/core" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.4.3.tgz#fca9cdfe6298ae6d04beef1624064d455347c978" + integrity sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.4.3" + "@jest/types" "^29.4.3" + babel-jest "^29.4.3" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.4.3" + jest-environment-node "^29.4.3" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-runner "^29.4.3" + jest-util "^29.4.3" + jest-validate "^29.4.3" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.4.3" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.3.tgz#42f4eb34d0bf8c0fb08b0501069b87e8e84df347" + integrity sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.4.3" + +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.4.3.tgz#a434c199a2f6151c5e3dc80b2d54586bdaa72819" + integrity sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q== + dependencies: + "@jest/types" "^29.4.3" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.4.3" + pretty-format "^29.4.3" + +jest-environment-node@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.4.3.tgz#579c4132af478befc1889ddc43c2413a9cdbe014" + integrity sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/fake-timers" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + jest-mock "^29.4.3" + jest-util "^29.4.3" + +jest-fetch-mock@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" + integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== + dependencies: + cross-fetch "^3.0.4" + promise-polyfill "^8.1.3" + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== + dependencies: + "@jest/types" "^28.1.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + jest-worker "^28.1.3" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-haste-map@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.4.3.tgz#085a44283269e7ace0645c63a57af0d2af6942e2" + integrity sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ== + dependencies: + "@jest/types" "^29.4.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.4.3" + jest-worker "^29.4.3" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.4.3.tgz#2b35191d6b35aa0256e63a9b79b0f949249cf23a" + integrity sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.4.3" + +jest-matcher-utils@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.3.tgz#ea68ebc0568aebea4c4213b99f169ff786df96a0" + integrity sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg== + dependencies: + chalk "^4.0.0" + jest-diff "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.4.3" + +jest-message-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.3.tgz#65b5280c0fdc9419503b49d4f48d4999d481cb5b" + integrity sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.4.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.4.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.4.3.tgz#23d84a20a74cdfff0510fdbeefb841ed57b0fe7e" + integrity sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg== + dependencies: + "@jest/types" "^29.4.3" + "@types/node" "*" + jest-util "^29.4.3" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-regex-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" + integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== + +jest-resolve-dependencies@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.4.3.tgz#9ad7f23839a6d88cef91416bda9393a6e9fd1da5" + integrity sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.4.3" + +jest-resolve@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.4.3.tgz#3c5b5c984fa8a763edf9b3639700e1c7900538e2" + integrity sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.3" + jest-pnp-resolver "^1.2.2" + jest-util "^29.4.3" + jest-validate "^29.4.3" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.4.3.tgz#68dc82c68645eda12bea42b5beece6527d7c1e5e" + integrity sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA== + dependencies: + "@jest/console" "^29.4.3" + "@jest/environment" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.4.3" + jest-haste-map "^29.4.3" + jest-leak-detector "^29.4.3" + jest-message-util "^29.4.3" + jest-resolve "^29.4.3" + jest-runtime "^29.4.3" + jest-util "^29.4.3" + jest-watcher "^29.4.3" + jest-worker "^29.4.3" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.4.3.tgz#f25db9874dcf35a3ab27fdaabca426666cc745bf" + integrity sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q== + dependencies: + "@jest/environment" "^29.4.3" + "@jest/fake-timers" "^29.4.3" + "@jest/globals" "^29.4.3" + "@jest/source-map" "^29.4.3" + "@jest/test-result" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.4.3" + jest-message-util "^29.4.3" + jest-mock "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.4.3" + jest-snapshot "^29.4.3" + jest-util "^29.4.3" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.4.3.tgz#183d309371450d9c4a3de7567ed2151eb0e91145" + integrity sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.4.3" + "@jest/transform" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.4.3" + graceful-fs "^4.2.9" + jest-diff "^29.4.3" + jest-get-type "^29.4.3" + jest-haste-map "^29.4.3" + jest-matcher-utils "^29.4.3" + jest-message-util "^29.4.3" + jest-util "^29.4.3" + natural-compare "^1.4.0" + pretty-format "^29.4.3" + semver "^7.3.5" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.3.tgz#851a148e23fc2b633c55f6dad2e45d7f4579f496" + integrity sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q== + dependencies: + "@jest/types" "^29.4.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.4.3.tgz#a13849dec4f9e95446a7080ad5758f58fa88642f" + integrity sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw== + dependencies: + "@jest/types" "^29.4.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.4.3" + +jest-watcher@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.4.3.tgz#e503baa774f0c2f8f3c8db98a22ebf885f19c384" + integrity sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA== + dependencies: + "@jest/test-result" "^29.4.3" + "@jest/types" "^29.4.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.4.3" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.4.3.tgz#9a4023e1ea1d306034237c7133d7da4240e8934e" + integrity sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA== + dependencies: + "@types/node" "*" + jest-util "^29.4.3" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.4.2: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.4.3.tgz#1b8be541666c6feb99990fd98adac4737e6e6386" + integrity sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA== + dependencies: + "@jest/core" "^29.4.3" + "@jest/types" "^29.4.3" + import-local "^3.0.2" + jest-cli "^29.4.3" + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-ref-parser@^9.0.6, json-schema-ref-parser@^9.0.9: + version "9.0.9" + resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#66ea538e7450b12af342fa3d5b8458bc1e1e013f" + integrity sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q== + dependencies: + "@apidevtools/json-schema-ref-parser" "9.0.9" + +json-schema-to-typescript@^10.1.5: + version "10.1.5" + resolved "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-10.1.5.tgz" + integrity sha512-X8bNNksfCQo6LhEuqNxmZr4eZpPjXZajmimciuk8eWXzZlif9Brq7WuMGD/SOhBKcRKP2SGVDNZbC28WQqx9Rg== + dependencies: + "@types/json-schema" "^7.0.6" + "@types/lodash" "^4.14.168" + "@types/prettier" "^2.1.5" + cli-color "^2.0.0" + get-stdin "^8.0.0" + glob "^7.1.6" + glob-promise "^3.4.0" + is-glob "^4.0.1" + json-schema-ref-parser "^9.0.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.20" + minimist "^1.2.5" + mkdirp "^1.0.4" + mz "^2.7.0" + prettier "^2.2.0" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stringify-deterministic@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.8.tgz#675eaf26f18ebac0197c5e4d2d4dcc2ab3750948" + integrity sha512-rkJID3qeigo3VCrEcxX1333fTBBxW89YrdYcZexMnL/WdB8u0zctyG63e/DpahRJyrWCDhh7IQhiR7u2XEDQ4Q== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.0, json5@^2.2.1: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.1.3: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +lilconfig@^2.0.3, lilconfig@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.20: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +maxmin@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz" + integrity sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw== + dependencies: + chalk "^1.0.0" + figures "^1.0.1" + gzip-size "^3.0.0" + pretty-bytes "^3.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +microbundle@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.15.1.tgz#3fa67128934b31736823b5c868dae4b92d94e766" + integrity sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q== + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/plugin-transform-flow-strip-types" "^7.12.10" + "@babel/plugin-transform-react-jsx" "^7.12.11" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-flow" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@rollup/plugin-alias" "^3.1.1" + "@rollup/plugin-babel" "^5.2.2" + "@rollup/plugin-commonjs" "^17.0.0" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^11.0.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.2" + asyncro "^3.0.0" + autoprefixer "^10.1.0" + babel-plugin-macros "^3.0.1" + babel-plugin-transform-async-to-promises "^0.8.18" + babel-plugin-transform-replace-expressions "^0.2.0" + brotli-size "^4.0.0" + builtin-modules "^3.1.0" + camelcase "^6.2.0" + escape-string-regexp "^4.0.0" + filesize "^6.1.0" + gzip-size "^6.0.0" + kleur "^4.1.3" + lodash.merge "^4.6.2" + postcss "^8.2.1" + pretty-bytes "^5.4.1" + rollup "^2.35.1" + rollup-plugin-bundle-size "^1.0.3" + rollup-plugin-postcss "^4.0.0" + rollup-plugin-terser "^7.0.2" + rollup-plugin-typescript2 "^0.32.0" + rollup-plugin-visualizer "^5.6.0" + sade "^1.7.4" + terser "^5.7.0" + tiny-glob "^0.2.8" + tslib "^2.0.3" + typescript "^4.1.3" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.5: + version "1.2.6" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.2, multiformats@^9.6.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multihashing-async@^2.0.0, multihashing-async@^2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" + integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^3.0.0" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.1.32: + version "3.3.4" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1: + version "2.6.9" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" + integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.12.0, object-inspect@^1.9.0: + version "1.12.2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.4.0: + version "8.4.0" + resolved "https://registry.npmjs.org/open/-/open-8.4.0.tgz" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz" + integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== + dependencies: + browserslist "^4.20.3" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-load-config@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-merge-longhand@^5.1.6: + version "5.1.6" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz" + integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" + +postcss-merge-rules@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz" + integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz" + integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-modules@^4.0.0: + version "4.3.1" + resolved "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.3.1.tgz" + integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== + dependencies: + generic-names "^4.0.0" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + string-hash "^1.1.1" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.1: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prettier@^2.2.0, prettier@^2.7.1: + version "2.7.1" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-bytes@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz" + integrity sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow== + dependencies: + number-is-nan "^1.0.0" + +pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-format@^29.0.0, pretty-format@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.3.tgz#25500ada21a53c9e8423205cf0337056b201244c" + integrity sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +promise-polyfill@^8.1.3: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.3.0.tgz#9284810268138d103807b11f4e23d5e945a4db63" + integrity sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg== + +promise.series@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz" + integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +protobufjs@^6.10.2: + version "6.11.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +rabin-wasm@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.1.tgz#f9f9b5f536920253b3d26e7660e7da4ccff9bb62" + integrity sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve.exports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" + integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== + +resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: + version "1.22.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rollup-plugin-bundle-size@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz" + integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== + dependencies: + chalk "^1.1.3" + maxmin "^2.1.0" + +rollup-plugin-postcss@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz" + integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== + dependencies: + chalk "^4.1.0" + concat-with-sourcemaps "^1.1.0" + cssnano "^5.0.1" + import-cwd "^3.0.0" + p-queue "^6.6.2" + pify "^5.0.0" + postcss-load-config "^3.0.0" + postcss-modules "^4.0.0" + promise.series "^0.2.0" + resolve "^1.19.0" + rollup-pluginutils "^2.8.2" + safe-identifier "^0.4.2" + style-inject "^0.3.0" + +rollup-plugin-terser@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup-plugin-typescript2@^0.32.0: + version "0.32.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.32.1.tgz#470ded8e1965efac02043cc0ef4a7fa36bed83b9" + integrity sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw== + dependencies: + "@rollup/pluginutils" "^4.1.2" + find-cache-dir "^3.3.2" + fs-extra "^10.0.0" + resolve "^1.20.0" + tslib "^2.4.0" + +rollup-plugin-visualizer@^5.6.0: + version "5.6.0" + resolved "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.6.0.tgz" + integrity sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA== + dependencies: + nanoid "^3.1.32" + open "^8.4.0" + source-map "^0.7.3" + yargs "^17.3.1" + +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^2.35.1: + version "2.75.7" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz" + integrity sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ== + optionalDependencies: + fsevents "~2.3.2" + +sade@^1.7.4: + version "1.8.1" + resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-identifier@^0.4.2: + version "0.4.2" + resolved "https://registry.npmjs.org/safe-identifier/-/safe-identifier-0.4.2.tgz" + integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +semver-regex@^3.1.2: + version "3.1.4" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.4.tgz#13053c0d4aa11d070a2f2872b6b1e3ae1e1971b4" + integrity sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA== + +semver-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-sort/-/semver-sort-1.0.0.tgz#fd07da3904703ee0f1424152674644895f636086" + integrity sha512-JicVlQKz/C//4BiPmbHEDou6HihXxo5xqB/8Hm9FaLJ6HHkRRvYgCECq4u/z0XF8kyJQ/KAZt++A/kYz/oOSSg== + dependencies: + semver "^5.0.3" + semver-regex "^3.1.2" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4, semver@^7.3.5: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sparse-array@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.12" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz#69077835abe2710b65f03969898b6637b505a779" + integrity sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" + integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.7" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-inject@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz" + integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== + +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + dependencies: + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +terser@^5.0.0, terser@^5.7.0: + version "5.14.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +tiny-glob@^0.2.8: + version "0.2.9" + resolved "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +ts-node@^10.8.2: + version "10.8.2" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz" + integrity sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@^2.0.3, tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmjs.org/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.6.0" + resolved "https://registry.npmjs.org/type/-/type-2.6.0.tgz" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== + +typescript@^4.1.3: + version "4.7.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +uint8arrays@^2.0.5, uint8arrays@^2.1.2: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +update-browserslist-db@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.1.tgz#9faa33a964c1c85ff6f849b80b42a88c2c537c8f" + integrity sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + +yargs@^17.3.1: + version "17.5.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/external/cow-sdk/.babelrc b/external/cow-sdk/.babelrc new file mode 100644 index 000000000..7f6107b35 --- /dev/null +++ b/external/cow-sdk/.babelrc @@ -0,0 +1,13 @@ +{ + "plugins": [ + ["@babel/plugin-proposal-nullish-coalescing-operator"], + [ + "babel-plugin-inline-import", + { + "extensions": [".json"] + } + ], + ["@babel/plugin-proposal-private-methods", { "loose": true }] + ], + "presets": [["@babel/preset-env", { "targets": { "node": "current" } }], "@babel/preset-typescript"] +} diff --git a/external/cow-sdk/.devcontainer/devcontainer.json b/external/cow-sdk/.devcontainer/devcontainer.json new file mode 100644 index 000000000..c6342b299 --- /dev/null +++ b/external/cow-sdk/.devcontainer/devcontainer.json @@ -0,0 +1,18 @@ +{ + "name": "Node", + "image": "mcr.microsoft.com/devcontainers/base:0", + + "features": { + "ghcr.io/devcontainers/features/node:1": {}, + "ghcr.io/devcontainers/features/common-utils:2": { + "installZsh": true, + "configureZshAsDefaultShell": true, + "installOhMyZsh": true, + "installOhMyZshConfig": true, + "upgradePackages": true, + "username": "automatic", + "userUid": "automatic", + "userGid": "automatic" + } + } +} diff --git a/external/cow-sdk/.editorconfig b/external/cow-sdk/.editorconfig new file mode 100644 index 000000000..610fc82f8 --- /dev/null +++ b/external/cow-sdk/.editorconfig @@ -0,0 +1,15 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf + +[{*.ts,*.tsx}] +ij_typescript_force_quote_style = true +ij_typescript_use_double_quotes = false +ij_typescript_use_semicolon_after_statement = false diff --git a/external/cow-sdk/.eslintrc.json b/external/cow-sdk/.eslintrc.json new file mode 100644 index 000000000..c227a5a1e --- /dev/null +++ b/external/cow-sdk/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "parser": "@typescript-eslint/parser", + "extends": [ + "prettier", + "plugin:prettier/recommended", + "plugin:@typescript-eslint/recommended", + "plugin:prettier/recommended" + ], + "plugins": ["prettier", "unused-imports"], + "rules": { + "prettier/prettier": "error", + "no-unused-vars": "off", + "unused-imports/no-unused-imports": "error", + "unused-imports/no-unused-vars": [ + "error", + { + "vars": "all", + "varsIgnorePattern": "^_", + "args": "after-used", + "argsIgnorePattern": "^_" + } + ] + }, + + "ignorePatterns": ["dist", "node_modules", "src/subgraph/graphql.ts", "examples", "schemas"] +} diff --git a/external/cow-sdk/.github/workflows/build.yml b/external/cow-sdk/.github/workflows/build.yml new file mode 100644 index 000000000..ee4cd78bd --- /dev/null +++ b/external/cow-sdk/.github/workflows/build.yml @@ -0,0 +1,53 @@ +name: Build + +# Run on pushes to main or PRs +on: + # Pull request hook without any config. Launches for every pull request + pull_request: + # Launches for pushes to main or dev + push: + branches: + - main + # Launches build when release is published + release: + types: [published] + +env: + NODE_VERSION: lts/hydrogen + +jobs: + build: + name: Build Package + runs-on: ubuntu-latest + + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + - name: Remove broken apt repos [Ubuntu] + if: ${{ matrix.os }} == 'ubuntu-latest' + run: | + for apt_file in `grep -lr microsoft /etc/apt/sources.list.d/`; do sudo rm $apt_file; done + - uses: actions/checkout@v2 + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + + - uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + + - run: | + # Due to some dependencies yarn may randomly throw an error about invalid cache + # This approach is taken from https://github.com/yarnpkg/yarn/issues/7212#issuecomment-506155894 to fix the issue + # Another approach is to install with flag --network-concurrency 1, but this will make the installation pretty slow (default value is 8) + mkdir .yarncache + yarn install --cache-folder ./.yarncache --frozen-lockfile + rm -rf .yarncache + yarn cache clean + + - name: Build app + run: yarn build diff --git a/external/cow-sdk/.github/workflows/cla.yml b/external/cow-sdk/.github/workflows/cla.yml new file mode 100644 index 000000000..ef51c039c --- /dev/null +++ b/external/cow-sdk/.github/workflows/cla.yml @@ -0,0 +1,23 @@ +name: 'cla' + +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +jobs: + cla: + runs-on: ubuntu-latest + steps: + - name: 'CLA Assistant' + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' + uses: contributor-assistant/github-action@v2.2.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PERSONAL_ACCESS_TOKEN: ${{ secrets.ORG_TOKEN }} + with: + branch: 'cla-signatures' + path-to-signatures: 'signatures/version1/cla.json' + path-to-document: 'https://github.com/cowprotocol/cla/blob/main/CLA.md' + allowlist: '*[bot]' diff --git a/external/cow-sdk/.github/workflows/lint.yml b/external/cow-sdk/.github/workflows/lint.yml new file mode 100644 index 000000000..ab5cc28f7 --- /dev/null +++ b/external/cow-sdk/.github/workflows/lint.yml @@ -0,0 +1,24 @@ +name: 'ESLint check' +on: [pull_request] + +jobs: + eslint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + + - uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + + - name: Install modules + run: yarn + + - name: Lint + run: yarn lint diff --git a/external/cow-sdk/.github/workflows/publish.yml b/external/cow-sdk/.github/workflows/publish.yml new file mode 100644 index 000000000..21963f31d --- /dev/null +++ b/external/cow-sdk/.github/workflows/publish.yml @@ -0,0 +1,23 @@ +name: Publish package to NPM + +on: + release: + types: [published] + +env: + NODE_VERSION: lts/hydrogen + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + registry-url: 'https://registry.npmjs.org' + scope: '@cowprotocol' + - run: yarn --frozen-lockfile + - run: bash workflows/publish.sh + env: + NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }} diff --git a/external/cow-sdk/.github/workflows/test.yml b/external/cow-sdk/.github/workflows/test.yml new file mode 100644 index 000000000..2b8758de4 --- /dev/null +++ b/external/cow-sdk/.github/workflows/test.yml @@ -0,0 +1,57 @@ +name: Unit tests & Coverage +on: [push, pull_request] + +env: + NODE_VERSION: lts/hydrogen + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} + +jobs: + test: + runs-on: ubuntu-latest + steps: + - name: Cancel Previous Runs + uses: styfle/cancel-workflow-action@0.8.0 + with: + access_token: ${{ github.token }} + + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Yarn cache + uses: actions/cache@v2 + with: + path: '**/node_modules' + key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} + + - name: Yarn install + run: | + mkdir .yarncache + yarn install --cache-folder ./.yarncache --frozen-lockfile + rm -rf .yarncache + yarn cache clean + - name: Run tests with coverage + run: yarn run test:coverage + if: env.COVERALLS_REPO_TOKEN != '' + - name: Run tests without coverage + run: yarn run test + if: env.COVERALLS_REPO_TOKEN == '' + + - name: Comment in failing tests + uses: mattallty/jest-github-action@v1.0.3 + if: failure() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + test-command: 'echo unit tests already executed' + coverage-comment: false + + - name: Coveralls Report + uses: coverallsapp/github-action@1.1.3 + if: (success() || failure()) && env.COVERALLS_REPO_TOKEN != '' + with: + github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/external/cow-sdk/.gitignore b/external/cow-sdk/.gitignore new file mode 100644 index 000000000..a26d3e63e --- /dev/null +++ b/external/cow-sdk/.gitignore @@ -0,0 +1,11 @@ +node_modules +dist +coverage +.coveralls.yml +jest.results.json +.idea +*.iml +.yalc +yalc.lock +src/common/generated +docs/typedoc/ \ No newline at end of file diff --git a/external/cow-sdk/.nvmrc b/external/cow-sdk/.nvmrc new file mode 100644 index 000000000..e2d5170d9 --- /dev/null +++ b/external/cow-sdk/.nvmrc @@ -0,0 +1 @@ +v14.* \ No newline at end of file diff --git a/external/cow-sdk/.prettierignore b/external/cow-sdk/.prettierignore new file mode 100644 index 000000000..c6a7a493e --- /dev/null +++ b/external/cow-sdk/.prettierignore @@ -0,0 +1,3 @@ +dist/ +src/subgraph/graphql.ts +src/order-book/generated diff --git a/external/cow-sdk/.prettierrc b/external/cow-sdk/.prettierrc new file mode 100644 index 000000000..31ba22d84 --- /dev/null +++ b/external/cow-sdk/.prettierrc @@ -0,0 +1,5 @@ +{ + "semi": false, + "singleQuote": true, + "printWidth": 120 +} diff --git a/external/cow-sdk/COPYRIGHT.md b/external/cow-sdk/COPYRIGHT.md new file mode 100644 index 000000000..cf7d2b5db --- /dev/null +++ b/external/cow-sdk/COPYRIGHT.md @@ -0,0 +1,13 @@ +# Intellectual Property Notice + +Copyright 2021 Gnosis Ltd + +Copyrights in this project are retained by contributors. No copyright assignment +is required to contribute to this project. + +Except as otherwise noted (below and/or in individual files), this project is +licensed under the Apache License, Version 2.0 +([`LICENSE-APACHE`](LICENSE-APACHE) or +http://www.apache.org/licenses/LICENSE-2.0) or the MIT license, +([`LICENSE-MIT`](LICENSE-MIT) or http://opensource.org/licenses/MIT), at your +option. diff --git a/external/cow-sdk/LICENSE-APACHE b/external/cow-sdk/LICENSE-APACHE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/external/cow-sdk/LICENSE-APACHE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/external/cow-sdk/LICENSE-MIT b/external/cow-sdk/LICENSE-MIT new file mode 100644 index 000000000..d2b5a759e --- /dev/null +++ b/external/cow-sdk/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Gnosis Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/external/cow-sdk/README.md b/external/cow-sdk/README.md new file mode 100644 index 000000000..1a1c99e5b --- /dev/null +++ b/external/cow-sdk/README.md @@ -0,0 +1,286 @@ +

+ +

+ +# CoW SDK + +## 📚 [Docs website](https://docs.cow.fi/) + +## Test coverage + +| Statements | Branches | Functions | Lines | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| ![Statements](https://img.shields.io/badge/statements-94.77%25-brightgreen.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-76.78%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-97.43%25-brightgreen.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-97.67%25-brightgreen.svg?style=flat) | + +## Getting started + +**Usage examples: [VanillaJS](https://github.com/cowprotocol/cow-sdk/blob/main/examples/vanilla/src/index.ts), [Create React App](https://github.com/cowprotocol/cow-sdk/blob/main/examples/cra/src/pages/getOrders/index.tsx), [NodeJS](https://github.com/cowprotocol/cow-sdk/blob/main/examples/nodejs/src/index.ts)** + +### Installation + +```bash +yarn add @cowprotocol/cow-sdk +``` + +## [Trading SDK](https://github.com/cowprotocol/cow-sdk/blob/main/src/trading/README.md) + +CoW Protocol is intent based, decentralized trading protocol that allows users to trade ERC-20 tokens. + +The basic swap flow: +1. 🔎 Get a quote (price) for a trade (_or define your own price with a limit order_) +2. ✍️ Sign the order +3. ✅ Post the order to the order-book + +The easiest way to start trading is to use the `TradingSdk`: + +```typescript +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' + +// Initialize the SDK +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +// Define trade parameters +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +// Post the order +const orderId = await sdk.postSwapOrder(parameters) + +console.log('Order created, id: ', orderId) +``` + +This example is the simplest way to trade on CoW Protocol. + +You might want to use more advanced parameters like `receiver`, `partiallyFillable`, `validTo` and others. +Check the [Trading SDK documentation](https://github.com/cowprotocol/cow-sdk/blob/main/src/trading/README.md) for more details. + + +## Other utilities + +- `OrderBookApi` - provides the ability to retrieve orders and trades from the CoW Protocol order-book, as well as add and cancel them +- `OrderSigningUtils` - serves to sign orders and cancel them using [EIP-712](https://eips.ethereum.org/EIPS/eip-712) +- `SubgraphApi` - provides statistics data about CoW protocol from [Subgraph](https://github.com/cowprotocol/subgraph), such as trading volume, trade count and others + +```typescript +import { OrderBookApi, OrderSigningUtils, SubgraphApi } from '@cowprotocol/cow-sdk' + +const chainId = 100 // Gnosis chain + +const orderBookApi = new OrderBookApi({ chainId }) +const subgraphApi = new SubgraphApi({ chainId }) +const orderSigningUtils = new OrderSigningUtils() +``` + +### Sign, fetch, post and cancel order + +For clarity, let's look at the use of the API with a practical example: +Exchanging `0.4 GNO` to `WETH` on `Gnosis chain` network. + +We will do the following operations: + +1. Get a quote +2. Sign the order +3. Send the order to the order-book +4. Get the data of the created order +5. Get trades of the order +6. Cancel the order (signing + sending) + +[You also can check this code in the CRA example](https://github.com/cowprotocol/cow-sdk/blob/main/examples/cra/src/pages/quickStart/index.tsx) + +```typescript +import { OrderBookApi, OrderSigningUtils, SupportedChainId } from '@cowprotocol/cow-sdk' +import { Web3Provider } from '@ethersproject/providers' + +const account = 'YOUR_WALLET_ADDRESS' +const chainId = 100 // Gnosis chain +const provider = new Web3Provider(window.ethereum) +const signer = provider.getSigner() + +const quoteRequest = { + sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + from: account, + receiver: account, + sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH + kind: OrderQuoteSide.kind.SELL, +} + +const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN }) + +async function main() { + const { quote } = await orderBookApi.getQuote(quoteRequest) + + const orderSigningResult = await OrderSigningUtils.signOrder(quote, chainId, signer) + + const orderId = await orderBookApi.sendOrder({ ...quote, ...orderSigningResult }) + + const order = await orderBookApi.getOrder(orderId) + + const trades = await orderBookApi.getTrades({ orderId }) + + const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + + const cancellationResult = await orderBookApi.sendSignedOrderCancellations({ + ...orderCancellationSigningResult, + orderUids: [orderId], + }) + + console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) +} +``` + +### OrderBookApi + +`OrderBookApi` - is a main tool for working with [CoW Protocol API](https://api.cow.fi/docs/#/). +Since the API supports different networks and environments, there are some options to configure it. + +#### Environment configuration + +`chainId` - can be one of `SupportedChainId.MAINNET`, `SupportedChainId.GNOSIS_CHAIN`, `SupportedChainId.ARBITRUM_ONE`, `SupportedChainId.BASE` or `SupportedChainId.SEPOLIA` + +`env` - this parameter affects which environment will be used: + +- `https://api.cow.fi` for `prod` (default) +- `https://barn.api.cow.fi` for `staging` + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' + +const orderBookApi = new OrderBookApi({ + chainId: SupportedChainId.GNOSIS_CHAIN, + env: 'staging', // <----- +}) +``` + +#### API urls configuration + +In case you need to use custom endpoints (e.g. you use a proxy), you can do it this way: + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' + +const orderBookApi = new OrderBookApi({ + chainId: SupportedChainId.GNOSIS_CHAIN, + baseUrls: { + // <----- + [SupportedChainId.MAINNET]: 'https://YOUR_ENDPOINT/mainnet', + [SupportedChainId.GNOSIS_CHAIN]: 'https://YOUR_ENDPOINT/gnosis_chain', + [SupportedChainId.ARBITRUM]: 'https://YOUR_ENDPOINT/arbitrum_one', + [SupportedChainId.BASE]: 'https://YOUR_ENDPOINT/base', + [SupportedChainId.SEPOLIA]: 'https://YOUR_ENDPOINT/sepolia', + }, +}) +``` + +The [CoW Protocol API](https://api.cow.fi/docs/#/) has restrictions on the backend side to protect against DDOS and other issues. + +> The main restriction is request rate limit of: **5 requests per second for each IP address** + +The _client's_ limiter settings can be configured as well: + +```typescript +import { OrderBookApi } from '@cowprotocol/cow-sdk' +import { BackoffOptions } from 'exponential-backoff' +import { RateLimiterOpts } from 'limiter' + +const limiterOpts: RateLimiterOpts = { + tokensPerInterval: 5, + interval: 'second', +} + +const backOffOpts: BackoffOptions = { + numOfAttempts: 5, + maxDelay: Infinity, + jitter: 'none', +} + +const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN, limiterOpts, backOffOpts }) +``` + +### Querying the CoW Subgraph + +The [Subgraph](https://github.com/cowprotocol/subgraph) is constantly indexing the protocol, making all the information more accessible. It provides information about trades, users, tokens and settlements. Additionally, it has some data aggregations which provides insights on the hourly/daily/totals USD volumes, trades, users, etc. + +The SDK provides an easy way to access all this information. + +You can query the CoW Subgraph either by running some common queries exposed by the `CowSubgraphApi` or by building your own: + +```typescript +import { SubgraphApi, SupportedChainId } from '@cowprotocol/cow-sdk' + +const cowSubgraphApi = new SubgraphApi({ chainId: SupportedChainId.MAINNET }) + +// Get CoW Protocol totals +const { tokens, orders, traders, settlements, volumeUsd, volumeEth, feesUsd, feesEth } = + await cowSubgraphApi.getTotals() +console.log({ tokens, orders, traders, settlements, volumeUsd, volumeEth, feesUsd, feesEth }) + +// Get last 24 hours volume in usd +const { hourlyTotals } = await cowSubgraphApi.getLastHoursVolume(24) +console.log(hourlyTotals) + +// Get last week volume in usd +const { dailyTotals } = await cowSubgraphApi.getLastDaysVolume(7) +console.log(dailyTotals) + +// Get the last 5 batches +const query = ` + query LastBatches($n: Int!) { + settlements(orderBy: firstTradeTimestamp, orderDirection: desc, first: $n) { + txHash + firstTradeTimestamp + } + } +` +const variables = { n: 5 } +const response = await cowSubgraphApi.runQuery(query, variables) +console.log(response) +``` + +## Architecture + +One way to make the most out of the SDK is to get familiar with its architecture. + +> See [SDK Architecture](https://github.com/cowprotocol/cow-sdk/blob/main/docs/architecture.md) + +## Development + +### Install Dependencies + +```bash +yarn +``` + +### Build + +```bash +yarn build + +# Build in watch mode +yarn start +``` + +### Unit testing + +```bash +yarn test +``` + +### Code generation + +Some parts of the SDK are automatically generated. This is the case for the Order Book API and the Subgraph API + +```bash +# Re-create automatically generated code +yarn codegen +``` diff --git a/external/cow-sdk/abi/CoWShed.json b/external/cow-sdk/abi/CoWShed.json new file mode 100644 index 000000000..e0939165e --- /dev/null +++ b/external/cow-sdk/abi/CoWShed.json @@ -0,0 +1,139 @@ +[ + { "inputs": [], "name": "AlreadyInitialized", "type": "error" }, + { "inputs": [], "name": "DeadlineElapsed", "type": "error" }, + { "inputs": [], "name": "InvalidSignature", "type": "error" }, + { "inputs": [], "name": "InvalidSignature", "type": "error" }, + { "inputs": [], "name": "NonceAlreadyUsed", "type": "error" }, + { "inputs": [], "name": "OnlyAdmin", "type": "error" }, + { "inputs": [], "name": "OnlyAdminOrTrustedExecutorOrSelf", "type": "error" }, + { "inputs": [], "name": "OnlySelf", "type": "error" }, + { "inputs": [], "name": "OnlyTrustedExecutor", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "indexed": false, "internalType": "bytes32", "name": "s", "type": "bytes32" }, + { "indexed": false, "internalType": "uint8", "name": "v", "type": "uint8" } + ], + "name": "RSV", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "previousExecutor", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newExecutor", "type": "address" } + ], + "name": "TrustedExecutorChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "implementation", "type": "address" }], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [{ "internalType": "address", "name": "resolver", "type": "address" }], + "name": "claimWithResolver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "target", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "bytes", "name": "callData", "type": "bytes" }, + { "internalType": "bool", "name": "allowFailure", "type": "bool" }, + { "internalType": "bool", "name": "isDelegateCall", "type": "bool" } + ], + "internalType": "struct Call[]", + "name": "calls", + "type": "tuple[]" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "executeHooks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "factory", "type": "address" }, + { "internalType": "bool", "name": "claimResolver", "type": "bool" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "nonce", "type": "bytes32" }], + "name": "nonces", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "nonce", "type": "bytes32" }], + "name": "revokeNonce", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "target", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "bytes", "name": "callData", "type": "bytes" }, + { "internalType": "bool", "name": "allowFailure", "type": "bool" }, + { "internalType": "bool", "name": "isDelegateCall", "type": "bool" } + ], + "internalType": "struct Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "trustedExecuteHooks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "trustedExecutor", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "newImplementation", "type": "address" }], + "name": "updateImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "who", "type": "address" }], + "name": "updateTrustedExecutor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/external/cow-sdk/abi/CoWShedFactory.json b/external/cow-sdk/abi/CoWShedFactory.json new file mode 100644 index 000000000..087df4f05 --- /dev/null +++ b/external/cow-sdk/abi/CoWShedFactory.json @@ -0,0 +1,134 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "impl", "type": "address" }, + { "internalType": "bytes32", "name": "bName", "type": "bytes32" }, + { "internalType": "bytes32", "name": "bNode", "type": "bytes32" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { "inputs": [], "name": "InvalidSignature", "type": "error" }, + { "inputs": [], "name": "NonceAlreadyUsed", "type": "error" }, + { "inputs": [], "name": "SettingEnsRecordsFailed", "type": "error" }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "shed", "type": "address" } + ], + "name": "COWShedBuilt", + "type": "event" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }], + "name": "addr", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseName", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseNode", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "address", "name": "target", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "bytes", "name": "callData", "type": "bytes" }, + { "internalType": "bool", "name": "allowFailure", "type": "bool" }, + { "internalType": "bool", "name": "isDelegateCall", "type": "bool" } + ], + "internalType": "struct Call[]", + "name": "calls", + "type": "tuple[]" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "address", "name": "user", "type": "address" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "executeHooks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "name": "forwardResolutionNodeToAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], + "name": "initializeEns", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "user", "type": "address" }, + { "internalType": "bool", "name": "withEns", "type": "bool" } + ], + "name": "initializeProxy", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "", "type": "address" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "who", "type": "address" }], + "name": "proxyOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "name": "reverseResolutionNodeToAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "pure", + "type": "function" + } +] diff --git a/external/cow-sdk/abi/ComposableCoW.json b/external/cow-sdk/abi/ComposableCoW.json new file mode 100644 index 000000000..8f50c2429 --- /dev/null +++ b/external/cow-sdk/abi/ComposableCoW.json @@ -0,0 +1,608 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "_settlement", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InterfaceNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidHandler", + "type": "error" + }, + { + "inputs": [], + "name": "ProofNotAuthed", + "type": "error" + }, + { + "inputs": [], + "name": "SingleOrderNotAuthed", + "type": "error" + }, + { + "inputs": [], + "name": "SwapGuardRestricted", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + } + ], + "name": "ConditionalOrderCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "location", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct ComposableCoW.Proof", + "name": "proof", + "type": "tuple" + } + ], + "name": "MerkleRootSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ISwapGuard", + "name": "swapGuard", + "type": "address" + } + ], + "name": "SwapGuardSet", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "cabinet", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "dispatch", + "type": "bool" + } + ], + "name": "create", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + }, + { + "internalType": "contract IValueFactory", + "name": "factory", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "dispatch", + "type": "bool" + } + ], + "name": "createWithContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "offchainInput", + "type": "bytes" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "getTradeableOrderWithSignature", + "outputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "sellToken", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "appData", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "kind", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "partiallyFillable", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "sellTokenBalance", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "buyTokenBalance", + "type": "bytes32" + } + ], + "internalType": "struct GPv2Order.Data", + "name": "order", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + } + ], + "name": "hash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "_domainSeparator", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "encodeData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + } + ], + "name": "isValidSafeSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magic", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "singleOrderHash", + "type": "bytes32" + } + ], + "name": "remove", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "roots", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "location", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct ComposableCoW.Proof", + "name": "proof", + "type": "tuple" + } + ], + "name": "setRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "location", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct ComposableCoW.Proof", + "name": "proof", + "type": "tuple" + }, + { + "internalType": "contract IValueFactory", + "name": "factory", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "setRootWithContext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISwapGuard", + "name": "swapGuard", + "type": "address" + } + ], + "name": "setSwapGuard", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "singleOrders", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "swapGuards", + "outputs": [ + { + "internalType": "contract ISwapGuard", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/external/cow-sdk/abi/EthFlow.json b/external/cow-sdk/abi/EthFlow.json new file mode 100644 index 000000000..2e76a24b8 --- /dev/null +++ b/external/cow-sdk/abi/EthFlow.json @@ -0,0 +1,152 @@ +[ + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "appData", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "partiallyFillable", + "type": "bool" + }, + { + "internalType": "int64", + "name": "quoteId", + "type": "int64" + } + ], + "internalType": "struct EthFlowOrder.Data", + "name": "order", + "type": "tuple" + } + ], + "name": "createOrder", + "outputs": [ + { + "internalType": "bytes32", + "name": "orderHash", + "type": "bytes32" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "appData", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "partiallyFillable", + "type": "bool" + }, + { + "internalType": "int64", + "name": "quoteId", + "type": "int64" + } + ], + "internalType": "struct EthFlowOrder.Data", + "name": "order", + "type": "tuple" + } + ], + "name": "invalidateOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "orders", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + } +] diff --git a/external/cow-sdk/abi/ExtensibleFallbackHandler.json b/external/cow-sdk/abi/ExtensibleFallbackHandler.json new file mode 100644 index 000000000..907244db8 --- /dev/null +++ b/external/cow-sdk/abi/ExtensibleFallbackHandler.json @@ -0,0 +1,493 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "domainSeparator", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "contract ISafeSignatureVerifier", + "name": "verifier", + "type": "address" + } + ], + "name": "AddedDomainVerifier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "AddedInterface", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "method", + "type": "bytes32" + } + ], + "name": "AddedSafeMethod", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "domainSeparator", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "contract ISafeSignatureVerifier", + "name": "oldVerifier", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract ISafeSignatureVerifier", + "name": "newVerifier", + "type": "address" + } + ], + "name": "ChangedDomainVerifier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "oldMethod", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "newMethod", + "type": "bytes32" + } + ], + "name": "ChangedSafeMethod", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "domainSeparator", + "type": "bytes32" + } + ], + "name": "RemovedDomainVerifier", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "RemovedInterface", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "contract Safe", + "name": "safe", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + } + ], + "name": "RemovedSafeMethod", + "type": "event" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "contract Safe", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "domainVerifiers", + "outputs": [ + { + "internalType": "contract ISafeSignatureVerifier", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magic", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Safe", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "safeInterfaces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract Safe", + "name": "", + "type": "address" + }, + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "name": "safeMethods", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "domainSeparator", + "type": "bytes32" + }, + { + "internalType": "contract ISafeSignatureVerifier", + "name": "newVerifier", + "type": "address" + } + ], + "name": "setDomainVerifier", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "selector", + "type": "bytes4" + }, + { + "internalType": "bytes32", + "name": "newMethod", + "type": "bytes32" + } + ], + "name": "setSafeMethod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + }, + { + "internalType": "bool", + "name": "supported", + "type": "bool" + } + ], + "name": "setSupportedInterface", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "_interfaceId", + "type": "bytes4" + }, + { + "internalType": "bytes32[]", + "name": "handlerWithSelectors", + "type": "bytes32[]" + } + ], + "name": "setSupportedInterfaceBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/external/cow-sdk/abi/GPv2Settlement.json b/external/cow-sdk/abi/GPv2Settlement.json new file mode 100644 index 000000000..da5a9a265 --- /dev/null +++ b/external/cow-sdk/abi/GPv2Settlement.json @@ -0,0 +1,89 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "sellToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "orderUid", + "type": "bytes" + } + ], + "name": "Trade", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "orderUid", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "signed", + "type": "bool" + } + ], + "name": "setPreSignature", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "orderUid", + "type": "bytes" + } + ], + "name": "invalidateOrder", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [{ "name": "", "type": "bytes32" }], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/external/cow-sdk/abi/TWAP.json b/external/cow-sdk/abi/TWAP.json new file mode 100644 index 000000000..e6f15edd3 --- /dev/null +++ b/external/cow-sdk/abi/TWAP.json @@ -0,0 +1,324 @@ +[ + { + "inputs": [ + { + "internalType": "contract ComposableCoW", + "name": "_composableCow", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InvalidFrequency", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidMinPartLimit", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidNumParts", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPartSellAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSameToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSpan", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStartTime", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidToken", + "type": "error" + }, + { + "inputs": [], + "name": "OrderNotValid", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "components": [ + { + "internalType": "contract IConditionalOrder", + "name": "handler", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + } + ], + "indexed": false, + "internalType": "struct IConditionalOrder.ConditionalOrderParams", + "name": "params", + "type": "tuple" + } + ], + "name": "ConditionalOrderCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "ctx", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "getTradeableOrder", + "outputs": [ + { + "components": [ + { + "internalType": "contract IERC20", + "name": "sellToken", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "appData", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "kind", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "partiallyFillable", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "sellTokenBalance", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "buyTokenBalance", + "type": "bytes32" + } + ], + "internalType": "struct GPv2Order.Data", + "name": "order", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "_hash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "domainSeparator", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "ctx", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "staticInput", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "offchainInput", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "contract IERC20", + "name": "sellToken", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "buyToken", + "type": "address" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "uint256", + "name": "sellAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "buyAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "validTo", + "type": "uint32" + }, + { + "internalType": "bytes32", + "name": "appData", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "feeAmount", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "kind", + "type": "bytes32" + }, + { + "internalType": "bool", + "name": "partiallyFillable", + "type": "bool" + }, + { + "internalType": "bytes32", + "name": "sellTokenBalance", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "buyTokenBalance", + "type": "bytes32" + } + ], + "internalType": "struct GPv2Order.Data", + "name": "", + "type": "tuple" + } + ], + "name": "verify", + "outputs": [], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/external/cow-sdk/docs/architecture.md b/external/cow-sdk/docs/architecture.md new file mode 100644 index 000000000..9f503fd14 --- /dev/null +++ b/external/cow-sdk/docs/architecture.md @@ -0,0 +1,353 @@ +# Architecture + +```mermaid +flowchart LR + +SDK[cow-sdk] +OrderBookApi +SubgraphApi +MetadataApi + +SDK --> OrderBookApi +SDK --> SubgraphApi +SDK --> MetadataApi +``` + +The SDK has 3 main APIs + +- **Order Book API**: Allows to get the open orders, historic orders, post new orders, etc. +- **Subgraph API**: Provides access to on-chain data indexed by The Graph +- **Metadata API**: Allows to encode/decode meta-data to be attached in orders + +## Model: Orders + +The orders model used for the API is organized in a hierarchy: + +```mermaid +classDiagram + +OrderParameters <|-- OrderCreation +OrderCreation <|-- Order +OrderMetaData <|-- Order +Order <|-- EnrichedOrder +``` + +## Model: Orders (details) + +```mermaid +classDiagram + + +class OrderParameters { + + sellAmount: TokenAmount; + + buyAmount: TokenAmount; + + validTo: number; + + feeAmount: TokenAmount; + + kind: OrderKind; + + partiallyFillable: boolean; +} + +Address + +class SellTokenSource { + <> + ERC20 = 'erc20' + INTERNAL = 'internal' + EXTERNAL = 'external' +} + +class BuyTokenDestination{ + <> + ERC20 = 'erc20', + INTERNAL = 'internal', +} + + +class SigningScheme{ + <> + EIP712 = 'eip712', + ETHSIGN = 'ethsign', + PRESIGN = 'presign', + EIP1271 = 'eip1271', +} + +class AppData { + string +} + +class OrderKind { + <> + BUY = 'buy' + SELL = 'sell' +} + +OrderParameters --> Address: sellToken +OrderParameters --> Address: buyToken +OrderParameters --> OrderKind: kind +OrderParameters "0..1" --> SellTokenSource: sellTokenBalance +OrderParameters "0..1" --> BuyTokenDestination: buyTokenBalance +OrderParameters --> SigningScheme: signingScheme +OrderParameters "0..1" --> Address: receiver +OrderParameters --> AppData: appData + + +class OrderCreation { + + signingScheme: SigningScheme; + + signature: Signature + + from?: Address | null + + quoteId?: number | null +} + +class OrderMetaData { + + creationDate: string; + + uid: UID; + + invalidated: boolean; + + + availableBalance?: TokenAmount | null; + + executedSellAmount: BigUint; + + executedSellAmountBeforeFees: BigUint; + + executedBuyAmount: BigUint; + + executedFeeAmount: BigUint; + + fullFeeAmount?: TokenAmount; + + isLiquidityOrder?: boolean; + + onchainUser?: Address; + + executedFee?: BigUint | null; +} + +class OrderStatus { + <> + PRESIGNATURE_PENDING = 'presignaturePending' + OPEN = 'open' + FULFILLED = 'fulfilled' + CANCELLED = 'cancelled' + EXPIRED = 'expired' +} + +class EthflowData { + + refundTxHash: TransactionHash | null; + + userValidTo: number; + + isRefunded: boolean; +} + +OrderMetaData --> OrderStatus: status +OrderMetaData --> OrderClass: class +OrderMetaData --> Address2: owner +OrderMetaData "0..1" --> EthflowData: ethflowData +OrderMetaData "0..1" --> OnchainOrderData: onchainOrderData + +class OrderClass { + <> + MARKET = 'market' + LIMIT = 'limit' + LIQUIDITY = 'liquidity' +} + + +class EnrichedOrder{ + totalFee: string +} + + +OrderParameters <|-- OrderCreation +OrderCreation <|-- Order +OrderMetaData <|-- Order +Order <|-- EnrichedOrder + + +cssClass "OrderParameters,OrderCreation,OrderMetaData, Order" important +``` + +## Model: Trades + +```mermaid +classDiagram + + +class Trades { + + orderUid: UID + + blockNumber: number + + logIndex: number + + sellAmountBeforeFees: BigUint +} + +Trades --> Address: sellToken +Trades --> Address: buyToken +Trades --> Address: owner + +Trades --> TokenAmount: sellAmount +Trades --> TokenAmount: buyAmount + + +Trades "0..1" --> TransactionHash: txHash +``` + +## Order Book API + +Allows to get the open orders, historic orders, post new orders, etc. + +- 📚 [Swagger - Api Docs](https://api.cow.fi/docs) +- 📚 [Dev Docs - API](https://docs.cow.fi/cow-sdk/cow-api) + +The API allows to + +```mermaid +classDiagram + +class CowApi { + + getTrades(params) Promise~Trades[]~ + + getOrders(parmas): Promise~EnrichedOrder[]~ + + getTxOrders(tx: string): Promise~EnrichedOrder[]~ + + getOrder(uid: UID): Promise~EnrichedOrder~ + + getQuote(quote: OrderQuoteRequest): Promise~OrderQuoteResponse~ + + sendSignedOrderCancellation(uid: UID, params): Promise~void~ + + sendOrder(order: OrderCreation): Promise~UID~ + + getOrderLink(uid: UID): string +} + + + +class OrderQuoteRequest { + + sellToken: Address; + + buyToken: Address; + // ... +} + + +class OrderQuoteResponse{ + + id?: number + + from?: Address + + expiration?: string +} + +OrderQuoteResponse "0..1" --> OrderParameters: quote + +CowApi ..> Trade +CowApi ..> EnrichedOrder +CowApi ..> SignedOrder +CowApi ..> OrderCreation +CowApi ..> OrderQuoteResponse +CowApi ..> OrderQuoteRequest +``` + +## API: Subgraph + +Provides access to on-chain data indexed by The Graph + +> ⚽️ [Playground](https://thegraph.com/hosted-service/subgraph/cowprotocol/cow) + +> 📚 [Dev Docs - SubGraph](https://docs.cow.fi/cow-sdk/querying-the-cow-subgraph) + +> 📄 [GitHub code](https://github.com/cowprotocol/subgraph) + +**NOTE**: For details about the model, it's better to check the schema using the exported Typescript, or by reviewing the [schema definition](https://thegraph.com/hosted-service/subgraph/cowprotocol/cow). + +```mermaid +classDiagram + +class CowSubgraphApi { + + getTotals(): Promise~Total~ + + getLastHoursVolume(): Promise~LastHoursVolumeQuery~ + + getLastDaysVolume(): Promise~LastDaysVolumeQuery~ + + runQuery(query, variables): Promise~T~ +} + +class Total { + + volumeUsd + + volumeEth + + feesUsd + + feesEth + ... +} + + +class LastHoursVolumeQuery{ + volumeUsd: string + ... +} + +class LastDaysVolumeQuery{ + volumeUsd: string + ... +} + +CowSubgraphApi ..> Total +CowSubgraphApi ..> LastHoursVolumeQuery +CowSubgraphApi ..> LastDaysVolumeQuery + +``` + +## API: Meta-data + +Allows to encode/decode meta-data to be attached in orders + +> 📚 [Dev Docs - Metadata](https://docs.cow.fi/cow-sdk/order-meta-data-appdata) + +> 📄 [GitHub code](https://github.com/cowprotocol/app-data) + +```mermaid +classDiagram + +class MetadataApi { + + generateAppDataDoc(params: GenerateAppDataDocParams): AppDataDoc + + validateAppDataDoc(appDataDoc: AppDataDoc): ValidateResult + + calculateAppDataHash(appDataDoc: AppDataDoc): Promise~IpfsHashInfo|void~ + + uploadMetadataDocToIpfs(appDataDoc: AppDataDoc, ipfsConfig): Promise~string|void~ + + decodeAppData(hash: string): AppDataDoc + + appDataHexToCid(hash: string): Promise~string|void~ +} + +class AppDataDoc { + version: Version; + appCode?: string; + environment?: string; +} + +AppDataDoc --> Metadata: metadata + +class Referrer { + version: string; + address: string; +} + +class Quote { + version: string; + address: string; +} + +class IpfsHashInfo { + + cidV0: string + + appDataHash: string +} + +class OrderClass { + version: string; + orderClass: string; +} + +class AppDataParams { + ... +} + + +class Metadata { + ... +} + +class MetadataParams { + ... +} + + +MetadataApi ..> IpfsHashInfo +MetadataApi ..> GenerateAppDataDocParams +MetadataApi ..> AppDataDoc + +GenerateAppDataDocParams --> AppDataParams: appDataParams +GenerateAppDataDocParams --> MetadataParams: metadataParams + + + +Metadata --> Referrer: referrer +Metadata --> Quote: quote +Metadata --> OrderClass: orderClass +``` diff --git a/external/cow-sdk/docs/images/CoW.png b/external/cow-sdk/docs/images/CoW.png new file mode 100644 index 000000000..79cf43c91 Binary files /dev/null and b/external/cow-sdk/docs/images/CoW.png differ diff --git a/external/cow-sdk/examples/cra/README.md b/external/cow-sdk/examples/cra/README.md new file mode 100644 index 000000000..46ac34ab5 --- /dev/null +++ b/external/cow-sdk/examples/cra/README.md @@ -0,0 +1,21 @@ +# Example of CoW Protocol SDK usage + +## How to start + +### Install dependencies + +```bash +yarn install +``` + +### Run the local server + +```bash +yarn start +``` + +### Open browser with url + +```bash +http://localhost:3000 +``` diff --git a/external/cow-sdk/examples/cra/package.json b/external/cow-sdk/examples/cra/package.json new file mode 100644 index 000000000..31a0862c7 --- /dev/null +++ b/external/cow-sdk/examples/cra/package.json @@ -0,0 +1,54 @@ +{ + "name": "cra", + "version": "0.1.0", + "private": true, + "dependencies": { + "@cowprotocol/cow-sdk": "../../", + "@safe-global/api-kit": "^1.3.0", + "@safe-global/protocol-kit": "^1.2.0", + "@testing-library/jest-dom": "^5.16.5", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "ethers": "^5.7.2", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@types/jest": "^29.5.0", + "@types/node": "^18.15.10", + "@types/react": "^18.0.30", + "@types/react-dom": "^18.0.11", + "add": "^2.0.6", + "assert": "npm:assert@2.1.0", + "buffer": "npm:buffer@6.0.3", + "crypto": "npm:crypto-browserify@3.12.0", + "http": "npm:stream-http@^3.2.0", + "https": "npm:https-browserify@^1.0.0", + "stream": "npm:stream-browserify@3.0.0", + "typescript": "^5.0.2", + "url": "npm:url@0.11.3", + "util": "npm:util@0.12.5", + "yarn": "^1.22.19", + "zlib": "npm:browserify-zlib@^0.2.0" + } +} diff --git a/external/cow-sdk/examples/cra/public/index.html b/external/cow-sdk/examples/cra/public/index.html new file mode 100644 index 000000000..cbb31164d --- /dev/null +++ b/external/cow-sdk/examples/cra/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + React App + + + +
+ + diff --git a/external/cow-sdk/examples/cra/src/App.css b/external/cow-sdk/examples/cra/src/App.css new file mode 100644 index 000000000..0398ed8cc --- /dev/null +++ b/external/cow-sdk/examples/cra/src/App.css @@ -0,0 +1,45 @@ +.App { + background-color: #282c34; + color: white; +} + +.chain-id-box { + padding: 14px; + font-size: 18px; + background: #545c6c; + margin: 0 15px 15px; +} + +.chain-id-box label { + margin-right: 10px; + font-weight: bold; +} + +.section { + border-bottom: 1px solid #b4b4b4; +} + +.section > div { + padding: 10px; +} + +.section > div:first-child { + font-size: 18px; + font-weight: bold; + cursor: pointer; + border-bottom: 1px solid #b4b4b4; +} + +.section > div:first-child:hover { + text-decoration: underline; +} + +.section > div:last-child { + margin-bottom: 15px; + padding-bottom: 15px; + padding-left: 50px; +} + +.section > div:last-child:not(.open) { + display: none; +} diff --git a/external/cow-sdk/examples/cra/src/App.tsx b/external/cow-sdk/examples/cra/src/App.tsx new file mode 100644 index 000000000..b0e118c61 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/App.tsx @@ -0,0 +1,75 @@ +import './App.css' +import { SignOrderPage } from './pages/signOrder' +import { SignOrderCancellationPage } from './pages/signOrderCancellation' +import { GetTradesPage } from './pages/getTrades' +import { GetOrdersPage } from './pages/getOrders' +import { GetQuotePage } from './pages/getQuote' +import { SignAndSendOrderPage } from './pages/sendOrder' +import { SendOrderCancellationPage } from './pages/sendOrderCancellation' +import { FC, useEffect, useState } from 'react' +import { useWeb3Info } from './hooks/useWeb3Info' +import { ChainIdContext } from './context' +import { QuickStartPage } from './pages/quickStart' +import { SmartContractWallet } from './pages/smartContractWallet' +import { GenerateCowShedHookCallDataPage } from './pages/cowShedHook' + +const EXAMPLES: ExampleProps[] = [ + { title: 'Quick start', Component: QuickStartPage }, + { title: 'Get quote', Component: GetQuotePage }, + { title: 'Get trades', Component: GetTradesPage }, + { title: 'Get orders', Component: GetOrdersPage }, + { title: 'Sign order', Component: SignOrderPage }, + { title: 'Sign and send order', Component: SignAndSendOrderPage }, + { title: 'Sign order cancellation', Component: SignOrderCancellationPage }, + { title: 'Send order cancellation', Component: SendOrderCancellationPage }, + { title: 'Smart contract wallet', Component: SmartContractWallet }, + { title: 'Generate hook with CoW Shed', Component: GenerateCowShedHookCallDataPage }, +] + +interface ExampleProps { + title: string + Component: FC + open?: boolean +} + +function Example({ open = false, title, Component }: ExampleProps) { + const [isOpen, setIsOpen] = useState(open) + + return ( +
+
setIsOpen((state) => !state)}>{title}
+
+ +
+
+ ) +} + +function App() { + const { chainId } = useWeb3Info() + const [currentChainId, setCurrentChainId] = useState(chainId) + + useEffect(() => { + setCurrentChainId(chainId) + }, [chainId]) + + return ( +
+ +

The example works only with Metamask extension!

+
+
+
+ + setCurrentChainId(+e.target.value)} /> +
+ {EXAMPLES.map((props, index) => { + return + })} +
+
+
+ ) +} + +export default App diff --git a/external/cow-sdk/examples/cra/src/components/jsonContent/index.tsx b/external/cow-sdk/examples/cra/src/components/jsonContent/index.tsx new file mode 100644 index 000000000..b14ae8789 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/components/jsonContent/index.tsx @@ -0,0 +1,45 @@ +import { ClipboardEvent, useCallback, useEffect, useRef, useState } from 'react' +import usePrevious from '../../hooks/usePrevious' + +export function JsonContent({ defaultValue, onChange }: { defaultValue: T; onChange: (data: T) => void }) { + const [isValid, setIsValid] = useState(true) + const ref = useRef(null) + const prevDefaultValue = usePrevious(defaultValue) + + const onPasteCallback = useCallback((event: ClipboardEvent) => { + event.preventDefault() + document.execCommand('inserttext', false, event.clipboardData?.getData('text/plain')) + }, []) + + const onChangeCallback = useCallback(() => { + const text = ref.current?.innerText || '' + + try { + onChange(JSON.parse(text)) + setIsValid(true) + } catch (e) { + console.error(e) + console.log(text) + setIsValid(false) + } + }, [onChange]) + + useEffect(() => { + if (JSON.stringify(prevDefaultValue) === JSON.stringify(defaultValue)) return + + onChangeCallback() + }, [defaultValue, prevDefaultValue, onChangeCallback]) + + return ( +
+      {JSON.stringify(defaultValue, null, 4)}
+    
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/components/resultContent/index.tsx b/external/cow-sdk/examples/cra/src/components/resultContent/index.tsx new file mode 100644 index 000000000..294c88b47 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/components/resultContent/index.tsx @@ -0,0 +1,8 @@ +export function ResultContent({ data }: { data: any }) { + return ( +
+

Result:

+ +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/context.ts b/external/cow-sdk/examples/cra/src/context.ts new file mode 100644 index 000000000..18a9db1a9 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/context.ts @@ -0,0 +1,3 @@ +import { createContext } from 'react' + +export const ChainIdContext = createContext(1) diff --git a/external/cow-sdk/examples/cra/src/hooks/useCurrentChainId.ts b/external/cow-sdk/examples/cra/src/hooks/useCurrentChainId.ts new file mode 100644 index 000000000..0d4c81fa1 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/hooks/useCurrentChainId.ts @@ -0,0 +1,6 @@ +import { useContext } from 'react' +import { ChainIdContext } from '../context' + +export function useCurrentChainId(): number { + return useContext(ChainIdContext) +} diff --git a/external/cow-sdk/examples/cra/src/hooks/usePrevious.ts b/external/cow-sdk/examples/cra/src/hooks/usePrevious.ts new file mode 100644 index 000000000..18d5ba3db --- /dev/null +++ b/external/cow-sdk/examples/cra/src/hooks/usePrevious.ts @@ -0,0 +1,16 @@ +import { useEffect, useRef } from 'react' + +// modified from https://usehooks.com/usePrevious/ +export default function usePrevious(value: T) { + // The ref object is a generic container whose current property is mutable ... + // ... and can hold any value, similar to an instance property on a class + const ref = useRef() + + // Store current value in ref + useEffect(() => { + ref.current = value + }, [value]) // Only re-run if value changes + + // Return previous value (happens before update in useEffect above) + return ref.current +} diff --git a/external/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts b/external/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts new file mode 100644 index 000000000..c649430f3 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts @@ -0,0 +1,29 @@ +import { useEffect, useState } from 'react' +import { Web3Provider } from '@ethersproject/providers' + +const provider = new Web3Provider(window.ethereum) + +// Connect to injected wallet +;(window.ethereum as {enable(): void})?.enable() + +export interface Web3Info { + provider: Web3Provider + chainId: number + account: string +} + +export function useWeb3Info(): Web3Info { + const [chainId, setChainId] = useState(5) + const [account, setAccount] = useState('') + + useEffect(() => { + provider.on('network', (network) => { + setChainId(+network.chainId) + }) + provider.listAccounts().then((accounts: string[]) => { + setAccount(accounts[0]) + }) + }, [setChainId, setAccount]) + + return { chainId, account, provider } +} diff --git a/external/cow-sdk/examples/cra/src/index.css b/external/cow-sdk/examples/cra/src/index.css new file mode 100644 index 000000000..ec2585e8c --- /dev/null +++ b/external/cow-sdk/examples/cra/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/external/cow-sdk/examples/cra/src/index.tsx b/external/cow-sdk/examples/cra/src/index.tsx new file mode 100644 index 000000000..989b2997c --- /dev/null +++ b/external/cow-sdk/examples/cra/src/index.tsx @@ -0,0 +1,21 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import './index.css' +import App from './App' +import { ExternalProvider } from '@ethersproject/providers' +import { Buffer } from 'buffer' + +window.Buffer = Buffer + +declare global { + interface Window { + ethereum: ExternalProvider + } +} + +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) +root.render( + + + +) diff --git a/external/cow-sdk/examples/cra/src/pageStyles.css b/external/cow-sdk/examples/cra/src/pageStyles.css new file mode 100644 index 000000000..8fc34245e --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pageStyles.css @@ -0,0 +1,37 @@ +.form h1 { + font-size: 20px; +} + +.form button { + font-size: 16px; + padding: 5px 10px; + border-radius: 4px; +} + +.json-content { + width: 900px; + min-height: 180px; + max-height: 550px; + background: #fff; + color: #282c34; + outline: none; + padding: 5px; + border-radius: 4px; + overflow-y: scroll; +} + +.json-content.invalid { + outline: 3px solid #ff9292; +} + +.result-content textarea { + outline: none; + min-width: 900px; + min-height: 150px; + padding: 10px; + background: #d4d9de; +} + +.result-content h3 { + font-weight: normal; +} diff --git a/external/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx b/external/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx new file mode 100644 index 000000000..ce9c84061 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx @@ -0,0 +1,96 @@ +import '../../pageStyles.css' +import { FormEvent, useCallback, useEffect, useState } from 'react' +import { CowShedHooks } from '@cowprotocol/cow-sdk' +import { useCurrentChainId } from 'hooks/useCurrentChainId' +import { useWeb3Info } from 'hooks/useWeb3Info' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { formatBytes32String } from 'ethers/lib/utils.js' +import { SigningScheme } from '@cowprotocol/contracts' + +const DEADLINE = BigInt(1_000_000) + +interface IInput { + target: string + value: number + callData: string + allowFailure: boolean + isDelegateCall: boolean +} +export function GenerateCowShedHookCallDataPage() { + const { account, provider } = useWeb3Info() + const chainId = useCurrentChainId() + + const [cowShed, setCowShed] = useState() + const [input, setInput] = useState() + const [output, setOutput] = useState() + + useEffect(() => { + if (!chainId) return + setCowShed(new CowShedHooks(chainId)) + }, [chainId]) + + const generateHook = useCallback( + async (event: FormEvent) => { + event.preventDefault() + + if (!input) return + if (!cowShed) return + + try { + setOutput('Waiting signature...') + + const nonce = formatBytes32String(Date.now().toString()) + + const signer = provider.getSigner() + + const calls = [ + { + target: input.target, + value: BigInt(input.value), + callData: input.callData, + allowFailure: input.allowFailure, + isDelegateCall: input.isDelegateCall, + }, + ] + + console.log('calls', calls) + const signature = await cowShed.signCalls(calls, nonce, DEADLINE, signer, SigningScheme.EIP712) + + setOutput('Building hook...') + + const hookCallData = cowShed.encodeExecuteHooksForFactory(calls, nonce, DEADLINE, account, signature) + + setOutput(hookCallData) + } finally { + setOutput('Error generating hook') + } + }, + [input] + ) + + const defaultValue = { + target: '', + value: 0, + callData: '', + allowFailure: false, + isDelegateCall: true, + } + + return ( +
+
+
+

Hook data:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/getOrders/index.tsx b/external/cow-sdk/examples/cra/src/pages/getOrders/index.tsx new file mode 100644 index 000000000..1e76e30af --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/getOrders/index.tsx @@ -0,0 +1,67 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { OrderBookApi, EnrichedOrder, Address } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' + +const orderBookApi = new OrderBookApi() + +export function GetOrdersPage() { + const { account } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState<{ + owner: Address + offset?: number + limit?: number + } | null>(null) + const [output, setOutput] = useState | string>('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const getOrders = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + orderBookApi + .getOrders(input) + .then(setOutput) + .catch((error) => { + console.error(error) + setOutput(error.toString()) + }) + }, + [input] + ) + + const defaultValue = { + owner: account, + limit: 10, + offset: 0, + } + + return ( +
+
+
+

Params:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/getQuote/index.tsx b/external/cow-sdk/examples/cra/src/pages/getQuote/index.tsx new file mode 100644 index 000000000..0590528d5 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/getQuote/index.tsx @@ -0,0 +1,65 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { OrderBookApi, OrderQuoteRequest, OrderQuoteResponse, OrderQuoteSideKindSell } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { JsonContent } from '../../components/jsonContent' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' +import { ResultContent } from '../../components/resultContent' + +const orderBookApi = new OrderBookApi() + +export function GetQuotePage() { + const { account } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const getQuote = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + orderBookApi + .getQuote(input) + .then(setOutput) + .catch((error) => { + setOutput(error.toString()) + }) + }, + [input] + ) + + const defaultValue: OrderQuoteRequest = { + sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + from: account, + receiver: account, + sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), + kind: OrderQuoteSideKindSell.SELL, + } + + return ( +
+
+
+

Order:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/getTrades/index.tsx b/external/cow-sdk/examples/cra/src/pages/getTrades/index.tsx new file mode 100644 index 000000000..eb3aef533 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/getTrades/index.tsx @@ -0,0 +1,61 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { OrderBookApi, Address, UID, Trade } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' + +const orderBookApi = new OrderBookApi() + +export function GetTradesPage() { + const { account } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState<{ owner?: Address; orderId?: UID } | null>(null) + const [output, setOutput] = useState | string>('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const getTrades = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + orderBookApi + .getTrades(input) + .then(setOutput) + .catch((error) => { + console.error(error) + setOutput(error.toString()) + }) + }, + [input] + ) + + const defaultValue = { + owner: account, + } + + return ( +
+
+
+

Owner or orderId:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/quickStart/index.tsx b/external/cow-sdk/examples/cra/src/pages/quickStart/index.tsx new file mode 100644 index 000000000..75cb316c3 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/quickStart/index.tsx @@ -0,0 +1,85 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { + OrderBookApi, + OrderQuoteRequest, + OrderQuoteSideKindSell, + OrderSigningUtils, + SigningScheme, +} from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' +import { ResultContent } from '../../components/resultContent' + +const orderBookApi = new OrderBookApi() + +export function QuickStartPage() { + const { account, provider } = useWeb3Info() + const chainId = useCurrentChainId() + const [output, setOutput] = useState('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const getOrders = useCallback( + async (event: FormEvent) => { + event.preventDefault() + + const signer = provider.getSigner() + + // Sell 0.4 WETH for GNO on Gnosis chain network + const quoteRequest: OrderQuoteRequest = { + sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + from: account, + receiver: account, + sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH + kind: OrderQuoteSideKindSell.SELL, + } + + // Get quote + const { quote } = await orderBookApi.getQuote(quoteRequest) + + // Sign order + const orderSigningResult = await OrderSigningUtils.signOrder({ ...quote, receiver: account }, chainId, signer) + + // Send order to the order-book + const orderUid = await orderBookApi.sendOrder({ + ...quote, + signature: orderSigningResult.signature, + signingScheme: orderSigningResult.signingScheme as string as SigningScheme, + }) + + // Get order data + const order = await orderBookApi.getOrder(orderUid) + + // Get order trades + const trades = await orderBookApi.getTrades({ orderUid }) + + // Sign order cancellation + const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderUid], chainId, signer) + + // Send order cancellation + const cancellationResult = await orderBookApi.sendSignedOrderCancellations({ + ...orderCancellationSigningResult, + orderUids: [orderUid], + }) + + setOutput({ orderUid, order, trades, orderCancellationSigningResult, cancellationResult }) + }, + [chainId, provider, account] + ) + + return ( +
+
+
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx b/external/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx new file mode 100644 index 000000000..af3215796 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx @@ -0,0 +1,80 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { OrderSigningUtils, UID, OrderKind, UnsignedOrder, OrderBookApi, SigningScheme } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' + +const orderBookApi = new OrderBookApi() + +export function SignAndSendOrderPage() { + const { account, provider } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const sendOrder = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + const signer = provider.getSigner() + + OrderSigningUtils.signOrder(input, chainId, signer) + .then((signingResult) => { + return orderBookApi.sendOrder({ + ...input, + signingScheme: signingResult.signingScheme as string as SigningScheme, + signature: signingResult.signature, + }) + }) + .then((orderId) => { + return orderBookApi.getOrderLink(orderId) + }) + .then(setOutput) + .catch((error) => { + setOutput(error.toString()) + }) + }, + [input, chainId, provider] + ) + + const defaultValue: UnsignedOrder = { + sellToken: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + buyToken: '0x07865c6E87B9F70255377e024ace6630C1Eaa37F', + receiver: account, + sellAmount: '100000000000000000', + buyAmount: '6677405170898827136', + validTo: Math.round((Date.now() + 200_000) / 1000), + appData: '0x828569F802B7F8957F76996BDD875674821E41A688541A9E9EC97D5E897D44A7', + feeAmount: '0', + kind: OrderKind.SELL, + partiallyFillable: false, + } + + return ( +
+
+
+

Order:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx b/external/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx new file mode 100644 index 000000000..84338e573 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx @@ -0,0 +1,60 @@ +import { FormEvent, useCallback, useEffect, useState } from 'react' +import '../../pageStyles.css' +import { EcdsaSigningScheme, OrderBookApi, OrderCancellations } from '@cowprotocol/cow-sdk' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' + +const orderBookApi = new OrderBookApi() + +export function SendOrderCancellationPage() { + const chainId = useCurrentChainId() + + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + const sendOrderCancellation = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + orderBookApi + .sendSignedOrderCancellations(input) + .then((answer: any) => setOutput(answer)) + .catch((error) => { + setOutput(error.toString()) + }) + }, + [input] + ) + + const defaultValue: OrderCancellations = { + signature: 'PASTE_CANCELLATION_SIGNATURE_HERE', + signingScheme: EcdsaSigningScheme.EIP712, + orderUids: ['PASTE_ORDER_ID_HERE'], + } + + return ( +
+
+
+

Params:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/signOrder/index.tsx b/external/cow-sdk/examples/cra/src/pages/signOrder/index.tsx new file mode 100644 index 000000000..d1f58ac6c --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/signOrder/index.tsx @@ -0,0 +1,64 @@ +import { FormEvent, useCallback, useState } from 'react' +import '../../pageStyles.css' +import { OrderSigningUtils, SigningResult, OrderKind, UnsignedOrder } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' + +export function SignOrderPage() { + const { account, provider } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + const signOrder = useCallback( + (event: FormEvent) => { + event.preventDefault() + + if (!input) return + + setOutput('Loading...') + + const signer = provider.getSigner() + + OrderSigningUtils.signOrder(input, chainId, signer) + .then(setOutput) + .catch((error) => { + setOutput(error.toString()) + }) + }, + [chainId, input, provider] + ) + + const defaultValue: UnsignedOrder = { + sellToken: '0x6b175474e89094c44da98b954eedeac495271d0f', + buyToken: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + receiver: account, + sellAmount: '2', + buyAmount: '1', + validTo: Math.round((Date.now() + 200_000) / 1000), + appData: '0x', + feeAmount: '0', + kind: OrderKind.SELL, + partiallyFillable: false, + } + + return ( +
+
+
+

Order:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx b/external/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx new file mode 100644 index 000000000..92c3f4408 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx @@ -0,0 +1,56 @@ +import { FormEvent, useCallback, useState } from 'react' +import '../../pageStyles.css' +import { OrderCancellations, OrderSigningUtils, SigningResult } from '@cowprotocol/cow-sdk' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { parseFormData } from '../../utils' +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' +import { signOrderCancellation } from '@cowprotocol/contracts' + +export function SignOrderCancellationPage() { + const { provider } = useWeb3Info() + const chainId = useCurrentChainId() + + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + const signOrderCancellation = useCallback( + (event: FormEvent) => { + event.preventDefault() + if (!input) return + + setOutput('Loading...') + + const signer = provider.getSigner() + + OrderSigningUtils.signOrderCancellations(input, chainId, signer) + .then(setOutput) + .catch((error) => { + setOutput(error.toString()) + }) + }, + [provider, input, chainId] + ) + + const defaultValue = [ + '0xe720cfe8881c3ea04f6e67307e6d590ac253ada9183ba6b1487b6f2154baeefa40a50cf069e992aa4536211b23f286ef88752187ffffffff', + ] + + return ( +
+
+
+

Order ID:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json new file mode 100644 index 000000000..9a9e85e34 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json @@ -0,0 +1,20 @@ +[ + { + "inputs": [ + { + "internalType": "bytes", + "name": "orderUid", + "type": "bytes" + }, + { + "internalType": "bool", + "name": "signed", + "type": "bool" + } + ], + "name": "setPreSignature", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/external/cow-sdk/examples/cra/src/pages/smartContractWallet/const.ts b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/const.ts new file mode 100644 index 000000000..d19c05c7c --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/const.ts @@ -0,0 +1,13 @@ +import GPv2SettlementAbi from './GPv2Settlement.json' +import { SupportedChainId } from '@cowprotocol/cow-sdk' + +export const SETTLEMENT_CONTRACT_ADDRESS = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41' + +export const SETTLEMENT_CONTRACT_ABI = GPv2SettlementAbi + +export const SAFE_TRANSACTION_SERVICE_URL: Record = { + [SupportedChainId.MAINNET]: 'https://safe-transaction-mainnet.safe.global', + [SupportedChainId.GNOSIS_CHAIN]: 'https://safe-transaction-gnosis-chain.safe.global', + [SupportedChainId.SEPOLIA]: 'https://safe-transaction-sepolia.safe.global', + [SupportedChainId.ARBITRUM_ONE]: 'https://safe-transaction-arbitrum.safe.global', +} diff --git a/external/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx new file mode 100644 index 000000000..7fff875f4 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx @@ -0,0 +1,134 @@ +import {FormEvent, useCallback, useEffect, useMemo, useState} from 'react' + +import { Contract } from '@ethersproject/contracts' +import { OrderBookApi, OrderCreation, OrderKind, SigningScheme, UnsignedOrder } from '@cowprotocol/cow-sdk' + +import { JsonContent } from '../../components/jsonContent' +import { ResultContent } from '../../components/resultContent' +import { useWeb3Info } from '../../hooks/useWeb3Info' +import { useCurrentChainId } from '../../hooks/useCurrentChainId' + +import { SETTLEMENT_CONTRACT_ABI, SETTLEMENT_CONTRACT_ADDRESS } from './const' +import { useSafeSdkAndKit } from './useSafeSdkAndKit' + +const appData = '{"appCode":"CoW Swap-SafeApp","environment":"local","metadata":{"orderClass":{"orderClass":"limit"},"quote":{"slippageBips":"0"}},"version":"0.11.0"}' +const appDataHash = '0x6bb009e9730f09d18011327b6a1e4b9df70a3eb4d49e7cb622f79caadac5751a' + + +const orderBookApi = new OrderBookApi() +const settlementContract = new Contract(SETTLEMENT_CONTRACT_ADDRESS, SETTLEMENT_CONTRACT_ABI) + +export function SmartContractWallet() { + const {provider, account} = useWeb3Info() + const chainId = useCurrentChainId() + + const [safeAddress, setSafeAddress] = useState(null) + const [input, setInput] = useState(null) + const [output, setOutput] = useState('') + + const {safeSdk, safeApiKit} = useSafeSdkAndKit(safeAddress, chainId, provider) + + const defaultOrder: UnsignedOrder | null = useMemo(() => { + return safeAddress ? { + receiver: safeAddress, + buyAmount: '650942340000000000000', + buyToken: '0x91056D4A53E1faa1A84306D4deAEc71085394bC8', + sellAmount: '100000000000000000', + sellToken: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + validTo: Math.round((Date.now() + 900_000) / 1000), + appData: '0x', + feeAmount: '0', + kind: OrderKind.SELL, + partiallyFillable: true, + signingScheme: SigningScheme.PRESIGN, + } : null + }, [safeAddress]) + + useEffect(() => { + orderBookApi.context.chainId = chainId + }, [chainId]) + + + const signOrder = useCallback( + async (event: FormEvent) => { + event.preventDefault() + + if (!safeAddress) { + alert('Please, specify Safe address') + return + } + + if (!input || !safeSdk || !safeApiKit) return + + setOutput('Loading...') + + try { + const orderCreation: OrderCreation = { + ...input, + from: safeAddress, + signingScheme: SigningScheme.PRESIGN, + signature: safeAddress, + appData, + appDataHash, + } + + // Send order to CoW Protocol order-book + const orderId = await orderBookApi.sendOrder(orderCreation) + + const presignCallData = settlementContract.interface.encodeFunctionData('setPreSignature', [ + orderId, + true, + ]) + + const presignRawTx = { + to: settlementContract.address, + data: presignCallData, + value: '0', + } + + // Sending pre-signature transaction to settlement contract + // In this example we are using the Safe SDK, but you can use any other smart-contract wallet + const safeTx = await safeSdk.createTransaction({safeTransactionData: presignRawTx}) + const signedSafeTx = await safeSdk.signTransaction(safeTx) + const safeTxHash = await safeSdk.getTransactionHash(signedSafeTx) + const senderSignature = signedSafeTx.signatures.get(account.toLowerCase())?.data || '' + + await safeApiKit.proposeTransaction({ + safeAddress, + safeTransactionData: signedSafeTx.data, + safeTxHash, + senderAddress: account, + senderSignature, + }) + + setOutput({ orderId, safeTxHash, senderSignature }) + } catch (e: any) { + setOutput(e.toString()) + } + }, + [chainId, input, provider, setOutput, safeSdk, safeApiKit] + ) + + return ( +
+
+
+

Safe address:

+ setSafeAddress(e.target.value)}/> + +

Order:

+ +
+ +
+ +
+
+ + +
+ ) +} diff --git a/external/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts new file mode 100644 index 000000000..35a4830f9 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts @@ -0,0 +1,39 @@ +import {useEffect, useState} from 'react' +import Safe, {EthersAdapter} from '@safe-global/protocol-kit' +import {ethers} from 'ethers' +import SafeApiKit from '@safe-global/api-kit' +import {SAFE_TRANSACTION_SERVICE_URL} from './const' +import {SupportedChainId} from '@cowprotocol/cow-sdk' +import {Web3Provider} from '@ethersproject/providers' + +export function useSafeSdkAndKit(safeAddress: string | null, chainId: SupportedChainId, provider: Web3Provider) { + const [safeSdk, setSafeSdk] = useState(null) + const [safeApiKit, setSafeApiKit] = useState(null) + + useEffect(() => { + const txServiceUrl = SAFE_TRANSACTION_SERVICE_URL[chainId] + + if (!safeAddress) return + + if (!txServiceUrl) { + console.error('Unsupported chainId', chainId) + return + } + + const ethAdapter = new EthersAdapter({ + ethers, + signerOrProvider: provider.getSigner(0), + }) + + const safeApiKit = new SafeApiKit({ + txServiceUrl, + ethAdapter + }) + + setSafeApiKit(safeApiKit) + + Safe.create({ethAdapter, safeAddress}).then(setSafeSdk).catch(console.error) + }, [chainId, provider, safeAddress]) + + return { safeSdk, safeApiKit } +} diff --git a/external/cow-sdk/examples/cra/src/utils.ts b/external/cow-sdk/examples/cra/src/utils.ts new file mode 100644 index 000000000..c4c6c1df2 --- /dev/null +++ b/external/cow-sdk/examples/cra/src/utils.ts @@ -0,0 +1,7 @@ +import { FormEvent } from 'react' + +export function parseFormData(event: FormEvent): T { + const data = new FormData(event.target as HTMLFormElement) + + return Object.fromEntries(data.entries()) as T +} diff --git a/external/cow-sdk/examples/cra/tsconfig.json b/external/cow-sdk/examples/cra/tsconfig.json new file mode 100644 index 000000000..98509a176 --- /dev/null +++ b/external/cow-sdk/examples/cra/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "baseUrl": "src", + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} diff --git a/external/cow-sdk/examples/cra/yarn.lock b/external/cow-sdk/examples/cra/yarn.lock new file mode 100644 index 000000000..b657be914 --- /dev/null +++ b/external/cow-sdk/examples/cra/yarn.lock @@ -0,0 +1,12423 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adobe/css-tools@^4.0.1": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" + integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== + +"@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.0.tgz#c241dc454e5b5917e40d37e525e2f4530c399298" + integrity sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g== + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.3.tgz#cf1c877284a469da5d1ce1d1e53665253fae712e" + integrity sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.3" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.3" + "@babel/types" "^7.21.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/eslint-parser@^7.16.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz#d79e822050f2de65d7f368a076846e7184234af7" + integrity sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.0" + +"@babel/generator@^7.21.3", "@babel/generator@^7.7.2": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.3.tgz#232359d0874b392df04045d72ce2fd9bb5045fce" + integrity sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA== + dependencies: + "@babel/types" "^7.21.3" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz#53ff78472e5ce10a52664272a239787107603ebb" + integrity sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.3.1" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.3": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.3.tgz#1d285d67a19162ff9daa358d4cb41d50c06220b3" + integrity sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63" + integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/plugin-syntax-decorators" "^7.21.0" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78" + integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7" + integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.20.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" + integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e" + integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7" + integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA== + dependencies: + "@babel/helper-module-transforms" "^7.21.2" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz#b32a5556100d424b25e388dd689050d78396884d" + integrity sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" + integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.21.0" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz#2a884f29556d0a68cd3d152dcc9e6c71dfb6eee8" + integrity sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.21.0": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-typescript" "^7.20.0" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz#bcbbca513e8213691fe5d4b23d9251e01f00ebff" + integrity sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.21.0" + "@babel/plugin-transform-typescript" "^7.21.0" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.3", "@babel/traverse@^7.7.2": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.3.tgz#4747c5e7903d224be71f90788b06798331896f67" + integrity sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.3" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.3" + "@babel/types" "^7.21.3" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.3", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.21.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.3.tgz#4865a5357ce40f64e3400b0f3b737dc6d4f64d05" + integrity sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cowprotocol/app-data@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/app-data/-/app-data-2.1.0.tgz#55c95e7ffd3fb0dcfecd0fc64a4273955d1d63d1" + integrity sha512-gOlQxng7X5/aQoz2Eg27OegyKgpZVhOEdUQ9cUsc4OnSPal8F4tmLqefKQQWm4Ktaolk7zzh0kiL1vhWxvszmQ== + dependencies: + ajv "^8.11.0" + cross-fetch "^3.1.5" + ipfs-only-hash "^4.0.0" + json-stringify-deterministic "^1.0.8" + multiformats "^9.6.4" + +"@cowprotocol/contracts@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/contracts/-/contracts-1.6.0.tgz#d0fc83ed8c624b968d1a68bb5c74712c11ec81e0" + integrity sha512-+UKhYRzkvnqqviBru5D3btTLYc743n0O5YTG+wpYwGl4fb7VNKBkFHe28C5Mf1DF/kOfmqfu+0IAvX9Vuq5Dqw== + +"@cowprotocol/cow-sdk@../../": + version "5.4.1" + dependencies: + "@cowprotocol/contracts" "^1.6.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@openzeppelin/merkle-tree" "^1.0.5" + cross-fetch "^3.1.5" + exponential-backoff "^3.1.1" + graphql "^16.3.0" + graphql-request "^4.3.0" + limiter "^2.1.0" + +"@csstools/normalize.css@*": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" + integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.4.1.tgz#087cb8d9d757bb22e9c9946c9c0c2bf8806830f1" + integrity sha512-BISJ6ZE4xQsuL/FmsyRaiffpq977bMlsKfGHTQrOGFErfByxIe6iZTxPf/00Zon9b9a7iUykfQwejN3s2ZW/Bw== + +"@eslint/eslintrc@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.1.tgz#7888fe7ec8f21bc26d646dbd2c11cd776e21192d" + integrity sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.5.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.36.0": + version "8.36.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.36.0.tgz#9837f768c03a1e4a30bd304a64fb8844f0e72efe" + integrity sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg== + +"@ethereumjs/common@2.6.5", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/tx@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/expect-utils@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== + dependencies: + jest-get-type "^29.4.3" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.4.3": + version "29.4.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== + dependencies: + "@jest/schemas" "^29.4.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@openzeppelin/merkle-tree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@openzeppelin/merkle-tree/-/merkle-tree-1.0.5.tgz#4836d377777a7e39f31674f06ec3d6909def7913" + integrity sha512-JkwG2ysdHeIphrScNxYagPy6jZeNONgDRyqU6lbFgE8HKCZFSkcP8r6AjZs+3HZk4uRNV0kNBBzuWhKQ3YV7Kw== + dependencies: + "@ethersproject/abi" "^5.7.0" + ethereum-cryptography "^1.1.2" + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.10" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== + dependencies: + ansi-html-community "^0.0.8" + common-path-prefix "^3.0.0" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + find-up "^5.0.0" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/eslint-patch@^1.1.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== + +"@safe-global/api-kit@^1.3.0": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@safe-global/api-kit/-/api-kit-1.3.1.tgz#108f5ba2f3770354abcec91225cc1ae21ee417a8" + integrity sha512-JKvCNs8p+42+N8pV2MIqoXlBLckTe5CKboVT7t9mTluuA66i5W8+Kr+B5j9D//EIU5vO7iSOOIYnJuA2ck4XRQ== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@safe-global/safe-core-sdk-types" "^2.3.0" + node-fetch "^2.6.6" + +"@safe-global/protocol-kit@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-1.3.0.tgz#fb84a3797a4afc74ac7fc218e796037d6e3cc3cc" + integrity sha512-zBhwHpaUggywmnR1Xm5RV22DpyjmVWYP3pnOl4rcf9LAc1k7IVmw6WIt2YVhHRaWGxVYMd4RitJX8Dx2+8eLZQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/solidity" "^5.7.0" + "@safe-global/safe-deployments" "^1.26.0" + ethereumjs-util "^7.1.5" + semver "^7.5.4" + web3 "^1.8.1" + web3-core "^1.8.1" + web3-utils "^1.8.1" + zksync-web3 "^0.14.3" + +"@safe-global/safe-core-sdk-types@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-2.3.0.tgz#e3be109e58a2d224d1b89052563b04f3efed4bec" + integrity sha512-dU0KkDV1KJNf11ajbUjWiSi4ygdyWfhk1M50lTJWUdCn1/2Bsb/hICM8LoEk6DCoFumxaoCet02SmYakXsW2CA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@safe-global/safe-deployments" "^1.26.0" + web3-core "^1.8.1" + web3-utils "^1.8.1" + +"@safe-global/safe-deployments@^1.26.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.28.0.tgz#9984b513999e5a1cd4449ed2c1ba9a66cb5b223c" + integrity sha512-zWn55unMucN3i3awjDA0XxH9BzGNHyC/qCbuISBh0GMZP/q+VCxERAOEO4OqwyGaxk6sSAzP4usGdmgz2y2svg== + dependencies: + semver "^7.3.7" + +"@scure/base@~1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinclair/typebox@^0.25.16": + version "0.25.24" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== + +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + +"@testing-library/dom@^8.5.0": + version "8.20.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" + integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "^5.0.0" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.4.4" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.16.5": + version "5.16.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== + dependencies: + "@adobe/css-tools" "^4.0.1" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^13.4.0": + version "13.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" + integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.5.0" + "@types/react-dom" "^18.0.0" + +"@testing-library/user-event@^13.5.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/aria-query@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" + integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.3.tgz#dfc508a85781e5698d5b33443416b6268c4b3e8d" + integrity sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w== + dependencies: + "@babel/types" "^7.3.0" + +"@types/bn.js@^5.1.0", "@types/bn.js@^5.1.1": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.3.tgz#5794b3911f0f19e34e3a272c49cbdf48d6f543f2" + integrity sha512-fa7GkppZVEByMWGbTtE5MbmXWJTVbrjjaS8K6uQj+XtuuUv1fsuPAxhygfqLmsb/Ufb3CV8deFCpiMfAgi00Sw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/http-proxy@^1.17.8": + version "1.17.10" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.10.tgz#e576c8e4a0cc5c6a138819025a88e167ebb38d6c" + integrity sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*", "@types/jest@^29.5.0": + version "29.5.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.0.tgz#337b90bbcfe42158f39c2fb5619ad044bbb518ac" + integrity sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + +"@types/node@*", "@types/node@^18.15.10": + version "18.15.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.10.tgz#4ee2171c3306a185d1208dad5f44dae3dee4cfe3" + integrity sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ== + +"@types/node@>=13.7.0": + version "22.5.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.2.tgz#e42344429702e69e28c839a7e16a8262a8086793" + integrity sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg== + dependencies: + undici-types "~6.19.2" + +"@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.5": + version "2.7.2" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== + +"@types/prop-types@*": + version "15.7.5" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + +"@types/q@^1.5.1": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.11": + version "18.0.11" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.11.tgz#321351c1459bc9ca3d216aefc8a167beec334e33" + integrity sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^18.0.30": + version "18.0.30" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.30.tgz#83944e679fc7aeab3f042b76d63c4d755b56b7c4" + integrity sha512-AnME2cHDH11Pxt/yYX6r0w448BfTwQOLEhQEjCdwB7QskEI7EKtxhGUsExTQe/MsY3D9D5rMtu62WRocw9A8FA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/scheduler@*": + version "0.16.3" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + +"@types/secp256k1@^4.0.1": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" + integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== + dependencies: + "@types/node" "*" + +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.5" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== + dependencies: + "@types/jest" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" + integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== + +"@types/ws@^8.5.1": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^16.0.0": + version "16.0.5" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" + integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.0.tgz#52c8a7a4512f10e7249ca1e2e61f81c62c34365c" + integrity sha512-itag0qpN6q2UMM6Xgk6xoHa0D0/P+M17THnr4SVgqn9Rgam5k/He33MA7/D7QoJcdMxHFyX7U9imaBonAX/6qA== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/type-utils" "5.57.0" + "@typescript-eslint/utils" "5.57.0" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.57.0.tgz#e4ddb5f1c77f5be73e7d0435c8d0bf3196b9d2ed" + integrity sha512-0RnrwGQ7MmgtOSnzB/rSGYr2iXENi6L+CtPzX3g5ovo0HlruLukSEKcc4s+q0IEc+DLTDc7Edan0Y4WSQ/bFhw== + dependencies: + "@typescript-eslint/utils" "5.57.0" + +"@typescript-eslint/parser@^5.5.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.57.0.tgz#f675bf2cd1a838949fd0de5683834417b757e4fa" + integrity sha512-orrduvpWYkgLCyAdNtR1QIWovcNZlEm6yL8nwH/eTxWLd8gsP+25pdLHYzL2QdkqrieaDwLpytHqycncv0woUQ== + dependencies: + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/typescript-estree" "5.57.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.57.0.tgz#79ccd3fa7bde0758059172d44239e871e087ea36" + integrity sha512-NANBNOQvllPlizl9LatX8+MHi7bx7WGIWYjPHDmQe5Si/0YEYfxSljJpoTyTWFTgRy3X8gLYSE4xQ2U+aCozSw== + dependencies: + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/visitor-keys" "5.57.0" + +"@typescript-eslint/type-utils@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.57.0.tgz#98e7531c4e927855d45bd362de922a619b4319f2" + integrity sha512-kxXoq9zOTbvqzLbdNKy1yFrxLC6GDJFE2Yuo3KqSwTmDOFjUGeWSakgoXT864WcK5/NAJkkONCiKb1ddsqhLXQ== + dependencies: + "@typescript-eslint/typescript-estree" "5.57.0" + "@typescript-eslint/utils" "5.57.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.57.0.tgz#727bfa2b64c73a4376264379cf1f447998eaa132" + integrity sha512-mxsod+aZRSyLT+jiqHw1KK6xrANm19/+VFALVFP5qa/aiJnlP38qpyaTd0fEKhWvQk6YeNZ5LGwI1pDpBRBhtQ== + +"@typescript-eslint/typescript-estree@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.0.tgz#ebcd0ee3e1d6230e888d88cddf654252d41e2e40" + integrity sha512-LTzQ23TV82KpO8HPnWuxM2V7ieXW8O142I7hQTxWIHDcCEIjtkat6H96PFkYBQqGFLW/G/eVVOB9Z8rcvdY/Vw== + dependencies: + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/visitor-keys" "5.57.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.57.0", "@typescript-eslint/utils@^5.43.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.57.0.tgz#eab8f6563a2ac31f60f3e7024b91bf75f43ecef6" + integrity sha512-ps/4WohXV7C+LTSgAL5CApxvxbMkl9B9AUZRtnEFonpIxZDIT7wC1xfvuJONMidrkB9scs4zhtRyIwHh4+18kw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.57.0" + "@typescript-eslint/types" "5.57.0" + "@typescript-eslint/typescript-estree" "5.57.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.57.0": + version "5.57.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.0.tgz#e2b2f4174aff1d15eef887ce3d019ecc2d7a8ac1" + integrity sha512-ery2g3k0hv5BLiKpPuwYt9KBkAp2ugT6VvyShXdLOkax895EC55sP0Tx5L0fZaQueiK3fBLvHVvEl3jFS5ia+g== + dependencies: + "@typescript-eslint/types" "5.57.0" + eslint-visitor-keys "^3.3.0" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abortcontroller-polyfill@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-node@^1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" + integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== + dependencies: + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" + +acorn-walk@^7.0.0, acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.0.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +add@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" + integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.11.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^5.0.0, aria-query@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.5, array-includes@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.flat@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.tosorted@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.1.3" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +"assert@npm:assert@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== + dependencies: + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.13: + version "10.4.14" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" + integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== + +axe-core@^4.6.2: + version "4.6.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece" + integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg== + +axobject-query@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bfj@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== + dependencies: + bluebird "^3.5.5" + check-types "^11.1.1" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bignumber.js@^9.0.0: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0, bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.6, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.16.0: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" + integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== + dependencies: + bn.js "^5.2.1" + browserify-rsa "^4.1.0" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.4" + inherits "^2.0.4" + parse-asn1 "^5.1.6" + readable-stream "^3.6.2" + safe-buffer "^5.2.1" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer@^5.0.5, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3, "buffer@npm:buffer@6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-bind@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001472" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz#3f484885f2a2986c019dc416e65d9d62798cdd64" + integrity sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^2.0.0, chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +check-types@^11.1.1: + version "11.2.2" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" + integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.1.4, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-js-compat@^3.25.1: + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.29.1.tgz#15c0fb812ea27c973c18d425099afa50b934b41b" + integrity sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA== + dependencies: + browserslist "^4.21.5" + +core-js-pure@^3.23.3: + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.29.1.tgz#1be6ca2b8772f6b4df7fc4621743286e676c6162" + integrity sha512-4En6zYVi0i0XlXHVz/bi6l1XDjCqkKRq765NXuX+SnaIatlE96Odt5lMLjdxUiNI1v9OXI5DSLWYPlmTfkTktg== + +core-js@^3.19.2: + version "3.29.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.29.1.tgz#40ff3b41588b091aaed19ca1aa5cb111803fa9a6" + integrity sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +"crypto@npm:crypto-browserify@3.12.0": + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.3.1: + version "6.4.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" + integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.7.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" + integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.19" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.8" + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssdb@^7.1.0: + version "7.5.1" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.5.1.tgz#1cd18e13994adf07cb30f4dc21d93b0cff212519" + integrity sha512-YdmjGmoS9TT5wgoKjySaBqgbPYtyxbbegeK8WNqWbZRa7SJcX9V0qGfDjbI8oPQwmh/zuA6ZSnQBCKLj9bZufw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" + integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug@2.6.9, debug@^2.2.0, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.3.1: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decimal.js@^10.2.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.2.0" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6" + integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw== + dependencies: + call-bind "^1.0.2" + es-get-iterator "^1.1.2" + get-intrinsic "^1.1.3" + is-arguments "^1.1.1" + is-array-buffer "^3.0.1" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +defined@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +des.js@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" + integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detective@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034" + integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw== + dependencies: + acorn-node "^1.8.2" + defined "^1.0.0" + minimist "^1.2.6" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff-sequences@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^5.2.2: + version "5.5.0" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.5.0.tgz#f59cbf3396c130957c56a6ad5fd3959ccdc30065" + integrity sha512-USawdAUzRkV6xrqTjiAEp6M9YagZEzWcSUaZTcIFAiyQWW1SoI6KyId8y2+/71wbgHKQAKd+iupLv4YvEwYWvA== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.6: + version "3.1.9" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.284: + version "1.4.341" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz#ab31e9e57ef7758a14c7a7977a1978d599514470" + integrity sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-get-iterator@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.62" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + dependencies: + debug "^3.2.7" + is-core-module "^2.11.0" + resolve "^1.22.1" + +eslint-module-utils@^2.7.4: + version "2.7.4" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974" + integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA== + dependencies: + debug "^3.2.7" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.27.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + array.prototype.flatmap "^1.3.1" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.7" + eslint-module-utils "^2.7.4" + has "^1.0.3" + is-core-module "^2.11.0" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.6" + resolve "^1.22.1" + semver "^6.3.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== + dependencies: + "@babel/runtime" "^7.20.7" + aria-query "^5.1.3" + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + ast-types-flow "^0.0.7" + axe-core "^4.6.2" + axobject-query "^3.1.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.3.3" + language-tags "=1.0.5" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + semver "^6.3.0" + +eslint-plugin-react-hooks@^4.3.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== + +eslint-plugin-react@^7.27.1: + version "7.32.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.0" + string.prototype.matchall "^4.0.8" + +eslint-plugin-testing-library@^5.0.1: + version "5.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.2.tgz#12f231ad9b52b6aef45c801fd00aa129a932e0c2" + integrity sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw== + dependencies: + "@typescript-eslint/utils" "^5.43.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== + +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== + dependencies: + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@^8.3.0: + version "8.36.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.36.0.tgz#1bd72202200a5492f91803b113fb8a83b11285cf" + integrity sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.0.1" + "@eslint/js" "8.36.0" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-visitor-keys "^3.3.0" + espree "^9.5.0" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.5.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.0.tgz#3646d4e3f58907464edba852fa047e6a27bdf113" + integrity sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-ens-namehash@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + +ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +expect@^29.0.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== + dependencies: + "@jest/expect-utils" "^29.5.0" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.5.0" + jest-message-util "^29.5.0" + jest-util "^29.5.0" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +express@^4.14.0, express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.12, fast-glob@^3.2.9: + version "3.2.12" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-intrinsic@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +graphql-request@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" + integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== + dependencies: + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql@^16.3.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hamt-sharding@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" + integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^3.0.0" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + +"http@npm:stream-http@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5" + integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +"https@npm:https-browserify@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interface-ipld-format@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" + integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== + dependencies: + cids "^1.1.6" + multicodec "^3.0.1" + multihashes "^4.0.2" + +internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +ipfs-only-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6" + integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== + dependencies: + ipfs-unixfs-importer "^7.0.1" + meow "^9.0.0" + +ipfs-unixfs-importer@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz#b850e831ca9647d589ef50bc33421f65bab7bba6" + integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== + dependencies: + bl "^5.0.0" + cids "^1.1.5" + err-code "^3.0.1" + hamt-sharding "^2.0.0" + ipfs-unixfs "^4.0.3" + ipld-dag-pb "^0.22.2" + it-all "^1.0.5" + it-batch "^1.0.8" + it-first "^1.0.6" + it-parallel-batch "^1.0.9" + merge-options "^3.0.4" + multihashing-async "^2.1.0" + rabin-wasm "^0.1.4" + uint8arrays "^2.1.2" + +ipfs-unixfs@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" + integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipld-dag-pb@^0.22.2: + version "0.22.3" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" + integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== + dependencies: + cids "^1.0.0" + interface-ipld-format "^1.0.0" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + protobufjs "^6.10.2" + stable "^0.1.8" + uint8arrays "^2.0.5" + +is-arguments@^1.0.4, is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0, is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-core-module@^2.13.0, is-core-module@^2.5.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-map@^2.0.1, is-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-nan@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-set@^2.0.1, is-set@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typed-array@^1.1.3: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +it-all@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-batch@^1.0.8, it-batch@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" + integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-parallel-batch@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz#f889b4e1c7a62ef24111dbafbaaa010b33d00f69" + integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== + dependencies: + it-batch "^1.0.9" + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-diff@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-get-type@^29.4.3: + version "29.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== + dependencies: + chalk "^4.0.0" + jest-diff "^29.5.0" + jest-get-type "^29.4.3" + pretty-format "^29.5.0" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.5.0" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.5.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== + dependencies: + "@jest/types" "^29.5.0" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== + dependencies: + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +js-sdsl@^4.1.4: + version "4.4.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0, json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-deterministic@^1.0.8: + version "1.0.12" + resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" + integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0, json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== + dependencies: + array-includes "^3.1.5" + object.assign "^4.1.3" + +just-performance@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/just-performance/-/just-performance-4.3.0.tgz#cc2bc8c9227f09e97b6b1df4cd0de2df7ae16db1" + integrity sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q== + +keccak@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +language-subtag-registry@~0.3.2: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@=1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +launch-editor@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" + integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.7.3" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +limiter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-2.1.0.tgz#d38d7c5b63729bb84fb0c4d8594b7e955a5182a2" + integrity sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw== + dependencies: + just-performance "4.3.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lz-string@^1.4.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.4.13" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345" + integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg== + dependencies: + fs-monkey "^1.0.3" + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.7.5" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz#afbb344977659ec0f1f6e050c7aea456b121cfc5" + integrity sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" + integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== + +mkdirp@^0.5.5, mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.2, multiformats@^9.6.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multihashing-async@^2.0.0, multihashing-async@^2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" + integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^3.0.0" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@^3.3.4: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.6: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.7.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.7.1.tgz#cd7d2eb48e594874053150a9418ac85af83ca8f7" + integrity sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +nwsapi@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0" + integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.3, object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.fromentries@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.5" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz#db5a9002489b64eef903df81d6623c07e5b4b4d3" + integrity sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw== + dependencies: + array.prototype.reduce "^1.0.5" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.hasown@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.20.4" + +object.values@^1.1.0, object.values@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA== + dependencies: + http-https "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-import@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" + integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" + integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.0.9, postcss@^8.3.5, postcss@^8.4.19, postcss@^8.4.4: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.0.0, pretty-format@^29.5.0: + version "29.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== + dependencies: + "@jest/schemas" "^29.4.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +promise@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +protobufjs@^6.10.2: + version "6.11.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.28, psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +qs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +rabin-wasm@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.0" + +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-scripts@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react@^18.2.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.5.0, readable-stream@^3.6.0, readable-stream@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.2.11" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +request@^2.79.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.10.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== + dependencies: + loose-envify "^1.1.0" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.4: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sparse-array@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +"stream@npm:stream-browserify@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.2.tgz#eaebca714d9e462c19aa1e3599057bc363924899" + integrity sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +swarm-js@^0.1.40: + version "0.1.42" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.42.tgz#497995c62df6696f6e22372f457120e43e727979" + integrity sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^11.8.5" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tailwindcss@^3.0.2: + version "3.2.7" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.7.tgz#5936dd08c250b05180f0944500c01dce19188c07" + integrity sha512-B6DLqJzc21x7wntlH/GsZwEXTBttVSl1FtCzC8WP4oBc/NKef7kaax5jeihkkCEWc831/5NDJ9gRNDK6NEioQQ== + dependencies: + arg "^5.0.2" + chokidar "^3.5.3" + color-name "^1.1.4" + detective "^5.2.1" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.2.12" + glob-parent "^6.0.2" + is-glob "^4.0.3" + lilconfig "^2.0.6" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.0.9" + postcss-import "^14.1.0" + postcss-js "^4.0.0" + postcss-load-config "^3.1.4" + postcss-nested "6.0.0" + postcss-selector-parser "^6.0.11" + postcss-value-parser "^4.2.0" + quick-lru "^5.1.1" + resolve "^1.22.1" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" + +terser@^5.0.0, terser@^5.10.0, terser@^5.16.5: + version "5.16.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.8.tgz#ccde583dabe71df3f4ed02b65eb6532e0fae15d5" + integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +tsconfig-paths@^3.14.1: + version "3.14.2" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.2.tgz#891e1a90c5189d8506af64b9ef929fca99ba1ee5" + integrity sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw== + +uint8arrays@^2.0.5, uint8arrays@^2.1.2: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +"url@npm:url@0.11.3": + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== + dependencies: + punycode "^1.4.1" + qs "^6.11.2" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@^0.12.5, "util@npm:util@0.12.5": + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +varint@^5.0.0, varint@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" + integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== + +web3-bzz@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.3.tgz#13942b37757eb850f3500a8e08bf605448b67566" + integrity sha512-XDIRsTwekdBXtFytMpHBuun4cK4x0ZMIDXSoo1UVYp+oMyZj07c7gf7tNQY5qZ/sN+CJIas4ilhN25VJcjSijQ== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + +web3-core-helpers@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.3.tgz#f2db40ea57e888795e46f229b06113b60bcd671c" + integrity sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA== + dependencies: + web3-eth-iban "1.10.3" + web3-utils "1.10.3" + +web3-core-method@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.3.tgz#63f16310ccab4eec8eca0a337d534565c2ba8d33" + integrity sha512-VZ/Dmml4NBmb0ep5PTSg9oqKoBtG0/YoMPei/bq/tUdlhB2dMB79sbeJPwx592uaV0Vpk7VltrrrBv5hTM1y4Q== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.10.3" + web3-core-promievent "1.10.3" + web3-core-subscriptions "1.10.3" + web3-utils "1.10.3" + +web3-core-promievent@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.3.tgz#9765dd42ce6cf2dc0a08eaffee607b855644f290" + integrity sha512-HgjY+TkuLm5uTwUtaAfkTgRx/NzMxvVradCi02gy17NxDVdg/p6svBHcp037vcNpkuGeFznFJgULP+s2hdVgUQ== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.3.tgz#c34ca8e998a18d6ca3fa7f7a11d4391da401c987" + integrity sha512-VT9sKJfgM2yBOIxOXeXiDuFMP4pxzF6FT+y8KTLqhDFHkbG3XRe42Vm97mB/IvLQCJOmokEjl3ps8yP1kbggyw== + dependencies: + util "^0.12.5" + web3-core-helpers "1.10.3" + web3-providers-http "1.10.3" + web3-providers-ipc "1.10.3" + web3-providers-ws "1.10.3" + +web3-core-subscriptions@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.3.tgz#58768cd72a9313252ef05dc52c09536f009a9479" + integrity sha512-KW0Mc8sgn70WadZu7RjQ4H5sNDJ5Lx8JMI3BWos+f2rW0foegOCyWhRu33W1s6ntXnqeBUw5rRCXZRlA3z+HNA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.3" + +web3-core@1.10.3, web3-core@^1.8.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.3.tgz#4aeb8f4b0cb5775d9fa4edf1127864743f1c3ae3" + integrity sha512-Vbk0/vUNZxJlz3RFjAhNNt7qTpX8yE3dn3uFxfX5OHbuon5u65YEOd3civ/aQNW745N0vGUlHFNxxmn+sG9DIw== + dependencies: + "@types/bn.js" "^5.1.1" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-requestmanager "1.10.3" + web3-utils "1.10.3" + +web3-eth-abi@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.3.tgz#7decfffa8fed26410f32cfefdc32d3e76f717ca2" + integrity sha512-O8EvV67uhq0OiCMekqYsDtb6FzfYzMXT7VMHowF8HV6qLZXCGTdB/NH4nJrEh2mFtEwVdS6AmLFJAQd2kVyoMQ== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.10.3" + +web3-eth-accounts@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.3.tgz#9ecb816b81cd97333988bfcd0afaee5d13bbb198" + integrity sha512-8MipGgwusDVgn7NwKOmpeo3gxzzd+SmwcWeBdpXknuyDiZSQy9tXe+E9LeFGrmys/8mLLYP79n3jSbiTyv+6pQ== + dependencies: + "@ethereumjs/common" "2.6.5" + "@ethereumjs/tx" "3.5.2" + "@ethereumjs/util" "^8.1.0" + eth-lib "0.2.8" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-utils "1.10.3" + +web3-eth-contract@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.3.tgz#8880468e2ba7d8a4791cf714f67d5e1ec1591275" + integrity sha512-Y2CW61dCCyY4IoUMD4JsEQWrILX4FJWDWC/Txx/pr3K/+fGsBGvS9kWQN5EsVXOp4g7HoFOfVh9Lf7BmVVSRmg== + dependencies: + "@types/bn.js" "^5.1.1" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-promievent "1.10.3" + web3-core-subscriptions "1.10.3" + web3-eth-abi "1.10.3" + web3-utils "1.10.3" + +web3-eth-ens@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.3.tgz#ae5b49bcb9823027e0b28aa6b1de58d726cbaafa" + integrity sha512-hR+odRDXGqKemw1GFniKBEXpjYwLgttTES+bc7BfTeoUyUZXbyDHe5ifC+h+vpzxh4oS0TnfcIoarK0Z9tFSiQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-promievent "1.10.3" + web3-eth-abi "1.10.3" + web3-eth-contract "1.10.3" + web3-utils "1.10.3" + +web3-eth-iban@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.3.tgz#91d458e5400195edc883a0d4383bf1cecd17240d" + integrity sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA== + dependencies: + bn.js "^5.2.1" + web3-utils "1.10.3" + +web3-eth-personal@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.3.tgz#4e72008aa211327ccc3bfa7671c510e623368457" + integrity sha512-avrQ6yWdADIvuNQcFZXmGLCEzulQa76hUOuVywN7O3cklB4nFc/Gp3yTvD3bOAaE7DhjLQfhUTCzXL7WMxVTsw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-net "1.10.3" + web3-utils "1.10.3" + +web3-eth@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.3.tgz#b8c6f37f1aac52422583a5a9c29130983a3fb3b1" + integrity sha512-Uk1U2qGiif2mIG8iKu23/EQJ2ksB1BQXy3wF3RvFuyxt8Ft9OEpmGlO7wOtAyJdoKzD5vcul19bJpPcWSAYZhA== + dependencies: + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-subscriptions "1.10.3" + web3-eth-abi "1.10.3" + web3-eth-accounts "1.10.3" + web3-eth-contract "1.10.3" + web3-eth-ens "1.10.3" + web3-eth-iban "1.10.3" + web3-eth-personal "1.10.3" + web3-net "1.10.3" + web3-utils "1.10.3" + +web3-net@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.3.tgz#9486c2fe51452cb958e11915db6f90bd6caa5482" + integrity sha512-IoSr33235qVoI1vtKssPUigJU9Fc/Ph0T9CgRi15sx+itysmvtlmXMNoyd6Xrgm9LuM4CIhxz7yDzH93B79IFg== + dependencies: + web3-core "1.10.3" + web3-core-method "1.10.3" + web3-utils "1.10.3" + +web3-providers-http@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.3.tgz#d8166ee89db82d37281ea9e15c5882a2d7928755" + integrity sha512-6dAgsHR3MxJ0Qyu3QLFlQEelTapVfWNTu5F45FYh8t7Y03T1/o+YAkVxsbY5AdmD+y5bXG/XPJ4q8tjL6MgZHw== + dependencies: + abortcontroller-polyfill "^1.7.5" + cross-fetch "^4.0.0" + es6-promise "^4.2.8" + web3-core-helpers "1.10.3" + +web3-providers-ipc@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.3.tgz#a7e015957fc037d8a87bd4b6ae3561c1b1ad1f46" + integrity sha512-vP5WIGT8FLnGRfswTxNs9rMfS1vCbMezj/zHbBe/zB9GauBRTYVrUo2H/hVrhLg8Ut7AbsKZ+tCJ4mAwpKi2hA== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.10.3" + +web3-providers-ws@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.3.tgz#03c84958f9da251349cd26fd7a4ae567e3af6caa" + integrity sha512-/filBXRl48INxsh6AuCcsy4v5ndnTZ/p6bl67kmO9aK1wffv7CT++DrtclDtVMeDGCgB3van+hEf9xTAVXur7Q== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.3" + websocket "^1.0.32" + +web3-shh@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.3.tgz#ee44f760598a65a290d611c443838aac854ee858" + integrity sha512-cAZ60CPvs9azdwMSQ/PSUdyV4PEtaW5edAZhu3rCXf6XxQRliBboic+AvwUvB6j3eswY50VGa5FygfVmJ1JVng== + dependencies: + web3-core "1.10.3" + web3-core-method "1.10.3" + web3-core-subscriptions "1.10.3" + web3-net "1.10.3" + +web3-utils@1.10.3, web3-utils@^1.8.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" + integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@^1.8.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.3.tgz#5e80ac532dc432b09fde668d570b0ad4e6710897" + integrity sha512-DgUdOOqC/gTqW+VQl1EdPxrVRPB66xVNtuZ5KD4adVBtko87hkgM8BTZ0lZ8IbUfnQk6DyjcDujMiH3oszllAw== + dependencies: + web3-bzz "1.10.3" + web3-core "1.10.3" + web3-eth "1.10.3" + web3-eth-personal "1.10.3" + web3-net "1.10.3" + web3-shh "1.10.3" + web3-utils "1.10.3" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0: + version "4.13.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.13.1.tgz#6417a9b5d2f528e7644b68d6ed335e392dccffe8" + integrity sha512-5tWg00bnWbYgkN+pd5yISQKDejRBYGEw15RaEEslH+zdbNDxxaZvEAO2WulaSaFKb5n3YG8JXsGaDsut1D0xdA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.1" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.76.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.3.tgz#dffdc72c8950e5b032fddad9c4452e7787d2f489" + integrity sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@^1.0.32: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.11, which-typed-array@^1.1.2: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +workbox-background-sync@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" + integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== + dependencies: + idb "^7.0.1" + workbox-core "6.5.4" + +workbox-broadcast-update@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" + integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== + dependencies: + workbox-core "6.5.4" + +workbox-build@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" + integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.5.4" + workbox-broadcast-update "6.5.4" + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-google-analytics "6.5.4" + workbox-navigation-preload "6.5.4" + workbox-precaching "6.5.4" + workbox-range-requests "6.5.4" + workbox-recipes "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + workbox-streams "6.5.4" + workbox-sw "6.5.4" + workbox-window "6.5.4" + +workbox-cacheable-response@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" + integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== + dependencies: + workbox-core "6.5.4" + +workbox-core@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" + integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== + +workbox-expiration@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" + integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== + dependencies: + idb "^7.0.1" + workbox-core "6.5.4" + +workbox-google-analytics@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" + integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== + dependencies: + workbox-background-sync "6.5.4" + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + +workbox-navigation-preload@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" + integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== + dependencies: + workbox-core "6.5.4" + +workbox-precaching@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" + integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + +workbox-range-requests@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" + integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== + dependencies: + workbox-core "6.5.4" + +workbox-recipes@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" + integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== + dependencies: + workbox-cacheable-response "6.5.4" + workbox-core "6.5.4" + workbox-expiration "6.5.4" + workbox-precaching "6.5.4" + workbox-routing "6.5.4" + workbox-strategies "6.5.4" + +workbox-routing@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" + integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== + dependencies: + workbox-core "6.5.4" + +workbox-strategies@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" + integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== + dependencies: + workbox-core "6.5.4" + +workbox-streams@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" + integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== + dependencies: + workbox-core "6.5.4" + workbox-routing "6.5.4" + +workbox-sw@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" + integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== + +workbox-webpack-plugin@^6.4.1: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" + integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.5.4" + +workbox-window@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" + integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.5.4" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr@^2.0.4, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^20.2.2, yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yarn@^1.22.19: + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zksync-web3@^0.14.3: + version "0.14.4" + resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.4.tgz#0b70a7e1a9d45cc57c0971736079185746d46b1f" + integrity sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg== + +"zlib@npm:browserify-zlib@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" diff --git a/external/cow-sdk/examples/nodejs/package.json b/external/cow-sdk/examples/nodejs/package.json new file mode 100644 index 000000000..6f98cabef --- /dev/null +++ b/external/cow-sdk/examples/nodejs/package.json @@ -0,0 +1,16 @@ +{ + "name": "cow-sdk-nodejs-example", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "ts-node src/index.ts", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": { + "@cowprotocol/cow-sdk": "^4.0.3", + "ts-node": "^10.9.1" + }, + "author": "", + "license": "ISC" +} diff --git a/external/cow-sdk/examples/nodejs/src/index.ts b/external/cow-sdk/examples/nodejs/src/index.ts new file mode 100644 index 000000000..e51657777 --- /dev/null +++ b/external/cow-sdk/examples/nodejs/src/index.ts @@ -0,0 +1,69 @@ +import { SupportedChainId, OrderKind, postSwapOrder, postLimitOrder } from '../../../src' + +const privateKey = 'xxx' + +// Swap +;(async function () { + return + + postSwapOrder({ + appCode: 'cow-sdk-example', + signer: privateKey, + chainId: SupportedChainId.SEPOLIA, + + kind: OrderKind.SELL, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000', + }) +})() + +// Limit order +;(async function () { + return + + postLimitOrder({ + appCode: 'cow-sdk-example', + signer: privateKey, + chainId: SupportedChainId.SEPOLIA, + + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + sellAmount: '120000000000000000', + buyAmount: '66600000000000000000', + networkCostsAmount: '0', + }) +})() + +// Swap with partner fee +;(async function () { + postSwapOrder( + { + appCode: 'cow-sdk-example', + signer: privateKey, + chainId: SupportedChainId.SEPOLIA, + + kind: OrderKind.SELL, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000', + }, + { + appData: { + metadata: { + partnerFee: { + bps: 100, + recipient: '0xfb3c7eb936cAA12B5A884d612393969A557d4307', + }, + }, + }, + } + ) +})() diff --git a/external/cow-sdk/examples/nodejs/yarn.lock b/external/cow-sdk/examples/nodejs/yarn.lock new file mode 100644 index 000000000..40649d429 --- /dev/null +++ b/external/cow-sdk/examples/nodejs/yarn.lock @@ -0,0 +1,524 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@cowprotocol/contracts@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/contracts/-/contracts-1.4.0.tgz#e93e5f25aac76feeaa348fa57231903274676247" + integrity sha512-XLs3SlPmXD4lbiWIO7mxxuCn1eE5isuO6EUlE1cj17HqN/wukDAN0xXYPx6umOH/XdjGS33miMiPHELEyY9siw== + +"@cowprotocol/cow-sdk@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-4.0.3.tgz#bd4da3e1821c33e6f5a29e04786aaa16c346bb02" + integrity sha512-bEGpHwfFpUv4he5kH99gmmJU1kZaqRH4JUCeFqIzZAxey86i+qLzVS00r3GDw5o/tKYY/0677hgusH2srr8MZw== + dependencies: + "@cowprotocol/contracts" "^1.4.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@openzeppelin/merkle-tree" "^1.0.5" + cross-fetch "^3.1.5" + exponential-backoff "^3.1.1" + graphql "^16.3.0" + graphql-request "^4.3.0" + limiter "^2.1.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@openzeppelin/merkle-tree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@openzeppelin/merkle-tree/-/merkle-tree-1.0.5.tgz#4836d377777a7e39f31674f06ec3d6909def7913" + integrity sha512-JkwG2ysdHeIphrScNxYagPy6jZeNONgDRyqU6lbFgE8HKCZFSkcP8r6AjZs+3HZk4uRNV0kNBBzuWhKQ3YV7Kw== + dependencies: + "@ethersproject/abi" "^5.7.0" + ethereum-cryptography "^1.1.2" + +"@scure/base@~1.1.0": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.3.tgz#8584115565228290a6c6c4961973e0903bb3df2f" + integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +ethereum-cryptography@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +graphql-request@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" + integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== + dependencies: + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql@^16.3.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +inherits@^2.0.3, inherits@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +js-sha3@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +just-performance@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/just-performance/-/just-performance-4.3.0.tgz#cc2bc8c9227f09e97b6b1df4cd0de2df7ae16db1" + integrity sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q== + +limiter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-2.1.0.tgz#d38d7c5b63729bb84fb0c4d8594b7e955a5182a2" + integrity sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw== + dependencies: + just-performance "4.3.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== diff --git a/external/cow-sdk/examples/vanilla/package.json b/external/cow-sdk/examples/vanilla/package.json new file mode 100644 index 000000000..699c7253c --- /dev/null +++ b/external/cow-sdk/examples/vanilla/package.json @@ -0,0 +1,22 @@ +{ + "name": "cow-sdk-vanilla-example", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "start": "webpack serve --mode=development", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "dependencies": {}, + "author": "", + "license": "ISC", + "devDependencies": { + "css-loader": "^7.1.2", + "html-webpack-plugin": "^5.5.0", + "style-loader": "^4.0.0", + "ts-loader": "^9.4.2", + "webpack": "^5.76.3", + "webpack-cli": "^5.0.1", + "webpack-dev-server": "^4.13.1" + } +} diff --git a/external/cow-sdk/examples/vanilla/src/formState.ts b/external/cow-sdk/examples/vanilla/src/formState.ts new file mode 100644 index 000000000..4ee1f8b21 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/formState.ts @@ -0,0 +1,59 @@ +import { OrderKind, SupportedChainId, SwapParameters, TradeParameters } from '../../../src' +import { TOKENS } from './tokens' + +interface FormState { + privateKey: string + chainId: string + sellToken: string + buyToken: string + amount: string + slippageBps: string + kind: 'sell' | 'buy' +} + +const DECIMALS_SHIFT = 6 + +/** + * This function converts input amount to the correct number of decimals. + * For example, if the input amount is 1.23 and the token has 18 decimals, + * the result will be 1230000000000000000. + * Since this is a simplified example, we only allow input amounts with maximum 6 decimals. + */ +const adjustDecimals = (amount: number, decimals: number) => { + const multiplicator = decimals > DECIMALS_SHIFT ? DECIMALS_SHIFT : 0 + + return BigInt(amount * 10 ** multiplicator) * BigInt(10 ** (decimals - multiplicator)) +} + +export const getFormState = (): FormState => { + return Object.fromEntries(new FormData(document.getElementById('form') as HTMLFormElement)) as unknown as FormState +} + +export const getTradeParameters = (): TradeParameters => { + const { + slippageBps: _slippageBps, + chainId: _chainId, + sellToken: _sellToken, + buyToken: _buyToken, + amount: _amount, + kind, + } = getFormState() + + const chainId: SupportedChainId = +_chainId + const isSell = kind === 'sell' + const sellToken = TOKENS[chainId].find((t) => t.address === _sellToken) + const buyToken = TOKENS[chainId].find((t) => t.address === _buyToken) + const decimals = isSell ? sellToken.decimals : buyToken.decimals + const amount = adjustDecimals(+_amount, decimals) + const slippageBps = _slippageBps ? +_slippageBps : undefined + + return { + sellToken: sellToken.address, + sellTokenDecimals: sellToken.decimals, + buyToken: buyToken.address, + buyTokenDecimals: buyToken.decimals, + amount: amount.toString(), + slippageBps, + kind: isSell ? OrderKind.SELL : OrderKind.BUY, + } +} diff --git a/external/cow-sdk/examples/vanilla/src/index.ts b/external/cow-sdk/examples/vanilla/src/index.ts new file mode 100644 index 000000000..e8fa0cc5f --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/index.ts @@ -0,0 +1,85 @@ +import { SupportedChainId } from '../../../src' + +import { TradingSdk, QuoteAndPost } from '../../../src/trading' + +import { TOKENS } from './tokens' +import { atomsToAmount } from './utils' +import { pageHtml } from './pageHtml' +import { pageActions, printResult } from './pageActions' +import { getFormState, getTradeParameters } from './formState' +import './styles.css' + +const appCode = 'trade-sdk-example' + +// Run the example +;(async function () { + let quoteAndPost: QuoteAndPost | null = null + + // Render page + const page = pageHtml() + document.body.appendChild(page) + + // Bind actions to the page + pageActions({ + onFormReset() { + quoteAndPost = null + }, + async onGetQuote() { + const { + slippageBps: _slippageBps, + chainId: _chainId, + sellToken: _sellToken, + buyToken: _buyToken, + amount: _amount, + kind, + privateKey, + } = getFormState() + + const chainId: SupportedChainId = +_chainId + const isSell = kind === 'sell' + const sellToken = TOKENS[chainId].find((t) => t.address === _sellToken) + const buyToken = TOKENS[chainId].find((t) => t.address === _buyToken) + + const sdk = new TradingSdk({ + chainId, + signer: privateKey || (window as any).ethereum, + appCode, + }) + + quoteAndPost = await sdk.getQuote(getTradeParameters()) + + const { + amountsAndCosts: { beforeNetworkCosts, afterSlippage }, + } = quoteAndPost.quoteResults + + console.log('Quote results:', quoteAndPost.quoteResults) + + const outputToken = isSell ? buyToken : sellToken + + printResult(` + Quote amount: ${atomsToAmount( + beforeNetworkCosts[isSell ? 'buyAmount' : 'sellAmount'], + outputToken.decimals + )} ${outputToken.symbol} + Amount to sign: ${atomsToAmount( + afterSlippage[isSell ? 'buyAmount' : 'sellAmount'], + outputToken.decimals + )} ${outputToken.symbol} + See more info in the console (Quote results) + `) + }, + async onConfirmOrder() { + const orderToSign = quoteAndPost.quoteResults.orderToSign + + printResult(` + You are going to sign: + ${JSON.stringify(orderToSign, null, 4)} + `) + }, + async onSignAndSendOrder() { + const orderId = await quoteAndPost.postSwapOrderFromQuote() + + printResult(`Order created, id: ${orderId}`) + }, + }) +})() diff --git a/external/cow-sdk/examples/vanilla/src/pageActions.ts b/external/cow-sdk/examples/vanilla/src/pageActions.ts new file mode 100644 index 000000000..f8e0b5bf2 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/pageActions.ts @@ -0,0 +1,113 @@ +import { tokensSelect } from './pageHtml' + +const sendOrderText = 'Send order' + +interface Actions { + onFormReset(): void + onGetQuote(): Promise + onConfirmOrder(): Promise + onSignAndSendOrder(): Promise +} + +export function pageActions(actions: Actions) { + onFormReset(actions.onFormReset) + onNetworkChange() + onGetQuote(actions) +} + +export function printResult(text: string) { + const resultsEl = document.getElementById('results')! as HTMLTextAreaElement + + resultsEl.value = text + .split('\n') + .map((t) => t.trim()) + .join('\n') +} + +function onFormReset(callback: () => void) { + document.getElementById('form')?.addEventListener('change', () => { + printResult('') + + document.getElementById('sendOrder').innerText = sendOrderText + callback() + }) +} + +function onNetworkChange() { + document.getElementById('chainId').addEventListener('change', (event) => { + const chainId = +(event.target as unknown as { value: string }).value + + document.getElementById('sellToken')!.parentElement.innerHTML = tokensSelect(chainId, 'sellToken') + document.getElementById('buyToken')!.parentElement.innerHTML = tokensSelect(chainId, 'buyToken') + }) +} + +function onGetQuote(actions: Actions) { + const connectWallet = document.getElementById('connectWallet') as HTMLButtonElement + + connectWallet.addEventListener('click', async (event) => { + event.preventDefault() + + try { + const accounts: string[] = await (window as any).ethereum.request({ method: 'eth_requestAccounts' }) + + if (accounts.length) { + connectWallet.disabled = true + connectWallet.innerText = 'Connected' + } + } catch (error) { + printError(error) + } + }) + + document.getElementById('getQuote').addEventListener('click', (event) => { + event.preventDefault() + + printResult('Loading...') + + const sendOrderEl = document.getElementById('sendOrder') + + sendOrderEl.innerText = sendOrderText + + actions.onFormReset() + + actions + .onGetQuote() + .then(() => { + const sendOrderEl = document.getElementById('sendOrder') as HTMLButtonElement + + sendOrderEl.style.display = 'inline-block' + + sendOrderEl.addEventListener('click', async (event) => { + event.preventDefault() + + sendOrderEl.disabled = true + sendOrderEl.innerText = 'Loading...' + + try { + if (sendOrderEl.innerText === sendOrderText) { + await actions.onConfirmOrder() + + sendOrderEl.innerText = 'Sign and send' + } else { + await actions.onSignAndSendOrder() + + sendOrderEl.innerText = sendOrderText + sendOrderEl.style.display = 'none' + } + } catch (error) { + printError(error) + } finally { + sendOrderEl.disabled = false + } + }) + }) + .catch((error) => { + printError(error) + }) + }) +} + +function printError(error: any) { + printResult(JSON.stringify(error.body || error.message || error.toString(), null, 4)) +} diff --git a/external/cow-sdk/examples/vanilla/src/pageHtml.ts b/external/cow-sdk/examples/vanilla/src/pageHtml.ts new file mode 100644 index 000000000..868712f03 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/pageHtml.ts @@ -0,0 +1,84 @@ +import { ALL_SUPPORTED_CHAIN_IDS, SupportedChainId } from '../../../src' +import { TOKENS } from './tokens' + +const chainId = SupportedChainId.MAINNET + +export const tokensSelect = (chainId: SupportedChainId, name: string) => + `` + +export function pageHtml() { + const page = document.createElement('div') + + const networksSelect = () => + `` + + page.innerHTML = ` + + + + + +
+
+

Swap

+ +
+ +
+
+ or + +
+ +
+ +
${networksSelect()}
+
+ +
+ +
${tokensSelect(chainId, 'sellToken')}
+
+ +
+ +
${tokensSelect(chainId, 'buyToken')}
+
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ + +
+
+
+

Result:

+ +
+ ` + + return page +} diff --git a/external/cow-sdk/examples/vanilla/src/styles.css b/external/cow-sdk/examples/vanilla/src/styles.css new file mode 100644 index 000000000..3e6ccb54c --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/styles.css @@ -0,0 +1,41 @@ +#layout { + margin: 0 auto; +} + +#layout td { + vertical-align: top; +} + +#form { + min-width: 400px; +} + +#form > div { + border: 1px solid #d4d9de; + margin: 10px; + padding: 10px; +} + +#form input, #form select { + width: 100%; + box-sizing: border-box; +} + +#form button { + background: #282c34; + color: #fff; + font-size: 18px; + padding: 5px 10px; + cursor: pointer; + border: 0; + border-radius: 4px; +} + +#results { + min-height: 400px; + min-width: 600px; +} + +#sendOrder { + display: none; +} diff --git a/external/cow-sdk/examples/vanilla/src/tokens.ts b/external/cow-sdk/examples/vanilla/src/tokens.ts new file mode 100644 index 000000000..acf489bc1 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/tokens.ts @@ -0,0 +1,60 @@ +import { ETH_ADDRESS, SupportedChainId } from '../../../src' + +class Token { + constructor( + public readonly chainId: SupportedChainId, + public readonly address: string, + public readonly decimals: number, + public readonly symbol: string, + public readonly name: string + ) {} +} + +export const TOKENS: Record = { + [SupportedChainId.MAINNET]: [ + new Token(SupportedChainId.MAINNET, ETH_ADDRESS, 18, 'ETH', 'Ether'), + new Token(SupportedChainId.MAINNET, '0xdAC17F958D2ee523a2206206994597C13D831ec7', 6, 'USDT', 'Tether USD'), + new Token(SupportedChainId.MAINNET, '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', 8, 'WBTC', 'Wrapped BTC'), + new Token(SupportedChainId.MAINNET, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6, 'USDC', 'USD Coin'), + new Token(SupportedChainId.MAINNET, '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB', 18, 'COW', 'CoW Protocol Token'), + ], + [SupportedChainId.GNOSIS_CHAIN]: [ + new Token(SupportedChainId.MAINNET, ETH_ADDRESS, 18, 'xDAI', 'xDAI'), + new Token(SupportedChainId.GNOSIS_CHAIN, '0x4ECaBa5870353805a9F068101A40E0f32ed605C6', 6, 'USDT', 'Tether USD'), + new Token(SupportedChainId.GNOSIS_CHAIN, '0x8e5bbbb09ed1ebde8674cda39a0c169401db4252', 8, 'WBTC', 'Wrapped BTC'), + new Token(SupportedChainId.GNOSIS_CHAIN, '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83', 6, 'USDC', 'USD Coin'), + new Token( + SupportedChainId.GNOSIS_CHAIN, + '0x177127622c4A00F3d409B75571e12cB3c8973d3c', + 18, + 'COW', + 'CoW Protocol Token' + ), + ], + [SupportedChainId.ARBITRUM_ONE]: [ + new Token(SupportedChainId.ARBITRUM_ONE, ETH_ADDRESS, 18, 'ETH', 'Ether'), + new Token(SupportedChainId.ARBITRUM_ONE, '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', 6, 'USDT', 'Tether USD'), + new Token(SupportedChainId.ARBITRUM_ONE, '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', 8, 'WBTC', 'Wrapped BTC'), + new Token(SupportedChainId.ARBITRUM_ONE, '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', 6, 'USDC', 'USD Coin'), + new Token( + SupportedChainId.ARBITRUM_ONE, + '0xcb8b5cd20bdcaea9a010ac1f8d835824f5c87a04', + 18, + 'COW', + 'CoW Protocol Token' + ), + ], + [SupportedChainId.SEPOLIA]: [ + new Token(SupportedChainId.SEPOLIA, ETH_ADDRESS, 18, 'ETH', 'Ether'), + new Token(SupportedChainId.SEPOLIA, '0x58eb19ef91e8a6327fed391b51ae1887b833cc91', 6, 'USDT', 'Tether USD'), + new Token(SupportedChainId.SEPOLIA, '0xd3f3d46FeBCD4CdAa2B83799b7A5CdcB69d135De', 18, 'GNO', 'GNO (test)'), + new Token(SupportedChainId.SEPOLIA, '0xbe72E441BF55620febc26715db68d3494213D8Cb', 18, 'USDC', 'USDC (test)'), + new Token(SupportedChainId.SEPOLIA, '0x0625aFB445C3B6B7B929342a04A22599fd5dBB59', 18, 'COW', 'CoW Protocol Token'), + ], + [SupportedChainId.BASE]: [ + new Token(SupportedChainId.BASE, ETH_ADDRESS, 18, 'ETH', 'Ether'), + new Token(SupportedChainId.BASE, '0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2', 6, 'USDT', 'Tether USD'), + new Token(SupportedChainId.BASE, '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', 6, 'USDC', 'USD Coin'), + new Token(SupportedChainId.BASE, '0x60a3e35cc302bfa44cb288bc5a4f316fdb1adb42', 6, 'EURC', 'EURC'), + ], +} diff --git a/external/cow-sdk/examples/vanilla/src/utils.ts b/external/cow-sdk/examples/vanilla/src/utils.ts new file mode 100644 index 000000000..992372d01 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/src/utils.ts @@ -0,0 +1,3 @@ +export function atomsToAmount(value: bigint, decimals: number): string { + return (value / BigInt(10 ** decimals)).toString() +} diff --git a/external/cow-sdk/examples/vanilla/tsconfig.json b/external/cow-sdk/examples/vanilla/tsconfig.json new file mode 100644 index 000000000..bf27f2fcc --- /dev/null +++ b/external/cow-sdk/examples/vanilla/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "outDir": "./dist/", + "noImplicitAny": true, + "module": "esnext", + "target": "esnext", + "allowJs": true, + "moduleResolution": "node" + } +} diff --git a/external/cow-sdk/examples/vanilla/webpack.config.js b/external/cow-sdk/examples/vanilla/webpack.config.js new file mode 100644 index 000000000..98e03dcc7 --- /dev/null +++ b/external/cow-sdk/examples/vanilla/webpack.config.js @@ -0,0 +1,33 @@ +const path = require('path') +const HtmlWebpackPlugin = require('html-webpack-plugin') + +module.exports = { + entry: './src/index.ts', + output: { + filename: 'main.js', + path: path.resolve(__dirname, 'dist'), + }, + module: { + rules: [ + { + test: /\.css$/i, + use: ['style-loader', 'css-loader'], + }, + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.m?js$/, + resolve: { + fullySpecified: false, + }, + }, + ], + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + }, + plugins: [new HtmlWebpackPlugin()], +} diff --git a/external/cow-sdk/examples/vanilla/yarn.lock b/external/cow-sdk/examples/vanilla/yarn.lock new file mode 100644 index 000000000..3cdb7399c --- /dev/null +++ b/external/cow-sdk/examples/vanilla/yarn.lock @@ -0,0 +1,2442 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.10" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae" + integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.21.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.3.tgz#5794b3911f0f19e34e3a272c49cbdf48d6f543f2" + integrity sha512-fa7GkppZVEByMWGbTtE5MbmXWJTVbrjjaS8K6uQj+XtuuUv1fsuPAxhygfqLmsb/Ufb3CV8deFCpiMfAgi00Sw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.17.33" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz#de35d30a9d637dc1450ad18dd583d75d5733d543" + integrity sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.17" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-proxy@^1.17.8": + version "1.17.10" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.10.tgz#e576c8e4a0cc5c6a138819025a88e167ebb38d6c" + integrity sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g== + dependencies: + "@types/node" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/node@*": + version "18.15.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.10.tgz#4ee2171c3306a185d1208dad5f44dae3dee4cfe3" + integrity sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/serve-index@^1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.1" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== + dependencies: + "@types/mime" "*" + "@types/node" "*" + +"@types/sockjs@^0.3.33": + version "0.3.33" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + dependencies: + "@types/node" "*" + +"@types/ws@^8.5.1": + version "8.5.4" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== + dependencies: + "@types/node" "*" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.0.1.tgz#a69720f6c9bad6aef54a8fa6ba9c3533e7ef4c7f" + integrity sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A== + +"@webpack-cli/info@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.1.tgz#eed745799c910d20081e06e5177c2b2569f166c0" + integrity sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA== + +"@webpack-cli/serve@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.1.tgz#34bdc31727a1889198855913db2f270ace6d7bf8" + integrity sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn@^8.5.0, acorn@^8.7.1: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.8.0: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.1.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== + dependencies: + array-flatten "^2.1.2" + dns-equal "^1.0.0" + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.14.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +caniuse-lite@^1.0.30001449: + version "1.0.30001472" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001472.tgz#3f484885f2a2986c019dc416e65d9d62798cdd64" + integrity sha512-xWC/0+hHHQgj3/vrKYY0AAzeIUgr7L9wlELIcAvZdDUHlhL/kNxMdnQLOSOQfP8R51ZzPhmHdyMkI0MMpmxCfg== + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +clean-css@^5.2.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== + dependencies: + source-map "~0.6.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.10, colorette@^2.0.14: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +commander@^9.4.1: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-loader@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" + integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== + +dns-packet@^5.2.2: + version "5.5.0" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.5.0.tgz#f59cbf3396c130957c56a6ad5fd3959ccdc30065" + integrity sha512-USawdAUzRkV6xrqTjiAEp6M9YagZEzWcSUaZTcIFAiyQWW1SoI6KyId8y2+/71wbgHKQAKd+iupLv4YvEwYWvA== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.4.284: + version "1.4.341" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.341.tgz#ab31e9e57ef7758a14c7a7977a1978d599514470" + integrity sha512-R4A8VfUBQY9WmAhuqY5tjHRf5fH2AAf6vqitBOE0y6u2PgHgqHSrhZmu78dIX3fVZtjqlwJNX1i2zwC3VpHtQQ== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" + integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +envinfo@^7.7.3: + version "7.8.1" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" + integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +express@^4.17.3: + version "4.18.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-monkey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-entities@^2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50" + integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.9.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" + integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== + dependencies: + has "^1.0.3" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +launch-editor@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" + integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.7.3" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.3: + version "3.4.13" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.13.tgz#248a8bd239b3c240175cd5ec548de5227fc4f345" + integrity sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg== + dependencies: + fs-monkey "^1.0.3" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.0, micromatch@^4.0.2: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.33: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +punycode@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.20.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + dependencies: + node-forge "^1" + +semver@^7.3.4: + version "7.3.8" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" + integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.4: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.0.tgz#20d078d0eaf71d54f43bd2ba14a1b5b9bfa5c8ba" + integrity sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +style-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-4.0.0.tgz#0ea96e468f43c69600011e0589cb05c44f3b17a5" + integrity sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terser-webpack-plugin@^5.1.3: + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.17" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" + +terser@^5.10.0, terser@^5.16.5: + version "5.16.8" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.8.tgz#ccde583dabe71df3f4ed02b65eb6532e0fae15d5" + integrity sha512-QI5g1E/ef7d+PsDifb+a6nnVgC4F22Bg6T0xrBrz6iloVB4PUkkunp6V8nzoOOZJIzjWVdAGqCdlKlhLq/TbIA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +ts-loader@^9.4.2: + version "9.4.2" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.2.tgz#80a45eee92dd5170b900b3d00abcfa14949aeb78" + integrity sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + +tslib@^2.0.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +watchpack@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +webpack-cli@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.0.1.tgz#95fc0495ac4065e9423a722dec9175560b6f2d9a" + integrity sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.0.1" + "@webpack-cli/info" "^2.0.1" + "@webpack-cli/serve" "^2.0.1" + colorette "^2.0.14" + commander "^9.4.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-dev-middleware@^5.3.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.13.1: + version "4.13.1" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.13.1.tgz#6417a9b5d2f528e7644b68d6ed335e392dccffe8" + integrity sha512-5tWg00bnWbYgkN+pd5yISQKDejRBYGEw15RaEEslH+zdbNDxxaZvEAO2WulaSaFKb5n3YG8JXsGaDsut1D0xdA== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.1" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.13.0" + +webpack-merge@^5.7.3: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.76.3: + version "5.76.3" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.3.tgz#dffdc72c8950e5b032fddad9c4452e7787d2f489" + integrity sha512-18Qv7uGPU8b2vqGeEEObnfICyw2g39CHlDEK4I7NK13LOur1d0HGmGNKGT58Eluwddpn3oEejwvBPoP4M7/KSA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" + integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^8.13.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/external/cow-sdk/graphql-codegen.yml b/external/cow-sdk/graphql-codegen.yml new file mode 100644 index 000000000..44aa258cc --- /dev/null +++ b/external/cow-sdk/graphql-codegen.yml @@ -0,0 +1,8 @@ +overwrite: true +schema: "https://api.thegraph.com/subgraphs/name/cowprotocol/cow" +documents: './src/subgraph/queries.ts' +generates: + src/subgraph/graphql.ts: + plugins: + - "typescript" + - "typescript-operations" diff --git a/external/cow-sdk/package.json b/external/cow-sdk/package.json new file mode 100644 index 000000000..2d0e9f15c --- /dev/null +++ b/external/cow-sdk/package.json @@ -0,0 +1,108 @@ +{ + "name": "@cowprotocol/cow-sdk", + "version": "5.10.0-RC.0", + "license": "(MIT OR Apache-2.0)", + "files": [ + "/dist" + ], + "source": "src/index.ts", + "main": "./dist/index.js", + "module": "./dist/index.module.js", + "exports": { + "require": "./dist/index.js", + "default": "./dist/index.js" + }, + "types": "dist/index.d.ts", + "scripts": { + "prebuild": "rm -rf dist && yarn run codegen", + "build": "microbundle -f modern,esm,cjs", + "start": "microbundle -f modern,esm,cjs watch", + "copy-md-files": "npx cpx \"**/*.md\" dist", + "postbuild": "cp package.json dist && yarn copy-md-files && yarn run trading:generateSchemas", + "lint": "eslint src", + "format": "prettier --write \"src/**/*.+(ts|json)\"", + "test": "jest", + "test:coverage": "jest --coverage --json --outputFile=jest.results.json && cat ./coverage/lcov.info | coveralls", + "test:coverage:html": "jest --silent=false --coverage --coverageReporters html", + "codegen": "npm run swagger:codegen && npm run typechain:codegen", + "prepare": "npm run build", + "prepublishOnly": "npm test && npm run lint", + "graphql:codegen": "graphql-codegen --config graphql-codegen.yml", + "swagger:codegen": " openapi --input https://raw.githubusercontent.com/cowprotocol/services/v2.291.0/crates/orderbook/openapi.yml --output src/order-book/generated --exportServices false --exportCore false", + "typechain:codegen": "typechain --target ethers-v5 --out-dir ./src/common/generated './abi/*.json'", + "trading:generateSchemas": "ts-node scripts/generateTradingSchemas.ts" + }, + "dependencies": { + "@cowprotocol/app-data": "^2.4.0", + "@cowprotocol/contracts": "^1.6.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@openzeppelin/merkle-tree": "^1.0.5", + "cross-fetch": "^3.1.5", + "exponential-backoff": "^3.1.1", + "graphql": "^16.3.0", + "graphql-request": "^4.3.0", + "limiter": "^2.1.0" + }, + "peerDependencies": { + "ethers": "^5.7.2" + }, + "devDependencies": { + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/preset-env": "^7.20.2", + "@babel/preset-typescript": "^7.18.6", + "@graphql-codegen/cli": "3.0.0", + "@graphql-codegen/typescript": "3.0.0", + "@graphql-codegen/typescript-operations": "^3.0.0", + "@typechain/ethers-v5": "^11.0.0", + "@types/jest": "^29.4.0", + "@types/node": "^22.9.0", + "@typescript-eslint/eslint-plugin": "^5.51.0", + "@typescript-eslint/parser": "^5.51.0", + "babel-plugin-inline-import": "^3.0.0", + "coveralls": "^3.1.1", + "cpx": "^1.5.0", + "eslint": "^8.33.0", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-unused-imports": "^3.0.0", + "ethers": "^5.7.2", + "jest": "^29.6.4", + "jest-fetch-mock": "^3.0.3", + "microbundle": "^0.15.1", + "openapi-typescript-codegen": "^0.23.0", + "prettier": "^2.5.1", + "ts-json-schema-generator": "^2.3.0", + "ts-mockito": "^2.6.1", + "tsc-watch": "^6.0.0", + "typechain": "^8.2.0", + "typescript": "^4.9.5" + }, + "jest": { + "automock": false, + "resetMocks": false, + "setupFiles": [ + "./setupTests.js" + ], + "collectCoverageFrom": [ + "src/**/*.{ts,tsx}" + ], + "coveragePathIgnorePatterns": [ + "src/composable/generated" + ], + "moduleDirectories": [ + "node_modules" + ], + "modulePaths": [ + "/" + ] + }, + "keywords": [ + "cow", + "cow-protocol", + "sdk", + "crypto", + "typescript", + "subgraph" + ] +} diff --git a/external/cow-sdk/scripts/generateTradingSchemas.ts b/external/cow-sdk/scripts/generateTradingSchemas.ts new file mode 100644 index 000000000..e358192ef --- /dev/null +++ b/external/cow-sdk/scripts/generateTradingSchemas.ts @@ -0,0 +1,30 @@ +import { Config, createGenerator } from 'ts-json-schema-generator' +import { writeFileSync, mkdirSync } from 'fs' + +const config: Config = { + path: 'src/trading/types.ts', + expose: 'none', + topRef: false, +} + +const types = [ + 'QuoterParameters', + 'TradeParameters', + 'LimitTradeParameters', + 'SwapAdvancedSettings', + 'LimitOrderAdvancedSettings', + 'QuoteResultsSerialized', +] + +const outputPath = 'dist/schemas/trading/' + +const generator = createGenerator(config) + +mkdirSync(outputPath, { recursive: true }) + +types.forEach((type) => { + const schema = generator.createSchema(type) + const schemaString = JSON.stringify(schema, null, 2) + + writeFileSync(outputPath + `${type}.ts`, `export default ${schemaString} as const`) +}) diff --git a/external/cow-sdk/setupTests.js b/external/cow-sdk/setupTests.js new file mode 100644 index 000000000..b72044f22 --- /dev/null +++ b/external/cow-sdk/setupTests.js @@ -0,0 +1,7 @@ +import fetchMock from 'jest-fetch-mock' + +fetchMock.enableMocks() + +jest.setMock('cross-fetch', fetchMock) + +global.window = global diff --git a/external/cow-sdk/src/common/chains.ts b/external/cow-sdk/src/common/chains.ts new file mode 100644 index 000000000..8e916da43 --- /dev/null +++ b/external/cow-sdk/src/common/chains.ts @@ -0,0 +1,11 @@ +/** + * Supported chains and their `chainId` for the SDK. + * @enum + */ +export enum SupportedChainId { + MAINNET = 1, + GNOSIS_CHAIN = 100, + ARBITRUM_ONE = 42161, + BASE = 8453, + SEPOLIA = 11155111, +} diff --git a/external/cow-sdk/src/common/configs.ts b/external/cow-sdk/src/common/configs.ts new file mode 100644 index 000000000..ad3cd48e0 --- /dev/null +++ b/external/cow-sdk/src/common/configs.ts @@ -0,0 +1,89 @@ +import { BackoffOptions } from 'exponential-backoff' +import { RateLimiterOpts } from 'limiter/dist/esm' +import { SupportedChainId } from './chains' + +/** + * IPFS configuration. + * + * For production use, consider using {@link Pinata: https://www.pinata.cloud/} + * @property {string} [uri] The URI of the IPFS node to use. + * @property {string} [writeUri] The URI of the IPFS node to use for writing. + * @property {string} [readUri] The URI of the IPFS node to use for reading. + * @property {string} [pinataApiKey] The API key to use for Pinata. + * @property {string} [pinataApiSecret] The API secret to use for Pinata. + */ +export interface IpfsConfig { + uri?: string + writeUri?: string + readUri?: string + pinataApiKey?: string + pinataApiSecret?: string +} + +/** + * @property {RateLimiterOpts} [limiterOpts] The options to use for the rate limiter. + * @property {BackoffOptions} [backoffOpts] The options to use for the backoff. + */ +export interface RequestOptions { + limiterOpts?: RateLimiterOpts + backoffOpts?: BackoffOptions +} + +/** + * The environment to use for the Cow API. + */ +export type CowEnv = 'prod' | 'staging' + +/** + * Override some properties of the {@link ApiContext}. + */ +export type PartialApiContext = Partial + +/** + * @property {string} [1] The base URL for the mainnet API. + * @property {string} [100] The base URL for the Gnosis Chain API. + * @property {string} [42161] The base URL for the Arbitrum One API. + * @property {string} [8453] The base URL for the Base API. + * @property {string} [11155111] The base URL for the Sepolia testnet API. + */ +export type ApiBaseUrls = Record + +/** + * Define the context to use for the CoW Protocol API. + * + * CoW Protocol is a set of smart contracts and off-chain services, deployed on **multiple chains**. + * {@link SupportedChainId Supported chains} are: + * - Mainnet + * - Gnosis Chain + * - Arbitrum One + * - Base + * - Sepolia + * + * Each chain has it's own API, and each API has it's own base URL. + * + * Options may be selectively overridden by passing a {@link PartialApiContext} to the constructor. + * @see {@link https://api.cow.fi/docs/#/} + * @property {SupportedChainId} chainId The `chainId`` corresponding to this CoW Protocol API instance. + * @property {CowEnv} env The environment that this context corresponds to. + * @property {ApiBaseUrls} [baseUrls] URls that may be used to connect to this context. + */ +export interface ApiContext { + chainId: SupportedChainId + env: CowEnv + baseUrls?: ApiBaseUrls + limiterOpts?: RateLimiterOpts + backoffOpts?: BackoffOptions +} + +/** + * The list of available environments. + */ +export const ENVS_LIST: CowEnv[] = ['prod', 'staging'] + +/** + * The default CoW Protocol API context. + */ +export const DEFAULT_COW_API_CONTEXT: ApiContext = { + env: 'prod', + chainId: SupportedChainId.MAINNET, +} diff --git a/external/cow-sdk/src/common/consts.ts b/external/cow-sdk/src/common/consts.ts new file mode 100644 index 000000000..7b811cf00 --- /dev/null +++ b/external/cow-sdk/src/common/consts.ts @@ -0,0 +1,86 @@ +import { SupportedChainId } from './chains' + +export const ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' +export const EXTENSIBLE_FALLBACK_HANDLER = '0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5' +export const COMPOSABLE_COW = '0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74' + +export const COW_SHED_FACTORY = '0x00E989b87700514118Fa55326CD1cCE82faebEF6' +export const COW_SHED_IMPLEMENTATION = '0x2CFFA8cf11B90C9F437567b86352169dF4009F73' + +const VAULT_RELAYER = '0xC92E8bdf79f0507f65a392b0ab4667716BFE0110' +const SETTLEMENT_CONTRACT = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41' + +/** + * The list of supported chains. + */ +export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = Object.values(SupportedChainId).filter( + (chainId) => typeof chainId === 'number' +) as SupportedChainId[] + +export function mapSupportedNetworks(value: (chainId: SupportedChainId) => T): Record +export function mapSupportedNetworks(value: T): Record +export function mapSupportedNetworks(value: T | ((chainId: SupportedChainId) => T)): Record { + return ALL_SUPPORTED_CHAIN_IDS.reduce>( + (acc, chainId) => ({ + ...acc, + [chainId]: typeof value === 'function' ? (value as (chainId: SupportedChainId) => T)(chainId) : value, + }), + {} + ) +} + +export function mapAddressToSupportedNetworks(address: string): Record { + return mapSupportedNetworks(address) +} + +/** + * An object containing the addresses of the CoW Protocol settlement contracts for each supported chain. + */ +export const COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS = mapAddressToSupportedNetworks(SETTLEMENT_CONTRACT) + +/** + * An object containing the addresses of the CoW Protocol Vault realyer contracts for each supported chain. + */ +export const COW_PROTOCOL_VAULT_RELAYER_ADDRESS = mapAddressToSupportedNetworks(VAULT_RELAYER) + +/** + * An object containing the addresses of the `ExtensibleFallbackHandler` contracts for each supported chain. + */ +export const EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS = mapAddressToSupportedNetworks(EXTENSIBLE_FALLBACK_HANDLER) + +/** + * An object containing the addresses of the `ComposableCow` contracts for each supported chain. + */ +export const COMPOSABLE_COW_CONTRACT_ADDRESS = mapAddressToSupportedNetworks(COMPOSABLE_COW) + +/** + * An object containing the addresses of wrapped native currencies for each supported chain. + */ +export const WRAPPED_NATIVE_CURRENCIES: Record = { + [SupportedChainId.MAINNET]: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', + [SupportedChainId.GNOSIS_CHAIN]: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', + [SupportedChainId.ARBITRUM_ONE]: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', + [SupportedChainId.SEPOLIA]: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14', + [SupportedChainId.BASE]: '0x4200000000000000000000000000000000000006', +} + +/** + * An object containing the addresses of ETH flow contracts for each supported chain. + */ +export const ETH_FLOW_ADDRESSES: Record = { + [SupportedChainId.MAINNET]: '0x40A50cf069e992AA4536211B23F286eF88752187', + [SupportedChainId.GNOSIS_CHAIN]: '0x40A50cf069e992AA4536211B23F286eF88752187', + [SupportedChainId.ARBITRUM_ONE]: '0x552fcecc218158fff20e505c8f3ad24f8e1dd33c', + [SupportedChainId.SEPOLIA]: '0x0b7795E18767259CC253a2dF471db34c72B49516', + [SupportedChainId.BASE]: '0x3d1b389f1707DB3d4c5344d5669DBda6b5D6Ab51', +} + +export const BARN_ETH_FLOW_ADDRESSES: Record = { + [SupportedChainId.MAINNET]: '0xD02De8Da0B71E1B59489794F423FaBBa2AdC4d93', + [SupportedChainId.GNOSIS_CHAIN]: '0xD02De8Da0B71E1B59489794F423FaBBa2AdC4d93', + [SupportedChainId.ARBITRUM_ONE]: '0x6dfe75b5ddce1ade279d4fa6bd6aef3cbb6f49db', + [SupportedChainId.SEPOLIA]: '0x2671994c7D224ac4799ac2cf6Ef9EF187d42C69f', + [SupportedChainId.BASE]: '0x3C3eA1829891BC9bEC3d06A81d5d169e52a415e3', +} + +export const MAX_VALID_TO_EPOCH = 4294967295 // Max uint32 (Feb 07 2106 07:28:15 GMT+0100) diff --git a/external/cow-sdk/src/common/cow-error.ts b/external/cow-sdk/src/common/cow-error.ts new file mode 100644 index 000000000..cd7df63e1 --- /dev/null +++ b/external/cow-sdk/src/common/cow-error.ts @@ -0,0 +1,10 @@ +export class CowError extends Error { + error_code?: string + + constructor(message: string, error_code?: string) { + super(message) + this.error_code = error_code + } +} + +export const logPrefix = 'cow-sdk:' diff --git a/external/cow-sdk/src/common/index.ts b/external/cow-sdk/src/common/index.ts new file mode 100644 index 000000000..1340d5d92 --- /dev/null +++ b/external/cow-sdk/src/common/index.ts @@ -0,0 +1,5 @@ +export * from './chains' +export * from './configs' +export * from './cow-error' +export * from './ipfs' +export * from './consts' diff --git a/external/cow-sdk/src/common/ipfs.ts b/external/cow-sdk/src/common/ipfs.ts new file mode 100644 index 000000000..dc1c619a9 --- /dev/null +++ b/external/cow-sdk/src/common/ipfs.ts @@ -0,0 +1,2 @@ +export const DEFAULT_IPFS_READ_URI = 'https://gnosis.mypinata.cloud/ipfs' +export const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud' diff --git a/external/cow-sdk/src/composable/ConditionalOrder.spec.ts b/external/cow-sdk/src/composable/ConditionalOrder.spec.ts new file mode 100644 index 000000000..03a660721 --- /dev/null +++ b/external/cow-sdk/src/composable/ConditionalOrder.spec.ts @@ -0,0 +1,412 @@ +import { mockGetOrder } from '../order-book/__mock__/api' +import { + DEFAULT_ORDER_PARAMS, + TestConditionalOrder, + createTestConditionalOrder, +} from './orderTypes/test/TestConditionalOrder' +import { ConditionalOrder } from './ConditionalOrder' +import { Twap } from './orderTypes/Twap' + +import { getComposableCow } from './contracts' +import { constants } from 'ethers' +import { OwnerContext, PollParams, PollResultCode, PollResultErrors } from './types' +import { BuyTokenDestination, OrderKind, SellTokenSource } from '../order-book/generated' +import { computeOrderUid } from '../utils' +import { GPv2Order } from '../common/generated/ComposableCoW' +import { OrderBookApi } from '../order-book' + +jest.mock('./contracts') + +jest.mock('../utils') + +const mockGetComposableCow = getComposableCow as jest.MockedFunction +const mockComputeOrderUid = computeOrderUid as jest.MockedFunction + +const TWAP_SERIALIZED = (salt?: string, handler?: string): string => { + return ( + '0x' + + '0000000000000000000000000000000000000000000000000000000000000020' + + '000000000000000000000000' + + (handler?.substring(2) ?? '910d00a310f7dc5b29fe73458f47f519be547d3d') + + (salt?.substring(2) ?? '9379a0bf532ff9a66ffde940f94b1a025d6f18803054c1aef52dc94b15255bbe') + + '0000000000000000000000000000000000000000000000000000000000000060' + + '0000000000000000000000000000000000000000000000000000000000000140' + + '0000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96' + + '000000000000000000000000dae5f1590db13e3b40423b5b5c5fbf175515910b' + + '000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' + + '000000000000000000000000000000000000000000000000016345785d8a0000' + + '000000000000000000000000000000000000000000000000016345785d8a0000' + + '0000000000000000000000000000000000000000000000000000000000000000' + + '000000000000000000000000000000000000000000000000000000000000000a' + + '0000000000000000000000000000000000000000000000000000000000000e10' + + '0000000000000000000000000000000000000000000000000000000000000000' + + 'd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5' + ) +} + +const OWNER = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' +const SINGLE_ORDER = createTestConditionalOrder() +const MERKLE_ROOT_ORDER = createTestConditionalOrder({ isSingleOrder: false }) +const DISCRETE_ORDER: GPv2Order.DataStruct = { + sellToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + buyToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + receiver: '0x6810e776880c02933d47db1b9fc05908e5386b96', + sellAmount: '1234567890', + buyAmount: '1234567890', + validTo: 0, + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + partiallyFillable: true, + sellTokenBalance: SellTokenSource.ERC20, + buyTokenBalance: BuyTokenDestination.ERC20, + kind: OrderKind.BUY, + feeAmount: '0', +} +const ERROR_REASON = 'Not valid, because I say so!' + +describe('Constructor', () => { + test('Create TestConditionalOrder', () => { + // bad address + expect(() => createTestConditionalOrder({ handler: '0xdeadbeef' })).toThrow('Invalid handler: 0xdeadbeef') + }) + + test('Fail if bad address', () => { + // bad address + expect(() => createTestConditionalOrder({ handler: '0xdeadbeef' })).toThrow('Invalid handler: 0xdeadbeef') + }) + + describe('Fail if bad salt', () => { + test('Fails if salt is not an hex', () => { + expect(() => + createTestConditionalOrder({ handler: '0x910d00a310f7Dc5B29FE73458F47f519be547D3d', salt: 'cowtomoon' }) + ).toThrow('Invalid salt: cowtomoon') + }) + + test('Fails if salt is too short (not 32 bytes)', () => { + expect(() => + createTestConditionalOrder({ handler: '0x910d00a310f7Dc5B29FE73458F47f519be547D3d', salt: '0xdeadbeef' }) + ).toThrow('Invalid salt: 0xdeadbeef') + }) + + test('Fails if salt is too long (not 32 bytes)', () => { + expect(() => + createTestConditionalOrder({ + handler: '0x910d00a310f7Dc5B29FE73458F47f519be547D3d', + salt: '0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef', + }) + ).toThrow( + 'Invalid salt: 0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef' + ) + }) + }) +}) +describe('Deserialize: Decode static input', () => { + test('Fails if handler mismatch', () => { + expect(() => Twap.deserialize(TWAP_SERIALIZED(undefined, '0x9008D19f58AAbD9eD0D60971565AA8510560ab41'))).toThrow( + 'HandlerMismatch' + ) + }) +}) + +describe('Serialize: Encode static input', () => { + test('Serialize: Fails if wrong handler', () => { + const order = createTestConditionalOrder({ handler: '0x910d00a310f7Dc5B29FE73458F47f519be547D3d' }) + expect(() => order.testEncodeStaticInput()).toThrow() + }) +}) + +describe('Compute orderUid', () => { + test('Returns correct id', () => { + expect(SINGLE_ORDER.id).toEqual('0x88ca0698d8c5500b31015d84fa0166272e1812320d9af8b60e29ae00153363b3') + }) + + test('Derive OrderId from leaf data', () => { + expect(ConditionalOrder.leafToId(SINGLE_ORDER.leaf)).toEqual( + '0x88ca0698d8c5500b31015d84fa0166272e1812320d9af8b60e29ae00153363b3' + ) + }) +}) + +describe('Cabinet', () => { + const cabinetValue = '000000000000000000000000000000000000000000000000000000064f0b353' + const mockCabinet = jest.fn() + const param = { owner: OWNER } as OwnerContext + beforeEach(() => { + jest.resetAllMocks() + + mockGetComposableCow.mockReturnValue({ + callStatic: { + cabinet: mockCabinet, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any) + + mockCabinet.mockReturnValue(cabinetValue) + }) + + test('Single orders call the contract with order id as the ctx', () => { + // GIVEN: a conditional order + // WHEN: we call cabinet + expect(SINGLE_ORDER.cabinet(param)).toEqual(cabinetValue) + + // THEN: we expect to do a CALL using the ComposableCoW contract passing the UID of the order + expect(mockGetComposableCow).toHaveBeenCalledTimes(1) + expect(mockCabinet.mock.calls).toHaveLength(1) + + // THEN: we expect the params to be the owner and the order id + expect(mockCabinet.mock.calls[0]).toEqual([OWNER, SINGLE_ORDER.id]) + }) + + test('Merkle Root orders call the contract with the 0x0 as the ctx', () => { + // GIVEN: a merkle root order + // WHEN: we call cabinet + expect(MERKLE_ROOT_ORDER.cabinet(param)).toEqual(cabinetValue) + + // THEN: we expect to do a CALL using the ComposableCoW contract + expect(mockGetComposableCow).toHaveBeenCalledTimes(1) + expect(mockCabinet.mock.calls).toHaveLength(1) + + // THEN: we expect the params to be the owner and 0x0 + expect(mockCabinet.mock.calls[0]).toEqual([OWNER, constants.HashZero]) + }) +}) + +describe('Poll Single Orders', () => { + const mockSingleOrders = jest.fn() + const mockGetTradeableOrderWithSignature = jest.fn() + const chainId = 1 + const orderBookApi = new OrderBookApi({ chainId }) + const param = { owner: OWNER, chainId, provider: {}, orderBookApi } as PollParams + + const mockPollValidate = jest.fn, [params: PollParams], any>() + + class MockTestConditionalOrder extends TestConditionalOrder { + protected pollValidate(params: PollParams): Promise { + return mockPollValidate(params) + } + } + + const signature = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' + beforeEach(() => { + jest.resetAllMocks() + + mockGetComposableCow.mockReturnValue({ + callStatic: { + singleOrders: mockSingleOrders, + }, + getTradeableOrderWithSignature: mockGetTradeableOrderWithSignature, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any) + + mockComputeOrderUid.mockReturnValue(Promise.resolve(SINGLE_ORDER.id)) + mockGetOrder.mockImplementation(() => Promise.reject('Pretend the order does not exist')) + }) + + test('[SUCCESS] Happy path', async () => { + // GIVEN: An order that is authorized + mockSingleOrders.mockReturnValue(true) + + // GIVEN: And a getTradeableOrderWithSignature that doesn't revert + mockGetTradeableOrderWithSignature.mockReturnValue([DISCRETE_ORDER, signature]) + + // WHEN: we poll + const pollResult = await SINGLE_ORDER.poll(param) + + // THEN: we expect a CALL to getTradeableOrderWithSignature with the owner, params, off-chain input, and no-proof + expect(mockGetTradeableOrderWithSignature).toBeCalledTimes(1) + expect(mockGetTradeableOrderWithSignature.mock.calls[0]).toEqual([ + OWNER, + SINGLE_ORDER.leaf, + SINGLE_ORDER.offChainInput, + [], + ]) + + // THEN: We expect a SUCCESS result, which returns the order and the signature + expect(pollResult).toEqual({ + result: PollResultCode.SUCCESS, + order: DISCRETE_ORDER, + signature, + }) + }) + + test('[DONT_TRY_AGAIN] Not authorized', async () => { + // GIVEN: An order that is not authorized + mockSingleOrders.mockReturnValue(false) + + // GIVEN: And a getTradeableOrderWithSignature that doesn't revert + mockGetTradeableOrderWithSignature.mockReturnValue([DISCRETE_ORDER, signature]) + + // WHEN: we poll + const pollResult = await SINGLE_ORDER.poll(param) + + // THEN: We expect an error. We shouldn't try again + expect(pollResult).toEqual({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: + 'NotAuthorized: Order 0x88ca0698d8c5500b31015d84fa0166272e1812320d9af8b60e29ae00153363b3 is not authorized for 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 on chain 1', + }) + }) + + test('[DONT_TRY_AGAIN] Invalid Conditional Order: Concrete order validation fails', async () => { + // GIVEN: The concrete order implementation is not valid + const order = createTestConditionalOrder() + const mockIsValid = jest.fn(order.isValid).mockReturnValue({ isValid: false, reason: ERROR_REASON }) + order.isValid = mockIsValid + + // GIVEN: Everything else is OK (auth + contract returns an order) + mockSingleOrders.mockReturnValue(true) + mockGetTradeableOrderWithSignature.mockReturnValue([DISCRETE_ORDER, signature]) + + // WHEN: we poll + const pollResult = await order.poll(param) + + // THEN: we expect no CALLs to the contract + expect(mockGetTradeableOrderWithSignature).toBeCalledTimes(0) + + // THEN: We to fail the validation, and to instruct to not try again + expect(pollResult).toEqual({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: 'InvalidConditionalOrder. Reason: ' + ERROR_REASON, + }) + }) + + test('[UNEXPECTED_ERROR] getTradeableOrderWithSignature throws an error', async () => { + // GIVEN: getTradeableOrderWithSignature throws + const error = new Error(`I'm sorry, but is not a good time to trade`) + mockGetTradeableOrderWithSignature.mockImplementation(() => { + throw error + }) + + // GIVEN: Every validation is OK (auth + contract returns an order + order is valid) + const order = createTestConditionalOrder() + const mockIsValid = jest.fn(order.isValid).mockReturnValue({ isValid: true }) + order.isValid = mockIsValid + mockSingleOrders.mockReturnValue(true) + + // WHEN: we poll + const pollResult = await order.poll(param) + + // THEN: we expect 1 CALL to the + expect(mockGetTradeableOrderWithSignature).toBeCalledTimes(1) + + // THEN: We receive an unexpected error + expect(pollResult).toEqual({ + result: PollResultCode.UNEXPECTED_ERROR, + error, + }) + }) + + async function testPollValidateResult(result: PollResultErrors | undefined | Error) { + // GIVEN: The pollValidate returns undefined + const order = new MockTestConditionalOrder(DEFAULT_ORDER_PARAMS) + const isSuccess = result == undefined + const isUnhandledError = result instanceof Error + + if (isUnhandledError) { + // Pretend pollValidate throws an error + mockPollValidate.mockImplementation(() => { + throw result + }) + } else { + // Pretend pollValidate returns a result + mockPollValidate.mockReturnValue(Promise.resolve(result)) + } + + // GIVEN: Everything else is OK (auth + contract returns an order) + mockSingleOrders.mockReturnValue(true) + mockGetTradeableOrderWithSignature.mockReturnValue([DISCRETE_ORDER, signature]) + + // WHEN: we poll + const pollResult = await order.poll(param) + + // THEN: we expect no CALLs to the + expect(mockGetTradeableOrderWithSignature).toBeCalledTimes(isSuccess ? 1 : 0) + + if (isUnhandledError) { + // THEN: We expect an error + expect(pollResult).toEqual({ + result: PollResultCode.UNEXPECTED_ERROR, + error: result, + }) + } else if (isSuccess) { + // THEN: We expect a SUCCESS result (which returns the order and the signature) + expect(pollResult).toEqual({ + result: PollResultCode.SUCCESS, + order: DISCRETE_ORDER, + signature, + }) + } else { + // THEN: We expect the result from pollValidate + expect(pollResult).toEqual(result) + } + } + + test('[pollValidate::SUCCESS] Return success when pollValidate returns undefined', async () => { + testPollValidateResult(undefined) + }) + + test(`[pollValidate::DONT_TRY_AGAIN] Don't try again when pollValidate says so`, async () => { + testPollValidateResult({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: ERROR_REASON, + }) + }) + + test(`[pollValidate::TRY_AT_EPOCH] Try on an specific epoch when pollValidate says so`, async () => { + testPollValidateResult({ + result: PollResultCode.TRY_AT_EPOCH, + epoch: 1234567890, + reason: ERROR_REASON, + }) + }) + + test(`[pollValidate::TRY_NEXT_BLOCK] Try on next block when pollValidate says so`, async () => { + testPollValidateResult({ + result: PollResultCode.TRY_NEXT_BLOCK, + reason: 'Not valid, because I say so!', + }) + }) + + test(`[pollValidate::TRY_ON_BLOCK] Try on an specific block when pollValidate says so`, async () => { + testPollValidateResult({ + result: PollResultCode.TRY_ON_BLOCK, + blockNumber: 1234567890, + reason: ERROR_REASON, + }) + }) + + test(`[pollValidate::UNEXPECTED_ERROR] Return an unexpected error when pollValidate throws`, async () => { + testPollValidateResult(new Error(`There was an unexpected error while polling`)) + }) + + test('[TRY_NEXT_BLOCK] When the order is already in the Orderbook', async () => { + // GIVEN: All validations are OK, and getTradeableOrderWithSignature returns a valid order + mockPollValidate.mockReturnValue(Promise.resolve(undefined)) + mockSingleOrders.mockReturnValue(true) + mockGetTradeableOrderWithSignature.mockReturnValue([DISCRETE_ORDER, signature]) + + // GIVEN: This order "orderUid" is a specific one + const orderUid = + '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5' + mockComputeOrderUid.mockReturnValue(Promise.resolve(orderUid)) + + // GIVEN: the API finds the order in the orderbook + mockGetOrder.mockImplementation(() => Promise.resolve({})) + + // WHEN: we poll + const pollResult = await SINGLE_ORDER.poll(param) + + // THEN: we expect a call to compute the OrderUid with the right params + expect(mockComputeOrderUid).toBeCalledTimes(1) + expect(mockComputeOrderUid.mock.calls[0]).toEqual([param.chainId, param.owner, DISCRETE_ORDER]) + + // THEN: we expect a call to the Orderbook API's getOrder function + expect(mockGetOrder).toBeCalledTimes(1) + expect(mockGetOrder.mock.calls[0]).toEqual([orderUid]) + + // THEN: we expect the result to be + expect(pollResult).toEqual({ + result: PollResultCode.TRY_NEXT_BLOCK, + reason: 'Order already in orderbook', + }) + }) +}) diff --git a/external/cow-sdk/src/composable/ConditionalOrder.ts b/external/cow-sdk/src/composable/ConditionalOrder.ts new file mode 100644 index 000000000..b7e00b689 --- /dev/null +++ b/external/cow-sdk/src/composable/ConditionalOrder.ts @@ -0,0 +1,426 @@ +import { BigNumber, constants, ethers, utils } from 'ethers' +import { GPv2Order, IConditionalOrder } from '../common/generated/ComposableCoW' + +import { decodeParams, encodeParams, fromStructToOrder } from './utils' +import { + ConditionalOrderArguments, + ConditionalOrderParams, + ContextFactory, + IsValidResult, + OwnerContext, + PollParams, + PollResult, + PollResultCode, + PollResultErrors, +} from './types' +import { getComposableCow, getComposableCowInterface } from './contracts' +import { UID } from '../order-book' +import { computeOrderUid } from '../utils' + +/** + * An abstract base class from which all conditional orders should inherit. + * + * This class provides some basic functionality to help with handling conditional orders, + * such as: + * - Validating the conditional order + * - Creating a human-readable string representation of the conditional order + * - Serializing the conditional order for use with the `IConditionalOrder` struct + * - Getting any dependencies for the conditional order + * - Getting the off-chain input for the conditional order + * + * **NOTE**: Instances of conditional orders have an `id` property that is a `keccak256` hash of + * the serialized conditional order. + */ +export abstract class ConditionalOrder { + public readonly handler: string + public readonly salt: string + public readonly data: D + public readonly staticInput: S + public readonly hasOffChainInput: boolean + + /** + * A constructor that provides some basic validation for the conditional order. + * + * This constructor **MUST** be called by any class that inherits from `ConditionalOrder`. + * + * **NOTE**: The salt is optional and will be randomly generated if not provided. + * @param handler The address of the handler for the conditional order. + * @param salt A 32-byte string used to salt the conditional order. + * @param data The data of the order + * @param hasOffChainInput Whether the conditional order has off-chain input. + * @throws If the handler is not a valid ethereum address. + * @throws If the salt is not a valid 32-byte string. + */ + constructor(params: ConditionalOrderArguments) { + const { handler, salt = utils.keccak256(utils.randomBytes(32)), data, hasOffChainInput = false } = params + // Verify input to the constructor + // 1. Verify that the handler is a valid ethereum address + if (!ethers.utils.isAddress(handler)) { + throw new Error(`Invalid handler: ${handler}`) + } + + // 2. Verify that the salt is a valid 32-byte string usable with ethers + if (!ethers.utils.isHexString(salt) || ethers.utils.hexDataLength(salt) !== 32) { + throw new Error(`Invalid salt: ${salt}`) + } + + this.handler = handler + this.salt = salt + this.data = data + this.staticInput = this.transformDataToStruct(data) + + this.hasOffChainInput = hasOffChainInput + } + + // TODO: https://github.com/cowprotocol/cow-sdk/issues/155 + abstract get isSingleOrder(): boolean + + /** + * Get a descriptive name for the type of the conditional order (i.e twap, dca, etc). + * + * @returns {string} The concrete type of the conditional order. + */ + abstract get orderType(): string + + /** + * Get the context dependency for the conditional order. + * + * This is used when calling `createWithContext` or `setRootWithContext` on a ComposableCoW-enabled Safe. + * @returns The context dependency. + */ + get context(): ContextFactory | undefined { + return undefined + } + + assertIsValid(): void { + const isValidResult = this.isValid() + if (!isValidResult.isValid) { + throw new Error(`Invalid order: ${isValidResult.reason}`) + } + } + + abstract isValid(): IsValidResult + + /** + * Get the calldata for creating the conditional order. + * + * This will automatically determine whether or not to use `create` or `createWithContext` based on the + * order type's context dependency. + * + * **NOTE**: By default, this will cause the create to emit the `ConditionalOrderCreated` event. + * @returns The calldata for creating the conditional order. + */ + get createCalldata(): string { + this.assertIsValid() + + const context = this.context + const composableCow = getComposableCowInterface() + const paramsStruct: IConditionalOrder.ConditionalOrderParamsStruct = { + handler: this.handler, + salt: this.salt, + staticInput: this.encodeStaticInput(), + } + + if (context) { + // Create (with context) + const contextArgsAbi = context.factoryArgs + ? utils.defaultAbiCoder.encode(context.factoryArgs.argsType, context.factoryArgs.args) + : '0x' + return composableCow.encodeFunctionData('createWithContext', [ + paramsStruct, + context.address, + contextArgsAbi, + true, + ]) + } else { + // Create + return composableCow.encodeFunctionData('create', [paramsStruct, true]) + } + } + + /** + * Get the calldata for removing a conditional order that was created as a single order. + * @returns The calldata for removing the conditional order. + */ + get removeCalldata(): string { + this.assertIsValid() + + return getComposableCowInterface().encodeFunctionData('remove', [this.id]) + } + + /** + * Calculate the id of the conditional order (which also happens to be the key used for `ctx` in the ComposableCoW contract). + * + * This is a `keccak256` hash of the serialized conditional order. + * @returns The id of the conditional order. + */ + get id(): string { + return utils.keccak256(this.serialize()) + } + + /** + * The context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet + * + * The context, relates to the 'ctx' in the contract: https://github.com/cowprotocol/composable-cow/blob/c7fb85ab10c05e28a1632ba97a1749fb261fcdfb/src/interfaces/IConditionalOrder.sol#L38 + */ + protected get ctx(): string { + return this.isSingleOrder ? this.id : constants.HashZero + } + + /** + * Get the `leaf` of the conditional order. This is the data that is used to create the merkle tree. + * + * For the purposes of this library, the `leaf` is the `ConditionalOrderParams` struct. + * @returns The `leaf` of the conditional order. + * @see ConditionalOrderParams + */ + get leaf(): ConditionalOrderParams { + return { + handler: this.handler, + salt: this.salt, + staticInput: this.encodeStaticInput(), + } + } + + /** + * Calculate the id of the conditional order. + * @param leaf The `leaf` representing the conditional order. + * @returns The id of the conditional order. + * @see ConditionalOrderParams + */ + static leafToId(leaf: ConditionalOrderParams): string { + return utils.keccak256(encodeParams(leaf)) + } + + /** + * If the conditional order has off-chain input, return it! + * + * **NOTE**: This should be overridden by any conditional order that has off-chain input. + * @returns The off-chain input. + */ + get offChainInput(): string { + return '0x' + } + + /** + * Create a human-readable string representation of the conditional order. + * + * @param tokenFormatter An optional function that takes an address and an amount and returns a human-readable string. + */ + abstract toString(tokenFormatter?: (address: string, amount: BigNumber) => string): string + + /** + * Serializes the conditional order into it's ABI-encoded form. + * + * @returns The equivalent of `IConditionalOrder.Params` for the conditional order. + */ + abstract serialize(): string + + /** + * Encode the `staticInput` for the conditional order. + * + * @returns The ABI-encoded `staticInput` for the conditional order. + * @see ConditionalOrderParams + */ + abstract encodeStaticInput(): string + + /** + * A helper function for generically serializing a conditional order's static input. + * + * @param orderDataTypes ABI types for the order's data struct. + * @param data The order's data struct. + * @returns An ABI-encoded representation of the order's data struct. + */ + protected encodeStaticInputHelper(orderDataTypes: string[], staticInput: S): string { + return utils.defaultAbiCoder.encode(orderDataTypes, [staticInput]) + } + + /** + * Poll a conditional order to see if it is tradeable. + * + * @param owner The owner of the conditional order. + * @param p The proof and parameters. + * @param chain Which chain to use for the ComposableCoW contract. + * @param provider An RPC provider for the chain. + * @param offChainInputFn A function, if provided, that will return the off-chain input for the conditional order. + * @throws If the conditional order is not tradeable. + * @returns The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order. + */ + async poll(params: PollParams): Promise { + const { chainId, owner, provider, orderBookApi } = params + const composableCow = getComposableCow(chainId, provider) + + try { + const isValid = this.isValid() + // Do a validation first + if (!isValid.isValid) { + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `InvalidConditionalOrder. Reason: ${isValid.reason}`, + } + } + + // Let the concrete Conditional Order decide about the poll result + const pollResult = await this.pollValidate(params) + if (pollResult) { + return pollResult + } + + // Check if the owner authorized the order + const isAuthorized = await this.isAuthorized(params) + if (!isAuthorized) { + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `NotAuthorized: Order ${this.id} is not authorized for ${owner} on chain ${chainId}`, + } + } + + // Lastly, try to get the tradeable order and signature + const [order, signature] = await composableCow.getTradeableOrderWithSignature( + owner, + this.leaf, + this.offChainInput, + [] + ) + + const orderUid = await computeOrderUid(chainId, owner, fromStructToOrder(order)) + + // Check if the order is already in the order book + const isOrderInOrderbook = await orderBookApi + .getOrder(orderUid) + .then(() => true) + .catch(() => false) + + // Let the concrete Conditional Order decide about the poll result (in the case the order is already in the orderbook) + if (isOrderInOrderbook) { + const pollResult = await this.handlePollFailedAlreadyPresent(orderUid, order, params) + if (pollResult) { + return pollResult + } + + return { + result: PollResultCode.TRY_NEXT_BLOCK, + reason: 'Order already in orderbook', + } + } + + return { + result: PollResultCode.SUCCESS, + order, + signature, + } + } catch (error) { + return { + result: PollResultCode.UNEXPECTED_ERROR, + error: error, + } + } + } + + /** + * Checks if the owner authorized the conditional order. + * + * @param params owner context, to be able to check if the order is authorized + * @returns true if the owner authorized the order, false otherwise. + */ + public isAuthorized(params: OwnerContext): Promise { + const { chainId, owner, provider } = params + const composableCow = getComposableCow(chainId, provider) + return composableCow.callStatic.singleOrders(owner, this.id) + } + + /** + * Checks the value in the cabinet for a given owner and chain + * + * @param params owner context, to be able to check the cabinet + */ + public cabinet(params: OwnerContext): Promise { + const { chainId, owner, provider } = params + + const composableCow = getComposableCow(chainId, provider) + return composableCow.callStatic.cabinet(owner, this.ctx) + } + + /** + * Allow concrete conditional orders to perform additional validation for the poll method. + * + * This will allow the concrete orders to decide when an order shouldn't be polled again. For example, if the orders is expired. + * It also allows to signal when should the next check be done. For example, an order could signal that the validations will fail until a certain time or block. + * + * @param params The poll parameters + * + * @returns undefined if the concrete order can't make a decision. Otherwise, it returns a PollResultErrors object. + */ + protected abstract pollValidate(params: PollParams): Promise + + /** + * This method lets the concrete conditional order decide what to do if the order yielded in the polling is already present in the Orderbook API. + * + * The concrete conditional order will have a chance to schedule the next poll. + * For example, a TWAP order that has the current part already in the orderbook, can signal that the next poll should be done at the start time of the next part. + * + * @param params + */ + protected abstract handlePollFailedAlreadyPresent( + orderUid: UID, + order: GPv2Order.DataStruct, + params: PollParams + ): Promise + + /** + * Convert the struct that the contract expect as an encoded `staticInput` into a friendly data object modelling the smart order. + * + * **NOTE**: This should be overridden by any conditional order that requires transformations. + * This implementation is a no-op if you use the same type for both. + * + * @param params {S} Parameters that are passed in to the constructor. + * @returns {D} The static input for the conditional order. + */ + abstract transformStructToData(params: S): D + + /** + * Converts a friendly data object modelling the smart order into the struct that the contract expect as an encoded `staticInput`. + * + * **NOTE**: This should be overridden by any conditional order that requires transformations. + * This implementation is a no-op if you use the same type for both. + * + * @param params {S} Parameters that are passed in to the constructor. + * @returns {D} The static input for the conditional order. + */ + abstract transformDataToStruct(params: D): S + + /** + * A helper function for generically deserializing a conditional order. + * @param s The ABI-encoded `IConditionalOrder.Params` struct to deserialize. + * @param handler Address of the handler for the conditional order. + * @param orderDataTypes ABI types for the order's data struct. + * @param callback A callback function that takes the deserialized data struct and the salt and returns an instance of the class. + * @returns An instance of the conditional order class. + */ + protected static deserializeHelper( + s: string, + handler: string, + orderDataTypes: string[], + callback: (d: any, salt: string) => T + ): T { + try { + // First, decode the `IConditionalOrder.Params` struct + const { handler: recoveredHandler, salt, staticInput } = decodeParams(s) + + // Second, verify that the recovered handler is the correct handler + if (!(recoveredHandler == handler)) throw new Error('HandlerMismatch') + + // Third, decode the data struct + const [d] = utils.defaultAbiCoder.decode(orderDataTypes, staticInput) + + // Create a new instance of the class + return callback(d, salt) + } catch (e: any) { + if (e.message === 'HandlerMismatch') { + throw e + } else { + throw new Error('InvalidSerializedConditionalOrder') + } + } + } +} diff --git a/external/cow-sdk/src/composable/ConditionalOrderFactory.ts b/external/cow-sdk/src/composable/ConditionalOrderFactory.ts new file mode 100644 index 000000000..f03c22b6b --- /dev/null +++ b/external/cow-sdk/src/composable/ConditionalOrderFactory.ts @@ -0,0 +1,38 @@ +import { type ConditionalOrder } from './ConditionalOrder' +import { ConditionalOrderParams } from './types' + +export type FromParams = (params: ConditionalOrderParams) => ConditionalOrder +export type ConditionalOrderRegistry = Record> + +/** + * Factory for conditional orders. + * + * It uses a registry to instantiate the correct conditional order based on the handler. + * + * Knowing the handler, the factory will instantiate the correct conditional order using the staticInput data. + */ +export class ConditionalOrderFactory { + public knownOrderTypes + + constructor(registry: ConditionalOrderRegistry) { + // Normalize the keys to lowercase + this.knownOrderTypes = Object.entries(registry).reduce((acc, [key, value]) => { + acc[key.toLowerCase()] = value + return acc + }, {}) + } + + /** + * Get the conditional order factory from the conditional order parameters + */ + public fromParams(params: ConditionalOrderParams): ConditionalOrder | undefined { + const { handler } = params + + const factory = this.knownOrderTypes[handler.toLocaleLowerCase()] + if (!factory) { + return undefined + } + + return factory(params) + } +} diff --git a/external/cow-sdk/src/composable/Multiplexer.spec.ts b/external/cow-sdk/src/composable/Multiplexer.spec.ts new file mode 100644 index 000000000..e38dba9b8 --- /dev/null +++ b/external/cow-sdk/src/composable/Multiplexer.spec.ts @@ -0,0 +1,286 @@ +import 'src/order-book/__mock__/api' +import { Multiplexer, Orders } from './Multiplexer' +import { SupportedChainId } from '../common' +import { ProofLocation } from './types' +import { Twap } from './orderTypes/Twap' +import { TWAP_PARAMS_TEST, generateRandomTWAPData } from './orderTypes/Twap.spec' +import { getComposableCowInterface } from './contracts' +import { BigNumber } from 'ethers' + +describe('Multiplexer (ComposableCoW)', () => { + beforeEach(() => { + // Register the TWAP handler + Multiplexer.registerOrderType('twap', Twap) + }) + + afterEach(() => { + jest.restoreAllMocks() + }) + + test('constructor: can create a new multiplexer', () => { + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + expect(m).toBeDefined() + }) + + test('constructor: orders cannot have non-zero length', () => { + expect(() => { + new Multiplexer(SupportedChainId.GNOSIS_CHAIN, {} as Orders) + }).toThrow('orders must have non-zero length') + }) + + test('constructor: cannot have undefined root for orders', () => { + expect(() => { + const twap = Twap.fromData(generateRandomTWAPData()) + + new Multiplexer(SupportedChainId.GNOSIS_CHAIN, { [twap.id]: twap }) + }).toThrow('orders cannot have undefined root') + }) + + test('constructor: order types must be registered', () => { + Multiplexer.resetOrderTypeRegistry() + + const twap = Twap.fromData(generateRandomTWAPData()) + expect(() => { + new Multiplexer(SupportedChainId.GNOSIS_CHAIN, { [twap.id]: twap }, '0x1234') + }).toThrow(`Unknown order type: ${twap.orderType}`) + }) + + test('constructor: orders must have valid root supplied', () => { + expect(() => { + const twap = Twap.fromData(generateRandomTWAPData()) + + new Multiplexer(SupportedChainId.GNOSIS_CHAIN, { [twap.id]: twap }, '0x1234') + }).toThrow('root mismatch') + }) + + test('crud: can add, remove, update, and get orders', () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(generateRandomTWAPData()) + m.add(twap) + + // Get the order by id + const order = m.getById(twap.id) + expect(order).toBeDefined() + expect(order).toEqual(twap) + + // Get the order by index + const order2 = m.getByIndex(0) + expect(order2).toBeDefined() + expect(order2).toEqual(twap) + + // Create another random TWAP order + const twap2 = Twap.fromData(generateRandomTWAPData()) + m.add(twap2) + + // Confirm that the multiplexer has two orders + expect(m.orderIds.length).toEqual(2) + + // Out of curiosity, get the root + const root = m.root + + // Remove the first order + m.remove(twap.id) + + // Confirm that the multiplexer has one order + expect(m.orderIds.length).toEqual(1) + + // Update the second order, in that we'll just replace it with the first order + m.update(twap2.id, (_o) => twap) + + // Confirm that the multiplexer has one order + expect(m.orderIds.length).toEqual(1) + + // Confirm that the root has changed + expect(m.root).not.toEqual(root) + + // Get the order by id + const order3 = m.getById(twap.id) + expect(order3).toBeDefined() + expect(order3).toEqual(twap) + }) + + test("Can't add invalid conditional orders", () => { + // Given an invalid order, don't allow to add it to the multiplexer + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const invalidTwap = Twap.fromData({ ...generateRandomTWAPData(), timeBetweenParts: BigNumber.from(-1) }) + expect(() => m.add(invalidTwap)).toThrow('Invalid order: InvalidFrequency') + }) + + test('serde(toJSON): can serialize to JSON', () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(generateRandomTWAPData()) + m.add(twap) + + // Serialize the multiplexer + const serialized = m.toJSON() + expect(serialized).toBeDefined() + + // Try to serialize again (check for side-effects) + const serialized2 = m.toJSON() + expect(serialized2).toBeDefined() + expect(serialized2).toEqual(serialized) + }) + + test('serde(fromJSON): enforce order types are registered', () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(generateRandomTWAPData()) + m.add(twap) + + // Serialize the multiplexer + const serialized = m.toJSON() + + // Reset the registered order types + Multiplexer.resetOrderTypeRegistry() + + // Try to deserialize the multiplexer + expect(() => { + Multiplexer.fromJSON(serialized) + }).toThrow('Unknown order type: twap') + }) + + test('serde(toJSON/fromJSON): can serialize and deserialize', () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + + // generate `n` random TWAP orders + for (let i = 0; i < 10; i++) { + m.add(Twap.fromData(generateRandomTWAPData())) + } + + // Generate a random index to get an order from the multiplexer + const index = Math.floor(Math.random() * 10) + + // Get an order from the multiplexer + const orderBefore = m.getByIndex(index) + const orderId = orderBefore.id + + // Serialize the multiplexer + const serialized = m.toJSON() + + // Deserialize the multiplexer + const m2 = Multiplexer.fromJSON(serialized) + + // Get an order from the deserialized multiplexer + const orderAfter = m2.getById(orderId) + + // Compare the two orders + expect(orderBefore).toEqual(orderAfter) + }) + + test('serde(dumpProofs/decodeFromJSON): can serialize and deserialize', () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + + // generate `n` random TWAP orders + for (let i = 0; i < 10; i++) { + m.add(Twap.fromData(generateRandomTWAPData())) + } + + // Generate a random index to get an order from the multiplexer + const index = Math.floor(Math.random() * 10) + + // Get an order from the multiplexer + const orderBefore = m.getByIndex(index) + // get the leaf + const leaf = orderBefore.leaf + + const filter = (v: string[]) => { + const { handler, salt, staticInput } = leaf + return !(handler === v[0] && salt === v[1] && staticInput === v[2]) + } + + // Dump the proofs + const serialized = m.dumpProofs(filter) + const unserialized = m.dumpProofsAndParams(filter) + + // Deserialize the proofs + const artifact = Multiplexer.decodeFromJSON(serialized) + + expect(artifact).toEqual(unserialized) + + // The artifact should not contain the leaf + artifact.forEach((v) => { + expect(v.params).not.toEqual(leaf) + }) + }) + + test('prepareProofStruct: can prepare a proof struct', async () => { + // Create a new multiplexer, add a TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + + // generate `n` random TWAP orders + for (let i = 0; i < 10; i++) { + m.add(Twap.fromData(generateRandomTWAPData())) + } + + const proofStruct = await m.prepareProofStruct() + + // use the typechain generated interface to see if the proof struct is valid + // by generating calldata for `setRoot`. + + getComposableCowInterface().encodeFunctionData('setRoot', [m.root, proofStruct]) + }) + + test('prepareProofStruct: emits when location set to emitted', async () => { + // Create a new multiplexer, add the standard TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(TWAP_PARAMS_TEST) + m.add(twap) + + const proofStruct = await m.prepareProofStruct(ProofLocation.EMITTED) + + // use the typechain generated interface to see if the proof struct is valid + // by generating calldata for `setRoot`. + + getComposableCowInterface().encodeFunctionData('setRoot', [m.root, proofStruct]) + }) + + test('prepareProofStruct: throws on invalid location', async () => { + // Create a new multiplexer, add the standard TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(TWAP_PARAMS_TEST) + m.add(twap) + + await expect(m.prepareProofStruct(ProofLocation.EMITTED + 100)).rejects.toThrow('Unsupported location') + }) + + test('prepareProofStruct: uploader', async () => { + // Create a new multiplexer, add the standard TWAP order + const m = new Multiplexer(SupportedChainId.GNOSIS_CHAIN) + const twap = Twap.fromData(TWAP_PARAMS_TEST) + m.add(twap) + + try { + await m.prepareProofStruct(ProofLocation.SWARM) + } catch (e) { + expect(e.message).toMatch('Error preparing proof struct: Error: Must provide an uploader function') + } + + // define an async upload function + const upload = async (_data: string): Promise => { + return 'baddata' + } + + try { + await m.prepareProofStruct(ProofLocation.SWARM, undefined, upload) + } catch (e) { + expect(e.message).toMatch('Error preparing proof struct: Error: data returned by uploader is invalid') + } + + // define an upload function that throws an error + const upload2 = async (_data: string): Promise => { + throw new Error('bad') + } + + try { + await m.prepareProofStruct(ProofLocation.IPFS, undefined, upload2) + } catch (e) { + expect(e.message).toMatch( + 'Error preparing proof struct: Error: Error uploading to decentralized storage 5: Error: bad' + ) + } + }) +}) diff --git a/external/cow-sdk/src/composable/Multiplexer.ts b/external/cow-sdk/src/composable/Multiplexer.ts new file mode 100644 index 000000000..dc7780edb --- /dev/null +++ b/external/cow-sdk/src/composable/Multiplexer.ts @@ -0,0 +1,448 @@ +import { StandardMerkleTree } from '@openzeppelin/merkle-tree' +import { BigNumber, providers, utils } from 'ethers' + +import { SupportedChainId } from '../common' + +import { ComposableCoW, GPv2Order } from '../common/generated/ComposableCoW' +import { ProofLocation, ProofWithParams, ConditionalOrderParams } from './types' +import { ConditionalOrder } from './ConditionalOrder' +import { getComposableCow } from './contracts' + +const CONDITIONAL_ORDER_LEAF_ABI = ['address', 'bytes32', 'bytes'] + +const PAYLOAD_EMITTED_ABI = ['tuple(bytes32[] proof, tuple(address handler, bytes32 salt, bytes staticInput) params)[]'] + +export type Orders = Record> + +/** + * Multiplexer for conditional orders - using `ComposableCoW`! + * + * This class provides functionality to: + * - Generate a merkle tree of conditional orders + * - Generate proofs for all orders in the merkle tree + * - Save proofs, with the ability to omit / skip specific conditional orders + * - Support for passing an optional upload function to upload the proofs to a decentralized storage network + */ +export class Multiplexer { + static orderTypeRegistry: Record ConditionalOrder> = {} + + public chain: SupportedChainId + public location: ProofLocation + + private orders: Orders = {} + private tree?: StandardMerkleTree + private ctx?: string + + /** + * @param chain The `chainId` for where we're using `ComposableCoW`. + * @param orders An optional array of conditional orders to initialize the merkle tree with. + * @param root An optional root to verify against. + * @param location The location of the proofs for the conditional orders. + */ + constructor( + chain: SupportedChainId, + orders?: Orders, + root?: string, + location: ProofLocation = ProofLocation.PRIVATE + ) { + this.chain = chain + this.location = location + + // If orders are provided, the length must be > 0 + if (orders && Object.keys(orders).length === 0) { + throw new Error('orders must have non-zero length') + } + + // If orders are provided, so must a root, and vice versa + if ((orders && !root) || (!orders && root)) { + throw new Error('orders cannot have undefined root') + } + + // can only proceed past here if both orders and root are provided, or neither are + + // validate that no unknown order types are provided + for (const orderKey in orders) { + if (orders.hasOwnProperty(orderKey)) { + const order = orders[orderKey] + if (!Multiplexer.orderTypeRegistry.hasOwnProperty(order.orderType)) { + throw new Error(`Unknown order type: ${order.orderType}`) + } + } + } + + // If orders (and therefore the root) are provided, generate the merkle tree + if (orders) { + this.orders = orders + + // if generate was successful, we can verify the root + if (this.getOrGenerateTree().root !== root) { + throw new Error('root mismatch') + } + } + } + + // --- user facing serialization methods --- + + /** + * Given a serialized multiplexer, create the multiplexer and rehydrate all conditional orders. + * Integrity of the multiplexer will be verified by generating the merkle tree and verifying + * the root. + * + * **NOTE**: Before using this method, you must register all conditional order types using `Multiplexer.registerOrderType`. + * @param s The serialized multiplexer. + * @returns The multiplexer with all conditional orders rehydrated. + * @throws If the multiplexer cannot be deserialized. + * @throws If the merkle tree cannot be generated. + * @throws If the merkle tree cannot be verified against the root. + */ + static fromJSON(s: string): Multiplexer { + // reviver function to deserialize the orders + const reviver = (k: string, v: any) => { + if (k === 'orders' && typeof v === 'object' && v !== null) { + const orders: Orders = {} + + for (const orderKey in v) { + if (v.hasOwnProperty(orderKey)) { + const { orderType, ...orderData } = v[orderKey] + + if (Multiplexer.orderTypeRegistry.hasOwnProperty(orderType)) { + const OrderConstructor = Multiplexer.orderTypeRegistry[orderType] + orders[orderKey] = new OrderConstructor(orderData) + } else { + throw new Error(`Unknown order type: ${orderType}`) + } + } + } + + return orders + } + + // Make sure we deserialize `BigNumber` correctly + if (typeof v === 'object' && v !== null && v.hasOwnProperty('type') && v.hasOwnProperty('hex')) { + if (v.type === 'BigNumber') { + return BigNumber.from(v) + } + } + + return v + } + + const { chain, orders, root, location } = JSON.parse(s, reviver) + const m = new Multiplexer(chain, orders, root) + m.location = location + return m + } + + /** + * Serialize the multiplexer to JSON. + * + * This will include all state necessary to reconstruct the multiplexer, including the root. + * @remarks This will **NOT** include the merkle tree. + * @returns The JSON representation of the multiplexer, including the root but excluding the merkle tree. + */ + toJSON(): string { + const root = this.getOrGenerateTree().root + + // serialize the multiplexer, including the root but excluding the merkle tree. + return JSON.stringify({ ...this, root }, (k, v) => { + // filter out the merkle tree + if (k === 'tree') return undefined + if (typeof v === 'object' && v !== null && 'orderType' in v) { + const conditionalOrder = v as ConditionalOrder + return { + ...conditionalOrder, + orderType: conditionalOrder.orderType, + } + } + // We do not do any custom serialization of `BigNumber` in order to preserve it's type. + return v + }) + } + + // --- crud methods --- + + /** + * Add a conditional order to the merkle tree. + * @param order The order to add to the merkle tree. + */ + add(order: ConditionalOrder): void { + order.assertIsValid() + + this.orders[order.id] = order + this.reset() + } + + /** + * Remove a conditional order from the merkle tree. + * @param id The id of the `ConditionalOrder` to remove from the merkle tree. + */ + remove(id: string): void { + delete this.orders[id] + this.reset() + } + + /** + * Update a given conditional order in the merkle tree. + * @param id The id of the `ConditionalOrder` to update. + * @param updater A function that takes the existing `ConditionalOrder` and context, returning an updated `ConditionalOrder`. + */ + update( + id: string, + updater: (order: ConditionalOrder, ctx?: string) => ConditionalOrder + ): void { + // copy the existing order and update it, given the existing context (if any) + const order = updater(this.orders[id], this.ctx) + // delete the existing order + delete this.orders[id] + + // add the updated order + this.orders[order.id] = order + this.reset() + } + + // --- accessors --- + + /** + * Accessor for a given conditional order in the multiplexer. + * @param id The `id` of the `ConditionalOrder` to retrieve. + * @returns A `ConditionalOrder` with the given `id`. + */ + getById(id: string): ConditionalOrder { + return this.orders[id] + } + + /** + * Accessor for a given conditional order in the multiplexer. + * @param i The index of the `ConditionalOrder` to retrieve. + * @returns A `ConditionalOrder` at the given index. + */ + getByIndex(i: number): ConditionalOrder { + return this.orders[this.orderIds[i]] + } + + /** + * Get all the conditional order ids in the multiplexer. + */ + get orderIds(): string[] { + return Object.keys(this.orders) + } + + get root(): string { + return this.getOrGenerateTree().root + } + + /** + * Retrieve the merkle tree of orders, or generate it if it doesn't exist. + * + * **CAUTION**: Developers of the SDK should prefer to use this method instead of generating the + * merkle tree themselves. This method makes use of caching to avoid generating the + * merkle tree needlessly. + * @throws If the merkle tree cannot be generated. + * @returns The merkle tree for the current set of conditional orders. + */ + private getOrGenerateTree(): StandardMerkleTree { + if (!this.tree) { + this.tree = StandardMerkleTree.of( + Object.values(this.orders).map((order) => [...Object.values(order.leaf)]), + CONDITIONAL_ORDER_LEAF_ABI + ) + } + + return this.tree + } + + // --- serialization for watchtowers / indexers --- + + /** + * The primary method for watch towers to use when deserializing the proofs and parameters for the conditional orders. + * @param s The serialized proofs with parameters for consumption by watchtowers / indexers. + * @returns The `ProofWithParams` array. + * @throws If the `ProofWithParams` array cannot be deserialized. + */ + static decodeFromJSON(s: string): ProofWithParams[] { + // no need to rehydrate `BigNumber` as this is fully ABI encoded + return JSON.parse(s) + } + + /** + * The primary entry point for dapps integrating with `ComposableCoW` to generate the proofs and + * parameters for the conditional orders. + * + * After populating the multiplexer with conditional orders, this method can be used to generate + * the proofs and parameters for the conditional orders. The returned `ProofStruct` can then be + * used with `setRoot` or `setRootWithContext` on a `ComposableCoW`-enabled Safe. + * + * @param filter {@link getProofs} + * @parma locFn A function that takes the off-chain encoded input, and returns the `location` + * for the `ProofStruct`, and the `data` for the `ProofStruct`. + * @returns The ABI-encoded `ProofStruct` for `setRoot` and `setRootWithContext`. + */ + async prepareProofStruct( + location: ProofLocation = this.location, + filter?: (v: string[]) => boolean, + uploader?: (offChainEncoded: string) => Promise + ): Promise { + const data = async (): Promise => { + switch (location) { + case ProofLocation.PRIVATE: + return '0x' + case ProofLocation.EMITTED: + return this.encodeToABI(filter) + case ProofLocation.SWARM: + case ProofLocation.WAKU: + case ProofLocation.IPFS: + if (!uploader) throw new Error('Must provide an uploader function') + try { + return await uploader(this.encodeToJSON(filter)) + } catch (e) { + throw new Error(`Error uploading to decentralized storage ${location}: ${e}`) + } + default: + throw new Error('Unsupported location') + } + } + + return await data() + .then((d) => { + try { + // validate that `d` is a valid `bytes` ready to be abi-encoded + utils.hexlify(utils.arrayify(d)) + + // if we get here, we have a valid `data` field for the `ProofStruct` + // This means that if there was an upload function, it was called and the upload was successful + // note: we don't check if the location has changed because we don't care + this.location = location + + return { + location, + data: d, + } + } catch (e) { + throw new Error(`data returned by uploader is invalid`) + } + }) + .catch((e) => { + throw new Error(`Error preparing proof struct: ${e}`) + }) + } + + /** + * Poll a conditional order to see if it is tradeable. + * @param owner The owner of the conditional order. + * @param p The proof and parameters. + * @param chain Which chain to use for the ComposableCoW contract. + * @param provider An RPC provider for the chain. + * @param offChainInputFn A function, if provided, that will return the off-chain input for the conditional order. + * @throws If the conditional order is not tradeable. + * @returns The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order. + */ + static async poll( + owner: string, + p: ProofWithParams, + chain: SupportedChainId, + provider: providers.Provider, + offChainInputFn?: (owner: string, params: ConditionalOrderParams) => Promise + ): Promise<[GPv2Order.DataStruct, string]> { + const composableCow = getComposableCow(chain, provider) + + const offChainInput = offChainInputFn ? await offChainInputFn(owner, p.params) : '0x' + return await composableCow.getTradeableOrderWithSignature(owner, p.params, offChainInput, p.proof) + } + + /** + * The primary entry point for dumping the proofs and parameters for the conditional orders. + * + * This is to be used by watchtowers / indexers to store the proofs and parameters for the + * conditional orders off-chain. The encoding returned by this method may **NOT** contain all + * proofs and parameters, depending on the `filter` provided, and therefore should not be used + * to rehydrate the multiplexer from a user's perspective. + * @param filter {@link getProofs} + * @returns A JSON-encoded string of the proofs and parameters for the conditional orders. + */ + dumpProofs(filter?: (v: string[]) => boolean): string { + return this.encodeToJSON(filter) + } + + dumpProofsAndParams(filter?: (v: string[]) => boolean): ProofWithParams[] { + return this.getProofs(filter) + } + + /** + * Get the proofs with parameters for the conditional orders in the merkle tree. + * @param filter A function that takes a conditional order and returns a boolean indicating + * whether the order should be included in the proof. + * @returns An array of proofs and their order's parameters for the conditional orders in the + * merkle tree. + */ + private getProofs(filter?: (v: string[]) => boolean): ProofWithParams[] { + // Get a list of all entry indices in the tree, excluding any that don't match the filter + return [...this.getOrGenerateTree().entries()] + .map(([i, v]) => { + if ((filter && filter(v)) || filter === undefined) { + return { idx: i, value: v } + } else { + return undefined + } + }) + .reduce((acc: ProofWithParams[], x) => { + if (x) { + const p: ConditionalOrderParams = { + handler: x.value[0], + salt: x.value[1], + staticInput: x.value[2], + } + acc.push({ + proof: this.getOrGenerateTree().getProof(x.idx), + params: p, + }) + } + return acc + }, []) + } + + /** + * ABI-encode the proofs and parameters for the conditional orders in the merkle tree. + * @param filter {@link getProofs} + * @returns ABI-encoded `data` for the `ProofStruct`. + */ + private encodeToABI(filter?: (v: string[]) => boolean): string { + return utils.defaultAbiCoder.encode(PAYLOAD_EMITTED_ABI, [this.getProofs(filter)]) + } + + /** + * JSON-encode the proofs and parameters for the conditional orders in the merkle tree. + * @param filter {@link getProofs} + * @returns The JSON-encoded data for storage off-chain. + */ + private encodeToJSON(filter?: (v: string[]) => boolean): string { + return JSON.stringify(this.getProofs(filter)) + } + + /** + * A helper to reset the merkle tree. + */ + private reset(): void { + this.tree = undefined + } + + /** + * Register a conditional order type with the multiplexer. + * + * **CAUTION**: This is required for using `Multiplexer.fromJSON` and `Multiplexer.toJSON`. + * @param orderType The order type to register. + * @param conditionalOrderClass The class to use for the given order type. + */ + public static registerOrderType( + orderType: string, + conditionalOrderClass: new (...args: any[]) => ConditionalOrder + ) { + Multiplexer.orderTypeRegistry[orderType] = conditionalOrderClass + } + + /** + * Reset the order type registry. + */ + public static resetOrderTypeRegistry() { + Multiplexer.orderTypeRegistry = {} + } +} diff --git a/external/cow-sdk/src/composable/contracts.ts b/external/cow-sdk/src/composable/contracts.ts new file mode 100644 index 000000000..6bb92536f --- /dev/null +++ b/external/cow-sdk/src/composable/contracts.ts @@ -0,0 +1,23 @@ +import { providers } from 'ethers' +import { COMPOSABLE_COW_CONTRACT_ADDRESS, SupportedChainId } from '../common' +import { ComposableCoW, ComposableCoW__factory } from '../common/generated' +import { ComposableCoWInterface } from '../common/generated/ComposableCoW' + +let composableCowInterfaceCache: ComposableCoWInterface | undefined +let composableCowContractCache: ComposableCoW | undefined + +export function getComposableCowInterface(): ComposableCoWInterface { + if (!composableCowInterfaceCache) { + composableCowInterfaceCache = ComposableCoW__factory.createInterface() + } + + return composableCowInterfaceCache +} + +export function getComposableCow(chain: SupportedChainId, provider: providers.Provider): ComposableCoW { + if (!composableCowContractCache) { + composableCowContractCache = ComposableCoW__factory.connect(COMPOSABLE_COW_CONTRACT_ADDRESS[chain], provider) + } + + return composableCowContractCache +} diff --git a/external/cow-sdk/src/composable/generated/ComposableCoW.ts b/external/cow-sdk/src/composable/generated/ComposableCoW.ts new file mode 100644 index 000000000..6e60b1c53 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/ComposableCoW.ts @@ -0,0 +1,763 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "./common"; + +export declare namespace IConditionalOrder { + export type ConditionalOrderParamsStruct = { + handler: string; + salt: BytesLike; + staticInput: BytesLike; + }; + + export type ConditionalOrderParamsStructOutput = [string, string, string] & { + handler: string; + salt: string; + staticInput: string; + }; +} + +export declare namespace ComposableCoW { + export type ProofStruct = { location: BigNumberish; data: BytesLike }; + + export type ProofStructOutput = [BigNumber, string] & { + location: BigNumber; + data: string; + }; +} + +export declare namespace GPv2Order { + export type DataStruct = { + sellToken: string; + buyToken: string; + receiver: string; + sellAmount: BigNumberish; + buyAmount: BigNumberish; + validTo: BigNumberish; + appData: BytesLike; + feeAmount: BigNumberish; + kind: BytesLike; + partiallyFillable: boolean; + sellTokenBalance: BytesLike; + buyTokenBalance: BytesLike; + }; + + export type DataStructOutput = [ + string, + string, + string, + BigNumber, + BigNumber, + number, + string, + BigNumber, + string, + boolean, + string, + string + ] & { + sellToken: string; + buyToken: string; + receiver: string; + sellAmount: BigNumber; + buyAmount: BigNumber; + validTo: number; + appData: string; + feeAmount: BigNumber; + kind: string; + partiallyFillable: boolean; + sellTokenBalance: string; + buyTokenBalance: string; + }; +} + +export interface ComposableCoWInterface extends utils.Interface { + functions: { + "cabinet(address,bytes32)": FunctionFragment; + "create((address,bytes32,bytes),bool)": FunctionFragment; + "createWithContext((address,bytes32,bytes),address,bytes,bool)": FunctionFragment; + "domainSeparator()": FunctionFragment; + "getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])": FunctionFragment; + "hash((address,bytes32,bytes))": FunctionFragment; + "isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)": FunctionFragment; + "remove(bytes32)": FunctionFragment; + "roots(address)": FunctionFragment; + "setRoot(bytes32,(uint256,bytes))": FunctionFragment; + "setRootWithContext(bytes32,(uint256,bytes),address,bytes)": FunctionFragment; + "setSwapGuard(address)": FunctionFragment; + "singleOrders(address,bytes32)": FunctionFragment; + "swapGuards(address)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "cabinet" + | "create" + | "createWithContext" + | "domainSeparator" + | "getTradeableOrderWithSignature" + | "hash" + | "isValidSafeSignature" + | "remove" + | "roots" + | "setRoot" + | "setRootWithContext" + | "setSwapGuard" + | "singleOrders" + | "swapGuards" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "cabinet", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "create", + values: [IConditionalOrder.ConditionalOrderParamsStruct, boolean] + ): string; + encodeFunctionData( + functionFragment: "createWithContext", + values: [ + IConditionalOrder.ConditionalOrderParamsStruct, + string, + BytesLike, + boolean + ] + ): string; + encodeFunctionData( + functionFragment: "domainSeparator", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getTradeableOrderWithSignature", + values: [ + string, + IConditionalOrder.ConditionalOrderParamsStruct, + BytesLike, + BytesLike[] + ] + ): string; + encodeFunctionData( + functionFragment: "hash", + values: [IConditionalOrder.ConditionalOrderParamsStruct] + ): string; + encodeFunctionData( + functionFragment: "isValidSafeSignature", + values: [ + string, + string, + BytesLike, + BytesLike, + BytesLike, + BytesLike, + BytesLike + ] + ): string; + encodeFunctionData(functionFragment: "remove", values: [BytesLike]): string; + encodeFunctionData(functionFragment: "roots", values: [string]): string; + encodeFunctionData( + functionFragment: "setRoot", + values: [BytesLike, ComposableCoW.ProofStruct] + ): string; + encodeFunctionData( + functionFragment: "setRootWithContext", + values: [BytesLike, ComposableCoW.ProofStruct, string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setSwapGuard", + values: [string] + ): string; + encodeFunctionData( + functionFragment: "singleOrders", + values: [string, BytesLike] + ): string; + encodeFunctionData(functionFragment: "swapGuards", values: [string]): string; + + decodeFunctionResult(functionFragment: "cabinet", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "createWithContext", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "domainSeparator", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTradeableOrderWithSignature", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "hash", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "isValidSafeSignature", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "remove", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "roots", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setRoot", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "setRootWithContext", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSwapGuard", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "singleOrders", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "swapGuards", data: BytesLike): Result; + + events: { + "ConditionalOrderCreated(address,(address,bytes32,bytes))": EventFragment; + "MerkleRootSet(address,bytes32,(uint256,bytes))": EventFragment; + "SwapGuardSet(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "ConditionalOrderCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "MerkleRootSet"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SwapGuardSet"): EventFragment; +} + +export interface ConditionalOrderCreatedEventObject { + owner: string; + params: IConditionalOrder.ConditionalOrderParamsStructOutput; +} +export type ConditionalOrderCreatedEvent = TypedEvent< + [string, IConditionalOrder.ConditionalOrderParamsStructOutput], + ConditionalOrderCreatedEventObject +>; + +export type ConditionalOrderCreatedEventFilter = + TypedEventFilter; + +export interface MerkleRootSetEventObject { + owner: string; + root: string; + proof: ComposableCoW.ProofStructOutput; +} +export type MerkleRootSetEvent = TypedEvent< + [string, string, ComposableCoW.ProofStructOutput], + MerkleRootSetEventObject +>; + +export type MerkleRootSetEventFilter = TypedEventFilter; + +export interface SwapGuardSetEventObject { + owner: string; + swapGuard: string; +} +export type SwapGuardSetEvent = TypedEvent< + [string, string], + SwapGuardSetEventObject +>; + +export type SwapGuardSetEventFilter = TypedEventFilter; + +export interface ComposableCoW extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ComposableCoWInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + cabinet( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + create( + params: IConditionalOrder.ConditionalOrderParamsStruct, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + createWithContext( + params: IConditionalOrder.ConditionalOrderParamsStruct, + factory: string, + data: BytesLike, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + domainSeparator(overrides?: CallOverrides): Promise<[string]>; + + getTradeableOrderWithSignature( + owner: string, + params: IConditionalOrder.ConditionalOrderParamsStruct, + offchainInput: BytesLike, + proof: BytesLike[], + overrides?: CallOverrides + ): Promise< + [GPv2Order.DataStructOutput, string] & { + order: GPv2Order.DataStructOutput; + signature: string; + } + >; + + hash( + params: IConditionalOrder.ConditionalOrderParamsStruct, + overrides?: CallOverrides + ): Promise<[string]>; + + isValidSafeSignature( + safe: string, + sender: string, + _hash: BytesLike, + _domainSeparator: BytesLike, + arg4: BytesLike, + encodeData: BytesLike, + payload: BytesLike, + overrides?: CallOverrides + ): Promise<[string] & { magic: string }>; + + remove( + singleOrderHash: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + roots(arg0: string, overrides?: CallOverrides): Promise<[string]>; + + setRoot( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + overrides?: Overrides & { from?: string } + ): Promise; + + setRootWithContext( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + factory: string, + data: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSwapGuard( + swapGuard: string, + overrides?: Overrides & { from?: string } + ): Promise; + + singleOrders( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + swapGuards(arg0: string, overrides?: CallOverrides): Promise<[string]>; + }; + + cabinet( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + create( + params: IConditionalOrder.ConditionalOrderParamsStruct, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + createWithContext( + params: IConditionalOrder.ConditionalOrderParamsStruct, + factory: string, + data: BytesLike, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + domainSeparator(overrides?: CallOverrides): Promise; + + getTradeableOrderWithSignature( + owner: string, + params: IConditionalOrder.ConditionalOrderParamsStruct, + offchainInput: BytesLike, + proof: BytesLike[], + overrides?: CallOverrides + ): Promise< + [GPv2Order.DataStructOutput, string] & { + order: GPv2Order.DataStructOutput; + signature: string; + } + >; + + hash( + params: IConditionalOrder.ConditionalOrderParamsStruct, + overrides?: CallOverrides + ): Promise; + + isValidSafeSignature( + safe: string, + sender: string, + _hash: BytesLike, + _domainSeparator: BytesLike, + arg4: BytesLike, + encodeData: BytesLike, + payload: BytesLike, + overrides?: CallOverrides + ): Promise; + + remove( + singleOrderHash: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + roots(arg0: string, overrides?: CallOverrides): Promise; + + setRoot( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + overrides?: Overrides & { from?: string } + ): Promise; + + setRootWithContext( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + factory: string, + data: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSwapGuard( + swapGuard: string, + overrides?: Overrides & { from?: string } + ): Promise; + + singleOrders( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + swapGuards(arg0: string, overrides?: CallOverrides): Promise; + + callStatic: { + cabinet( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + create( + params: IConditionalOrder.ConditionalOrderParamsStruct, + dispatch: boolean, + overrides?: CallOverrides + ): Promise; + + createWithContext( + params: IConditionalOrder.ConditionalOrderParamsStruct, + factory: string, + data: BytesLike, + dispatch: boolean, + overrides?: CallOverrides + ): Promise; + + domainSeparator(overrides?: CallOverrides): Promise; + + getTradeableOrderWithSignature( + owner: string, + params: IConditionalOrder.ConditionalOrderParamsStruct, + offchainInput: BytesLike, + proof: BytesLike[], + overrides?: CallOverrides + ): Promise< + [GPv2Order.DataStructOutput, string] & { + order: GPv2Order.DataStructOutput; + signature: string; + } + >; + + hash( + params: IConditionalOrder.ConditionalOrderParamsStruct, + overrides?: CallOverrides + ): Promise; + + isValidSafeSignature( + safe: string, + sender: string, + _hash: BytesLike, + _domainSeparator: BytesLike, + arg4: BytesLike, + encodeData: BytesLike, + payload: BytesLike, + overrides?: CallOverrides + ): Promise; + + remove( + singleOrderHash: BytesLike, + overrides?: CallOverrides + ): Promise; + + roots(arg0: string, overrides?: CallOverrides): Promise; + + setRoot( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + overrides?: CallOverrides + ): Promise; + + setRootWithContext( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + factory: string, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setSwapGuard(swapGuard: string, overrides?: CallOverrides): Promise; + + singleOrders( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + swapGuards(arg0: string, overrides?: CallOverrides): Promise; + }; + + filters: { + "ConditionalOrderCreated(address,(address,bytes32,bytes))"( + owner?: string | null, + params?: null + ): ConditionalOrderCreatedEventFilter; + ConditionalOrderCreated( + owner?: string | null, + params?: null + ): ConditionalOrderCreatedEventFilter; + + "MerkleRootSet(address,bytes32,(uint256,bytes))"( + owner?: string | null, + root?: null, + proof?: null + ): MerkleRootSetEventFilter; + MerkleRootSet( + owner?: string | null, + root?: null, + proof?: null + ): MerkleRootSetEventFilter; + + "SwapGuardSet(address,address)"( + owner?: string | null, + swapGuard?: null + ): SwapGuardSetEventFilter; + SwapGuardSet( + owner?: string | null, + swapGuard?: null + ): SwapGuardSetEventFilter; + }; + + estimateGas: { + cabinet( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + create( + params: IConditionalOrder.ConditionalOrderParamsStruct, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + createWithContext( + params: IConditionalOrder.ConditionalOrderParamsStruct, + factory: string, + data: BytesLike, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + domainSeparator(overrides?: CallOverrides): Promise; + + getTradeableOrderWithSignature( + owner: string, + params: IConditionalOrder.ConditionalOrderParamsStruct, + offchainInput: BytesLike, + proof: BytesLike[], + overrides?: CallOverrides + ): Promise; + + hash( + params: IConditionalOrder.ConditionalOrderParamsStruct, + overrides?: CallOverrides + ): Promise; + + isValidSafeSignature( + safe: string, + sender: string, + _hash: BytesLike, + _domainSeparator: BytesLike, + arg4: BytesLike, + encodeData: BytesLike, + payload: BytesLike, + overrides?: CallOverrides + ): Promise; + + remove( + singleOrderHash: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + roots(arg0: string, overrides?: CallOverrides): Promise; + + setRoot( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + overrides?: Overrides & { from?: string } + ): Promise; + + setRootWithContext( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + factory: string, + data: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSwapGuard( + swapGuard: string, + overrides?: Overrides & { from?: string } + ): Promise; + + singleOrders( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + swapGuards(arg0: string, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + cabinet( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + create( + params: IConditionalOrder.ConditionalOrderParamsStruct, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + createWithContext( + params: IConditionalOrder.ConditionalOrderParamsStruct, + factory: string, + data: BytesLike, + dispatch: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + domainSeparator(overrides?: CallOverrides): Promise; + + getTradeableOrderWithSignature( + owner: string, + params: IConditionalOrder.ConditionalOrderParamsStruct, + offchainInput: BytesLike, + proof: BytesLike[], + overrides?: CallOverrides + ): Promise; + + hash( + params: IConditionalOrder.ConditionalOrderParamsStruct, + overrides?: CallOverrides + ): Promise; + + isValidSafeSignature( + safe: string, + sender: string, + _hash: BytesLike, + _domainSeparator: BytesLike, + arg4: BytesLike, + encodeData: BytesLike, + payload: BytesLike, + overrides?: CallOverrides + ): Promise; + + remove( + singleOrderHash: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + roots( + arg0: string, + overrides?: CallOverrides + ): Promise; + + setRoot( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + overrides?: Overrides & { from?: string } + ): Promise; + + setRootWithContext( + root: BytesLike, + proof: ComposableCoW.ProofStruct, + factory: string, + data: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSwapGuard( + swapGuard: string, + overrides?: Overrides & { from?: string } + ): Promise; + + singleOrders( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + swapGuards( + arg0: string, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/external/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts b/external/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts new file mode 100644 index 000000000..2188156c0 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts @@ -0,0 +1,794 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "./common"; + +export interface ExtensibleFallbackHandlerInterface extends utils.Interface { + functions: { + "domainVerifiers(address,bytes32)": FunctionFragment; + "isValidSignature(bytes32,bytes)": FunctionFragment; + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": FunctionFragment; + "onERC1155Received(address,address,uint256,uint256,bytes)": FunctionFragment; + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + "safeInterfaces(address,bytes4)": FunctionFragment; + "safeMethods(address,bytes4)": FunctionFragment; + "setDomainVerifier(bytes32,address)": FunctionFragment; + "setSafeMethod(bytes4,bytes32)": FunctionFragment; + "setSupportedInterface(bytes4,bool)": FunctionFragment; + "setSupportedInterfaceBatch(bytes4,bytes32[])": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "domainVerifiers" + | "isValidSignature" + | "onERC1155BatchReceived" + | "onERC1155Received" + | "onERC721Received" + | "safeInterfaces" + | "safeMethods" + | "setDomainVerifier" + | "setSafeMethod" + | "setSupportedInterface" + | "setSupportedInterfaceBatch" + | "supportsInterface" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "domainVerifiers", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "isValidSignature", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "onERC1155BatchReceived", + values: [string, string, BigNumberish[], BigNumberish[], BytesLike] + ): string; + encodeFunctionData( + functionFragment: "onERC1155Received", + values: [string, string, BigNumberish, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "onERC721Received", + values: [string, string, BigNumberish, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "safeInterfaces", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "safeMethods", + values: [string, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setDomainVerifier", + values: [BytesLike, string] + ): string; + encodeFunctionData( + functionFragment: "setSafeMethod", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "setSupportedInterface", + values: [BytesLike, boolean] + ): string; + encodeFunctionData( + functionFragment: "setSupportedInterfaceBatch", + values: [BytesLike, BytesLike[]] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "domainVerifiers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isValidSignature", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC1155BatchReceived", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC1155Received", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeInterfaces", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "safeMethods", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setDomainVerifier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSafeMethod", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSupportedInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setSupportedInterfaceBatch", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: { + "AddedDomainVerifier(address,bytes32,address)": EventFragment; + "AddedInterface(address,bytes4)": EventFragment; + "AddedSafeMethod(address,bytes4,bytes32)": EventFragment; + "ChangedDomainVerifier(address,bytes32,address,address)": EventFragment; + "ChangedSafeMethod(address,bytes4,bytes32,bytes32)": EventFragment; + "RemovedDomainVerifier(address,bytes32)": EventFragment; + "RemovedInterface(address,bytes4)": EventFragment; + "RemovedSafeMethod(address,bytes4)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AddedDomainVerifier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AddedInterface"): EventFragment; + getEvent(nameOrSignatureOrTopic: "AddedSafeMethod"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ChangedDomainVerifier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ChangedSafeMethod"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RemovedDomainVerifier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RemovedInterface"): EventFragment; + getEvent(nameOrSignatureOrTopic: "RemovedSafeMethod"): EventFragment; +} + +export interface AddedDomainVerifierEventObject { + safe: string; + domainSeparator: string; + verifier: string; +} +export type AddedDomainVerifierEvent = TypedEvent< + [string, string, string], + AddedDomainVerifierEventObject +>; + +export type AddedDomainVerifierEventFilter = + TypedEventFilter; + +export interface AddedInterfaceEventObject { + safe: string; + interfaceId: string; +} +export type AddedInterfaceEvent = TypedEvent< + [string, string], + AddedInterfaceEventObject +>; + +export type AddedInterfaceEventFilter = TypedEventFilter; + +export interface AddedSafeMethodEventObject { + safe: string; + selector: string; + method: string; +} +export type AddedSafeMethodEvent = TypedEvent< + [string, string, string], + AddedSafeMethodEventObject +>; + +export type AddedSafeMethodEventFilter = TypedEventFilter; + +export interface ChangedDomainVerifierEventObject { + safe: string; + domainSeparator: string; + oldVerifier: string; + newVerifier: string; +} +export type ChangedDomainVerifierEvent = TypedEvent< + [string, string, string, string], + ChangedDomainVerifierEventObject +>; + +export type ChangedDomainVerifierEventFilter = + TypedEventFilter; + +export interface ChangedSafeMethodEventObject { + safe: string; + selector: string; + oldMethod: string; + newMethod: string; +} +export type ChangedSafeMethodEvent = TypedEvent< + [string, string, string, string], + ChangedSafeMethodEventObject +>; + +export type ChangedSafeMethodEventFilter = + TypedEventFilter; + +export interface RemovedDomainVerifierEventObject { + safe: string; + domainSeparator: string; +} +export type RemovedDomainVerifierEvent = TypedEvent< + [string, string], + RemovedDomainVerifierEventObject +>; + +export type RemovedDomainVerifierEventFilter = + TypedEventFilter; + +export interface RemovedInterfaceEventObject { + safe: string; + interfaceId: string; +} +export type RemovedInterfaceEvent = TypedEvent< + [string, string], + RemovedInterfaceEventObject +>; + +export type RemovedInterfaceEventFilter = + TypedEventFilter; + +export interface RemovedSafeMethodEventObject { + safe: string; + selector: string; +} +export type RemovedSafeMethodEvent = TypedEvent< + [string, string], + RemovedSafeMethodEventObject +>; + +export type RemovedSafeMethodEventFilter = + TypedEventFilter; + +export interface ExtensibleFallbackHandler extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ExtensibleFallbackHandlerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + domainVerifiers( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + isValidSignature( + _hash: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise<[string] & { magic: string }>; + + onERC1155BatchReceived( + arg0: string, + arg1: string, + arg2: BigNumberish[], + arg3: BigNumberish[], + arg4: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC1155Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BigNumberish, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + onERC721Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + safeInterfaces( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + safeMethods( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + setDomainVerifier( + domainSeparator: BytesLike, + newVerifier: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setSafeMethod( + selector: BytesLike, + newMethod: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterface( + interfaceId: BytesLike, + supported: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterfaceBatch( + _interfaceId: BytesLike, + handlerWithSelectors: BytesLike[], + overrides?: Overrides & { from?: string } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + domainVerifiers( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + isValidSignature( + _hash: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155BatchReceived( + arg0: string, + arg1: string, + arg2: BigNumberish[], + arg3: BigNumberish[], + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BigNumberish, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeInterfaces( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeMethods( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + setDomainVerifier( + domainSeparator: BytesLike, + newVerifier: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setSafeMethod( + selector: BytesLike, + newMethod: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterface( + interfaceId: BytesLike, + supported: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterfaceBatch( + _interfaceId: BytesLike, + handlerWithSelectors: BytesLike[], + overrides?: Overrides & { from?: string } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + domainVerifiers( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + isValidSignature( + _hash: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155BatchReceived( + arg0: string, + arg1: string, + arg2: BigNumberish[], + arg3: BigNumberish[], + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BigNumberish, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeInterfaces( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeMethods( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + setDomainVerifier( + domainSeparator: BytesLike, + newVerifier: string, + overrides?: CallOverrides + ): Promise; + + setSafeMethod( + selector: BytesLike, + newMethod: BytesLike, + overrides?: CallOverrides + ): Promise; + + setSupportedInterface( + interfaceId: BytesLike, + supported: boolean, + overrides?: CallOverrides + ): Promise; + + setSupportedInterfaceBatch( + _interfaceId: BytesLike, + handlerWithSelectors: BytesLike[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AddedDomainVerifier(address,bytes32,address)"( + safe?: string | null, + domainSeparator?: null, + verifier?: null + ): AddedDomainVerifierEventFilter; + AddedDomainVerifier( + safe?: string | null, + domainSeparator?: null, + verifier?: null + ): AddedDomainVerifierEventFilter; + + "AddedInterface(address,bytes4)"( + safe?: string | null, + interfaceId?: null + ): AddedInterfaceEventFilter; + AddedInterface( + safe?: string | null, + interfaceId?: null + ): AddedInterfaceEventFilter; + + "AddedSafeMethod(address,bytes4,bytes32)"( + safe?: string | null, + selector?: null, + method?: null + ): AddedSafeMethodEventFilter; + AddedSafeMethod( + safe?: string | null, + selector?: null, + method?: null + ): AddedSafeMethodEventFilter; + + "ChangedDomainVerifier(address,bytes32,address,address)"( + safe?: string | null, + domainSeparator?: null, + oldVerifier?: null, + newVerifier?: null + ): ChangedDomainVerifierEventFilter; + ChangedDomainVerifier( + safe?: string | null, + domainSeparator?: null, + oldVerifier?: null, + newVerifier?: null + ): ChangedDomainVerifierEventFilter; + + "ChangedSafeMethod(address,bytes4,bytes32,bytes32)"( + safe?: string | null, + selector?: null, + oldMethod?: null, + newMethod?: null + ): ChangedSafeMethodEventFilter; + ChangedSafeMethod( + safe?: string | null, + selector?: null, + oldMethod?: null, + newMethod?: null + ): ChangedSafeMethodEventFilter; + + "RemovedDomainVerifier(address,bytes32)"( + safe?: string | null, + domainSeparator?: null + ): RemovedDomainVerifierEventFilter; + RemovedDomainVerifier( + safe?: string | null, + domainSeparator?: null + ): RemovedDomainVerifierEventFilter; + + "RemovedInterface(address,bytes4)"( + safe?: string | null, + interfaceId?: null + ): RemovedInterfaceEventFilter; + RemovedInterface( + safe?: string | null, + interfaceId?: null + ): RemovedInterfaceEventFilter; + + "RemovedSafeMethod(address,bytes4)"( + safe?: string | null, + selector?: null + ): RemovedSafeMethodEventFilter; + RemovedSafeMethod( + safe?: string | null, + selector?: null + ): RemovedSafeMethodEventFilter; + }; + + estimateGas: { + domainVerifiers( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + isValidSignature( + _hash: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155BatchReceived( + arg0: string, + arg1: string, + arg2: BigNumberish[], + arg3: BigNumberish[], + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BigNumberish, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeInterfaces( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeMethods( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + setDomainVerifier( + domainSeparator: BytesLike, + newVerifier: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setSafeMethod( + selector: BytesLike, + newMethod: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterface( + interfaceId: BytesLike, + supported: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterfaceBatch( + _interfaceId: BytesLike, + handlerWithSelectors: BytesLike[], + overrides?: Overrides & { from?: string } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + domainVerifiers( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + isValidSignature( + _hash: BytesLike, + signature: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155BatchReceived( + arg0: string, + arg1: string, + arg2: BigNumberish[], + arg3: BigNumberish[], + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC1155Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BigNumberish, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + onERC721Received( + arg0: string, + arg1: string, + arg2: BigNumberish, + arg3: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeInterfaces( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + safeMethods( + arg0: string, + arg1: BytesLike, + overrides?: CallOverrides + ): Promise; + + setDomainVerifier( + domainSeparator: BytesLike, + newVerifier: string, + overrides?: Overrides & { from?: string } + ): Promise; + + setSafeMethod( + selector: BytesLike, + newMethod: BytesLike, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterface( + interfaceId: BytesLike, + supported: boolean, + overrides?: Overrides & { from?: string } + ): Promise; + + setSupportedInterfaceBatch( + _interfaceId: BytesLike, + handlerWithSelectors: BytesLike[], + overrides?: Overrides & { from?: string } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/external/cow-sdk/src/composable/generated/TWAP.ts b/external/cow-sdk/src/composable/generated/TWAP.ts new file mode 100644 index 000000000..e08c76153 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/TWAP.ts @@ -0,0 +1,324 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, +} from "./common"; + +export declare namespace IConditionalOrder { + export type ConditionalOrderParamsStruct = { + handler: string; + salt: BytesLike; + staticInput: BytesLike; + }; + + export type ConditionalOrderParamsStructOutput = [string, string, string] & { + handler: string; + salt: string; + staticInput: string; + }; +} + +export declare namespace GPv2Order { + export type DataStruct = { + sellToken: string; + buyToken: string; + receiver: string; + sellAmount: BigNumberish; + buyAmount: BigNumberish; + validTo: BigNumberish; + appData: BytesLike; + feeAmount: BigNumberish; + kind: BytesLike; + partiallyFillable: boolean; + sellTokenBalance: BytesLike; + buyTokenBalance: BytesLike; + }; + + export type DataStructOutput = [ + string, + string, + string, + BigNumber, + BigNumber, + number, + string, + BigNumber, + string, + boolean, + string, + string + ] & { + sellToken: string; + buyToken: string; + receiver: string; + sellAmount: BigNumber; + buyAmount: BigNumber; + validTo: number; + appData: string; + feeAmount: BigNumber; + kind: string; + partiallyFillable: boolean; + sellTokenBalance: string; + buyTokenBalance: string; + }; +} + +export interface TWAPInterface extends utils.Interface { + functions: { + "getTradeableOrder(address,address,bytes32,bytes,bytes)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: "getTradeableOrder" | "supportsInterface" | "verify" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "getTradeableOrder", + values: [string, string, BytesLike, BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "verify", + values: [ + string, + string, + BytesLike, + BytesLike, + BytesLike, + BytesLike, + BytesLike, + GPv2Order.DataStruct + ] + ): string; + + decodeFunctionResult( + functionFragment: "getTradeableOrder", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "verify", data: BytesLike): Result; + + events: { + "ConditionalOrderCreated(address,(address,bytes32,bytes))": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "ConditionalOrderCreated"): EventFragment; +} + +export interface ConditionalOrderCreatedEventObject { + owner: string; + params: IConditionalOrder.ConditionalOrderParamsStructOutput; +} +export type ConditionalOrderCreatedEvent = TypedEvent< + [string, IConditionalOrder.ConditionalOrderParamsStructOutput], + ConditionalOrderCreatedEventObject +>; + +export type ConditionalOrderCreatedEventFilter = + TypedEventFilter; + +export interface TWAP extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TWAPInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + getTradeableOrder( + owner: string, + arg1: string, + ctx: BytesLike, + staticInput: BytesLike, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise< + [GPv2Order.DataStructOutput] & { order: GPv2Order.DataStructOutput } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + verify( + owner: string, + sender: string, + _hash: BytesLike, + domainSeparator: BytesLike, + ctx: BytesLike, + staticInput: BytesLike, + offchainInput: BytesLike, + arg7: GPv2Order.DataStruct, + overrides?: CallOverrides + ): Promise<[void]>; + }; + + getTradeableOrder( + owner: string, + arg1: string, + ctx: BytesLike, + staticInput: BytesLike, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + verify( + owner: string, + sender: string, + _hash: BytesLike, + domainSeparator: BytesLike, + ctx: BytesLike, + staticInput: BytesLike, + offchainInput: BytesLike, + arg7: GPv2Order.DataStruct, + overrides?: CallOverrides + ): Promise; + + callStatic: { + getTradeableOrder( + owner: string, + arg1: string, + ctx: BytesLike, + staticInput: BytesLike, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + verify( + owner: string, + sender: string, + _hash: BytesLike, + domainSeparator: BytesLike, + ctx: BytesLike, + staticInput: BytesLike, + offchainInput: BytesLike, + arg7: GPv2Order.DataStruct, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "ConditionalOrderCreated(address,(address,bytes32,bytes))"( + owner?: string | null, + params?: null + ): ConditionalOrderCreatedEventFilter; + ConditionalOrderCreated( + owner?: string | null, + params?: null + ): ConditionalOrderCreatedEventFilter; + }; + + estimateGas: { + getTradeableOrder( + owner: string, + arg1: string, + ctx: BytesLike, + staticInput: BytesLike, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + verify( + owner: string, + sender: string, + _hash: BytesLike, + domainSeparator: BytesLike, + ctx: BytesLike, + staticInput: BytesLike, + offchainInput: BytesLike, + arg7: GPv2Order.DataStruct, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + getTradeableOrder( + owner: string, + arg1: string, + ctx: BytesLike, + staticInput: BytesLike, + arg4: BytesLike, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + verify( + owner: string, + sender: string, + _hash: BytesLike, + domainSeparator: BytesLike, + ctx: BytesLike, + staticInput: BytesLike, + offchainInput: BytesLike, + arg7: GPv2Order.DataStruct, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/external/cow-sdk/src/composable/generated/common.ts b/external/cow-sdk/src/composable/generated/common.ts new file mode 100644 index 000000000..2fc40c7fb --- /dev/null +++ b/external/cow-sdk/src/composable/generated/common.ts @@ -0,0 +1,44 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from "@ethersproject/providers"; +import type { Event, EventFilter } from "ethers"; + +export interface TypedEvent< + TArgsArray extends Array = any, + TArgsObject = any +> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> + extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + ( + eventFilter: TypedEventFilter, + listener: TypedListener + ): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory< + infer C, + any +> + ? C + : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory + ? Parameters + : never; diff --git a/external/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts b/external/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts new file mode 100644 index 000000000..e942a7712 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts @@ -0,0 +1,629 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { ComposableCoW, ComposableCoWInterface } from "../ComposableCoW"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "_settlement", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "InterfaceNotSupported", + type: "error", + }, + { + inputs: [], + name: "InvalidHandler", + type: "error", + }, + { + inputs: [], + name: "ProofNotAuthed", + type: "error", + }, + { + inputs: [], + name: "SingleOrderNotAuthed", + type: "error", + }, + { + inputs: [], + name: "SwapGuardRestricted", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + ], + name: "ConditionalOrderCreated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "root", + type: "bytes32", + }, + { + components: [ + { + internalType: "uint256", + name: "location", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct ComposableCoW.Proof", + name: "proof", + type: "tuple", + }, + ], + name: "MerkleRootSet", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: false, + internalType: "contract ISwapGuard", + name: "swapGuard", + type: "address", + }, + ], + name: "SwapGuardSet", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "cabinet", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + { + internalType: "bool", + name: "dispatch", + type: "bool", + }, + ], + name: "create", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + { + internalType: "contract IValueFactory", + name: "factory", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + { + internalType: "bool", + name: "dispatch", + type: "bool", + }, + ], + name: "createWithContext", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "domainSeparator", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + { + internalType: "bytes", + name: "offchainInput", + type: "bytes", + }, + { + internalType: "bytes32[]", + name: "proof", + type: "bytes32[]", + }, + ], + name: "getTradeableOrderWithSignature", + outputs: [ + { + components: [ + { + internalType: "contract IERC20", + name: "sellToken", + type: "address", + }, + { + internalType: "contract IERC20", + name: "buyToken", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "uint256", + name: "sellAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "buyAmount", + type: "uint256", + }, + { + internalType: "uint32", + name: "validTo", + type: "uint32", + }, + { + internalType: "bytes32", + name: "appData", + type: "bytes32", + }, + { + internalType: "uint256", + name: "feeAmount", + type: "uint256", + }, + { + internalType: "bytes32", + name: "kind", + type: "bytes32", + }, + { + internalType: "bool", + name: "partiallyFillable", + type: "bool", + }, + { + internalType: "bytes32", + name: "sellTokenBalance", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "buyTokenBalance", + type: "bytes32", + }, + ], + internalType: "struct GPv2Order.Data", + name: "order", + type: "tuple", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + ], + name: "hash", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "_domainSeparator", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + { + internalType: "bytes", + name: "encodeData", + type: "bytes", + }, + { + internalType: "bytes", + name: "payload", + type: "bytes", + }, + ], + name: "isValidSafeSignature", + outputs: [ + { + internalType: "bytes4", + name: "magic", + type: "bytes4", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "singleOrderHash", + type: "bytes32", + }, + ], + name: "remove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "roots", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "root", + type: "bytes32", + }, + { + components: [ + { + internalType: "uint256", + name: "location", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct ComposableCoW.Proof", + name: "proof", + type: "tuple", + }, + ], + name: "setRoot", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "root", + type: "bytes32", + }, + { + components: [ + { + internalType: "uint256", + name: "location", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct ComposableCoW.Proof", + name: "proof", + type: "tuple", + }, + { + internalType: "contract IValueFactory", + name: "factory", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "setRootWithContext", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "contract ISwapGuard", + name: "swapGuard", + type: "address", + }, + ], + name: "setSwapGuard", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "singleOrders", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "swapGuards", + outputs: [ + { + internalType: "contract ISwapGuard", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ComposableCoW__factory { + static readonly abi = _abi; + static createInterface(): ComposableCoWInterface { + return new utils.Interface(_abi) as ComposableCoWInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ComposableCoW { + return new Contract(address, _abi, signerOrProvider) as ComposableCoW; + } +} diff --git a/external/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts b/external/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts new file mode 100644 index 000000000..a5b3684fc --- /dev/null +++ b/external/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts @@ -0,0 +1,521 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ExtensibleFallbackHandler, + ExtensibleFallbackHandlerInterface, +} from "../ExtensibleFallbackHandler"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "domainSeparator", + type: "bytes32", + }, + { + indexed: false, + internalType: "contract ISafeSignatureVerifier", + name: "verifier", + type: "address", + }, + ], + name: "AddedDomainVerifier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "AddedInterface", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "selector", + type: "bytes4", + }, + { + indexed: false, + internalType: "bytes32", + name: "method", + type: "bytes32", + }, + ], + name: "AddedSafeMethod", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "domainSeparator", + type: "bytes32", + }, + { + indexed: false, + internalType: "contract ISafeSignatureVerifier", + name: "oldVerifier", + type: "address", + }, + { + indexed: false, + internalType: "contract ISafeSignatureVerifier", + name: "newVerifier", + type: "address", + }, + ], + name: "ChangedDomainVerifier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "selector", + type: "bytes4", + }, + { + indexed: false, + internalType: "bytes32", + name: "oldMethod", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes32", + name: "newMethod", + type: "bytes32", + }, + ], + name: "ChangedSafeMethod", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes32", + name: "domainSeparator", + type: "bytes32", + }, + ], + name: "RemovedDomainVerifier", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "RemovedInterface", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "contract Safe", + name: "safe", + type: "address", + }, + { + indexed: false, + internalType: "bytes4", + name: "selector", + type: "bytes4", + }, + ], + name: "RemovedSafeMethod", + type: "event", + }, + { + stateMutability: "nonpayable", + type: "fallback", + }, + { + inputs: [ + { + internalType: "contract Safe", + name: "", + type: "address", + }, + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "domainVerifiers", + outputs: [ + { + internalType: "contract ISafeSignatureVerifier", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + { + internalType: "bytes", + name: "signature", + type: "bytes", + }, + ], + name: "isValidSignature", + outputs: [ + { + internalType: "bytes4", + name: "magic", + type: "bytes4", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155BatchReceived", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC1155Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "contract Safe", + name: "", + type: "address", + }, + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + name: "safeInterfaces", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "contract Safe", + name: "", + type: "address", + }, + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + name: "safeMethods", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "domainSeparator", + type: "bytes32", + }, + { + internalType: "contract ISafeSignatureVerifier", + name: "newVerifier", + type: "address", + }, + ], + name: "setDomainVerifier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "selector", + type: "bytes4", + }, + { + internalType: "bytes32", + name: "newMethod", + type: "bytes32", + }, + ], + name: "setSafeMethod", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + { + internalType: "bool", + name: "supported", + type: "bool", + }, + ], + name: "setSupportedInterface", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "_interfaceId", + type: "bytes4", + }, + { + internalType: "bytes32[]", + name: "handlerWithSelectors", + type: "bytes32[]", + }, + ], + name: "setSupportedInterfaceBatch", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +export class ExtensibleFallbackHandler__factory { + static readonly abi = _abi; + static createInterface(): ExtensibleFallbackHandlerInterface { + return new utils.Interface(_abi) as ExtensibleFallbackHandlerInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ExtensibleFallbackHandler { + return new Contract( + address, + _abi, + signerOrProvider + ) as ExtensibleFallbackHandler; + } +} diff --git a/external/cow-sdk/src/composable/generated/factories/TWAP__factory.ts b/external/cow-sdk/src/composable/generated/factories/TWAP__factory.ts new file mode 100644 index 000000000..f1a0a8aed --- /dev/null +++ b/external/cow-sdk/src/composable/generated/factories/TWAP__factory.ts @@ -0,0 +1,342 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { TWAP, TWAPInterface } from "../TWAP"; + +const _abi = [ + { + inputs: [ + { + internalType: "contract ComposableCoW", + name: "_composableCow", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "InvalidFrequency", + type: "error", + }, + { + inputs: [], + name: "InvalidMinPartLimit", + type: "error", + }, + { + inputs: [], + name: "InvalidNumParts", + type: "error", + }, + { + inputs: [], + name: "InvalidPartSellAmount", + type: "error", + }, + { + inputs: [], + name: "InvalidSameToken", + type: "error", + }, + { + inputs: [], + name: "InvalidSpan", + type: "error", + }, + { + inputs: [], + name: "InvalidStartTime", + type: "error", + }, + { + inputs: [], + name: "InvalidToken", + type: "error", + }, + { + inputs: [], + name: "OrderNotValid", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + components: [ + { + internalType: "contract IConditionalOrder", + name: "handler", + type: "address", + }, + { + internalType: "bytes32", + name: "salt", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct IConditionalOrder.ConditionalOrderParams", + name: "params", + type: "tuple", + }, + ], + name: "ConditionalOrderCreated", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "bytes32", + name: "ctx", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + name: "getTradeableOrder", + outputs: [ + { + components: [ + { + internalType: "contract IERC20", + name: "sellToken", + type: "address", + }, + { + internalType: "contract IERC20", + name: "buyToken", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "uint256", + name: "sellAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "buyAmount", + type: "uint256", + }, + { + internalType: "uint32", + name: "validTo", + type: "uint32", + }, + { + internalType: "bytes32", + name: "appData", + type: "bytes32", + }, + { + internalType: "uint256", + name: "feeAmount", + type: "uint256", + }, + { + internalType: "bytes32", + name: "kind", + type: "bytes32", + }, + { + internalType: "bool", + name: "partiallyFillable", + type: "bool", + }, + { + internalType: "bytes32", + name: "sellTokenBalance", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "buyTokenBalance", + type: "bytes32", + }, + ], + internalType: "struct GPv2Order.Data", + name: "order", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "bytes32", + name: "_hash", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "domainSeparator", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "ctx", + type: "bytes32", + }, + { + internalType: "bytes", + name: "staticInput", + type: "bytes", + }, + { + internalType: "bytes", + name: "offchainInput", + type: "bytes", + }, + { + components: [ + { + internalType: "contract IERC20", + name: "sellToken", + type: "address", + }, + { + internalType: "contract IERC20", + name: "buyToken", + type: "address", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "uint256", + name: "sellAmount", + type: "uint256", + }, + { + internalType: "uint256", + name: "buyAmount", + type: "uint256", + }, + { + internalType: "uint32", + name: "validTo", + type: "uint32", + }, + { + internalType: "bytes32", + name: "appData", + type: "bytes32", + }, + { + internalType: "uint256", + name: "feeAmount", + type: "uint256", + }, + { + internalType: "bytes32", + name: "kind", + type: "bytes32", + }, + { + internalType: "bool", + name: "partiallyFillable", + type: "bool", + }, + { + internalType: "bytes32", + name: "sellTokenBalance", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "buyTokenBalance", + type: "bytes32", + }, + ], + internalType: "struct GPv2Order.Data", + name: "", + type: "tuple", + }, + ], + name: "verify", + outputs: [], + stateMutability: "view", + type: "function", + }, +] as const; + +export class TWAP__factory { + static readonly abi = _abi; + static createInterface(): TWAPInterface { + return new utils.Interface(_abi) as TWAPInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): TWAP { + return new Contract(address, _abi, signerOrProvider) as TWAP; + } +} diff --git a/external/cow-sdk/src/composable/generated/factories/index.ts b/external/cow-sdk/src/composable/generated/factories/index.ts new file mode 100644 index 000000000..1051d1212 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/factories/index.ts @@ -0,0 +1,6 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ComposableCoW__factory } from "./ComposableCoW__factory"; +export { ExtensibleFallbackHandler__factory } from "./ExtensibleFallbackHandler__factory"; +export { TWAP__factory } from "./TWAP__factory"; diff --git a/external/cow-sdk/src/composable/generated/index.ts b/external/cow-sdk/src/composable/generated/index.ts new file mode 100644 index 000000000..0bd58a816 --- /dev/null +++ b/external/cow-sdk/src/composable/generated/index.ts @@ -0,0 +1,10 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ComposableCoW } from "./ComposableCoW"; +export type { ExtensibleFallbackHandler } from "./ExtensibleFallbackHandler"; +export type { TWAP } from "./TWAP"; +export * as factories from "./factories"; +export { ComposableCoW__factory } from "./factories/ComposableCoW__factory"; +export { ExtensibleFallbackHandler__factory } from "./factories/ExtensibleFallbackHandler__factory"; +export { TWAP__factory } from "./factories/TWAP__factory"; diff --git a/external/cow-sdk/src/composable/index.ts b/external/cow-sdk/src/composable/index.ts new file mode 100644 index 000000000..ea7e7f484 --- /dev/null +++ b/external/cow-sdk/src/composable/index.ts @@ -0,0 +1,6 @@ +export * from './types' +export * from './utils' +export * from './ConditionalOrder' +export * from './Multiplexer' +export * from './ConditionalOrderFactory' +export * from './orderTypes' diff --git a/external/cow-sdk/src/composable/orderTypes/Twap.spec.ts b/external/cow-sdk/src/composable/orderTypes/Twap.spec.ts new file mode 100644 index 000000000..d3f3cbb40 --- /dev/null +++ b/external/cow-sdk/src/composable/orderTypes/Twap.spec.ts @@ -0,0 +1,595 @@ +import '../../order-book/__mock__/api' +import { GPv2Order } from '../generated/ComposableCoW' +import { OwnerContext, PollParams, PollResultCode, PollResultErrors } from '../types' +import { DurationType, StartTimeValue, Twap, TWAP_ADDRESS, TwapData } from './Twap' +import { BigNumber, utils, constants, providers } from 'ethers' + +const OWNER = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' +export const TWAP_PARAMS_TEST: TwapData = { + sellToken: '0x6810e776880C02933D47DB1b9fc05908e5386b96', + buyToken: '0xDAE5F1590db13E3B40423B5b5c5fbf175515910b', + receiver: '0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF', + sellAmount: utils.parseEther('1'), + buyAmount: utils.parseEther('1'), + timeBetweenParts: BigNumber.from(60 * 60), + numberOfParts: BigNumber.from(10), + durationOfPart: { + durationType: DurationType.AUTO, + }, + startTime: { + startType: StartTimeValue.AT_MINING_TIME, + }, + appData: '0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5', +} +const SALT = '0xd98a87ed4e45bfeae3f779e1ac09ceacdfb57da214c7fffa6434aeb969f396c0' +const SALT_2 = '0xd98a87ed4e45bfeae3f779e1ac09ceacdfb57da214c7fffa6434aeb969f396c1' +const TWAP_ID = '0xd8a6889486a47d8ca8f4189f11573b39dbc04f605719ebf4050e44ae53c1bedf' +const TWAP_ID_2 = '0x8ddb7e8e1cd6a06d5bb6f91af21a2b26a433a5d8402ccddb00a72e4006c46994' + +export const TWAP_SERIALIZED = (salt?: string): string => { + return ( + '0x' + + '0000000000000000000000000000000000000000000000000000000000000020' + + '000000000000000000000000' + + TWAP_ADDRESS.substring(2).toLowerCase() + + (salt?.substring(2) ?? '9379a0bf532ff9a66ffde940f94b1a025d6f18803054c1aef52dc94b15255bbe') + + '0000000000000000000000000000000000000000000000000000000000000060' + + '0000000000000000000000000000000000000000000000000000000000000140' + + '0000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96' + + '000000000000000000000000dae5f1590db13e3b40423b5b5c5fbf175515910b' + + '000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef' + + '000000000000000000000000000000000000000000000000016345785d8a0000' + + '000000000000000000000000000000000000000000000000016345785d8a0000' + + '0000000000000000000000000000000000000000000000000000000000000000' + + '000000000000000000000000000000000000000000000000000000000000000a' + + '0000000000000000000000000000000000000000000000000000000000000e10' + + '0000000000000000000000000000000000000000000000000000000000000000' + + 'd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5' + ) +} + +export function generateRandomTWAPData(): TwapData { + return { + sellToken: utils.getAddress(utils.hexlify(utils.randomBytes(20))), + buyToken: utils.getAddress(utils.hexlify(utils.randomBytes(20))), + receiver: constants.AddressZero, + sellAmount: utils.parseEther('1'), + buyAmount: utils.parseEther('1'), + timeBetweenParts: BigNumber.from(60 * 60), + numberOfParts: BigNumber.from(10), + durationOfPart: { + durationType: DurationType.AUTO, + }, + startTime: { + startType: StartTimeValue.AT_MINING_TIME, + }, + appData: utils.hexlify(utils.randomBytes(32)), + } +} + +describe('Constructor', () => { + test('Create new valid TWAP', () => { + const twap = new Twap({ handler: TWAP_ADDRESS, data: TWAP_PARAMS_TEST }) + expect(twap.orderType).toEqual('twap') + expect(twap.hasOffChainInput).toEqual(false) + expect(twap.offChainInput).toEqual('0x') + expect(twap.context?.address).not.toBeUndefined() + }) + + test('Create Twap with invalid handler', () => { + expect(() => new Twap({ handler: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead', data: TWAP_PARAMS_TEST })).toThrow( + 'InvalidHandler' + ) + }) +}) + +describe('Twap.fromData', () => { + test('Creates valid TWAP: Start at mining time', () => { + const twap = Twap.fromData(TWAP_PARAMS_TEST) + expect(twap.orderType).toEqual('twap') + expect(twap.hasOffChainInput).toEqual(false) + expect(twap.offChainInput).toEqual('0x') + expect(twap.context?.address).not.toBeUndefined() + }) + + test('Creates valid TWAP: Start at epoch', () => { + const twap = Twap.fromData({ + ...TWAP_PARAMS_TEST, + startTime: { startType: StartTimeValue.AT_EPOCH, epoch: BigNumber.from(1) }, + }) + expect(twap.context).toBeUndefined() + }) +}) + +describe('Id', () => { + test('Id is computed correctly', () => { + const twap = Twap.fromData({ ...TWAP_PARAMS_TEST }, SALT) + expect(twap.id).toEqual(TWAP_ID) + }) + + test("Id doesn't change for the same params and salt", () => { + const twap1 = Twap.fromData({ ...TWAP_PARAMS_TEST }, SALT) + const twap2 = Twap.fromData({ ...TWAP_PARAMS_TEST }, SALT) + + expect(twap1.id).toEqual(twap2.id) + }) + + test('Id changes for same params and different salt', () => { + const twap1 = Twap.fromData({ ...TWAP_PARAMS_TEST }, SALT) + const twap2 = Twap.fromData({ ...TWAP_PARAMS_TEST }, SALT_2) + + expect(twap1.id).not.toEqual(twap2.id) + expect(twap2.id).toEqual(TWAP_ID_2) + }) + + test('Id changes for different params and same salt', () => { + const twap = Twap.fromData( + { ...TWAP_PARAMS_TEST, startTime: { startType: StartTimeValue.AT_EPOCH, epoch: BigNumber.from(123456789) } }, + SALT + ) + + expect(twap.id).toEqual('0xe993544057dbc8504c4e38a6fe35845a81e0849c11242a6070f9d25152598df6') + }) +}) + +describe('Validate', () => { + test('Valid twap', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST }).isValid()).toEqual({ isValid: true }) + }) + + test('Invalid twap: InvalidSameToken', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, sellToken: TWAP_PARAMS_TEST.buyToken }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidSameToken', + }) + }) + + test('Invalid twap: InvalidToken (sell)', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, sellToken: constants.AddressZero }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidToken', + }) + }) + + test('Invalid twap: InvalidToken (buy)', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, buyToken: constants.AddressZero }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidToken', + }) + }) + + test('Invalid twap: InvalidSellAmount', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, sellAmount: BigNumber.from(0) }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidSellAmount', + }) + }) + + test('Invalid twap: InvalidMinBuyAmount', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, buyAmount: BigNumber.from(0) }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidMinBuyAmount', + }) + }) + + test('Invalid twap: InvalidStartTime', () => { + expect( + Twap.fromData({ + ...TWAP_PARAMS_TEST, + startTime: { startType: StartTimeValue.AT_EPOCH, epoch: BigNumber.from(-1) }, + }).isValid() + ).toEqual({ + isValid: false, + reason: 'InvalidStartTime', + }) + }) + + test('Invalid twap: InvalidNumParts', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, numberOfParts: BigNumber.from(0) }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidNumParts', + }) + }) + + test('Invalid twap: InvalidFrequency', () => { + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, timeBetweenParts: BigNumber.from(0) }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidFrequency', + }) + }) + + test('Invalid twap: InvalidSpan (limit duration)', () => { + expect( + Twap.fromData({ + ...TWAP_PARAMS_TEST, + durationOfPart: { + durationType: DurationType.LIMIT_DURATION, + duration: TWAP_PARAMS_TEST.timeBetweenParts.add(1), + }, + }).isValid() + ).toEqual({ + isValid: false, + reason: 'InvalidSpan', + }) + }) + + test('Invalid twap: InvalidData (ABI parse error in appData)', () => { + // The isValid below test triggers a throw by trying to ABI parse `appData` as a `bytes32` when + // it only has 20 bytes (ie. an address) + expect(Twap.fromData({ ...TWAP_PARAMS_TEST, appData: constants.AddressZero }).isValid()).toEqual({ + isValid: false, + reason: 'InvalidData', + }) + }) +}) + +describe('Serialize', () => { + test('serialize: Serializes correctly', () => { + const twap = Twap.fromData(TWAP_PARAMS_TEST) + expect(twap.serialize()).toEqual(TWAP_SERIALIZED(twap.salt)) + }) +}) + +describe('Deserialize', () => { + test('Deserializes correctly', () => { + const twap = Twap.fromData(TWAP_PARAMS_TEST) + expect(Twap.deserialize(TWAP_SERIALIZED(twap.salt))).toMatchObject(twap) + }) + + test('Throws if invalid', () => { + expect(() => Twap.deserialize('0x')).toThrow('InvalidSerializedConditionalOrder') + }) +}) + +describe('To String', () => { + test('toString: Default', () => { + const twap = Twap.fromData(TWAP_PARAMS_TEST, SALT) + expect(twap.toString()).toEqual( + 'twap (0xd8a6889486a47d8ca8f4189f11573b39dbc04f605719ebf4050e44ae53c1bedf): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + ) + }) + test('toString: start time at epoch', () => { + const twap = Twap.fromData( + { + ...TWAP_PARAMS_TEST, + startTime: { + startType: StartTimeValue.AT_EPOCH, + epoch: BigNumber.from(1692876646), + }, + }, + SALT + ) + expect(twap.toString()).toEqual( + 'twap (0x28b19554c54f10b67f6ef7e72bdc552fb865b12d33b797ac51227768705fff0d): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":1692876646,"timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + ) + }) + + test('toString: limit duration', () => { + const twap = Twap.fromData( + { + ...TWAP_PARAMS_TEST, + durationOfPart: { + durationType: DurationType.LIMIT_DURATION, + duration: BigNumber.from(1000), + }, + }, + SALT + ) + expect(twap.toString()).toEqual( + 'twap (0x7352e87b6e5d7c4e27479a13b7ba8bc0d67a947d1692994bd995c9dcc94c166a): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":1000,"receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + ) + }) +}) + +describe('Poll Validate', () => { + const blockNumber = 123456 + const blockTimestamp = 1700000000 + const mockCabinet: jest.MockedFunction<(params: OwnerContext) => Promise> = jest.fn() + const mockEndTimestamp: jest.MockedFunction<(startTimestamp: number) => number> = jest.fn() + const mockGetBlock: jest.MockedFunction< + ( + blockHashOrBlockTag: providers.BlockTag | string | Promise + ) => Promise + > = jest.fn() + + const provider = { + getBlock: mockGetBlock, + } as unknown as providers.Provider + + const pollParams = { + owner: OWNER, + chainId: 1, + provider, + } as PollParams + + class MockTwap extends Twap { + // Just make pollValidate public so we can call it in isolation + public pollValidate(params): Promise { + return super.pollValidate(params) + } + + cabinet = mockCabinet + endTimestamp = mockEndTimestamp + } + const twap = new MockTwap({ handler: TWAP_ADDRESS, data: TWAP_PARAMS_TEST }) + + beforeEach(() => { + jest.resetAllMocks() + }) + + test(`Open TWAP, passes the validations`, async () => { + // GIVEN: A TWAP that should be active (should start 1 second ago, should finish in 1 second) + mockCabinet.mockReturnValue(uint256Helper(blockTimestamp - 1)) + mockEndTimestamp.mockReturnValue(blockTimestamp + 1) + + // WHEN: We poll + const result = await twap.pollValidate({ ...pollParams, blockInfo: { blockNumber, blockTimestamp } }) + + // THEN: The start time and end time of the TWAP will be checked + expect(mockCabinet).toBeCalledTimes(1) + + // THEN: Successful validation + expect(result).toEqual(undefined) + }) + + test(`[TRY_AT_EPOCH] TWAP has not started`, async () => { + // GIVEN: A TWAP that hasn't started (should start in 1 second, should finish in 2 second) + const startTime = blockTimestamp + 1 + mockCabinet.mockReturnValue(uint256Helper(startTime)) + mockEndTimestamp.mockReturnValue(blockTimestamp + 2) + + // WHEN: We poll + const result = await twap.pollValidate({ ...pollParams, blockInfo: { blockNumber, blockTimestamp } }) + + // THEN: Then, it will return an error instructing to try in 1 second (at start time) + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + epoch: startTime, + reason: "TWAP hasn't started yet. Starts at 1700000001 (2023-11-14T22:13:21.000Z)", + }) + }) + + test(`[TRY_AT_EPOCH] TWAP has expired`, async () => { + // GIVEN: A TWAP that has already expired (started 2 seconds ago, finished 1 second ago) + const expireTime = blockTimestamp - 1 + mockCabinet.mockReturnValue(uint256Helper(blockTimestamp - 2)) + mockEndTimestamp.mockReturnValue(expireTime) + + // WHEN: We poll + const result = await twap.pollValidate({ ...pollParams, blockInfo: { blockNumber, blockTimestamp } }) + + // THEN: Then, it will return an error instructing to not try again (expired order is a final state, so there's no point to keep polling) + expect(result).toEqual({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: 'TWAP has expired. Expired at 1699999999 (2023-11-14T22:13:19.000Z)', + }) + }) + + test(`[CABINET OVERFLOW] The cabinet stored value is greater than uint32`, async () => { + // GIVEN: The cabinet stored value is greater than uint32 + mockCabinet.mockReturnValue(uint256Helper(2 ** 32)) + + // WHEN: We poll + const result = await twap.pollValidate({ ...pollParams, blockInfo: { blockNumber, blockTimestamp } }) + + // THEN: Then, it will return an error instructing to not try again (expired order is a final state, so there's no point to keep polling) + expect(result).toEqual({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: 'Cabinet epoch out of range: 4294967296', + }) + }) + + test(`If there's no blockInfo, it will fetch the latest block`, async () => { + // GIVEN: We don't provide the blockInfo with the poll params + const blockInfo = undefined + + // GIVEN: The current block is before the start time + mockGetBlock.mockReturnValue( + Promise.resolve({ + number: blockNumber, + timestamp: blockTimestamp, + } as providers.Block) + ) + const startTime = blockTimestamp + 1 + mockCabinet.mockReturnValue(uint256Helper(startTime)) + mockEndTimestamp.mockReturnValue(blockTimestamp + 2) + + // WHEN: We poll + const result = await twap.pollValidate({ ...pollParams, blockInfo }) + + // THEN: Then, we can see that it uses the right block timestamp to validate the order + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + epoch: startTime, + reason: "TWAP hasn't started yet. Starts at 1700000001 (2023-11-14T22:13:21.000Z)", + }) + }) +}) + +describe('Current TWAP part is in the Order Book', () => { + const blockNumber = 123456 + const startTimestamp = 1700000000 + const timeBetweenParts = 100 + const numberOfParts = 10 + const totalDuration = timeBetweenParts * numberOfParts + const orderId = '0x1' + const order = {} as GPv2Order.DataStruct + + const getPollParams = ({ blockTimestamp }: { blockTimestamp: number }) => + ({ + owner: OWNER, + chainId: 1, + provider: {}, + blockInfo: { + blockNumber, + blockTimestamp, + }, + } as PollParams) + + class MockTwap extends Twap { + // Just make handlePollFailedAlreadyPresent public so we can call it in isolation + public handlePollFailedAlreadyPresent(orderId, order, params): Promise { + return super.handlePollFailedAlreadyPresent(orderId, order, params) + } + } + + const twap = new MockTwap({ + handler: TWAP_ADDRESS, + data: { + ...TWAP_PARAMS_TEST, + timeBetweenParts: BigNumber.from(100), + numberOfParts: BigNumber.from(10), + startTime: { + startType: StartTimeValue.AT_EPOCH, + epoch: BigNumber.from(startTimestamp), + }, + }, + }) + + beforeEach(() => { + jest.resetAllMocks() + }) + + test(`Polling at the start of part 1/10`, async () => { + // GIVEN: The order starts precisely at the current block time + const pollParams = getPollParams({ + blockTimestamp: startTimestamp, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct we should wait for part 2 to start + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + reason: + "Current active TWAP part (1/10) is already in the Order Book. TWAP part 2 doesn't start until 1700000100 (2023-11-14T22:15:00.000Z)", + epoch: 1700000100, + }) + }) + + test(`Polling at the middle of part 1/10`, async () => { + // GIVEN: Polling at the middle of the first part + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + Math.floor(timeBetweenParts / 2), + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct we should wait for part 2 to start + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + reason: + "Current active TWAP part (1/10) is already in the Order Book. TWAP part 2 doesn't start until 1700000100 (2023-11-14T22:15:00.000Z)", + epoch: 1700000100, + }) + }) + + test(`Polling at the last second of part 1/10`, async () => { + // GIVEN: Polling at the last second of the first part + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + timeBetweenParts - 1, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct we should wait for part 2 to start + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + reason: + "Current active TWAP part (1/10) is already in the Order Book. TWAP part 2 doesn't start until 1700000100 (2023-11-14T22:15:00.000Z)", + epoch: 1700000100, + }) + }) + + test(`Polling at the start of part 2/10`, async () => { + // GIVEN: Part 2 just started + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + timeBetweenParts, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct we should wait for part 3 to start + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + reason: + "Current active TWAP part (2/10) is already in the Order Book. TWAP part 3 doesn't start until 1700000200 (2023-11-14T22:16:40.000Z)", + epoch: 1700000200, + }) + }) + + test(`Polling at the last second of part 9/10`, async () => { + // GIVEN: Part 9 is about to end + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + 9 * timeBetweenParts - 1, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct we should wait for part 10 to start + expect(result).toEqual({ + result: PollResultCode.TRY_AT_EPOCH, + reason: + "Current active TWAP part (9/10) is already in the Order Book. TWAP part 10 doesn't start until 1700000900 (2023-11-14T22:28:20.000Z)", + epoch: 1700000900, + }) + }) + + test(`Polling at the first second of part 10/10`, async () => { + // GIVEN: Part 10 has just started + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + 9 * timeBetweenParts, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should instruct that this was the last TWAP part. + expect(result).toEqual({ + result: PollResultCode.DONT_TRY_AGAIN, + reason: + 'Current active TWAP part (10/10) is already in the Order Book. This was the last TWAP part, no more orders need to be placed', + }) + }) + + test(`[UNEXPECTED_ERROR] Twap hasn't started`, async () => { + // GIVEN: The order hasn't started (starts 1 second after this block) + const pollParams = getPollParams({ + blockTimestamp: startTimestamp - 1, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should raise an Unhandled error (it should never happen). This function should be invoked only if "pollValidate" who should already make sure the polling fails if it hasn't started the TWAP + expect(result).toEqual({ + result: PollResultCode.UNEXPECTED_ERROR, + reason: "TWAP part hash't started. First TWAP part start at 1700000000 (2023-11-14T22:13:20.000Z)", + error: undefined, + }) + }) + + test(`[UNEXPECTED_ERROR] Twap has expired`, async () => { + // GIVEN: The order has expired + const pollParams = getPollParams({ + blockTimestamp: startTimestamp + totalDuration + 1, + }) + + // WHEN: We invoke handlePollFailedAlreadyPresent + const result = await twap.handlePollFailedAlreadyPresent(orderId, order, pollParams) + + // THEN: It should raise an Unhandled error (it should never happen). This function should be invoked only if "pollValidate" who should already make sure the polling fails if it is expired + expect(result).toEqual({ + result: PollResultCode.UNEXPECTED_ERROR, + reason: 'TWAP is expired. Expired at 1700001000 (2023-11-14T22:30:00.000Z)', + error: undefined, + }) + }) +}) + +const uint256Helper = (n: number) => Promise.resolve(utils.defaultAbiCoder.encode(['uint256'], [n])) diff --git a/external/cow-sdk/src/composable/orderTypes/Twap.ts b/external/cow-sdk/src/composable/orderTypes/Twap.ts new file mode 100644 index 000000000..c2d2cb5ed --- /dev/null +++ b/external/cow-sdk/src/composable/orderTypes/Twap.ts @@ -0,0 +1,614 @@ +import { BigNumber, constants, utils } from 'ethers' + +import { ConditionalOrder } from '../ConditionalOrder' +import { + ConditionalOrderArguments, + ConditionalOrderParams, + ContextFactory, + OwnerContext, + IsValidResult, + PollParams, + PollResultCode, + PollResultErrors, +} from '../types' +import { encodeParams, formatEpoch, getBlockInfo, isValidAbi } from '../utils' +import { GPv2Order } from '../../common/generated/ComposableCoW' + +// The type of Conditional Order +const TWAP_ORDER_TYPE = 'twap' +// The address of the TWAP handler contract +export const TWAP_ADDRESS = '0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5' +/** + * The address of the `CurrentBlockTimestampFactory` contract + * + * **NOTE**: This is used in the event that TWAP's have a `t0` of `0`. + */ +export const CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS = '0x52eD56Da04309Aca4c3FECC595298d80C2f16BAc' + +export const MAX_UINT32 = BigNumber.from(2).pow(32).sub(1) // 2^32 - 1 +export const MAX_FREQUENCY = BigNumber.from(365 * 24 * 60 * 60) // 1 year + +// Define the ABI tuple for the TWAPData struct +const TWAP_STRUCT_ABI = [ + 'tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)', +] + +/** + * Base parameters for a TWAP order. Shared by: + * - TwapStruct (modelling the contract's struct used for `staticInput`). + * - TwapData (modelling the friendly SDK interface). + */ +export type TwapDataBase = { + /** + * which token to sell + */ + readonly sellToken: string + + /** + * which token to buy + */ + readonly buyToken: string + + /** + * who to send the tokens to + */ + readonly receiver: string + + /** + * Meta-data associated with the order. Normally would be the keccak256 hash of the document generated in http://github.com/cowprotocol/app-data + * + * This hash should have been uploaded to the API https://api.cow.fi/docs/#/default/put_api_v1_app_data__app_data_hash_ and potentially to other data availability protocols like IPFS. + * + */ + readonly appData: string +} + +/** + * Parameters for a TWAP order, as expected by the contract's `staticInput`. + */ +export interface TwapStruct extends TwapDataBase { + /** + * amount of sellToken to sell in each part + */ + readonly partSellAmount: BigNumber + + /** + * minimum amount of buyToken that must be bought in each part + */ + readonly minPartLimit: BigNumber + + /** + * start time of the TWAP + */ + readonly t0: BigNumber + + /** + * number of parts + */ + readonly n: BigNumber + + /** + * duration of the TWAP interval + */ + readonly t: BigNumber + + /** + * whether the TWAP is valid for the entire interval or not + */ + readonly span: BigNumber +} + +/** + * Parameters for a TWAP order, made a little more user-friendly for SDK users. + * + * @see {@link TwapStruct} for the native struct. + */ +export interface TwapData extends TwapDataBase { + /** + * total amount of sellToken to sell across the entire TWAP + */ + readonly sellAmount: BigNumber + + /** + * minimum amount of buyToken that must be bought across the entire TWAP + */ + readonly buyAmount: BigNumber + + /** + * start time of the TWAP + */ + readonly startTime?: StartTime + + /** + * number of parts + */ + readonly numberOfParts: BigNumber + + /** + * duration of the TWAP interval + */ + readonly timeBetweenParts: BigNumber + + /** + * whether the TWAP is valid for the entire interval or not + */ + readonly durationOfPart?: DurationOfPart +} + +export type DurationOfPart = + | { durationType: DurationType.AUTO } + | { durationType: DurationType.LIMIT_DURATION; duration: BigNumber } + +export enum DurationType { + AUTO = 'AUTO', + LIMIT_DURATION = 'LIMIT_DURATION', +} + +export type StartTime = + | { startType: StartTimeValue.AT_MINING_TIME } + | { startType: StartTimeValue.AT_EPOCH; epoch: BigNumber } + +export enum StartTimeValue { + AT_MINING_TIME = 'AT_MINING_TIME', + AT_EPOCH = 'AT_EPOCH', +} + +const DEFAULT_START_TIME: StartTime = { startType: StartTimeValue.AT_MINING_TIME } +const DEFAULT_DURATION_OF_PART: DurationOfPart = { durationType: DurationType.AUTO } + +/** + * `ComposableCoW` implementation of a TWAP order. + * @author mfw78 + */ +export class Twap extends ConditionalOrder { + isSingleOrder = true + + /** + * @see {@link ConditionalOrder.constructor} + * @throws If the TWAP order is invalid. + * @throws If the TWAP order is not ABI-encodable. + * @throws If the handler is not the TWAP address. + */ + constructor(params: ConditionalOrderArguments) { + const { handler, salt, data: staticInput, hasOffChainInput } = params + + // First, verify that the handler is the TWAP address + if (handler !== TWAP_ADDRESS) throw new Error(`InvalidHandler: Expected: ${TWAP_ADDRESS}, provided: ${handler}`) + + // Third, construct the base class using transformed parameters + super({ handler: TWAP_ADDRESS, salt, data: staticInput, hasOffChainInput }) + } + + /** + * Create a TWAP order with sound defaults. + * @param data The TWAP order parameters in a more user-friendly format. + * @returns An instance of the TWAP order. + */ + static fromData(data: TwapData, salt?: string): Twap { + return new Twap({ handler: TWAP_ADDRESS, data, salt }) + } + + /** + * Create a TWAP order with sound defaults. + * @param data The TWAP order parameters in a more user-friendly format. + * @returns An instance of the TWAP order. + */ + static fromParams(params: ConditionalOrderParams): Twap { + return Twap.deserialize(encodeParams(params)) + } + + /** + * Enforces that TWAPs will commence at the beginning of a block by use of the + * `CurrentBlockTimestampFactory` contract to provide the current block timestamp + * as the start time of the TWAP. + */ + get context(): ContextFactory | undefined { + if (this.staticInput.t0.gt(0)) { + return super.context + } else { + return { + address: CURRENT_BLOCK_TIMESTAMP_FACTORY_ADDRESS, + factoryArgs: undefined, + } + } + } + + /** + * @inheritdoc {@link ConditionalOrder.orderType} + */ + get orderType(): string { + return TWAP_ORDER_TYPE + } + + /** + * Validate the TWAP order. + * @param data The TWAP order to validate. + * @returns Whether the TWAP order is valid. + * @throws If the TWAP order is invalid. + * @see {@link TwapStruct} for the native struct. + */ + isValid(): IsValidResult { + const error = (() => { + const { + sellToken, + sellAmount, + buyToken, + buyAmount, + startTime = DEFAULT_START_TIME, + numberOfParts, + timeBetweenParts, + durationOfPart = DEFAULT_DURATION_OF_PART, + } = this.data + + // Verify that the order params are logically valid + if (!(sellToken != buyToken)) return 'InvalidSameToken' + if (!(sellToken != constants.AddressZero && buyToken != constants.AddressZero)) return 'InvalidToken' + if (!sellAmount.gt(constants.Zero)) return 'InvalidSellAmount' + if (!buyAmount.gt(constants.Zero)) return 'InvalidMinBuyAmount' + if (startTime.startType === StartTimeValue.AT_EPOCH) { + const t0 = startTime.epoch + if (!(t0.gte(constants.Zero) && t0.lt(MAX_UINT32))) return 'InvalidStartTime' + } + if (!(numberOfParts.gt(constants.One) && numberOfParts.lte(MAX_UINT32))) return 'InvalidNumParts' + if (!(timeBetweenParts.gt(constants.Zero) && timeBetweenParts.lte(MAX_FREQUENCY))) return 'InvalidFrequency' + if (durationOfPart.durationType === DurationType.LIMIT_DURATION) { + if (!durationOfPart.duration.lte(timeBetweenParts)) return 'InvalidSpan' + } + + // Verify that the staticInput derived from the data is ABI-encodable + if (!isValidAbi(TWAP_STRUCT_ABI, [this.staticInput])) return 'InvalidData' + + // No errors + return undefined + })() + + return error ? { isValid: false, reason: error } : { isValid: true } + } + + protected async startTimestamp(params: OwnerContext): Promise { + const { startTime } = this.data + + if (startTime?.startType === StartTimeValue.AT_EPOCH) { + return startTime.epoch.toNumber() + } + + const cabinet = await this.cabinet(params) + const rawCabinetEpoch = utils.defaultAbiCoder.decode(['uint256'], cabinet)[0] as BigNumber + + // Guard against out-of-range cabinet epoch + if (rawCabinetEpoch.gt(MAX_UINT32)) { + throw new Error(`Cabinet epoch out of range: ${rawCabinetEpoch.toString()}`) + } + + // Convert the cabinet epoch (bignumber) to a number. + const cabinetEpoch = rawCabinetEpoch.toNumber() + + if (cabinetEpoch === 0) { + throw new Error('Cabinet is not set. Required for TWAP orders that start at mining time.') + } + + return cabinetEpoch + } + + /** + * Given the start timestamp of the TWAP, calculate the end timestamp. + * @dev As usually the `endTimestamp` is used when determining a TWAP's validity, we don't + * do any lookup to the blockchain to determine the start timestamp, as this has likely + * already been done during the verification flow. + * @dev Beware to handle the case of `span != 0` ie. `durationOfPart.durationType !== DurationType.AUTO`. + * @param startTimestamp The start timestamp of the TWAP. + * @returns The timestamp at which the TWAP will end. + */ + protected endTimestamp(startTimestamp: number): number { + const { numberOfParts, timeBetweenParts, durationOfPart } = this.data + + if (durationOfPart && durationOfPart.durationType === DurationType.LIMIT_DURATION) { + return startTimestamp + numberOfParts.sub(1).mul(timeBetweenParts).add(durationOfPart.duration).toNumber() + } + + return startTimestamp + numberOfParts.mul(timeBetweenParts).toNumber() + } + + /** + * Checks if the owner authorized the conditional order. + * + * @param owner The owner of the conditional order. + * @param chain Which chain to use for the ComposableCoW contract. + * @param provider An RPC provider for the chain. + * @returns true if the owner authorized the order, false otherwise. + */ + protected async pollValidate(params: PollParams): Promise { + const { blockInfo = await getBlockInfo(params.provider) } = params + const { blockTimestamp } = blockInfo + + try { + const startTimestamp = await this.startTimestamp(params) + + if (startTimestamp > blockTimestamp) { + // The start time hasn't started + return { + result: PollResultCode.TRY_AT_EPOCH, + epoch: startTimestamp, + reason: `TWAP hasn't started yet. Starts at ${startTimestamp} (${formatEpoch(startTimestamp)})`, + } + } + + const expirationTimestamp = this.endTimestamp(startTimestamp) + if (blockTimestamp >= expirationTimestamp) { + // The order has expired + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `TWAP has expired. Expired at ${expirationTimestamp} (${formatEpoch(expirationTimestamp)})`, + } + } + + return undefined + } catch (err: any) { + if (err?.message?.includes('Cabinet is not set')) { + // in this case we have a firm reason to not monitor this order as the cabinet is not set + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `${err?.message}. User likely removed the order.`, + } + } else if (err?.message?.includes('Cabinet epoch out of range')) { + // in this case we have a firm reason to not monitor this order as the cabinet is not set correctly + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `${err?.message}`, + } + } + + return { + result: PollResultCode.UNEXPECTED_ERROR, + reason: `Unexpected error: ${err.message}`, + error: err, + } + } + } + + /** + * Handles the error when the order is already present in the orderbook. + * + * Given the current part is in the book, it will signal to Watch Tower what to do: + * - Wait until the next part starts + * - Don't try again if current part is the last one + * + * NOTE: The error messages will refer to the parts 1-indexed, so first part is 1, second part is 2, etc. + */ + protected async handlePollFailedAlreadyPresent( + _orderUid: string, + _order: GPv2Order.DataStruct, + params: PollParams + ): Promise { + const { blockInfo = await getBlockInfo(params.provider) } = params + const { blockTimestamp } = blockInfo + + const timeBetweenParts = this.data.timeBetweenParts.toNumber() + const { numberOfParts } = this.data + const startTimestamp = await this.startTimestamp(params) + + if (blockTimestamp < startTimestamp) { + return { + result: PollResultCode.UNEXPECTED_ERROR, + reason: `TWAP part hash't started. First TWAP part start at ${startTimestamp} (${formatEpoch(startTimestamp)})`, + error: undefined, + } + } + const expireTime = numberOfParts.mul(timeBetweenParts).add(startTimestamp).toNumber() + if (blockTimestamp >= expireTime) { + return { + result: PollResultCode.UNEXPECTED_ERROR, + reason: `TWAP is expired. Expired at ${expireTime} (${formatEpoch(expireTime)})`, + error: undefined, + } + } + + // Get current part number + const currentPartNumber = Math.floor((blockTimestamp - startTimestamp) / timeBetweenParts) + + // If current part is the last one + if (currentPartNumber === numberOfParts.toNumber() - 1) { + return { + result: PollResultCode.DONT_TRY_AGAIN, + reason: `Current active TWAP part (${ + currentPartNumber + 1 + }/${numberOfParts}) is already in the Order Book. This was the last TWAP part, no more orders need to be placed`, + } + } + + // Next part start time + const nextPartStartTime = startTimestamp + (currentPartNumber + 1) * timeBetweenParts + + /** + * Given we know, that TWAP part that is due in the current block is already in the Orderbook, + * Then, we can safely instruct that we should wait until the next TWAP part starts + */ + return { + result: PollResultCode.TRY_AT_EPOCH, + epoch: nextPartStartTime, + reason: `Current active TWAP part (${ + currentPartNumber + 1 + }/${numberOfParts}) is already in the Order Book. TWAP part ${ + currentPartNumber + 2 + } doesn't start until ${nextPartStartTime} (${formatEpoch(nextPartStartTime)})`, + } + } + + /** + * Serialize the TWAP order into it's ABI-encoded form. + * @returns {string} The ABI-encoded TWAP order. + */ + serialize(): string { + return encodeParams(this.leaf) + } + + /** + * Get the encoded static input for the TWAP order. + * @returns {string} The ABI-encoded TWAP order. + */ + encodeStaticInput(): string { + return super.encodeStaticInputHelper(TWAP_STRUCT_ABI, this.staticInput) + } + + /** + * Deserialize a TWAP order from it's ABI-encoded form. + * @param {string} twapSerialized ABI-encoded TWAP order to deserialize. + * @returns A deserialized TWAP order. + */ + static deserialize(twapSerialized: string): Twap { + return super.deserializeHelper( + twapSerialized, + TWAP_ADDRESS, + TWAP_STRUCT_ABI, + (struct: TwapStruct, salt: string) => + new Twap({ + handler: TWAP_ADDRESS, + salt, + data: transformStructToData(struct), + }) + ) + } + + /** + * Create a human-readable string representation of the TWAP order. + * @returns {string} A human-readable string representation of the TWAP order. + */ + toString(): string { + const { + sellAmount, + sellToken, + buyAmount, + buyToken, + numberOfParts, + startTime = DEFAULT_START_TIME, + timeBetweenParts, + durationOfPart = DEFAULT_DURATION_OF_PART, + receiver, + appData, + } = this.data + + const startTimeFormatted = + startTime.startType === StartTimeValue.AT_MINING_TIME ? 'AT_MINING_TIME' : startTime.epoch.toNumber() + const durationOfPartFormatted = + durationOfPart.durationType === DurationType.AUTO ? 'AUTO' : durationOfPart.duration.toNumber() + + const details = { + sellAmount: sellAmount.toString(), + sellToken, + buyAmount: buyAmount.toString(), + buyToken, + numberOfParts: numberOfParts.toString(), + startTime: startTimeFormatted, + timeBetweenParts: timeBetweenParts.toNumber(), + durationOfPart: durationOfPartFormatted, + receiver, + appData, + } + + return `${this.orderType} (${this.id}): ${JSON.stringify(details)}` + } + + /** + * Transform parameters into a native struct. + * + * @param {TwapData} data As passed by the consumer of the API. + * @returns {TwapStruct} A formatted struct as expected by the smart contract. + */ + transformDataToStruct(data: TwapData): TwapStruct { + return transformDataToStruct(data) + } + + /** + * Transform parameters into a TWAP order struct. + * + * @param {TwapData} params As passed by the consumer of the API. + * @returns {TwapStruct} A formatted struct as expected by the smart contract. + */ + transformStructToData(struct: TwapStruct): TwapData { + return transformStructToData(struct) + } +} + +/** + * Transform parameters into a native struct. + * + * @param {TwapData} data As passed by the consumer of the API. + * @returns {TwapStruct} A formatted struct as expected by the smart contract. + */ +export function transformDataToStruct(data: TwapData): TwapStruct { + const { + sellAmount, + buyAmount, + numberOfParts, + startTime: startTime = DEFAULT_START_TIME, + timeBetweenParts, + durationOfPart = DEFAULT_DURATION_OF_PART, + ...rest + } = data + + const { partSellAmount, minPartLimit } = + numberOfParts && !numberOfParts.isZero() + ? { + partSellAmount: sellAmount.div(numberOfParts), + minPartLimit: buyAmount.div(numberOfParts), + } + : { + partSellAmount: constants.Zero, + minPartLimit: constants.Zero, + } + + const span = durationOfPart.durationType === DurationType.AUTO ? constants.Zero : durationOfPart.duration + const t0 = startTime.startType === StartTimeValue.AT_MINING_TIME ? constants.Zero : startTime.epoch + + return { + partSellAmount, + minPartLimit, + t0, + n: numberOfParts, + t: timeBetweenParts, + span, + ...rest, + } +} + +/** + * Transform parameters into a TWAP order struct. + * + * @param {TwapData} params As passed by the consumer of the API. + * @returns {TwapStruct} A formatted struct as expected by the smart contract. + */ +export function transformStructToData(struct: TwapStruct): TwapData { + const { + n: numberOfParts, + partSellAmount, + minPartLimit, + t: timeBetweenParts, + t0: startEpoch, + span, + sellToken, + buyToken, + receiver, + appData, + } = struct + + const durationOfPart: DurationOfPart = span.isZero() + ? { durationType: DurationType.AUTO } + : { durationType: DurationType.LIMIT_DURATION, duration: span } + + const startTime: StartTime = span.isZero() + ? { startType: StartTimeValue.AT_MINING_TIME } + : { startType: StartTimeValue.AT_EPOCH, epoch: startEpoch } + + return { + sellAmount: partSellAmount.mul(numberOfParts), + buyAmount: minPartLimit.mul(numberOfParts), + startTime, + numberOfParts, + timeBetweenParts, + durationOfPart, + sellToken, + buyToken, + receiver, + appData, + } +} diff --git a/external/cow-sdk/src/composable/orderTypes/index.ts b/external/cow-sdk/src/composable/orderTypes/index.ts new file mode 100644 index 000000000..01cc586c7 --- /dev/null +++ b/external/cow-sdk/src/composable/orderTypes/index.ts @@ -0,0 +1,8 @@ +import { ConditionalOrderRegistry } from '../ConditionalOrderFactory' +import { TWAP_ADDRESS, Twap } from './Twap' +export * from './Twap' + +export const DEFAULT_CONDITIONAL_ORDER_REGISTRY: ConditionalOrderRegistry = { + // Registry of all known order types + [TWAP_ADDRESS]: (params) => Twap.fromParams(params), +} diff --git a/external/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts b/external/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts new file mode 100644 index 000000000..289bca88a --- /dev/null +++ b/external/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts @@ -0,0 +1,79 @@ +import { GPv2Order } from '../../../common/generated/ComposableCoW' +import { ConditionalOrder } from '../../ConditionalOrder' +import { IsValidResult, PollParams, PollResultErrors } from '../../types' +import { encodeParams } from '../../utils' + +export const DEFAULT_ORDER_PARAMS: TestConditionalOrderParams = { + handler: '0x910d00a310f7Dc5B29FE73458F47f519be547D3d', + salt: '0x9379a0bf532ff9a66ffde940f94b1a025d6f18803054c1aef52dc94b15255bbe', + data: '0x', + isSingleOrder: true, +} + +export type TestConditionalOrderParams = { + handler: string + salt?: string + data: string + isSingleOrder: boolean +} +export class TestConditionalOrder extends ConditionalOrder { + isSingleOrder: boolean + + constructor(params: TestConditionalOrderParams) { + const { handler, salt, data = '0x', isSingleOrder = true } = params + super({ + handler, + salt, + data, + }) + this.isSingleOrder = isSingleOrder + } + + get orderType(): string { + return 'TEST' + } + + encodeStaticInput(): string { + return this.staticInput + } + + testEncodeStaticInput(): string { + return super.encodeStaticInputHelper(['uint256'], this.staticInput) + } + + transformStructToData(params: string): string { + return params + } + + transformDataToStruct(params: string): string { + return params + } + + protected async pollValidate(_params: PollParams): Promise { + return undefined + } + protected async handlePollFailedAlreadyPresent( + _orderUid: string, + _order: GPv2Order.DataStruct, + _params: PollParams + ): Promise { + return undefined + } + + isValid(): IsValidResult { + return { isValid: true } + } + serialize(): string { + return encodeParams(this.leaf) + } + + toString(): string { + throw new Error('Method not implemented.') + } +} + +export const createTestConditionalOrder = (params?: Partial) => + new TestConditionalOrder({ + ...DEFAULT_ORDER_PARAMS, + ...params, + }) diff --git a/external/cow-sdk/src/composable/types.ts b/external/cow-sdk/src/composable/types.ts new file mode 100644 index 000000000..289b621b4 --- /dev/null +++ b/external/cow-sdk/src/composable/types.ts @@ -0,0 +1,171 @@ +import { OrderBookApi } from '../order-book' +import { SupportedChainId } from '../common' +import { GPv2Order } from '../common/generated/ComposableCoW' +import { providers } from 'ethers' + +export interface ConditionalOrderArguments { + handler: string + data: T + salt?: string + hasOffChainInput?: boolean +} + +export type ConditionalOrderParams = { + readonly handler: string + readonly salt: string + readonly staticInput: string +} + +export enum ProofLocation { + // The location of the proofs is private to the caller. + PRIVATE = 0, + // The `data` field of the emitted `Proof` struct contains proofs + conditional order parameters. + EMITTED = 1, + // The `data` field of the emitted `Proof` struct contains the Swarm address (`bytes32`) of the proofs + conditional order parameters. + SWARM = 2, + // The `data` field is set to TBD. + WAKU = 3, + // The `data` field is set to TBD + RESERVED = 4, + // The `data` field of the emitted `Proof` struct contains the IPFS address (`bytes32`) of the proofs + conditional order parameters. + IPFS = 5, +} + +/** + * A factory and it's arguments that are called at transaction mining time to generate the context + * for a conditional order(s). + * + * This allows to support the case where conditional orders may want to *commence* validity at the + * time of transaction mining, like in the case of a `TWAP` executed by a DAO or `Safe` that takes + * a reasonable amount of time to aggregate signatures or collect votes. + * + * @remarks This is used in conjunction with `setRootWithContext` or `createWithContext`. + */ +export type ContextFactory = { + // The address of the `IValueFactory` that will be used to resolve the context. + address: string + // Any arguments that will be passed to the `IValueFactory` to resolve the context. + factoryArgs?: { + args: unknown[] + argsType: string[] + } +} + +/** + * A struct for a proof that can be used with `setRoot` and `setRootWithContext` on a + * ComposableCoW-enabled Safe. + */ +export type ProofStruct = { + // The location of the proof. + location: ProofLocation + // The data for the proof. + data: string | '0x' +} + +/** + * Payload for emitting a merkle root to a ComposableCoW-enabled Safe. + * + * If setting `ProofLocation.EMITTED`, this type should be used as the `data` in the `Proof` struct. + */ +export type PayloadLocationEmitted = { + // An array of conditional orders and their proofs. + proofs: ProofWithParams[] +} + +/** + * A proof for a conditional order and it's parameters. + */ +export type ProofWithParams = { + // The proof for the Merkle tree that contains the conditional order. + proof: string[] + // The parameters as expected by ABI encoding. + params: ConditionalOrderParams +} + +export type OwnerContext = { + owner: string + chainId: SupportedChainId + provider: providers.Provider +} + +export type PollParams = OwnerContext & { + orderBookApi: OrderBookApi + offchainInput?: string + proof?: string[] + + /** + * If present, it can be used for custom conditional order validations. If not present, the orders will need to get the block info themselves + */ + blockInfo?: BlockInfo +} + +export type BlockInfo = { + blockNumber: number + blockTimestamp: number +} + +export type PollResult = PollResultSuccess | PollResultErrors + +export type PollResultErrors = + | PollResultTryNextBlock + | PollResultTryOnBlock + | PollResultTryAtEpoch + | PollResultUnexpectedError + | PollResultDontTryAgain + +export enum PollResultCode { + SUCCESS = 'SUCCESS', + UNEXPECTED_ERROR = 'UNEXPECTED_ERROR', + TRY_NEXT_BLOCK = 'TRY_NEXT_BLOCK', + TRY_ON_BLOCK = 'TRY_ON_BLOCK', + TRY_AT_EPOCH = 'TRY_AT_EPOCH', + DONT_TRY_AGAIN = 'DONT_TRY_AGAIN', +} +export interface PollResultSuccess { + readonly result: PollResultCode.SUCCESS + readonly order: GPv2Order.DataStruct + readonly signature: string +} + +export interface PollResultUnexpectedError { + readonly result: PollResultCode.UNEXPECTED_ERROR + readonly error: unknown + reason?: string +} + +export interface PollResultTryNextBlock { + readonly result: PollResultCode.TRY_NEXT_BLOCK + reason?: string +} + +export interface PollResultTryOnBlock { + readonly result: PollResultCode.TRY_ON_BLOCK + readonly blockNumber: number + reason?: string +} + +export interface PollResultTryAtEpoch { + readonly result: PollResultCode.TRY_AT_EPOCH + /** + * The epoch after which it is ok to retry to to poll this order. + * The value is expressed as a Unix timestamp (in seconds). + * + * This epoch will be inclusive, meaning that it is ok to retry at the block mined precisely at this epoch or later. + */ + readonly epoch: number + reason?: string +} + +export interface PollResultDontTryAgain { + readonly result: PollResultCode.DONT_TRY_AGAIN + reason?: string +} + +export type IsValidResult = IsValid | IsNotValid +export interface IsValid { + isValid: true +} +export interface IsNotValid { + isValid: false + reason: string +} diff --git a/external/cow-sdk/src/composable/utils.spec.ts b/external/cow-sdk/src/composable/utils.spec.ts new file mode 100644 index 000000000..31d1660bd --- /dev/null +++ b/external/cow-sdk/src/composable/utils.spec.ts @@ -0,0 +1,92 @@ +import 'src/order-book/__mock__/api' +import { decodeParams, encodeParams, fromStructToOrder, isValidAbi } from './utils' +import { DurationType, StartTimeValue, TwapData, TwapStruct, transformDataToStruct } from './orderTypes/Twap' +import { BigNumber, utils } from 'ethers' +import { GPv2Order } from './generated/ComposableCoW' + +export const TWAP_PARAMS_TEST: TwapData = { + sellToken: '0x6810e776880C02933D47DB1b9fc05908e5386b96', + buyToken: '0xDAE5F1590db13E3B40423B5b5c5fbf175515910b', + receiver: '0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF', + sellAmount: utils.parseEther('1'), + buyAmount: utils.parseEther('1'), + timeBetweenParts: BigNumber.from(60 * 60), + numberOfParts: BigNumber.from(10), + durationOfPart: { + durationType: DurationType.AUTO, + }, + startTime: { + startType: StartTimeValue.AT_MINING_TIME, + }, + appData: '0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5', +} + +const TWAP_STRUCT_ABI = [ + 'tuple(address sellToken, address buyToken, address receiver, uint256 partSellAmount, uint256 minPartLimit, uint256 t0, uint256 n, uint256 t, uint256 span, bytes32 appData)', +] + +const CONDITIONAL_ORDER_PARAMS = { + handler: '0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5', + salt: '0x60864964e82f232a1a5bfada34d8bb0fdc73b0642be4a4086eb55176654db064', + staticInput: + '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000006cf1e9ca41f7611def408122793c358a3d11e5a560864964e82f232a1a5bfada34d8bb0fdc73b0642be4a4086eb55176654db064000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96000000000000000000000000dae5f1590db13e3b40423b5b5c5fbf175515910b000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000000000d51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5', +} +const ABI_ENCODED_ORDER = + '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000006cf1e9ca41f7611def408122793c358a3d11e5a560864964e82f232a1a5bfada34d8bb0fdc73b0642be4a4086eb55176654db064000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000200000000000000000000000006cf1e9ca41f7611def408122793c358a3d11e5a560864964e82f232a1a5bfada34d8bb0fdc73b0642be4a4086eb55176654db064000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96000000000000000000000000dae5f1590db13e3b40423b5b5c5fbf175515910b000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000000000d51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5' + +const TWAP_STRUCT: TwapStruct = transformDataToStruct(TWAP_PARAMS_TEST) + +describe('encodeParams', () => { + test('encodeParams: Fails if invalid params', () => { + expect(() => encodeParams({ handler: '0xdeadbeef', salt: '0x', staticInput: '0x' })).toThrow() + }) + + test('encodeParams: Happy path', () => { + expect(encodeParams(CONDITIONAL_ORDER_PARAMS)).toEqual(ABI_ENCODED_ORDER) + }) +}) + +describe('decodeParams', () => { + test('decodeParams: Fails if invalid params', () => { + expect(() => decodeParams('0x')).toThrow() + }) + + test('decodeParams: Happy path', () => { + expect(decodeParams(ABI_ENCODED_ORDER)).toEqual(CONDITIONAL_ORDER_PARAMS) + }) +}) + +describe('isValidAbi', () => { + test('isValidAbi: Fails if invalid params', () => { + expect(isValidAbi(TWAP_STRUCT_ABI, ['0x0'])).toEqual(false) + }) + + test('isValidAbi: Happy path', () => { + expect(isValidAbi(TWAP_STRUCT_ABI, [TWAP_STRUCT])).toEqual(true) + }) +}) + +describe('fromStructToOrder', () => { + test('Happy path', () => { + const orderData: GPv2Order.DataStruct = { + sellToken: '0x177127622c4A00F3d409B75571e12cB3c8973d3c', + buyToken: '0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d', + receiver: '0x50736F4707eD0c7bae86bd801d65377BB3739550', + sellAmount: BigNumber.from('497154622979742700000'), + buyAmount: BigNumber.from('26618938443780026000'), + validTo: 1698723209, + appData: '0x7cc001e5e82772cf4262f2836ae90e1844d2c12ad2fbc346f27a76f5d1cc9d39', + feeAmount: BigNumber.from(0), + kind: '0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775', + partiallyFillable: false, + sellTokenBalance: '0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9', + buyTokenBalance: '0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9', + } + expect(fromStructToOrder(orderData)).toEqual({ + ...orderData, + kind: 'sell', + sellTokenBalance: 'erc20', + buyTokenBalance: 'erc20', + }) + }) +}) diff --git a/external/cow-sdk/src/composable/utils.ts b/external/cow-sdk/src/composable/utils.ts new file mode 100644 index 000000000..0beb24c6c --- /dev/null +++ b/external/cow-sdk/src/composable/utils.ts @@ -0,0 +1,165 @@ +import { utils, providers, BigNumber } from 'ethers' +import { + COMPOSABLE_COW_CONTRACT_ADDRESS, + EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS, + SupportedChainId, +} from '../common' +import { ExtensibleFallbackHandler__factory } from '../common/generated' +import { BlockInfo, ConditionalOrderParams } from './types' +import { Order, OrderBalance, OrderKind } from '@cowprotocol/contracts' +import { GPv2Order } from '../common/generated/ComposableCoW' + +const ERC20_BALANCE_VALUES = ['erc20', '0x5a28e9363bb942b639270062aa6bb295f434bcdfc42c97267bf003f272060dc9'] +const EXTERNAL_BALANCE_VALUES = ['external', '0xabee3b73373acd583a130924aad6dc38cfdc44ba0555ba94ce2ff63980ea0632'] +const INTERNAL_BALANCE_VALUES = ['internal', '0x4ac99ace14ee0a5ef932dc609df0943ab7ac16b7583634612f8dc35a4289a6ce'] +const SELL_KIND_VALUES = ['sell', '0xf3b277728b3fee749481eb3e0b3b48980dbbab78658fc419025cb16eee346775'] +const BUY_KIND_VALUES = ['buy', '0x6ed88e868af0a1983e3886d5f3e95a2fafbd6c3450bc229e27342283dc429ccc'] + +// Define the ABI tuple for the ConditionalOrderParams struct +export const CONDITIONAL_ORDER_PARAMS_ABI = ['tuple(address handler, bytes32 salt, bytes staticInput)'] + +export const DEFAULT_TOKEN_FORMATTER = (address: string, amount: BigNumber) => `${amount}@${address}` + +export function isExtensibleFallbackHandler(handler: string, chainId: SupportedChainId): boolean { + return handler === EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS[chainId] +} + +export function isComposableCow(handler: string, chainId: SupportedChainId): boolean { + return handler === COMPOSABLE_COW_CONTRACT_ADDRESS[chainId] +} + +export async function getDomainVerifier( + safe: string, + domain: string, + chainId: SupportedChainId, + provider: providers.Provider +): Promise { + const contract = ExtensibleFallbackHandler__factory.connect( + EXTENSIBLE_FALLBACK_HANDLER_CONTRACT_ADDRESS[chainId], + provider + ) + return await contract.callStatic.domainVerifiers(safe, domain) +} + +export function createSetDomainVerifierTx(domain: string, verifier: string): string { + return ExtensibleFallbackHandler__factory.createInterface().encodeFunctionData('setDomainVerifier', [ + domain, + verifier, + ]) +} + +/** + * Encode the `ConditionalOrderParams` for the conditional order. + * + * @param params The `ConditionalOrderParams` struct representing the conditional order as taken from a merkle tree. + * @returns The ABI-encoded conditional order. + * @see ConditionalOrderParams + */ +export function encodeParams(params: ConditionalOrderParams): string { + return utils.defaultAbiCoder.encode(CONDITIONAL_ORDER_PARAMS_ABI, [params]) +} + +/** + * Decode the `ConditionalOrderParams` for the conditional order. + * + * @param encoded The encoded conditional order. + * @returns The decoded conditional order. + */ +export function decodeParams(encoded: string): ConditionalOrderParams { + const { handler, salt, staticInput } = utils.defaultAbiCoder.decode(CONDITIONAL_ORDER_PARAMS_ABI, encoded)[0] + return { handler, salt, staticInput } +} + +/** + * Helper method for validating ABI types. + * @param types ABI types to validate against. + * @param values The values to validate. + * @returns {boolean} Whether the values are valid ABI for the given types. + */ +export function isValidAbi(types: readonly (string | utils.ParamType)[], values: any[]): boolean { + try { + utils.defaultAbiCoder.encode(types, values) + } catch (e) { + return false + } + return true +} + +export async function getBlockInfo(provider: providers.Provider): Promise { + const block = await provider.getBlock('latest') + + return { + blockNumber: block.number, + blockTimestamp: block.timestamp, + } +} + +export function formatEpoch(epoch: number): string { + return new Date(epoch * 1000).toISOString() +} + +/** + * Convert a balance source/destination hash to a string + * + * @param balance balance source/destination hash + * @returns string representation of the balance + * @throws if the balance is not recognized + */ +function balanceToString(balance: string) { + if (ERC20_BALANCE_VALUES.includes(balance)) { + return OrderBalance.ERC20 + } else if (EXTERNAL_BALANCE_VALUES.includes(balance)) { + return OrderBalance.EXTERNAL + } else if (INTERNAL_BALANCE_VALUES.includes(balance)) { + return OrderBalance.INTERNAL + } else { + throw new Error(`Unknown balance type: ${balance}`) + } +} + +/** + * Convert an order kind hash to a string + * @param kind of order in hash format + * @returns string representation of the order kind + */ +function kindToString(kind: string) { + if (SELL_KIND_VALUES.includes(kind)) { + return OrderKind.SELL + } else if (BUY_KIND_VALUES.includes(kind)) { + return OrderKind.BUY + } else { + throw new Error(`Unknown kind: ${kind}`) + } +} + +export function fromStructToOrder(order: GPv2Order.DataStruct): Order { + const { + sellToken, + sellAmount, + buyToken, + buyAmount, + buyTokenBalance, + sellTokenBalance, + feeAmount, + kind, + receiver, + validTo, + partiallyFillable, + appData, + } = order + + return { + sellToken, + sellAmount, + buyToken, + buyAmount, + feeAmount, + receiver, + partiallyFillable, + appData, + validTo: Number(validTo), + kind: kindToString(kind.toString()), + sellTokenBalance: balanceToString(sellTokenBalance.toString()), + buyTokenBalance: balanceToString(buyTokenBalance.toString()), + } +} diff --git a/external/cow-sdk/src/cow-shed/CoWShedHooks.spec.ts b/external/cow-sdk/src/cow-shed/CoWShedHooks.spec.ts new file mode 100644 index 000000000..22d3567d8 --- /dev/null +++ b/external/cow-sdk/src/cow-shed/CoWShedHooks.spec.ts @@ -0,0 +1,146 @@ +import { Wallet } from 'ethers' +import { CowShedHooks } from './CoWShedHooks' +import { AddressZero } from '@ethersproject/constants' +import { ICoWShedCall } from './types' +import { COW_SHED_FACTORY, COW_SHED_IMPLEMENTATION } from '../common/consts' +import { COW_SHED_PROXY_INIT_CODE } from './proxyInitCode' +import { SigningScheme } from '@cowprotocol/contracts' +import { formatBytes32String, solidityPack } from 'ethers/lib/utils' +import * as contracts from './contracts' + +// information from mint and dai example of cow-shed repository +// https://github.com/cowdao-grants/cow-shed/blob/main/examples/mintDaiAndSwap.ts +const MOCK_COW_SHED_FACTORY = '0xa9efDEf197130B945462163a0B852019BA529a66' +const MOCK_COW_SHED_IMPLEMENTATION = '0x49AeF2C4005Bf572665b09014A563B5b9E46Df21' +const MOCK_INIT_CODE = + '0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033' + +const USER_MOCK = '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' +const PROXY_MOCK = '0xB34c56557a1ec3617572C6cDd814A1a9F9A20A51' + +const CALLS_MOCK: ICoWShedCall[] = [ + { + target: AddressZero, + value: BigInt(0), + callData: '0xabcdef', + allowFailure: false, + isDelegateCall: false, + }, +] + +describe('CowShedHooks', () => { + beforeEach(() => { + jest.clearAllMocks() + }) + + const cowShed = new CowShedHooks(1, { + factoryAddress: MOCK_COW_SHED_FACTORY, + implementationAddress: MOCK_COW_SHED_IMPLEMENTATION, + proxyCreationCode: MOCK_INIT_CODE, + }) + + describe('constuctor', () => { + it('should create a new instance of CowShedHooks with custom values', () => { + expect(cowShed).toBeInstanceOf(CowShedHooks) + expect(cowShed.getFactoryAddress()).toBe(MOCK_COW_SHED_FACTORY) + expect(cowShed.getImplementationAddress()).toBe(MOCK_COW_SHED_IMPLEMENTATION) + expect(cowShed.proxyCreationCode()).toBe(MOCK_INIT_CODE) + }) + + it('should create a new instance of CowShedHooks with default values', () => { + const defaultCowShed = new CowShedHooks(1) + expect(defaultCowShed).toBeInstanceOf(CowShedHooks) + expect(defaultCowShed.getFactoryAddress()).toBe(COW_SHED_FACTORY) + expect(defaultCowShed.getImplementationAddress()).toBe(COW_SHED_IMPLEMENTATION) + expect(defaultCowShed.proxyCreationCode()).toBe(COW_SHED_PROXY_INIT_CODE) + }) + }) + + describe('computeProxyAddress', () => { + it('should use the right parameters on the proxy address for custom values', () => { + const calculatedProxy = cowShed.proxyOf(USER_MOCK) + expect(calculatedProxy).toBe(PROXY_MOCK) + }) + + it('should use the right parameters on the proxy address for default values', () => { + const defaultCowShed = new CowShedHooks(1) + const calculatedProxy = defaultCowShed.proxyOf('0x76b0340e50BD9883D8B2CA5fd9f52439a9e7Cf58') + expect(calculatedProxy).toBe('0xe22E86b318DAc817b4444E2fE34cC2235cDF1B00') + }) + }) + + describe('getDomain', () => { + it('should return the correct domain', () => { + const domain = cowShed.getDomain(AddressZero) + expect(domain).toEqual({ + name: 'COWShed', + version: '1.0.0', + chainId: 1, + verifyingContract: AddressZero, + }) + }) + }) + + describe('infoToSign', () => { + it('should return the correct info to sign', () => { + const calls: ICoWShedCall[] = [ + { + target: '0x1234', + value: BigInt(100), + callData: '0x1234', + allowFailure: false, + isDelegateCall: false, + }, + ] + const nonce = '1' + const deadline = BigInt(1000000) + const result = cowShed.infoToSign(calls, nonce, deadline, PROXY_MOCK) + expect(result).toHaveProperty('domain') + expect(result).toHaveProperty('types') + expect(result).toHaveProperty('message') + expect(result.message).toEqual({ calls, nonce, deadline }) + }) + }) + + const mockNonce = formatBytes32String('1') + const mockDeadline = BigInt(1000000) + describe('encodeExecuteHooksForFactory', () => { + it('should encode execute hooks for factory correctly', () => { + const mockSignature = '0xdeadbeef' + const mockEncodedData = '0xencoded' + + const mockEncodeFunctionData = jest.fn().mockReturnValue(mockEncodedData) + const mockInterface = { + encodeFunctionData: mockEncodeFunctionData, + } + + jest.spyOn(contracts, 'getCoWShedFactoryInterface').mockReturnValue(mockInterface) + + const result = cowShed.encodeExecuteHooksForFactory(CALLS_MOCK, mockNonce, mockDeadline, USER_MOCK, mockSignature) + + expect(mockEncodeFunctionData).toHaveBeenCalledWith('executeHooks', [ + CALLS_MOCK, + mockNonce, + mockDeadline, + USER_MOCK, + mockSignature, + ]) + + expect(result).toBe(mockEncodedData) + }) + }) + + describe('signCalls', () => { + it('should sign calls correctly', async () => { + const mockSigner = Wallet.createRandom() + + const signature = await cowShed.signCalls(CALLS_MOCK, mockNonce, mockDeadline, mockSigner, SigningScheme.EIP712) + expect(signature).toBeDefined() + const r = BigInt(signature.slice(0, 66)) + const s = BigInt(`0x${signature.slice(66, 130)}`) + const v = parseInt(signature.slice(130, 132), 16) + const reconstructedSignature = solidityPack(['uint', 'uint', 'uint8'], [r, s, v]) + expect(reconstructedSignature).toBe(signature) + }) + }) +}) diff --git a/external/cow-sdk/src/cow-shed/CoWShedHooks.ts b/external/cow-sdk/src/cow-shed/CoWShedHooks.ts new file mode 100644 index 000000000..e595524b8 --- /dev/null +++ b/external/cow-sdk/src/cow-shed/CoWShedHooks.ts @@ -0,0 +1,122 @@ +import { + EcdsaSigningScheme, + hashTypedData, + isTypedDataSigner, + SigningScheme, + TypedDataTypes, +} from '@cowprotocol/contracts' +import type { Signer } from '@ethersproject/abstract-signer' +import { TypedDataDomain } from 'ethers' +import { + arrayify, + defaultAbiCoder, + getCreate2Address, + joinSignature, + solidityKeccak256, + splitSignature, +} from 'ethers/lib/utils' +import { COW_SHED_FACTORY, COW_SHED_IMPLEMENTATION, SupportedChainId } from '../common' +import { getCoWShedFactoryInterface } from './contracts' +import { COW_SHED_PROXY_INIT_CODE } from './proxyInitCode' +import { COW_SHED_712_TYPES, ICoWShedCall, ICoWShedOptions } from './types' + +export class CowShedHooks { + constructor(private chainId: SupportedChainId, private customOptions?: ICoWShedOptions) {} + + proxyOf(user: string) { + const salt = defaultAbiCoder.encode(['address'], [user]) + const initCodeHash = solidityKeccak256( + ['bytes', 'bytes'], + [ + this.proxyCreationCode(), + defaultAbiCoder.encode(['address', 'address'], [this.getImplementationAddress(), user]), + ] + ) + return getCreate2Address(this.getFactoryAddress(), salt, initCodeHash) + } + + encodeExecuteHooksForFactory( + calls: ICoWShedCall[], + nonce: string, + deadline: bigint, + user: string, + signature: string + ): string { + return getCoWShedFactoryInterface().encodeFunctionData('executeHooks', [calls, nonce, deadline, user, signature]) + } + + async signCalls( + calls: ICoWShedCall[], + nonce: string, + deadline: bigint, + signer: Signer, + signingScheme: EcdsaSigningScheme + ): Promise { + const user = await signer.getAddress() + const proxy = this.proxyOf(user) + + const { domain, types, message } = this.infoToSign(calls, nonce, deadline, proxy) + + return await ecdsaSignTypedData(signingScheme, signer, domain, types, message) + } + + infoToSign(calls: ICoWShedCall[], nonce: string, deadline: bigint, proxy: string) { + const message = { + calls, + nonce, + deadline, + } + return { domain: this.getDomain(proxy), types: COW_SHED_712_TYPES, message } + } + + getDomain(proxy: string): TypedDataDomain { + return { + name: 'COWShed', + version: '1.0.0', + chainId: this.chainId, + verifyingContract: proxy, + } + } + + proxyCreationCode() { + return this.customOptions?.proxyCreationCode ?? COW_SHED_PROXY_INIT_CODE + } + + getFactoryAddress() { + return this.customOptions?.factoryAddress ?? COW_SHED_FACTORY + } + + getImplementationAddress() { + return this.customOptions?.implementationAddress ?? COW_SHED_IMPLEMENTATION + } +} + +// code copied from @cow/contract (not exported there) +async function ecdsaSignTypedData( + scheme: EcdsaSigningScheme, + owner: Signer, + domain: TypedDataDomain, + types: TypedDataTypes, + data: Record +): Promise { + let signature: string | null = null + + switch (scheme) { + case SigningScheme.EIP712: + if (!isTypedDataSigner(owner)) { + throw new Error('signer does not support signing typed data') + } + signature = await owner._signTypedData(domain, types, data) + break + case SigningScheme.ETHSIGN: + signature = await owner.signMessage(arrayify(hashTypedData(domain, types, data))) + break + default: + throw new Error('invalid signing scheme') + } + + // Passing the signature through split/join to normalize the `v` byte. + // Some wallets do not pad it with `27`, which causes a signature failure + // `splitSignature` pads it if needed, and `joinSignature` simply puts it back together + return joinSignature(splitSignature(signature)) +} diff --git a/external/cow-sdk/src/cow-shed/contracts.ts b/external/cow-sdk/src/cow-shed/contracts.ts new file mode 100644 index 000000000..b66bd1286 --- /dev/null +++ b/external/cow-sdk/src/cow-shed/contracts.ts @@ -0,0 +1,22 @@ +import { CoWShed__factory, CoWShedFactory__factory } from '../common/generated' +import { CoWShedInterface } from '../common/generated/CoWShed' +import { CoWShedFactoryInterface } from '../common/generated/CoWShedFactory' + +let cowShedInterfaceCache: CoWShedInterface | undefined +let cowShedFactoryInterface: CoWShedFactoryInterface | undefined + +export function getCoWShedInterface(): CoWShedInterface { + if (!cowShedInterfaceCache) { + cowShedInterfaceCache = CoWShed__factory.createInterface() + } + + return cowShedInterfaceCache +} + +export function getCoWShedFactoryInterface(): CoWShedFactoryInterface { + if (!cowShedFactoryInterface) { + cowShedFactoryInterface = CoWShedFactory__factory.createInterface() + } + + return cowShedFactoryInterface +} diff --git a/external/cow-sdk/src/cow-shed/index.ts b/external/cow-sdk/src/cow-shed/index.ts new file mode 100644 index 000000000..76e7e872c --- /dev/null +++ b/external/cow-sdk/src/cow-shed/index.ts @@ -0,0 +1,4 @@ +export * from './types' +export * from './CoWShedHooks' +export * from './contracts' +export * from './proxyInitCode' diff --git a/external/cow-sdk/src/cow-shed/proxyInitCode.ts b/external/cow-sdk/src/cow-shed/proxyInitCode.ts new file mode 100644 index 000000000..f8eea8ba2 --- /dev/null +++ b/external/cow-sdk/src/cow-shed/proxyInitCode.ts @@ -0,0 +1,2 @@ +export const COW_SHED_PROXY_INIT_CODE = + '0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033' diff --git a/external/cow-sdk/src/cow-shed/types.ts b/external/cow-sdk/src/cow-shed/types.ts new file mode 100644 index 000000000..30428dc69 --- /dev/null +++ b/external/cow-sdk/src/cow-shed/types.ts @@ -0,0 +1,43 @@ +export interface ICoWShedOptions { + factoryAddress: string + proxyCreationCode?: string + implementationAddress: string +} + +export interface ICoWShedCall { + target: string + value: bigint + callData: string + allowFailure: boolean + isDelegateCall: boolean +} + +export interface ICoWShedOptions { + factoryAddress: string + proxyCreationCode?: string + implementationAddress: string +} + +export const DOMAIN_TYPE = { + EIP712Domain: [ + { type: 'string', name: 'name' }, + { type: 'string', name: 'version' }, + { type: 'uint256', name: 'chainId' }, + { type: 'address', name: 'verifyingContract' }, + ], +} + +export const COW_SHED_712_TYPES = { + ExecuteHooks: [ + { type: 'Call[]', name: 'calls' }, + { type: 'bytes32', name: 'nonce' }, + { type: 'uint256', name: 'deadline' }, + ], + Call: [ + { type: 'address', name: 'target' }, + { type: 'uint256', name: 'value' }, + { type: 'bytes', name: 'callData' }, + { type: 'bool', name: 'allowFailure' }, + { type: 'bool', name: 'isDelegateCall' }, + ], +} diff --git a/external/cow-sdk/src/index.ts b/external/cow-sdk/src/index.ts new file mode 100644 index 000000000..07382de68 --- /dev/null +++ b/external/cow-sdk/src/index.ts @@ -0,0 +1,7 @@ +export * from './common' +export * from './order-book' +export * from './subgraph' +export * from './order-signing' +export * from './composable' +export * from './cow-shed' +export * from './trading' diff --git a/external/cow-sdk/src/order-book/__mock__/api.ts b/external/cow-sdk/src/order-book/__mock__/api.ts new file mode 100644 index 000000000..23c4f5baa --- /dev/null +++ b/external/cow-sdk/src/order-book/__mock__/api.ts @@ -0,0 +1,9 @@ +jest.mock('../api', () => { + return { + OrderBookApi: class MockedOrderBookApi { + getOrder = mockGetOrder + }, + } +}) + +export const mockGetOrder = jest.fn() diff --git a/external/cow-sdk/src/order-book/api.spec.ts b/external/cow-sdk/src/order-book/api.spec.ts new file mode 100644 index 000000000..2122a16eb --- /dev/null +++ b/external/cow-sdk/src/order-book/api.spec.ts @@ -0,0 +1,740 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +import fetchMock, { enableFetchMocks } from 'jest-fetch-mock' +import { CowError } from '../common/cow-error' +import { OrderBookApi } from './api' +import { BuyTokenDestination, EcdsaSigningScheme, OrderKind, SellTokenSource, SigningScheme } from './generated' +import { SupportedChainId } from '../common/chains' +import { ETH_ADDRESS } from '../common/consts' +import { AUCTION } from './mock' + +enableFetchMocks() + +const orderBookApi = new OrderBookApi({ + chainId: SupportedChainId.GNOSIS_CHAIN, + backoffOpts: { + numOfAttempts: 1, + maxDelay: Infinity, + jitter: 'none', + }, +}) + +const HTTP_STATUS_OK = 200 +const HTTP_STATUS_NOT_FOUND = 404 +const HEADERS = { 'Content-Type': 'application/json' } + +const SIGNED_ORDER_RESPONSE = { + signature: + '0x4d306ce7c770d22005bcfc00223f8d9aaa04e8a20099cc986cb9ccf60c7e876b777ceafb1e03f359ebc6d3dc84245d111a3df584212b5679cb5f9e6717b69b031b', + signingScheme: EcdsaSigningScheme.EIP712, +} + +const PARTIAL_ORDER = { + sellToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + buyToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + receiver: '0x6810e776880c02933d47db1b9fc05908e5386b96', + sellAmount: '1234567890', + buyAmount: '1234567890', + validTo: 0, + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + partiallyFillable: true, + sellTokenBalance: SellTokenSource.ERC20, + buyTokenBalance: BuyTokenDestination.ERC20, + from: '0x6810e776880c02933d47db1b9fc05908e5386b96', + kind: OrderKind.BUY, + class: 'market', +} + +const ORDER_RESPONSE = { + ...PARTIAL_ORDER, + feeAmount: '1234567890', + ...SIGNED_ORDER_RESPONSE, + creationTime: '2020-12-03T18:35:18.814523Z', + owner: '0x6810e776880c02933d47db1b9fc05908e5386b96', + uid: '0x59920c85de0162e9e55df8d396e75f3b6b7c2dfdb535f03e5c807731c31585eaff714b8b0e2700303ec912bd40496c3997ceea2b616d6710', + availableBalance: '1234567890', + executedSellAmount: '1234567890', + executedSellAmountBeforeFees: '1234567890', + executedBuyAmount: '1234567890', + executedFeeAmount: '1234567890', + invalidated: true, + status: 'presignaturePending', + fullFeeAmount: '1234567890', +} + +const ETH_FLOW_ORDER_RESPONSE = { + ...ORDER_RESPONSE, + owner: '0x76aaf674848311c7f21fc691b0b952f016da49f3', // EthFlowContract + ethflowData: { + isRefunded: false, + validTo: Date.now() + 60 * 1000 * 5, + }, + onchainUser: '0x6810e776880c02933d47db1b9fc05908e5386b96', +} + +const ORDER_CANCELLATION_UID = + '0x59920c85de0162e9e55df8d396e75f3b6b7c2dfdb535f03e5c807731c31585eaff714b8b0e2700303ec912bd40496c3997ceea2b616d6710' + +const TRADE_RESPONSE = { + blockNumber: 0, + logIndex: 0, + orderUid: 'string', + owner: '0x6810e776880c02933d47db1b9fc05908e5386b96', + sellToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + buyToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + sellAmount: '1234567890', + sellAmountBeforeFees: '1234567890', + buyAmount: '1234567890', + transactionHash: '0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5', +} + +const RAW_FETCH_RESPONSE_PARAMETERS = { + body: undefined, + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + method: 'GET', +} + +const FETCH_RESPONSE_PARAMETERS = expect.objectContaining(RAW_FETCH_RESPONSE_PARAMETERS) + +describe('CoW Api', () => { + beforeEach(() => { + fetchMock.resetMocks() + }) + + afterEach(() => { + jest.restoreAllMocks() + }) + + test('Valid: Get version', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify('v1.2.3'), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const version = await orderBookApi.getVersion() + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith('https://api.cow.fi/xdai/api/v1/version', FETCH_RESPONSE_PARAMETERS) + expect(version).toEqual('v1.2.3') + }) + + test('Valid: Get orders link', async () => { + const orderLink = await orderBookApi.getOrderLink(ORDER_RESPONSE.uid) + expect(orderLink).toEqual(`https://api.cow.fi/xdai/api/v1/orders/${ORDER_RESPONSE.uid}`) + }) + + test('Valid: Get an order', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify(ORDER_RESPONSE), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const order = await orderBookApi.getOrder(ORDER_RESPONSE.uid) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/orders/${ORDER_RESPONSE.uid}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(order?.uid).toEqual(ORDER_RESPONSE.uid) + }) + + test('Valid: Get an order for custom chainId', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ ...ORDER_RESPONSE, class: 'limit' }), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const order = await orderBookApi.getOrder(ORDER_RESPONSE.uid, { chainId: SupportedChainId.MAINNET }) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/mainnet/api/v1/orders/${ORDER_RESPONSE.uid}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(order?.class).toEqual('limit') + }) + + test('Invalid: Get an order', async () => { + const errorBody = { + errorType: 'NotFound', + description: "You've passed an invalid URL", + } + + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: HTTP_STATUS_NOT_FOUND, headers: HEADERS }) + + // when + const promise = orderBookApi.getOrder('notValidOrderId') + + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 404, + statusText: 'Not Found', + }), + }) + ) + + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/orders/notValidOrderId', + FETCH_RESPONSE_PARAMETERS + ) + }) + + test('Valid: Get last 5 orders for a given trader ', async () => { + const ORDERS_RESPONSE = Array(5).fill(ORDER_RESPONSE) + fetchMock.mockResponse(JSON.stringify(ORDERS_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + const orders = await orderBookApi.getOrders({ + owner: '0x00000000005ef87f8ca7014309ece7260bbcdaeb', // Trader + limit: 5, + offset: 0, + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/account/0x00000000005ef87f8ca7014309ece7260bbcdaeb/orders?offset=0&limit=5', + FETCH_RESPONSE_PARAMETERS + ) + expect(orders.length).toEqual(5) + }) + + test('Invalid: Get last 5 orders for an unexisting trader ', async () => { + const errorBody = { + errorType: 'NotFound', + description: "You've passed an invalid URL", + } + + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: HTTP_STATUS_NOT_FOUND, headers: HEADERS }) + + // when + const promise = orderBookApi.getOrders({ + owner: 'invalidOwner', + limit: 5, + offset: 0, + }) + + // then + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 404, + statusText: 'Not Found', + }), + }) + ) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/account/invalidOwner/orders?offset=0&limit=5', + FETCH_RESPONSE_PARAMETERS + ) + }) + + test('Valid: Get tx orders from a given txHash', async () => { + const ORDERS_RESPONSE = Array(5).fill(ORDER_RESPONSE) + const txHash = '0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5' + fetchMock.mockResponse(JSON.stringify(ORDERS_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + const txOrders = await orderBookApi.getTxOrders(txHash) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/transactions/${txHash}/orders`, + FETCH_RESPONSE_PARAMETERS + ) + expect(txOrders.length).toEqual(5) + }) + + test('Invalid: Get tx orders from an unexisting txHash', async () => { + const errorBody = { + errorType: 'NotFound', + description: "You've passed an invalid URL", + } + + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: HTTP_STATUS_NOT_FOUND, headers: HEADERS }) + + // when + const promise = orderBookApi.getTxOrders('invalidTxHash') + + // then + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 404, + statusText: 'Not Found', + }), + }) + ) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/transactions/invalidTxHash/orders', + FETCH_RESPONSE_PARAMETERS + ) + }) + + test('Valid: Get last 5 trades for a given trader ', async () => { + const TRADES_RESPONSE = Array(5).fill(TRADE_RESPONSE) + fetchMock.mockResponse(JSON.stringify(TRADES_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + const trades = await orderBookApi.getTrades({ + owner: TRADE_RESPONSE.owner, // Trader + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/trades?owner=${TRADE_RESPONSE.owner}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(trades.length).toEqual(5) + }) + + test('Valid: Get last 5 trades for a given order id ', async () => { + const TRADES_RESPONSE = Array(5).fill(TRADE_RESPONSE) + fetchMock.mockResponse(JSON.stringify(TRADES_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + + const trades = await orderBookApi.getTrades({ + orderUid: TRADE_RESPONSE.orderUid, + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/trades?orderUid=${TRADE_RESPONSE.orderUid}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(trades.length).toEqual(5) + }) + + test('Invalid: Get trades passing both the owner and orderId', async () => { + expect( + orderBookApi.getTrades({ + owner: TRADE_RESPONSE.owner, + orderUid: TRADE_RESPONSE.orderUid, + }) + ).rejects.toThrowError(CowError) + }) + + test('Invalid: Get last 5 trades for an unexisting trader ', async () => { + const errorBody = { + errorType: 'NotFound', + description: "You've passed an invalid URL", + } + + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: HTTP_STATUS_NOT_FOUND, headers: HEADERS }) + + // when + const promise = orderBookApi.getTrades({ + owner: 'invalidOwner', + }) + + // then + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 404, + statusText: 'Not Found', + }), + }) + ) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/trades?owner=invalidOwner', + FETCH_RESPONSE_PARAMETERS + ) + }) + + test('Valid: Send sign order cancellation', async () => { + fetchMock.mockResponseOnce(JSON.stringify(SIGNED_ORDER_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + + const body = { ...SIGNED_ORDER_RESPONSE, orderUids: [ORDER_CANCELLATION_UID] } + + await orderBookApi.sendSignedOrderCancellations(body) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/orders`, + expect.objectContaining({ + ...RAW_FETCH_RESPONSE_PARAMETERS, + body: JSON.stringify(body), + method: 'DELETE', + }) + ) + }) + + test('Invalid: Send sign not found order cancellation', async () => { + const errorBody = { + errorType: 'NotFound', + description: "You've passed an invalid URL", + } + + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: HTTP_STATUS_NOT_FOUND, headers: HEADERS }) + + const body = { ...SIGNED_ORDER_RESPONSE, orderUids: ['unexistingOrder'] } + + // when + const promise = orderBookApi.sendSignedOrderCancellations(body) + + // then + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 404, + statusText: 'Not Found', + }), + }) + ) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/orders', + expect.objectContaining({ + ...RAW_FETCH_RESPONSE_PARAMETERS, + body: JSON.stringify(body), + method: 'DELETE', + }) + ) + }) + + // TODO move to another class - walletSDK or something similar + // test('Valid: Sign cancellation Order', async () => { + // const signCancellationOrder = await cowSdk.signOrderCancellation(ORDER_RESPONSE.uid) + // expect(signCancellationOrder.signature).not.toBeNull() + // expect(signCancellationOrder.signingScheme).not.toBeNull() + // }) + + test('Valid: Send an order ', async () => { + fetchMock.mockResponseOnce(JSON.stringify('validOrderId'), { status: HTTP_STATUS_OK, headers: HEADERS }) + const orderId = await orderBookApi.sendOrder({ + ...ORDER_RESPONSE, + ...SIGNED_ORDER_RESPONSE, + signingScheme: SigningScheme.EIP712, + from: '0x1811be0994930fe9480eaede25165608b093ad7a', + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/orders', + expect.objectContaining({ + ...RAW_FETCH_RESPONSE_PARAMETERS, + body: JSON.stringify({ + ...ORDER_RESPONSE, + ...SIGNED_ORDER_RESPONSE, + from: '0x1811be0994930fe9480eaede25165608b093ad7a', + signingScheme: 'eip712', + }), + method: 'POST', + }) + ) + expect(orderId).toEqual('validOrderId') + }) + + test('Invalid: Send an duplicate order ', async () => { + const errorBody = { + errorType: 'DuplicateOrder', + description: 'order already exists', + } + // given + fetchMock.mockResponse(JSON.stringify(errorBody), { status: 400, headers: HEADERS }) + + // when + const promise = orderBookApi.sendOrder({ + ...ORDER_RESPONSE, + ...SIGNED_ORDER_RESPONSE, + signingScheme: SigningScheme.EIP712, + from: '0x1811be0994930fe9480eaede25165608b093ad7a', + }) + + // then + await expect(promise).rejects.toEqual( + expect.objectContaining({ + body: errorBody, + response: expect.objectContaining({ + status: 400, + }), + }) + ) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/orders', + expect.objectContaining({ + ...RAW_FETCH_RESPONSE_PARAMETERS, + body: JSON.stringify({ + ...ORDER_RESPONSE, + ...SIGNED_ORDER_RESPONSE, + from: '0x1811be0994930fe9480eaede25165608b093ad7a', + signingScheme: 'eip712', + }), + method: 'POST', + }) + ) + }) + + test('Valid: Get last 5 orders changing options parameters', async () => { + const ORDERS_RESPONSE = Array(5).fill(ORDER_RESPONSE) + fetchMock.mockResponseOnce(JSON.stringify(ORDERS_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + const orders = await orderBookApi.getOrders({ + owner: '0x00000000005ef87f8ca7014309ece7260bbcdaeb', // Trader + limit: 5, + offset: 0, + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + 'https://api.cow.fi/xdai/api/v1/account/0x00000000005ef87f8ca7014309ece7260bbcdaeb/orders?offset=0&limit=5', + FETCH_RESPONSE_PARAMETERS + ) + expect(orders.length).toEqual(5) + }) + + test('Valid: Get last 5 trades changing options parameters', async () => { + const TRADES_RESPONSE = Array(5).fill(TRADE_RESPONSE) + fetchMock.mockResponseOnce(JSON.stringify(TRADES_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + const trades = await orderBookApi.getTrades({ + owner: TRADE_RESPONSE.owner, // Trader + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/trades?owner=${TRADE_RESPONSE.owner}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(trades.length).toEqual(5) + }) + + describe('Transform EthFlow orders', () => { + test('getOrder', async () => { + fetchMock.mockResponseOnce(JSON.stringify(ETH_FLOW_ORDER_RESPONSE), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const order = await orderBookApi.getOrder(ETH_FLOW_ORDER_RESPONSE.uid) + + // then + expect(order?.owner).toEqual(order?.onchainUser) + expect(order?.validTo).toEqual(order?.ethflowData?.userValidTo) + expect(order?.sellToken).toEqual(ETH_ADDRESS) + }) + + test('getOrders', async () => { + // given + const ORDERS_RESPONSE = [ETH_FLOW_ORDER_RESPONSE, ORDER_RESPONSE] + fetchMock.mockResponse(JSON.stringify(ORDERS_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + + // when + const orders = await orderBookApi.getOrders({ + owner: '0x6810e776880c02933d47db1b9fc05908e5386b96', // Trader + limit: 5, + offset: 0, + }) + + // then + // eth flow order + expect(orders[0].owner).toEqual(orders[0].onchainUser) + expect(orders[0].validTo).toEqual(orders[0].ethflowData?.userValidTo) + expect(orders[0].sellToken).toEqual(ETH_ADDRESS) + // regular order + expect(orders[1].owner).toEqual(ORDER_RESPONSE.owner) + expect(orders[1].validTo).toEqual(ORDER_RESPONSE.validTo) + expect(orders[1].sellToken).toEqual(ORDER_RESPONSE.sellToken) + }) + + test('getTxOrders', async () => { + // given + const ORDERS_RESPONSE = [ETH_FLOW_ORDER_RESPONSE, ORDER_RESPONSE] + const txHash = '0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5' + fetchMock.mockResponse(JSON.stringify(ORDERS_RESPONSE), { status: HTTP_STATUS_OK, headers: HEADERS }) + + // when + const txOrders = await orderBookApi.getTxOrders(txHash) + + // then + // eth flow order + expect(txOrders[0].owner).toEqual(txOrders[0].onchainUser) + expect(txOrders[0].validTo).toEqual(txOrders[0].ethflowData?.userValidTo) + expect(txOrders[0].sellToken).toEqual(ETH_ADDRESS) + // regular order + expect(txOrders[1].owner).toEqual(ORDER_RESPONSE.owner) + expect(txOrders[1].validTo).toEqual(ORDER_RESPONSE.validTo) + expect(txOrders[1].sellToken).toEqual(ORDER_RESPONSE.sellToken) + }) + }) + + test('API getOrder() method should return order with "class" property', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ ...ORDER_RESPONSE, class: 'limit' }), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const order = await orderBookApi.getOrder(ORDER_RESPONSE.uid) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/orders/${ORDER_RESPONSE.uid}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(order?.class).toEqual('limit') + }) + + test('getOrderMultiEnv() should fallback to another env when the original one returned 404 API error', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ ...ORDER_RESPONSE }), { + status: 404, + headers: HEADERS, + }) + + // when + try { + await orderBookApi.getOrderMultiEnv(ORDER_RESPONSE.uid, { env: 'prod' }) + } catch (e) { + // + } + + // then + expect(fetchMock).toHaveBeenCalledTimes(2) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/orders/${ORDER_RESPONSE.uid}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(fetchMock).toHaveBeenCalledWith( + `https://barn.api.cow.fi/xdai/api/v1/orders/${ORDER_RESPONSE.uid}`, + FETCH_RESPONSE_PARAMETERS + ) + }) + + test('Valid: Get total surplus', async () => { + // given + const address = '0x6810e776880c02933d47db1b9fc05908e5386b96' + const totalSurplus = { + totalSurplus: '123456789', + } + fetchMock.mockResponseOnce(JSON.stringify(totalSurplus), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const surplus = await orderBookApi.getTotalSurplus(address) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/users/${address}/total_surplus`, + FETCH_RESPONSE_PARAMETERS + ) + expect(surplus).toEqual(totalSurplus) + }) + + test('Valid: Get AppData', async () => { + // given + const appDataHash = '0x1fddf237451709522e5ac66887f979db70c3501efd4623ee86225ff914423fa1' + const appDataBody = { + fullAppData: '{"hello": "world"}', + } + fetchMock.mockResponseOnce(JSON.stringify(appDataBody), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const appData = await orderBookApi.getAppData(appDataHash) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/app_data/${appDataHash}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(appData).toEqual(appDataBody) + }) + + test('Valid: Upload AppData', async () => { + // given + const appDataHash = '0x1fddf237451709522e5ac66887f979db70c3501efd4623ee86225ff914423fa1' + const appDataBody = { + fullAppData: '{"hello": "world"}', + } + fetchMock.mockResponseOnce(JSON.stringify(appDataHash), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const appDataHashResult = await orderBookApi.uploadAppData(appDataHash, appDataBody.fullAppData) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/app_data/${appDataHash}`, + expect.objectContaining({ + body: JSON.stringify(appDataBody), + method: 'PUT', + }) + ) + expect(appDataHashResult).toEqual(appDataHash) + }) + + test('Valid: Get solver competition by auctionId', async () => { + // given + const auctionId = 7841036 + fetchMock.mockResponseOnce(JSON.stringify(AUCTION), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const competition = await orderBookApi.getSolverCompetition(auctionId) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/solver_competition/${auctionId}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(competition).toEqual(AUCTION) + }) + + test('Valid: Get solver competition by tx hash', async () => { + // given + const txHash = '0xe395eac238e7c6b2f4c5dea57d4a3d9a2b42d9f4ae5574dd003f9e5dd76abeee' + fetchMock.mockResponseOnce(JSON.stringify(AUCTION), { + status: HTTP_STATUS_OK, + headers: HEADERS, + }) + + // when + const competition = await orderBookApi.getSolverCompetition(txHash) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + `https://api.cow.fi/xdai/api/v1/solver_competition/by_tx_hash/${txHash}`, + FETCH_RESPONSE_PARAMETERS + ) + expect(competition).toEqual(AUCTION) + }) +}) diff --git a/external/cow-sdk/src/order-book/api.ts b/external/cow-sdk/src/order-book/api.ts new file mode 100644 index 000000000..0af885984 --- /dev/null +++ b/external/cow-sdk/src/order-book/api.ts @@ -0,0 +1,429 @@ +import 'cross-fetch/polyfill' +import { RateLimiter } from 'limiter' +import { SupportedChainId } from '../common/chains' +import { + ApiBaseUrls, + ApiContext, + CowEnv, + DEFAULT_COW_API_CONTEXT, + ENVS_LIST, + PartialApiContext, +} from '../common/configs' +import { CowError } from '../common/cow-error' +import { + Address, + AppDataHash, + AppDataObject, + CompetitionOrderStatus, + NativePriceResponse, + Order, + OrderCancellations, + OrderCreation, + OrderQuoteRequest, + OrderQuoteResponse, + SolverCompetitionResponse, + TotalSurplus, + Trade, + TransactionHash, + UID, +} from './generated' +import { DEFAULT_BACKOFF_OPTIONS, DEFAULT_LIMITER_OPTIONS, FetchParams, OrderBookApiError, request } from './request' +import { transformOrder } from './transformOrder' +import { EnrichedOrder } from './types' + +/** + * An object containing *production* environment base URLs for each supported `chainId`. + * @see {@link https://api.cow.fi/docs/#/} + */ +export const ORDER_BOOK_PROD_CONFIG: ApiBaseUrls = { + [SupportedChainId.MAINNET]: 'https://api.cow.fi/mainnet', + [SupportedChainId.GNOSIS_CHAIN]: 'https://api.cow.fi/xdai', + [SupportedChainId.ARBITRUM_ONE]: 'https://api.cow.fi/arbitrum_one', + [SupportedChainId.BASE]: 'https://api.cow.fi/base', + [SupportedChainId.SEPOLIA]: 'https://api.cow.fi/sepolia', +} + +/** + * An object containing *staging* environment base URLs for each supported `chainId`. + */ +export const ORDER_BOOK_STAGING_CONFIG: ApiBaseUrls = { + [SupportedChainId.MAINNET]: 'https://barn.api.cow.fi/mainnet', + [SupportedChainId.GNOSIS_CHAIN]: 'https://barn.api.cow.fi/xdai', + [SupportedChainId.ARBITRUM_ONE]: 'https://barn.api.cow.fi/arbitrum_one', + [SupportedChainId.BASE]: 'https://barn.api.cow.fi/base', + [SupportedChainId.SEPOLIA]: 'https://barn.api.cow.fi/sepolia', +} + +function cleanObjectFromUndefinedValues(obj: Record): typeof obj { + return Object.keys(obj).reduce((acc, key) => { + const val = obj[key] + if (typeof val !== 'undefined') acc[key] = val + return acc + }, {} as typeof obj) +} + +/** + * The parameters for the `getOrders` request. + */ +export type GetOrdersRequest = { + owner: Address + offset?: number + limit?: number +} + +/** + * The CoW Protocol OrderBook API client. + * + * This is the main entry point for interacting with the CoW Protocol OrderBook API. The main advantage of using + * this client is the batteries-included approach to interacting with the API. It handles: + * + * - Environment configuration (mainnet, staging, etc.) + * - Rate limiting + * - Retries + * - Backoff + * - Error handling + * - Request signing + * - Request validation + * + * @example + * + * ```typescript + * import { OrderBookApi, OrderSigningUtils, SupportedChainId } from '@cowprotocol/cow-sdk' + * import { Web3Provider } from '@ethersproject/providers' + * + * const account = 'YOUR_WALLET_ADDRESS' + * const chainId = 100 // Gnosis chain + * const provider = new Web3Provider(window.ethereum) + * const signer = provider.getSigner() + * + * const quoteRequest = { + * sellToken: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', // WETH gnosis chain + * buyToken: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', // GNO gnosis chain + * from: account, + * receiver: account, + * sellAmountBeforeFee: (0.4 * 10 ** 18).toString(), // 0.4 WETH + * kind: OrderQuoteSide.kind.SELL, + * } + * + * const orderBookApi = new OrderBookApi({ chainId: SupportedChainId.GNOSIS_CHAIN }) + * + * async function main() { + * const { quote } = await orderBookApi.getQuote(quoteRequest) + * + * const orderSigningResult = await OrderSigningUtils.signOrder(quote, chainId, signer) + * + * const orderId = await orderBookApi.sendOrder({ ...quote, ...orderSigningResult }) + * + * const order = await orderBookApi.getOrder(orderId) + * + * const trades = await orderBookApi.getTrades({ orderId }) + * + * const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + * + * const cancellationResult = await orderBookApi.sendSignedOrderCancellations({...orderCancellationSigningResult, orderUids: [orderId] }) + * + * console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) + * } + * ``` + * + * @see {@link Swagger documentation https://api.cow.fi/docs/#/} + * @see {@link OrderBook API https://github.com/cowprotocol/services} + */ +export class OrderBookApi { + public context: ApiContext + + private rateLimiter: RateLimiter + + /** + * Creates a new instance of the CoW Protocol OrderBook API client. + * @param context - The API context to use. If not provided, the default context will be used. + */ + constructor(context: PartialApiContext = {}) { + this.context = { ...DEFAULT_COW_API_CONTEXT, ...context } + this.rateLimiter = new RateLimiter(context.limiterOpts || DEFAULT_LIMITER_OPTIONS) + } + + /** + * Get the version of the API. + * @param contextOverride Optional context override for this request. + * @returns The version of the API. + * @see {@link https://api.cow.fi/docs/#/default/get_api_v1_version} + */ + getVersion(contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: '/api/v1/version', method: 'GET' }, contextOverride) + } + + /** + * Get all the trades for either an `owner` **OR** `orderUid`. + * + * Given that an order *may* be partially fillable, it is possible that a discrete order (`orderUid`) + * may have *multiple* trades. Therefore, this method returns a list of trades, either for *all* the orders + * of a given `owner`, or for a discrete order (`orderUid`). + * @param request Either an `owner` or an `orderUid` **MUST** be specified. + * @param contextOverride Optional context override for this request. + * @returns A list of trades matching the request. + */ + getTrades( + request: { owner?: Address; orderUid?: UID }, + contextOverride: PartialApiContext = {} + ): Promise> { + if (request.owner && request.orderUid) { + return Promise.reject(new CowError('Cannot specify both owner and orderId')) + } else if (!request.owner && !request.orderUid) { + return Promise.reject(new CowError('Must specify either owner or orderId')) + } + + const query = new URLSearchParams(cleanObjectFromUndefinedValues(request)) + + return this.fetch({ path: '/api/v1/trades', method: 'GET', query }, contextOverride) + } + + /** + * Get a list of orders for a given `owner`. + * @param request The request parameters with `request.offset = 0` and `request.limit = 1000` by default. + * @param contextOverride Optional context override for this request. + * @returns A list of orders matching the request. + * @see {@link GetOrdersRequest} + * @see {@link EnrichedOrder} + */ + getOrders( + { owner, offset = 0, limit = 1000 }: GetOrdersRequest, + contextOverride: PartialApiContext = {} + ): Promise> { + const query = new URLSearchParams( + cleanObjectFromUndefinedValues({ offset: offset.toString(), limit: limit.toString() }) + ) + + return this.fetch>( + { path: `/api/v1/account/${owner}/orders`, method: 'GET', query }, + contextOverride + ).then((orders) => { + return orders.map(transformOrder) + }) + } + + /** + * Get a list of orders from a given settlement transaction hash. + * @param txHash The transaction hash. + * @param contextOverride Optional context override for this request. + * @returns A list of orders matching the request. + * @see {@link EnrichedOrder} + */ + getTxOrders(txHash: TransactionHash, contextOverride: PartialApiContext = {}): Promise> { + return this.fetch>( + { path: `/api/v1/transactions/${txHash}/orders`, method: 'GET' }, + contextOverride + ).then((orders) => { + return orders.map(transformOrder) + }) + } + + /** + * Get an order by its unique identifier, `orderUid`. + * @param orderUid The unique identifier of the order. + * @param contextOverride Optional context override for this request. + * @returns The order matching the request. + */ + getOrder(orderUid: UID, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: `/api/v1/orders/${orderUid}`, method: 'GET' }, contextOverride).then((order) => { + return transformOrder(order) + }) + } + + /** + * Get the order status while open + */ + getOrderCompetitionStatus(orderUid: UID, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: `/api/v1/orders/${orderUid}/status`, method: 'GET' }, contextOverride) + } + + /** + * Attempt to get an order by its unique identifier, `orderUid`, from multiple environments. + * + * **NOTE**: The environment refers to either `prod` or `staging`. This allows a conveience method to + * attempt to get an order from both environments, in the event that the order is not found in the + * environment specified in the context. + * @param orderUid The unique identifier of the order. + * @param contextOverride Optional context override for this request. + * @returns The order matching the request. + * @throws {OrderBookApiError} If the order is not found in any of the environments. + */ + getOrderMultiEnv(orderUid: UID, contextOverride: PartialApiContext = {}): Promise { + const { env } = this.getContextWithOverride(contextOverride) + const otherEnvs = ENVS_LIST.filter((i) => i !== env) + + let attemptsCount = 0 + + const fallback = (error: Error | OrderBookApiError): Promise => { + const nextEnv = otherEnvs[attemptsCount] + + if (error instanceof OrderBookApiError && error.response.status === 404 && nextEnv) { + attemptsCount++ + + return this.getOrder(orderUid, { ...contextOverride, env: nextEnv }).catch(fallback) + } + + return Promise.reject(error) + } + + return this.getOrder(orderUid, { ...contextOverride, env }).catch(fallback) + } + + /** + * Get a quote for an order. + * This allows for the calculation of the total cost of an order, including fees, before signing and submitting. + * @param requestBody The parameters for the order quote request. + * @param contextOverride Optional context override for this request. + * @returns A hydrated order matching the request ready to be signed. + */ + getQuote(requestBody: OrderQuoteRequest, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: '/api/v1/quote', method: 'POST', body: requestBody }, contextOverride) + } + + /** + * Cancel one or more orders. + * + * **NOTE**: Cancellation is on a best-effort basis. Orders that are already in the process of being settled + * (ie. transaction has been submitted to chain by the solver) cannot not be cancelled. + * **CAUTION**: This method can only be used to cancel orders that were signed using `EIP-712` or `eth_sign (EIP-191)`. + * @param requestBody Orders to be cancelled and signed instructions to cancel them. + * @param contextOverride Optional context override for this request. + * @returns A list of order unique identifiers that were successfully cancelled. + */ + sendSignedOrderCancellations( + requestBody: OrderCancellations, + contextOverride: PartialApiContext = {} + ): Promise { + return this.fetch({ path: '/api/v1/orders', method: 'DELETE', body: requestBody }, contextOverride) + } + + /** + * Submit an order to the order book. + * @param requestBody The signed order to be submitted. + * @param contextOverride Optional context override for this request. + * @returns The unique identifier of the order. + */ + sendOrder(requestBody: OrderCreation, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: '/api/v1/orders', method: 'POST', body: requestBody }, contextOverride) + } + + /** + * Get the native price of a token. + * + * **NOTE**: The native price is the price of the token in the native currency of the chain. For example, on Ethereum + * this would be the price of the token in ETH. + * @param tokenAddress The address of the ERC-20 token. + * @param contextOverride Optional context override for this request. + * @returns The native price of the token. + */ + getNativePrice(tokenAddress: Address, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: `/api/v1/token/${tokenAddress}/native_price`, method: 'GET' }, contextOverride) + } + + /** + * Given a user's address, get the total surplus that they have earned. + * @param address The user's address + * @param contextOverride Optional context override for this request. + * @returns Calculated user's surplus + */ + getTotalSurplus(address: Address, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: `/api/v1/users/${address}/total_surplus`, method: 'GET' }, contextOverride) + } + + /** + * Retrieve the full app data for a given app data hash. + * @param appDataHash `bytes32` hash of the app data + * @param contextOverride Optional context override for this request. + * @returns Full app data that was uploaded + */ + getAppData(appDataHash: AppDataHash, contextOverride: PartialApiContext = {}): Promise { + return this.fetch({ path: `/api/v1/app_data/${appDataHash}`, method: 'GET' }, contextOverride) + } + + /** + * Upload the full app data that corresponds to a given app data hash. + * @param appDataHash `bytes32` hash of the app data + * @param fullAppData Full app data to be uploaded + * @param contextOverride Optional context override for this request. + * @returns The string encoding of the full app data that was uploaded. + */ + uploadAppData( + appDataHash: AppDataHash, + fullAppData: string, + contextOverride: PartialApiContext = {} + ): Promise { + return this.fetch( + { path: `/api/v1/app_data/${appDataHash}`, method: 'PUT', body: { fullAppData } }, + contextOverride + ) + } + + getSolverCompetition(auctionId: number, contextOverride?: PartialApiContext): Promise + + getSolverCompetition(txHash: string, contextOverride?: PartialApiContext): Promise + + /** + * Given an auction id or tx hash, get the details of the solver competition for that auction. + * @param auctionIdorTx auction id or tx hash corresponding to the auction + * @param contextOverride Optional context override for this request. + * @returns An object containing the solver competition details + */ + getSolverCompetition( + auctionIdorTx: number | string, + contextOverride: PartialApiContext = {} + ): Promise { + return this.fetch( + { + path: `/api/v1/solver_competition${typeof auctionIdorTx === 'string' ? '/by_tx_hash' : ''}/${auctionIdorTx}`, + method: 'GET', + }, + contextOverride + ) + } + + /** + * Generate an API endpoint for an order by its unique identifier, `orderUid`. + * @param orderUid The unique identifier of the order. + * @param contextOverride Optional context override for this request. + * @returns The API endpoint to get the order. + */ + getOrderLink(orderUid: UID, contextOverride?: PartialApiContext): string { + const { chainId, env } = this.getContextWithOverride(contextOverride) + return this.getApiBaseUrls(env)[chainId] + `/api/v1/orders/${orderUid}` + } + + /** + * Apply an override to the context for a request. + * @param contextOverride Optional context override for this request. + * @returns New context with the override applied. + */ + private getContextWithOverride(contextOverride: PartialApiContext = {}): ApiContext { + return { ...this.context, ...contextOverride } + } + + /** + * Get the base URLs for the API endpoints given the environment. + * @param env The environment to get the base URLs for. + * @returns The base URLs for the API endpoints. + */ + private getApiBaseUrls(env: CowEnv): ApiBaseUrls { + if (this.context.baseUrls) return this.context.baseUrls + + return env === 'prod' ? ORDER_BOOK_PROD_CONFIG : ORDER_BOOK_STAGING_CONFIG + } + + /** + * Make a request to the API. + * @param params The parameters for the request. + * @param contextOverride Optional context override for this request. + * @returns The response from the API. + */ + private fetch(params: FetchParams, contextOverride: PartialApiContext = {}): Promise { + const { chainId, env, backoffOpts: _backoffOpts } = this.getContextWithOverride(contextOverride) + const baseUrl = this.getApiBaseUrls(env)[chainId] + const backoffOpts = _backoffOpts || DEFAULT_BACKOFF_OPTIONS + const rateLimiter = contextOverride.limiterOpts ? new RateLimiter(contextOverride.limiterOpts) : this.rateLimiter + + return request(baseUrl, params, rateLimiter, backoffOpts) + } +} diff --git a/external/cow-sdk/src/order-book/generated/index.ts b/external/cow-sdk/src/order-book/generated/index.ts new file mode 100644 index 000000000..46800f82a --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/index.ts @@ -0,0 +1,59 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type { Address } from './models/Address'; +export type { AppData } from './models/AppData'; +export type { AppDataHash } from './models/AppDataHash'; +export type { AppDataObject } from './models/AppDataObject'; +export type { Auction } from './models/Auction'; +export type { AuctionOrder } from './models/AuctionOrder'; +export type { AuctionPrices } from './models/AuctionPrices'; +export type { BigUint } from './models/BigUint'; +export { BuyTokenDestination } from './models/BuyTokenDestination'; +export type { CallData } from './models/CallData'; +export type { CompetitionAuction } from './models/CompetitionAuction'; +export { CompetitionOrderStatus } from './models/CompetitionOrderStatus'; +export type { EcdsaSignature } from './models/EcdsaSignature'; +export { EcdsaSigningScheme } from './models/EcdsaSigningScheme'; +export type { EthflowData } from './models/EthflowData'; +export type { ExecutedAmounts } from './models/ExecutedAmounts'; +export type { ExecutedProtocolFee } from './models/ExecutedProtocolFee'; +export type { FeePolicy } from './models/FeePolicy'; +export type { InteractionData } from './models/InteractionData'; +export type { NativePriceResponse } from './models/NativePriceResponse'; +export { OnchainOrderData } from './models/OnchainOrderData'; +export type { Order } from './models/Order'; +export type { OrderCancellation } from './models/OrderCancellation'; +export { OrderCancellationError } from './models/OrderCancellationError'; +export type { OrderCancellations } from './models/OrderCancellations'; +export { OrderClass } from './models/OrderClass'; +export type { OrderCreation } from './models/OrderCreation'; +export { OrderKind } from './models/OrderKind'; +export type { OrderMetaData } from './models/OrderMetaData'; +export type { OrderParameters } from './models/OrderParameters'; +export { OrderPostError } from './models/OrderPostError'; +export type { OrderQuoteRequest } from './models/OrderQuoteRequest'; +export type { OrderQuoteResponse } from './models/OrderQuoteResponse'; +export type { OrderQuoteSide } from './models/OrderQuoteSide'; +export { OrderQuoteSideKindBuy } from './models/OrderQuoteSideKindBuy'; +export { OrderQuoteSideKindSell } from './models/OrderQuoteSideKindSell'; +export type { OrderQuoteValidity } from './models/OrderQuoteValidity'; +export { OrderStatus } from './models/OrderStatus'; +export type { PreSignature } from './models/PreSignature'; +export { PriceEstimationError } from './models/PriceEstimationError'; +export type { PriceImprovement } from './models/PriceImprovement'; +export { PriceQuality } from './models/PriceQuality'; +export type { Quote } from './models/Quote'; +export { SellTokenSource } from './models/SellTokenSource'; +export type { Signature } from './models/Signature'; +export { SigningScheme } from './models/SigningScheme'; +export type { SolverCompetitionResponse } from './models/SolverCompetitionResponse'; +export type { SolverSettlement } from './models/SolverSettlement'; +export type { Surplus } from './models/Surplus'; +export type { TokenAmount } from './models/TokenAmount'; +export type { TotalSurplus } from './models/TotalSurplus'; +export type { Trade } from './models/Trade'; +export type { TransactionHash } from './models/TransactionHash'; +export type { UID } from './models/UID'; +export type { Volume } from './models/Volume'; diff --git a/external/cow-sdk/src/order-book/generated/models/Address.ts b/external/cow-sdk/src/order-book/generated/models/Address.ts new file mode 100644 index 000000000..dbe8d25b8 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Address.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * 20 byte Ethereum address encoded as a hex with `0x` prefix. + */ +export type Address = string; diff --git a/external/cow-sdk/src/order-book/generated/models/AppData.ts b/external/cow-sdk/src/order-book/generated/models/AppData.ts new file mode 100644 index 000000000..524231c0e --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/AppData.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The string encoding of a JSON object representing some `appData`. The + * format of the JSON expected in the `appData` field is defined + * [here](https://github.com/cowprotocol/app-data). + * + */ +export type AppData = string; diff --git a/external/cow-sdk/src/order-book/generated/models/AppDataHash.ts b/external/cow-sdk/src/order-book/generated/models/AppDataHash.ts new file mode 100644 index 000000000..2b10d2fe3 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/AppDataHash.ts @@ -0,0 +1,10 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * 32 bytes encoded as hex with `0x` prefix. + * It's expected to be the hash of the stringified JSON object representing the `appData`. + * + */ +export type AppDataHash = string; diff --git a/external/cow-sdk/src/order-book/generated/models/AppDataObject.ts b/external/cow-sdk/src/order-book/generated/models/AppDataObject.ts new file mode 100644 index 000000000..6b5a99ff9 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/AppDataObject.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AppData } from './AppData'; + +/** + * An `appData` document that is registered with the API. + */ +export type AppDataObject = { + fullAppData?: AppData; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/Auction.ts b/external/cow-sdk/src/order-book/generated/models/Auction.ts new file mode 100644 index 000000000..1dd598230 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Auction.ts @@ -0,0 +1,36 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { AuctionOrder } from './AuctionOrder'; +import type { AuctionPrices } from './AuctionPrices'; + +/** + * A batch auction for solving. + * + */ +export type Auction = { + /** + * The unique identifier of the auction. Increment whenever the backend creates a new auction. + * + */ + id?: number; + /** + * The block number for the auction. Orders and prices are guaranteed to be valid on this block. Proposed settlements should be valid for this block as well. + * + */ + block?: number; + /** + * The solvable orders included in the auction. + * + */ + orders?: Array; + prices?: AuctionPrices; + /** + * List of addresses on whose surplus will count towards the objective value of their solution (unlike other orders that were created by the solver). + * + */ + surplusCapturingJitOrderOwners?: Array
; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/AuctionOrder.ts b/external/cow-sdk/src/order-book/generated/models/AuctionOrder.ts new file mode 100644 index 000000000..5e3af238f --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/AuctionOrder.ts @@ -0,0 +1,98 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { AppDataHash } from './AppDataHash'; +import type { BuyTokenDestination } from './BuyTokenDestination'; +import type { FeePolicy } from './FeePolicy'; +import type { InteractionData } from './InteractionData'; +import type { OrderClass } from './OrderClass'; +import type { OrderKind } from './OrderKind'; +import type { Quote } from './Quote'; +import type { SellTokenSource } from './SellTokenSource'; +import type { Signature } from './Signature'; +import type { TokenAmount } from './TokenAmount'; +import type { UID } from './UID'; + +/** + * A solvable order included in the current batch auction. Contains the data forwarded to solvers for solving. + * + */ +export type AuctionOrder = { + uid: UID; + /** + * see `OrderParameters::sellToken` + */ + sellToken: Address; + /** + * see `OrderParameters::buyToken` + */ + buyToken: Address; + /** + * see `OrderParameters::sellAmount` + */ + sellAmount: TokenAmount; + /** + * see `OrderParameters::buyAmount` + */ + buyAmount: TokenAmount; + /** + * Creation time of the order. Denominated in epoch seconds. + */ + created: string; + /** + * see `OrderParameters::validTo` + */ + validTo: number; + /** + * see `OrderParameters::kind` + */ + kind: OrderKind; + /** + * see `OrderParameters::receiver` + */ + receiver: Address | null; + owner: Address; + /** + * see `OrderParameters::partiallyFillable` + */ + partiallyFillable: boolean; + /** + * Currently executed amount of sell/buy token, depending on the order kind. + * + */ + executed: TokenAmount; + /** + * The pre-interactions that need to be executed before the first execution of the order. + * + */ + preInteractions: Array; + /** + * The post-interactions that need to be executed after the execution of the order. + * + */ + postInteractions: Array; + /** + * see `OrderParameters::sellTokenBalance` + */ + sellTokenBalance: SellTokenSource; + /** + * see `OrderParameters::buyTokenBalance` + */ + buyTokenBalance: BuyTokenDestination; + class: OrderClass; + appData: AppDataHash; + signature: Signature; + /** + * The fee policies that are used to compute the protocol fees for this order. + * + */ + protocolFees: Array; + /** + * A winning quote. + * + */ + quote?: Quote; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/AuctionPrices.ts b/external/cow-sdk/src/order-book/generated/models/AuctionPrices.ts new file mode 100644 index 000000000..208f18f69 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/AuctionPrices.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { BigUint } from './BigUint'; + +/** + * The reference prices for all traded tokens in the auction as a mapping from token addresses to a price denominated in native token (i.e. 1e18 represents a token that trades one to one with the native token). These prices are used for solution competition for computing surplus and converting fees to native token. + * + */ +export type AuctionPrices = Record; diff --git a/external/cow-sdk/src/order-book/generated/models/BigUint.ts b/external/cow-sdk/src/order-book/generated/models/BigUint.ts new file mode 100644 index 000000000..a1af3ad28 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/BigUint.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * A big unsigned integer encoded in decimal. + */ +export type BigUint = string; diff --git a/external/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts b/external/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts new file mode 100644 index 000000000..5fc0f5a37 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Where should the `buyToken` be transferred to? + */ +export enum BuyTokenDestination { + ERC20 = 'erc20', + INTERNAL = 'internal', +} diff --git a/external/cow-sdk/src/order-book/generated/models/CallData.ts b/external/cow-sdk/src/order-book/generated/models/CallData.ts new file mode 100644 index 000000000..ca68b6fb5 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/CallData.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Some `calldata` sent to a contract in a transaction encoded as a hex with `0x` prefix. + */ +export type CallData = string; diff --git a/external/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts b/external/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts new file mode 100644 index 000000000..513c1bd99 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts @@ -0,0 +1,20 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { AuctionPrices } from './AuctionPrices'; +import type { UID } from './UID'; + +/** + * The components that describe a batch auction for the solver competition. + * + */ +export type CompetitionAuction = { + /** + * The UIDs of the orders included in the auction. + * + */ + orders?: Array; + prices?: AuctionPrices; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts b/external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts new file mode 100644 index 000000000..12f7718fe --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts @@ -0,0 +1,39 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { ExecutedAmounts } from './ExecutedAmounts'; + +export type CompetitionOrderStatus = { + type: CompetitionOrderStatus.type; + /** + * A list of solvers who participated in the latest competition, sorted + * by score in ascending order, where the last element is the winner. + * + * The presence of executed amounts defines whether the solver provided + * a solution for the desired order. + */ + value?: Array<{ + /** + * Name of the solver. + */ + solver: string; + executedAmounts?: ExecutedAmounts; + }>; +}; + +export namespace CompetitionOrderStatus { + + export enum type { + OPEN = 'open', + SCHEDULED = 'scheduled', + ACTIVE = 'active', + SOLVED = 'solved', + EXECUTING = 'executing', + TRADED = 'traded', + CANCELLED = 'cancelled', + } + + +} + diff --git a/external/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts b/external/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts new file mode 100644 index 000000000..59807cc88 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * 65 bytes encoded as hex with `0x` prefix. `r || s || v` from the spec. + */ +export type EcdsaSignature = string; diff --git a/external/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts b/external/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts new file mode 100644 index 000000000..06983a3a2 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * How was the order signed? + */ +export enum EcdsaSigningScheme { + EIP712 = 'eip712', + ETHSIGN = 'ethsign', +} diff --git a/external/cow-sdk/src/order-book/generated/models/EthflowData.ts b/external/cow-sdk/src/order-book/generated/models/EthflowData.ts new file mode 100644 index 000000000..9e15154e9 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/EthflowData.ts @@ -0,0 +1,26 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TransactionHash } from './TransactionHash'; + +/** + * Provides the additional data for ethflow orders. + */ +export type EthflowData = { + /** + * Specifies in which transaction the order was refunded. If + * this field is null the order was not yet refunded. + * + */ + refundTxHash: TransactionHash | null; + /** + * Describes the `validTo` of an order ethflow order. + * + * **NOTE**: For ethflow orders, the `validTo` encoded in the smart + * contract is `type(uint256).max`. + * + */ + userValidTo: number; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts b/external/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts new file mode 100644 index 000000000..75b1f875a --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { BigUint } from './BigUint'; + +export type ExecutedAmounts = { + sell: BigUint; + buy: BigUint; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts b/external/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts new file mode 100644 index 000000000..dec8a9469 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts @@ -0,0 +1,14 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { FeePolicy } from './FeePolicy'; +import type { TokenAmount } from './TokenAmount'; + +export type ExecutedProtocolFee = { + policy?: FeePolicy; + amount?: TokenAmount; + token?: Address; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/FeePolicy.ts b/external/cow-sdk/src/order-book/generated/models/FeePolicy.ts new file mode 100644 index 000000000..fd1975b77 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/FeePolicy.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { PriceImprovement } from './PriceImprovement'; +import type { Surplus } from './Surplus'; +import type { Volume } from './Volume'; + +/** + * Defines the ways to calculate the protocol fee. + */ +export type FeePolicy = (Surplus | Volume | PriceImprovement); + diff --git a/external/cow-sdk/src/order-book/generated/models/InteractionData.ts b/external/cow-sdk/src/order-book/generated/models/InteractionData.ts new file mode 100644 index 000000000..8658265a2 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/InteractionData.ts @@ -0,0 +1,17 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { CallData } from './CallData'; +import type { TokenAmount } from './TokenAmount'; + +export type InteractionData = { + target?: Address; + value?: TokenAmount; + /** + * The call data to be used for the interaction. + */ + call_data?: Array; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts b/external/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts new file mode 100644 index 000000000..c03963133 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The estimated native price for the token + * + */ +export type NativePriceResponse = { + /** + * Estimated price of the token. + */ + price?: number; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts b/external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts new file mode 100644 index 000000000..105f7ffec --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts @@ -0,0 +1,34 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; + +export type OnchainOrderData = { + /** + * If orders are placed as on-chain orders, the owner of the order might be a smart contract, but not the user placing the order. The actual user will be provided in this field. + * + */ + sender: Address; + /** + * Describes the error, if the order placement was not successful. This could happen, for example, if the `validTo` is too high, or no valid quote was found or generated. + * + */ + placementError?: OnchainOrderData.placementError; +}; + +export namespace OnchainOrderData { + + /** + * Describes the error, if the order placement was not successful. This could happen, for example, if the `validTo` is too high, or no valid quote was found or generated. + * + */ + export enum placementError { + QUOTE_NOT_FOUND = 'QuoteNotFound', + VALID_TO_TOO_FAR_IN_FUTURE = 'ValidToTooFarInFuture', + PRE_VALIDATION_ERROR = 'PreValidationError', + } + + +} + diff --git a/external/cow-sdk/src/order-book/generated/models/Order.ts b/external/cow-sdk/src/order-book/generated/models/Order.ts new file mode 100644 index 000000000..531cb787b --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Order.ts @@ -0,0 +1,9 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { OrderCreation } from './OrderCreation'; +import type { OrderMetaData } from './OrderMetaData'; + +export type Order = (OrderCreation & OrderMetaData); + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderCancellation.ts b/external/cow-sdk/src/order-book/generated/models/OrderCancellation.ts new file mode 100644 index 000000000..403c745a7 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderCancellation.ts @@ -0,0 +1,20 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EcdsaSignature } from './EcdsaSignature'; +import type { EcdsaSigningScheme } from './EcdsaSigningScheme'; + +/** + * [EIP-712](https://eips.ethereum.org/EIPS/eip-712) signature of struct + * `OrderCancellation(bytes orderUid)` from the order's owner. + * + */ +export type OrderCancellation = { + /** + * OrderCancellation signed by owner + */ + signature: EcdsaSignature; + signingScheme: EcdsaSigningScheme; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts b/external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts new file mode 100644 index 000000000..1b97ff4ae --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type OrderCancellationError = { + errorType: OrderCancellationError.errorType; + description: string; +}; + +export namespace OrderCancellationError { + + export enum errorType { + INVALID_SIGNATURE = 'InvalidSignature', + WRONG_OWNER = 'WrongOwner', + ORDER_NOT_FOUND = 'OrderNotFound', + ALREADY_CANCELLED = 'AlreadyCancelled', + ORDER_FULLY_EXECUTED = 'OrderFullyExecuted', + ORDER_EXPIRED = 'OrderExpired', + ON_CHAIN_ORDER = 'OnChainOrder', + } + + +} + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderCancellations.ts b/external/cow-sdk/src/order-book/generated/models/OrderCancellations.ts new file mode 100644 index 000000000..c43115476 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderCancellations.ts @@ -0,0 +1,24 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EcdsaSignature } from './EcdsaSignature'; +import type { EcdsaSigningScheme } from './EcdsaSigningScheme'; +import type { UID } from './UID'; + +/** + * EIP-712 signature of struct OrderCancellations { orderUid: bytes[] } from the order's owner. + * + */ +export type OrderCancellations = { + /** + * UIDs of orders to cancel. + */ + orderUids?: Array; + /** + * `OrderCancellation` signed by the owner. + */ + signature: EcdsaSignature; + signingScheme: EcdsaSigningScheme; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderClass.ts b/external/cow-sdk/src/order-book/generated/models/OrderClass.ts new file mode 100644 index 000000000..17d7eb5b1 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderClass.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Order class. + */ +export enum OrderClass { + MARKET = 'market', + LIMIT = 'limit', + LIQUIDITY = 'liquidity', +} diff --git a/external/cow-sdk/src/order-book/generated/models/OrderCreation.ts b/external/cow-sdk/src/order-book/generated/models/OrderCreation.ts new file mode 100644 index 000000000..8803665c7 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderCreation.ts @@ -0,0 +1,86 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { AppData } from './AppData'; +import type { AppDataHash } from './AppDataHash'; +import type { BuyTokenDestination } from './BuyTokenDestination'; +import type { OrderKind } from './OrderKind'; +import type { SellTokenSource } from './SellTokenSource'; +import type { Signature } from './Signature'; +import type { SigningScheme } from './SigningScheme'; +import type { TokenAmount } from './TokenAmount'; + +/** + * Data a user provides when creating a new order. + */ +export type OrderCreation = { + /** + * see `OrderParameters::sellToken` + */ + sellToken: Address; + /** + * see `OrderParameters::buyToken` + */ + buyToken: Address; + /** + * see `OrderParameters::receiver` + */ + receiver?: Address | null; + /** + * see `OrderParameters::sellAmount` + */ + sellAmount: TokenAmount; + /** + * see `OrderParameters::buyAmount` + */ + buyAmount: TokenAmount; + /** + * see `OrderParameters::validTo` + */ + validTo: number; + /** + * see `OrderParameters::feeAmount` + */ + feeAmount: TokenAmount; + /** + * see `OrderParameters::kind` + */ + kind: OrderKind; + /** + * see `OrderParameters::partiallyFillable` + */ + partiallyFillable: boolean; + /** + * see `OrderParameters::sellTokenBalance` + */ + sellTokenBalance?: SellTokenSource; + /** + * see `OrderParameters::buyTokenBalance` + */ + buyTokenBalance?: BuyTokenDestination; + signingScheme: SigningScheme; + signature: Signature; + /** + * If set, the backend enforces that this address matches what is decoded as the *signer* of the signature. This helps catch errors with invalid signature encodings as the backend might otherwise silently work with an unexpected address that for example does not have any balance. + * + */ + from?: Address | null; + /** + * Orders can optionally include a quote ID. This way the order can be linked to a quote and enable providing more metadata when analysing order slippage. + * + */ + quoteId?: number | null; + /** + * This field comes in two forms for backward compatibility. The hash form will eventually stop being accepted. + * + */ + appData: (AppData | AppDataHash); + /** + * May be set for debugging purposes. If set, this field is compared to what the backend internally calculates as the app data hash based on the contents of `appData`. If the hash does not match, an error is returned. If this field is set, then `appData` **MUST** be a string encoding of a JSON object. + * + */ + appDataHash?: AppDataHash | null; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderKind.ts b/external/cow-sdk/src/order-book/generated/models/OrderKind.ts new file mode 100644 index 000000000..d68cb415b --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderKind.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Is this order a buy or sell? + */ +export enum OrderKind { + BUY = 'buy', + SELL = 'sell', +} diff --git a/external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts b/external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts new file mode 100644 index 000000000..a3523347f --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderMetaData.ts @@ -0,0 +1,106 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { BigUint } from './BigUint'; +import type { EthflowData } from './EthflowData'; +import type { OnchainOrderData } from './OnchainOrderData'; +import type { OrderClass } from './OrderClass'; +import type { OrderStatus } from './OrderStatus'; +import type { TokenAmount } from './TokenAmount'; +import type { UID } from './UID'; + +/** + * Extra order data that is returned to users when querying orders but not provided by users when creating orders. + * + */ +export type OrderMetaData = { + /** + * Creation time of the order. Encoded as ISO 8601 UTC. + */ + creationDate: string; + class: OrderClass; + owner: Address; + uid: UID; + /** + * Unused field that is currently always set to `null` and will be removed in the future. + * + * @deprecated + */ + availableBalance?: TokenAmount | null; + /** + * The total amount of `sellToken` that has been executed for this order including fees. + * + */ + executedSellAmount: BigUint; + /** + * The total amount of `sellToken` that has been executed for this order without fees. + * + */ + executedSellAmountBeforeFees: BigUint; + /** + * The total amount of `buyToken` that has been executed for this order. + * + */ + executedBuyAmount: BigUint; + /** + * The total amount of fees that have been executed for this order. + */ + executedFeeAmount: BigUint; + /** + * Has this order been invalidated? + */ + invalidated: boolean; + /** + * Order status. + */ + status: OrderStatus; + /** + * Amount that the signed fee would be without subsidies. + */ + fullFeeAmount?: TokenAmount; + /** + * Liquidity orders are functionally the same as normal smart contract + * orders but are not placed with the intent of actively getting + * traded. Instead they facilitate the trade of normal orders by + * allowing them to be matched against liquidity orders which uses less + * gas and can have better prices than external liquidity. + * + * As such liquidity orders will only be used in order to improve + * settlement of normal orders. They should not be expected to be + * traded otherwise and should not expect to get surplus. + */ + isLiquidityOrder?: boolean; + ethflowData?: EthflowData; + /** + * This represents the actual trader of an on-chain order. + * ### ethflow orders + * In this case, the `owner` would be the `EthFlow` contract and *not* the actual trader. + * + */ + onchainUser?: Address; + /** + * There is some data only available for orders that are placed on-chain. This data can be found in this object. + * + */ + onchainOrderData?: OnchainOrderData; + /** + * Surplus fee that the limit order was executed with. + */ + executedSurplusFee?: BigUint; + /** + * Total fee charged for execution of the order. Contains network fee and protocol fees. + */ + executedFee?: BigUint; + /** + * Token the executed fee was captured in. + */ + executedFeeToken?: Address; + /** + * Full `appData`, which the contract-level `appData` is a hash of. See `OrderCreation` for more information. + * + */ + fullAppData?: string | null; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderParameters.ts b/external/cow-sdk/src/order-book/generated/models/OrderParameters.ts new file mode 100644 index 000000000..811d3b7d6 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderParameters.ts @@ -0,0 +1,59 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { AppDataHash } from './AppDataHash'; +import type { BuyTokenDestination } from './BuyTokenDestination'; +import type { OrderKind } from './OrderKind'; +import type { SellTokenSource } from './SellTokenSource'; +import type { SigningScheme } from './SigningScheme'; +import type { TokenAmount } from './TokenAmount'; + +/** + * Order parameters. + */ +export type OrderParameters = { + /** + * ERC-20 token to be sold. + */ + sellToken: Address; + /** + * ERC-20 token to be bought. + */ + buyToken: Address; + /** + * An optional Ethereum address to receive the proceeds of the trade instead of the owner (i.e. the order signer). + * + */ + receiver?: Address | null; + /** + * Amount of `sellToken` to be sold in atoms. + */ + sellAmount: TokenAmount; + /** + * Amount of `buyToken` to be bought in atoms. + */ + buyAmount: TokenAmount; + /** + * Unix timestamp (`uint32`) until which the order is valid. + */ + validTo: number; + appData: AppDataHash; + /** + * feeRatio * sellAmount + minimal_fee in atoms. + */ + feeAmount: TokenAmount; + /** + * The kind is either a buy or sell order. + */ + kind: OrderKind; + /** + * Is the order fill-or-kill or partially fillable? + */ + partiallyFillable: boolean; + sellTokenBalance?: SellTokenSource; + buyTokenBalance?: BuyTokenDestination; + signingScheme?: SigningScheme; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderPostError.ts b/external/cow-sdk/src/order-book/generated/models/OrderPostError.ts new file mode 100644 index 000000000..ca600dbdc --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderPostError.ts @@ -0,0 +1,44 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type OrderPostError = { + errorType: OrderPostError.errorType; + description: string; +}; + +export namespace OrderPostError { + + export enum errorType { + DUPLICATED_ORDER = 'DuplicatedOrder', + QUOTE_NOT_FOUND = 'QuoteNotFound', + QUOTE_NOT_VERIFIED = 'QuoteNotVerified', + INVALID_QUOTE = 'InvalidQuote', + MISSING_FROM = 'MissingFrom', + WRONG_OWNER = 'WrongOwner', + INVALID_EIP1271SIGNATURE = 'InvalidEip1271Signature', + INSUFFICIENT_BALANCE = 'InsufficientBalance', + INSUFFICIENT_ALLOWANCE = 'InsufficientAllowance', + INVALID_SIGNATURE = 'InvalidSignature', + SELL_AMOUNT_OVERFLOW = 'SellAmountOverflow', + TRANSFER_SIMULATION_FAILED = 'TransferSimulationFailed', + ZERO_AMOUNT = 'ZeroAmount', + INCOMPATIBLE_SIGNING_SCHEME = 'IncompatibleSigningScheme', + TOO_MANY_LIMIT_ORDERS = 'TooManyLimitOrders', + TOO_MUCH_GAS = 'TooMuchGas', + UNSUPPORTED_BUY_TOKEN_DESTINATION = 'UnsupportedBuyTokenDestination', + UNSUPPORTED_SELL_TOKEN_SOURCE = 'UnsupportedSellTokenSource', + UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType', + INSUFFICIENT_VALID_TO = 'InsufficientValidTo', + EXCESSIVE_VALID_TO = 'ExcessiveValidTo', + INVALID_NATIVE_SELL_TOKEN = 'InvalidNativeSellToken', + SAME_BUY_AND_SELL_TOKEN = 'SameBuyAndSellToken', + UNSUPPORTED_TOKEN = 'UnsupportedToken', + INVALID_APP_DATA = 'InvalidAppData', + APP_DATA_HASH_MISMATCH = 'AppDataHashMismatch', + APPDATA_FROM_MISMATCH = 'AppdataFromMismatch', + } + + +} + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts new file mode 100644 index 000000000..990bc052c --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts @@ -0,0 +1,64 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { AppData } from './AppData'; +import type { AppDataHash } from './AppDataHash'; +import type { BuyTokenDestination } from './BuyTokenDestination'; +import type { OrderQuoteSide } from './OrderQuoteSide'; +import type { OrderQuoteValidity } from './OrderQuoteValidity'; +import type { PriceQuality } from './PriceQuality'; +import type { SellTokenSource } from './SellTokenSource'; +import type { SigningScheme } from './SigningScheme'; + +/** + * Request fee and price quote. + */ +export type OrderQuoteRequest = (OrderQuoteSide & OrderQuoteValidity & { + /** + * ERC-20 token to be sold + */ + sellToken: Address; + /** + * ERC-20 token to be bought + */ + buyToken: Address; + /** + * An optional address to receive the proceeds of the trade instead of the + * `owner` (i.e. the order signer). + * + */ + receiver?: Address | null; + /** + * AppData which will be assigned to the order. + * + * Expects either a string JSON doc as defined on + * [AppData](https://github.com/cowprotocol/app-data) or a hex + * encoded string for backwards compatibility. + * + * When the first format is used, it's possible to provide the + * derived appDataHash field. + */ + appData?: (AppData | AppDataHash); + /** + * The hash of the stringified JSON appData doc. + * + * If present, `appData` field must be set with the aforementioned + * data where this hash is derived from. + * + * In case they differ, the call will fail. + */ + appDataHash?: AppDataHash; + sellTokenBalance?: SellTokenSource; + buyTokenBalance?: BuyTokenDestination; + from: Address; + priceQuality?: PriceQuality; + signingScheme?: SigningScheme; + /** + * Flag to signal whether the order is intended for on-chain order placement. Only valid for non ECDSA-signed orders." + * + */ + onchainOrder?: any; +}); + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts new file mode 100644 index 000000000..909b79768 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts @@ -0,0 +1,33 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { OrderParameters } from './OrderParameters'; + +/** + * An order quoted by the backend that can be directly signed and + * submitted to the order creation backend. + * + */ +export type OrderQuoteResponse = { + quote: OrderParameters; + from?: Address; + /** + * Expiration date of the offered fee. Order service might not accept + * the fee after this expiration date. Encoded as ISO 8601 UTC. + * + */ + expiration: string; + /** + * Quote ID linked to a quote to enable providing more metadata when analysing order slippage. + * + */ + id?: number; + /** + * Whether it was possible to verify that the quoted amounts are accurate using a simulation. + * + */ + verified: boolean; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts new file mode 100644 index 000000000..acaca69dc --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts @@ -0,0 +1,32 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { OrderQuoteSideKindBuy } from './OrderQuoteSideKindBuy'; +import type { OrderQuoteSideKindSell } from './OrderQuoteSideKindSell'; +import type { TokenAmount } from './TokenAmount'; + +/** + * The buy or sell side when quoting an order. + */ +export type OrderQuoteSide = ({ + kind: OrderQuoteSideKindSell; + /** + * The total amount that is available for the order. From this value, the fee is deducted and the buy amount is calculated. + * + */ + sellAmountBeforeFee: TokenAmount; +} | { + kind: OrderQuoteSideKindSell; + /** + * The `sellAmount` for the order. + */ + sellAmountAfterFee: TokenAmount; +} | { + kind: OrderQuoteSideKindBuy; + /** + * The `buyAmount` for the order. + */ + buyAmountAfterFee: TokenAmount; +}); + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts new file mode 100644 index 000000000..b047d5711 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum OrderQuoteSideKindBuy { + BUY = 'buy', +} diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts new file mode 100644 index 000000000..4da228ed4 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts @@ -0,0 +1,7 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export enum OrderQuoteSideKindSell { + SELL = 'sell', +} diff --git a/external/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts b/external/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts new file mode 100644 index 000000000..9f6fd921f --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The validity for the order. + */ +export type OrderQuoteValidity = ({ + /** + * Unix timestamp (`uint32`) until which the order is valid. + */ + validTo?: number; +} | { + /** + * Number (`uint32`) of seconds that the order should be valid for. + */ + validFor?: number; +}); + diff --git a/external/cow-sdk/src/order-book/generated/models/OrderStatus.ts b/external/cow-sdk/src/order-book/generated/models/OrderStatus.ts new file mode 100644 index 000000000..9229adfde --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/OrderStatus.ts @@ -0,0 +1,14 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The current order status. + */ +export enum OrderStatus { + PRESIGNATURE_PENDING = 'presignaturePending', + OPEN = 'open', + FULFILLED = 'fulfilled', + CANCELLED = 'cancelled', + EXPIRED = 'expired', +} diff --git a/external/cow-sdk/src/order-book/generated/models/PreSignature.ts b/external/cow-sdk/src/order-book/generated/models/PreSignature.ts new file mode 100644 index 000000000..e3b21c64b --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/PreSignature.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Empty signature bytes. Used for "presign" signatures. + */ +export type PreSignature = string; diff --git a/external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts b/external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts new file mode 100644 index 000000000..c084a7d7e --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts @@ -0,0 +1,21 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +export type PriceEstimationError = { + errorType: PriceEstimationError.errorType; + description: string; +}; + +export namespace PriceEstimationError { + + export enum errorType { + QUOTE_NOT_VERIFIED = 'QuoteNotVerified', + UNSUPPORTED_TOKEN = 'UnsupportedToken', + ZERO_AMOUNT = 'ZeroAmount', + UNSUPPORTED_ORDER_TYPE = 'UnsupportedOrderType', + } + + +} + diff --git a/external/cow-sdk/src/order-book/generated/models/PriceImprovement.ts b/external/cow-sdk/src/order-book/generated/models/PriceImprovement.ts new file mode 100644 index 000000000..362fa4b38 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/PriceImprovement.ts @@ -0,0 +1,18 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Quote } from './Quote'; + +/** + * The protocol fee is taken as a percent of the order price improvement which is a difference between the executed price and the best quote. + */ +export type PriceImprovement = { + factor: number; + maxVolumeFactor: number; + /** + * The best quote received. + */ + quote: Quote; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/PriceQuality.ts b/external/cow-sdk/src/order-book/generated/models/PriceQuality.ts new file mode 100644 index 000000000..c555dc0a1 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/PriceQuality.ts @@ -0,0 +1,20 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * How good should the price estimate be? + * + * Fast: The price estimate is chosen among the fastest N price estimates. + * Optimal: The price estimate is chosen among all price estimates. + * Verified: The price estimate is chosen among all verified/simulated + * price estimates. + * + * **NOTE**: Orders are supposed to be created from `verified` or `optimal` + * price estimates. + */ +export enum PriceQuality { + FAST = 'fast', + OPTIMAL = 'optimal', + VERIFIED = 'verified', +} diff --git a/external/cow-sdk/src/order-book/generated/models/Quote.ts b/external/cow-sdk/src/order-book/generated/models/Quote.ts new file mode 100644 index 000000000..6f06bdaf0 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Quote.ts @@ -0,0 +1,25 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { TokenAmount } from './TokenAmount'; + +/** + * A calculated order quote. + * + */ +export type Quote = { + /** + * The amount of the sell token. + */ + sellAmount?: TokenAmount; + /** + * The amount of the buy token. + */ + buyAmount?: TokenAmount; + /** + * The amount that needs to be paid, denominated in the sell token. + */ + fee?: TokenAmount; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts b/external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts new file mode 100644 index 000000000..132027095 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/SellTokenSource.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Where should the `sellToken` be drawn from? + */ +export enum SellTokenSource { + ERC20 = 'erc20', + INTERNAL = 'internal', + EXTERNAL = 'external', +} diff --git a/external/cow-sdk/src/order-book/generated/models/Signature.ts b/external/cow-sdk/src/order-book/generated/models/Signature.ts new file mode 100644 index 000000000..ebb756afe --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Signature.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { EcdsaSignature } from './EcdsaSignature'; +import type { PreSignature } from './PreSignature'; + +/** + * A signature. + */ +export type Signature = (EcdsaSignature | PreSignature); + diff --git a/external/cow-sdk/src/order-book/generated/models/SigningScheme.ts b/external/cow-sdk/src/order-book/generated/models/SigningScheme.ts new file mode 100644 index 000000000..b5eced76d --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/SigningScheme.ts @@ -0,0 +1,13 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * How was the order signed? + */ +export enum SigningScheme { + EIP712 = 'eip712', + ETHSIGN = 'ethsign', + PRESIGN = 'presign', + EIP1271 = 'eip1271', +} diff --git a/external/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts b/external/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts new file mode 100644 index 000000000..7d759cf42 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts @@ -0,0 +1,36 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { CompetitionAuction } from './CompetitionAuction'; +import type { SolverSettlement } from './SolverSettlement'; +import type { TransactionHash } from './TransactionHash'; + +/** + * The settlements submitted by every solver for a specific auction. + * The `auctionId` corresponds to the id external solvers are provided + * with. + * + */ +export type SolverCompetitionResponse = { + /** + * The ID of the auction the competition info is for. + */ + auctionId?: number; + /** + * The hash of the transaction that the winning solution of this info was submitted in. + */ + transactionHash?: TransactionHash | null; + /** + * Gas price used for ranking solutions. + */ + gasPrice?: number; + liquidityCollectedBlock?: number; + competitionSimulationBlock?: number; + auction?: CompetitionAuction; + /** + * Maps from solver name to object describing that solver's settlement. + */ + solutions?: Array; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/SolverSettlement.ts b/external/cow-sdk/src/order-book/generated/models/SolverSettlement.ts new file mode 100644 index 000000000..cc7242163 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/SolverSettlement.ts @@ -0,0 +1,53 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { BigUint } from './BigUint'; +import type { UID } from './UID'; + +export type SolverSettlement = { + /** + * Name of the solver. + */ + solver?: string; + /** + * The address used by the solver to execute the settlement on-chain. + * + * This field is missing for old settlements, the zero address has been + * used instead. + */ + solverAddress?: string; + objective?: { + /** + * The total objective value used for ranking solutions. + */ + total?: number; + surplus?: number; + fees?: number; + cost?: number; + gas?: number; + }; + /** + * The score of the current auction as defined in [CIP-20](https://snapshot.org/#/cow.eth/proposal/0x2d3f9bd1ea72dca84b03e97dda3efc1f4a42a772c54bd2037e8b62e7d09a491f). + * It is `null` for old auctions. + * + */ + score?: BigUint | null; + /** + * The prices of tokens for settled user orders as passed to the settlement contract. + * + */ + clearingPrices?: Record; + /** + * Touched orders. + */ + orders?: Array<{ + id?: UID; + executedAmount?: BigUint; + }>; + /** + * whether the solution is a winner (received the right to get executed) or not + */ + isWinner?: boolean; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/Surplus.ts b/external/cow-sdk/src/order-book/generated/models/Surplus.ts new file mode 100644 index 000000000..067ff00b9 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Surplus.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The protocol fee is taken as a percent of the surplus. + */ +export type Surplus = { + factor: number; + maxVolumeFactor: number; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/TokenAmount.ts b/external/cow-sdk/src/order-book/generated/models/TokenAmount.ts new file mode 100644 index 000000000..877710b46 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/TokenAmount.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Amount of a token. `uint256` encoded in decimal. + */ +export type TokenAmount = string; diff --git a/external/cow-sdk/src/order-book/generated/models/TotalSurplus.ts b/external/cow-sdk/src/order-book/generated/models/TotalSurplus.ts new file mode 100644 index 000000000..26e6a3c78 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/TotalSurplus.ts @@ -0,0 +1,15 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The total surplus. + * + */ +export type TotalSurplus = { + /** + * The total surplus. + */ + totalSurplus?: string; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/Trade.ts b/external/cow-sdk/src/order-book/generated/models/Trade.ts new file mode 100644 index 000000000..8c9efac5e --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Trade.ts @@ -0,0 +1,63 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +import type { Address } from './Address'; +import type { BigUint } from './BigUint'; +import type { ExecutedProtocolFee } from './ExecutedProtocolFee'; +import type { TokenAmount } from './TokenAmount'; +import type { TransactionHash } from './TransactionHash'; +import type { UID } from './UID'; + +/** + * Trade data such as executed amounts, fees, `orderUid` and `block` number. + * + */ +export type Trade = { + /** + * Block in which trade occurred. + */ + blockNumber: number; + /** + * Index in which transaction was included in block. + */ + logIndex: number; + /** + * UID of the order matched by this trade. + */ + orderUid: UID; + /** + * Address of trader. + */ + owner: Address; + /** + * Address of token sold. + */ + sellToken: Address; + /** + * Address of token bought. + */ + buyToken: Address; + /** + * Total amount of `sellToken` that has been executed for this trade (including fees). + */ + sellAmount: TokenAmount; + /** + * The total amount of `sellToken` that has been executed for this order without fees. + */ + sellAmountBeforeFees: BigUint; + /** + * Total amount of `buyToken` received in this trade. + */ + buyAmount: TokenAmount; + /** + * Transaction hash of the corresponding settlement transaction containing the trade (if available). + */ + txHash: TransactionHash | null; + /** + * Executed protocol fees for this trade, together with the fee policies used. Listed in the order they got applied. + * + */ + executedProtocolFees?: Array; +}; + diff --git a/external/cow-sdk/src/order-book/generated/models/TransactionHash.ts b/external/cow-sdk/src/order-book/generated/models/TransactionHash.ts new file mode 100644 index 000000000..dbdf0d100 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/TransactionHash.ts @@ -0,0 +1,8 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * 32 byte digest encoded as a hex with `0x` prefix. + */ +export type TransactionHash = string; diff --git a/external/cow-sdk/src/order-book/generated/models/UID.ts b/external/cow-sdk/src/order-book/generated/models/UID.ts new file mode 100644 index 000000000..9fafb8b0a --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/UID.ts @@ -0,0 +1,12 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * Unique identifier for the order: 56 bytes encoded as hex with `0x` + * prefix. + * + * Bytes 0..32 are the order digest, bytes 30..52 the owner address and + * bytes 52..56 the expiry (`validTo`) as a `uint32` unix epoch timestamp. + */ +export type UID = string; diff --git a/external/cow-sdk/src/order-book/generated/models/Volume.ts b/external/cow-sdk/src/order-book/generated/models/Volume.ts new file mode 100644 index 000000000..c7a1d37c0 --- /dev/null +++ b/external/cow-sdk/src/order-book/generated/models/Volume.ts @@ -0,0 +1,11 @@ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ + +/** + * The protocol fee is taken as a percent of the order volume. + */ +export type Volume = { + factor: number; +}; + diff --git a/external/cow-sdk/src/order-book/index.ts b/external/cow-sdk/src/order-book/index.ts new file mode 100644 index 000000000..7690dec7b --- /dev/null +++ b/external/cow-sdk/src/order-book/index.ts @@ -0,0 +1,5 @@ +export * from './api' +export * from './types' +export * from './generated' +export * from './request' +export * from './quoteAmountsAndCostsUtils' diff --git a/external/cow-sdk/src/order-book/mock.ts b/external/cow-sdk/src/order-book/mock.ts new file mode 100644 index 000000000..4547aaaba --- /dev/null +++ b/external/cow-sdk/src/order-book/mock.ts @@ -0,0 +1,207 @@ +export const AUCTION = { + auctionId: 7841036, + transactionHash: '0xe395eac238e7c6b2f4c5dea57d4a3d9a2b42d9f4ae5574dd003f9e5dd76abeee', + gasPrice: 19799335238.0, + auctionStartBlock: 17427954, + liquidityCollectedBlock: 17427954, + competitionSimulationBlock: 17427956, + auction: { + orders: [ + '0x6ce74d3f1523a5d0f5b5684867c446e8020794f57f8df36f761e8887b6147369212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0xfc8cae1ff94ed3e80a6921ee0889988cd1e327bf927466bc9be0c839a141b78dffab14b181409170378471b13ff2bff5be012c646486431f', + '0xb0bb0128cdb33460f7e99ec768aff4e95c4a4273b013807b0055286542d03319ffab14b181409170378471b13ff2bff5be012c6464864347', + '0x04b37ef7835b504082dfe6e53294e889de3472200ab31bb2610d0ae1f52f9ab0f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae52', + '0x1ea52d3250ac32a4c42a3138ef26379c4f7bf710434357743957d159bd835838f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6f', + '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5', + '0x861a83e3eddaa0546b8e1f8fbc72463447b4254df74b29ea5fcf4e404115cab0ffab14b181409170378471b13ff2bff5be012c646486431b', + '0xa9ad49a716e9980831644aa12aa746fe57e23db90f27a72ba1de00fca2296bbcffab14b181409170378471b13ff2bff5be012c646486431d', + '0x6e3d9c31fb474df9a6a645a78fdb75150268b03ca14af28e5676b1fd5c5be941ffab14b181409170378471b13ff2bff5be012c6464864322', + '0x6ff54760afbf0ecf45d8a5bde84a59dc7a90486ecad00e45eb02bb60920f1949ffab14b181409170378471b13ff2bff5be012c6464864331', + '0xefa2952f67cc4ce85db87776d544735afb093cea79ca0a8055a5040042af2c79ffab14b181409170378471b13ff2bff5be012c6464864335', + '0xfc8d435455ce42d42a3320974e30e8bdf2e56aa1907cc65dd3ad9cbe833b712bffab14b181409170378471b13ff2bff5be012c6464864337', + '0x30d31bbb00738abc2589fa6968327f3cca355872ecad1ce459729329c57b4615ffab14b181409170378471b13ff2bff5be012c6464864339', + '0x36fe35cfeb47571d513ae4c5b629bbcdb54e56098a9bef85b90007014614589fffab14b181409170378471b13ff2bff5be012c6464864340', + '0xfe4f01a871a5c72828c4fc58740a9db486ee4f1fbb670fa920003a10799afe1effab14b181409170378471b13ff2bff5be012c646486433d', + '0x6902a76f7e04cc9f18fa67d37ff0e3c9bcbd6a7ff0e05409279bf41c5c463309ffab14b181409170378471b13ff2bff5be012c6464864342', + '0x22cfb0c5898bb4bb5d5f0194f08dc69e8cf85aa2d4a864a504bec51854480ef1ffab14b181409170378471b13ff2bff5be012c6464864363', + '0xc5cb73ebe304242207c624eed3f6832ec87b8cebfa84415cf18e378a6c276b5dffab14b181409170378471b13ff2bff5be012c6464864345', + '0xa798ed49a7ed63b9c76d6987da672fa4fdaae829e06707f8d4def25609468762ffab14b181409170378471b13ff2bff5be012c6464864333', + '0x58c3b5fd3dddbc4075c4ebcd21b6c3e5ad0debbd91893971ce95a35a7880b811ffab14b181409170378471b13ff2bff5be012c6464864366', + '0xbd0ecf502497cd1a118ea4097fb3462132edf25326ef01e264754adf9446ad18ffab14b181409170378471b13ff2bff5be012c6464864376', + '0x2857c1345b6c63f8c023f2d67b498f4b14c26205811d50d448bed6d4d055fbfdffab14b181409170378471b13ff2bff5be012c646486436c', + '0x3246e215692af6a4a5b53fb0272c4f739f190806250dc3cb1623b0f92ce00d42ffab14b181409170378471b13ff2bff5be012c6464864377', + '0xc91c5d2907a5f1012c370b3d0e29e5a3b382dc0fb258edc02c909565cb0ee3b7ffab14b181409170378471b13ff2bff5be012c6464864379', + '0x0f7aeea71a003ed246eee02b006654da2d3a3ac1a6d6b9147be14b71cc7806a8ffab14b181409170378471b13ff2bff5be012c646486437f', + '0xf1744015fa0486beed7c9422cad33500506b2a15a96f0a3aad3c27e9d6ad5d71ffab14b181409170378471b13ff2bff5be012c6464864384', + '0x4dcdd92efe242b57de498c375c11f61c94205de72bb6d2d76ffe17757da846b1ffab14b181409170378471b13ff2bff5be012c6464864389', + '0x72ce5165a8a20f00d029ee08375c02bff2f619def220643f02068c6f483529c1ffab14b181409170378471b13ff2bff5be012c646486437c', + '0xcc4b458cf9a79e125ab91ee992d255b9054554a42e62d410e80fff5b35c00dc4ffab14b181409170378471b13ff2bff5be012c646486436f', + '0xca315a5989d145091ebfe0cf29d866dd9431fc56c42bd6785fe1dbd08e3d35c4833999346611ed90fe387f27048cc7823e58e65b64888c18', + '0x8c62072bdef1785f03a11304893752ff6865cfe4b604359a158618caaa64e66cf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6d', + '0x2c2653756cab81716faa014c6dc3a70acf80e47990560784946715c839e27d43f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac69', + '0x6c3abf4514e162c6d71d55b4bad1a512a4778337d99720981cda1fdd9caa4015f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac72', + '0x807a2a3dc26b46be02bb8c0627a43a5857d6a585b349db4242ddb93d911cad93f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac77', + '0xd79a46b01f38839956acbe0c73763c863badd657db335123f10e5c1d3f04f67df2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac74', + '0x79407b3a4127f2ed0c70b1d9902c21c7cdc1bfcd45b6e011d9a61cdf8079ed2ef2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac72', + '0xb61cc6c296d947b2d553159d4efe04379a372799354590a47c15073e656cd56cffab14b181409170378471b13ff2bff5be012c6464864386', + '0x4d99ff9d78e34a63b6118b72ae9e63aba3dfdf9fd63ea5a431414e096748747effab14b181409170378471b13ff2bff5be012c6464864387', + '0x978ac1bd072f97f1b704100a25dc1e702c180078c0b0257de8aa3e3501c0421bf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac76', + '0xbe5ec4a9e4ae1aa42632640d76a5dd1471a3bcf4aad6e0e6d2bc7e77f4c93731f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac79', + '0x95684588d9cd55847ad0a34eee21afda3ea2b7be04462e72232459bafb8238e9f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac75', + '0xafa31ef83ed733ae200f5e1a8c05c1d059080fbf3aca39070b6eba01c3be618ef2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac77', + '0x309a73c7cef4245508888ae886e26fb73c8a0b9d7643edd0d0a5575456a23ee5f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ace3', + '0x5f78d6371d05936d6335404a708b55a75606939f4524d40cf8b89f52690a4e40f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ace2', + '0x7390ea4e46846fb8b461ed51a3a7b5f707092363ea990c61f042a5098fa873a6ffab14b181409170378471b13ff2bff5be012c6464864317', + '0x7203b8397ae4f4b1d8cb90a8a986c05b754de40dcbc00534e89e6a80dde74227f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ad58', + '0x78f8ccb88344df7b900d876383d5d860e9f91ce0d7356ad88b815a4f4dcf0eb9f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ad59', + '0xfc5ed4cbd446419008327f3ae659dd0e67b911bd5b1b66c26f755792c8a0c169f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6c', + '0xba3e3587214186a6b4daaa7df3150fad013f93dd2dc8541f4863664c40eea4e2f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480adcf', + '0x58a9a54f071ef10c8ff132b0527705499e0a1f73847d8f4b11a7b50a7a2bc977f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480add1', + '0xd129bec132497aa5781f4b0166e93c3ec4e8df2392432446a4606d129cf6d464f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480add2', + '0xfbcbb2ad109c8d3c45898f8f8391ab3138b5adb27f240f9d8cae45f2c08622a1f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6f', + '0xe460f13bac340b9a04e42530ee552d4a570428d8e4b240e661816253c8ed39f4f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae49', + '0x61854282ccb8f74fca546422a0e43ef315999be74d494b0b58bffa1a12b90a1ff2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae4b', + '0x9aa030a7b10736ec208679aea555ca05ac62a5f68c6d328559f22c5e3ac5e563f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae53', + '0xb05b7a9aff68b853f76a90e780221ba39da5fba40c0026bc0168b1d6df54e27ff2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae5a', + '0x00552de082160854a73ae00e1dadad2647c38c7e88d8854fbc717c54acb6877ef2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae55', + '0x4b4d4bcf0b29da380f8949d1270e818b6fc1286b4232b153d72e8280a39db0c5f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae50', + '0xf8350924024e99c81c89afb41f8401f4ad225162a090da4d1715ce0653403070f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae4e', + '0xbf5e9c6dc9ca9c1bf8c67e30613e1aa113a50cb0e8e07ba2d3e2135a13eeec00f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae57', + '0x660a38bd82dea64be6ca2203bb8cae4f38fd8ae8e1d2c58ca0b8a3ce1ae29879f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae58', + '0x8e08928cd896b15d4ce4e9264ac1fe7ccd71d480a13c1217fa67acedcfac4e01f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae58', + '0x2a719cdb087a4beeb6139f32e0cff2aa4fe464032dc5d9a28c5253c22de37cddf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae4f', + '0x768285a90d814ab69f475ed87891c6db117ae933b0e82174f501529496c8301df2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae55', + '0x37a6ceadfcb9610cf89f1c4b7cffa91add7c6ef7177dea383686020bd0469d2af2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac78', + '0x923e3a6d83d54fac35b59d2dde63b095e24a0c9839683ce04aff89ad50f66416f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae5a', + '0x6ca54afa58ce4922c82c2ebef5c55d3bfa97034dffe9eacc343b8bf89c7689edf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae51', + '0x1a3ff33c1c1ba34a25a68f2aa4c7c65435eba29ea2c5b1e8e3680029401bfc2bf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480af38', + '0xdc2ecb90a18963612e813097063209f94ca3b391a6f88e33d57fa8d47770c761f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ae59', + '0x513df298b7f3c99c38bfafbb628c38d0444c91dfe4fb317f949e19713e1a5440f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480b02a', + '0xd7dc1917712f33155c217c8ad2f7f780d957dd15a95b4931f62616ab2da8782bf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480b02d', + '0x215c3037693bde5faf51e08cc1811e49c29092a4434991d9cbb218f5b040a9abf2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480b02f', + '0xc73c86b37fc0dc7e745bb8b65d974be4c065bf63b6e4fdff3e2d6c3572c5bb12f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480b02d', + '0x0a7c6542c1e8d5240af76c5e48ae853ad85ee36e6968171faae408f3b8390f88212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x70bd82751666934571e7d87112f87d7bf46128e224212fab0a98ae9baf5ab4c2212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0xf9987770394b1b221d14ab1baddddfebe16fe1dd92ae440f47047678b6cba09f212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0xbe473430b92d3d622d2902562bc9d63e4eb69f5d91e2085bf1095e0671ed89e9212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x8fbfd9a666baa050db9e6232319be1e8c9b33cd1e959f6ad23f5bcd8cd79c028212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x621ef9151163f6dd2f7466a2b85fb2122bdfa810d939318a5e4cbac81ac34aa3212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x913c4c7db3e905547f326f5092f75fdd759cfb918606cd27e82d8a16fa59027f212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0xae3daede1f5fb13135be879eca29955558ad4178cdaaec53121e5d586535b892212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x1c1b90a9054b80646705cf6145306e75c2653202ac3a94f5efec776c2550e609212ac2a9d605bd50a6b7c8770b8a542f559007456480ca68', + '0x7edee7c9cb7549f62af93805f0debc99ffa2348e985b4ccc1ef42ff349cdb8f5f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6b', + '0x49ea574ccce1b7df6c2f876b4fbb06319f48691d714beba22fd4a7321d618621f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480ac6d', + '0xc317a910f40f45fcfb9c38c7b96673603a6b0180d226e17e2c8803980b0d83a3f2c5d68cc0a12c7b6ca6c07450fa6e3611d88f6c6480aec1', + '0x3e7b2860c56846f9e6758285195a92ba8793235d3a93273e0788ef3fa8ddde58ffab14b181409170378471b13ff2bff5be012c646486436a', + ], + prices: { + '0x6b175474e89094c44da98b954eedeac495271d0f': '538510604741461', + '0x853d955acef822db058eb8505911ed77f175b99e': '520868509007270', + '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': '538277585491985927839416320', + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '1000000000000000000', + '0xdac17f958d2ee523a2206206994597c13d831ec7': '538797593234685872752820224', + }, + }, + solutions: [ + { + solver: 'Raven', + solverAddress: '0x3c3513c88bd7a919cb732f777cd80cd773beb011', + objective: { + total: 4078540820367437.5, + surplus: 6230502848316324.0, + fees: 2178469377965521.5, + cost: 4330431405914408.0, + gas: 218716, + }, + scoreDiscounted: '4078540820367437', + ranking: 4, + clearingPrices: { + '0x6b175474e89094c44da98b954eedeac495271d0f': '18446744073709551616', + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '34240872837784737111091', + }, + orders: [ + { + id: '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5', + executedAmount: '217115221604746960822', + }, + ], + callData: + '0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000074033914e0bb8cb5c330000000000000000000000000000000000000000000000000197cf2e6296270c00000000000000000000000000000000000000000000000bc51437b949289fb6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000079063d9173c09887d536924e2f6eadbabac099f500000000000000000000000000000000000000000000000bc51437b949289fb60000000000000000000000000000000000000000000000000181ac92658a636800000000000000000000000000000000000000000000000000000000648998c56a59b216602f46662eb9a5478e34426d11452ebd261fe5a91938477a29da28cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000bc51437b949289fb600000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041bffeacadee5c45f5d9a0297ad89efaab79d0d04cb230031be3c81f4c7b28154279567bf5a03057a451f5e931c54a89cfecde4d3df9a1e8dbc056aa01ef5f9de11b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001200000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044a9059cbb000000000000000000000000c3d03e4f041fd4cd388c549ee2a29a9e5075882f00000000000000000000000000000000000000000000000b8cf03609ab5141b900000000000000000000000000000000000000000000000000000000000000000000000000000000c3d03e4f041fd4cd388c549ee2a29a9e5075882f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a4022c0d9f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000197cf2e6296270c0000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + }, + { + solver: '1Inch', + solverAddress: '0x340c0c9e87c1e1ae5677506412e988748d8417ce', + objective: { + total: 3981919111139645.0, + surplus: 3981681519116789.0, + fees: 4426240389131089.5, + cost: 4426002797108233.5, + gas: 223543, + }, + score: '4097940713538417', + ranking: 3, + clearingPrices: { + '0x6b175474e89094c44da98b954eedeac495271d0f': '112539292321490269', + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '208895809860281634103', + }, + orders: [ + { + id: '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5', + executedAmount: '217115221604746960822', + }, + ], + callData: + '0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000018fd1e3de18a55d00000000000000000000000000000000000000000000000b5303004a5da10d37000000000000000000000000000000000000000000000000018fd1e3de18a55d00000000000000000000000000000000000000000000000bc51437b949289fb6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000079063d9173c09887d536924e2f6eadbabac099f500000000000000000000000000000000000000000000000bc51437b949289fb60000000000000000000000000000000000000000000000000181ac92658a636800000000000000000000000000000000000000000000000000000000648998c56a59b216602f46662eb9a5478e34426d11452ebd261fe5a91938477a29da28cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000bc51437b949289fb600000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041bffeacadee5c45f5d9a0297ad89efaab79d0d04cb230031be3c81f4c7b28154279567bf5a03057a451f5e931c54a89cfecde4d3df9a1e8dbc056aa01ef5f9de11b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001111111254eeb25477b68fb85ed929f73a9605820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c80502b1c50000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000bc51437b949289fb6000000000000000000000000000000000000000000000000019f22d25a77caf70000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000003b6d0340c3d03e4f041fd4cd388c549ee2a29a9e5075882fd26cd1970000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + }, + { + solver: 'BaselineSolver', + solverAddress: '0x542aad0402f973a6fcfbf5d60dfc1b0c4233118c', + objective: { + total: 3779189953929625.0, + surplus: 6601050610055099.0, + fees: 1979933523800000.0, + cost: 4801794179925474.0, + gas: 242523, + }, + score: '4166333883870334', + ranking: 2, + clearingPrices: { + '0x6b175474e89094c44da98b954eedeac495271d0f': '115158661412428579', + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '213438537234249621591', + }, + orders: [ + { + id: '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5', + executedAmount: '217115221604746960822', + }, + ], + callData: + '0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000001992031424c1b2300000000000000000000000000000000000000000000000b920e02c4ca6f205700000000000000000000000000000000000000000000000001992031424c1b2300000000000000000000000000000000000000000000000bc51437b949289fb6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000079063d9173c09887d536924e2f6eadbabac099f500000000000000000000000000000000000000000000000bc51437b949289fb60000000000000000000000000000000000000000000000000181ac92658a636800000000000000000000000000000000000000000000000000000000648998c56a59b216602f46662eb9a5478e34426d11452ebd261fe5a91938477a29da28cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000bc51437b949289fb600000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041bffeacadee5c45f5d9a0297ad89efaab79d0d04cb230031be3c81f4c7b28154279567bf5a03057a451f5e931c54a89cfecde4d3df9a1e8dbc056aa01ef5f9de11b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ba12222222228d8ba445958a75a0704d566bf2c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c452bbbe2900000000000000000000000000000000000000000000000000000000000000e00000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab4100000000000000000000000000000000000000000000000000000000000000000000000000000000000000009008d19f58aabd9ed0d60971565aa8510560ab41000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bc81790de143d668780000000000000000000000000000000000000000000000000000000000000000b09dea16768f0799065c475be02919503cb2a3500020000000000000000001a00000000000000000000000000000000000000000000000000000000000000010000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000001a02c5fcbf0efb500000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + }, + { + solver: 'SeaSolver', + solverAddress: '0xd01ba5b3c4142f358effb4d6cb44a11e31600330', + objective: { + total: 3927629963167549.0, + surplus: 5777361492665867.0, + fees: 2574132939404211.5, + cost: 4423864468902529.5, + gas: 223435, + }, + score: '4468486838087401', + ranking: 1, + clearingPrices: { + '0x6b175474e89094c44da98b954eedeac495271d0f': '116908885875979347000000000000000000', + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '217115221604746960822000000000000000000', + }, + orders: [ + { + id: '0x69b7bedc70cf0f13900a369772c6195483830590b09678dc4776bc45bf7f382b79063d9173c09887d536924e2f6eadbabac099f5648998c5', + executedAmount: '217115221604746960822', + }, + ], + callData: + '0x13d79a0b0000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000000000000000000000000000000000000000000040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000016840d97b7c8dba7d60f5c956c000000000000000000000000000000000000a356dee409c0f078a94d24501d1800000000000000000000000000000000000000000000000000000196330d310cc97300000000000000000000000000000000000000000000000bc51437b949289fb6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000079063d9173c09887d536924e2f6eadbabac099f500000000000000000000000000000000000000000000000bc51437b949289fb60000000000000000000000000000000000000000000000000181ac92658a636800000000000000000000000000000000000000000000000000000000648998c56a59b216602f46662eb9a5478e34426d11452ebd261fe5a91938477a29da28cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000bc51437b949289fb600000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000041bffeacadee5c45f5d9a0297ad89efaab79d0d04cb230031be3c81f4c7b28154279567bf5a03057a451f5e931c54a89cfecde4d3df9a1e8dbc056aa01ef5f9de11b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001111111254fb6c44bac0bed2854e76f90643097d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c42e95b6c80000000000000000000000006b175474e89094c44da98b954eedeac495271d0f00000000000000000000000000000000000000000000000b82bde6ce55f5370b0000000000000000000000000000000000000000000000000196330d310cc9730000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000003b6d0340c3d03e4f041fd4cd388c549ee2a29a9e5075882f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + }, + ], +} diff --git a/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts b/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts new file mode 100644 index 000000000..a954954fb --- /dev/null +++ b/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts @@ -0,0 +1,173 @@ +import { OrderParameters, OrderKind, SigningScheme, BuyTokenDestination, SellTokenSource } from './generated' +import { getQuoteAmountsAndCosts } from './quoteAmountsAndCostsUtils' + +const otherFields = { + buyToken: '0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab', + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + buyTokenBalance: BuyTokenDestination.ERC20, + sellTokenBalance: SellTokenSource.ERC20, + signingScheme: SigningScheme.EIP712, + partiallyFillable: false, + receiver: '0x0000000000000000000000000000000000000000', + validTo: 1716904696, + appData: '{}', + appDataHash: '0x0', +} + +const sellDecimals = 18 +const buyDecimals = 6 + +/** + * Since we have partner fees, now it's not clear what does it mean `feeAmount`? + * To avoid confusion, we should consider this `feeAmount` as `networkCosts` + * + * Fee is always taken from sell token (for sell/buy orders): + * 3855544038281082 + 156144455961718918 = 160000000000000000 + * + * Again, to avoid confusion, we should take this `sellAmount` as `sellAmountBeforeNetworkCosts` + * Hence, `buyAmount` is `buyAmountAfterNetworkCosts` because this amount is what you will get for the sell amount + * + * In this order we are selling 0.16 WETH for 1863 COW - network costs + */ +const SELL_ORDER: OrderParameters = { + kind: OrderKind.SELL, + sellAmount: '156144455961718918', + feeAmount: '3855544038281082', + buyAmount: '18632013982', + ...otherFields, +} + +/** + * In this order we are buying 2000 COW for 1.6897 WETH + network costs + */ +const BUY_ORDER: OrderParameters = { + kind: OrderKind.BUY, + sellAmount: '168970833896526983', + feeAmount: '2947344072902629', + buyAmount: '2000000000', + ...otherFields, +} + +describe('Calculation of before/after fees amounts', () => { + describe('Network costs', () => { + describe.each(['sell', 'buy'])('%s order', (type: string) => { + const orderParams = type === 'sell' ? SELL_ORDER : BUY_ORDER + + it('Sell amount after network costs should be sellAmount + feeAmount', () => { + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + slippagePercentBps: 0, + partnerFeeBps: undefined, + }) + + expect(result.afterNetworkCosts.sellAmount.toString()).toBe( + String(BigInt(orderParams.sellAmount) + BigInt(orderParams.feeAmount)) + ) + }) + + it('Buy amount before network costs should be SellAmountAfterNetworkCosts * Price', () => { + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + slippagePercentBps: 0, + partnerFeeBps: undefined, + }) + + expect(result.beforeNetworkCosts.buyAmount.toString()).toBe( + ( + (+orderParams.sellAmount + +orderParams.feeAmount) * // SellAmountAfterNetworkCosts + (+orderParams.buyAmount / +orderParams.sellAmount) + ) // Price + .toFixed() + ) + }) + }) + }) + + describe('Partner fee', () => { + const partnerFeeBps = 100 + + describe('Sell order', () => { + it('Partner fee should be substracted from buy amount after network costs', () => { + const orderParams = SELL_ORDER + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + partnerFeeBps, + slippagePercentBps: 0, + }) + + const buyAmountBeforeNetworkCosts = + (+orderParams.sellAmount + +orderParams.feeAmount) * // SellAmountAfterNetworkCosts + (+orderParams.buyAmount / +orderParams.sellAmount) // Price + + const partnerFeeAmount = Math.floor((buyAmountBeforeNetworkCosts * partnerFeeBps) / 100 / 100) + + expect(Number(result.costs.partnerFee.amount)).toBe(partnerFeeAmount) + }) + }) + + describe('Buy order', () => { + it('Partner fee should be added on top of sell amount after network costs', () => { + const orderParams = BUY_ORDER + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + partnerFeeBps, + slippagePercentBps: 0, + }) + + const partnerFeeAmount = Math.floor((+orderParams.sellAmount * partnerFeeBps) / 100 / 100) + + expect(Number(result.costs.partnerFee.amount)).toBe(partnerFeeAmount) + }) + }) + }) + + describe('Slippage', () => { + const slippagePercentBps = 200 // 2% + + describe('Sell order', () => { + it('Slippage should be substracted from buy amount after partner fees', () => { + const orderParams = SELL_ORDER + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + partnerFeeBps: undefined, + slippagePercentBps, + }) + + const buyAmountAfterNetworkCosts = +orderParams.buyAmount + + const slippageAmount = (buyAmountAfterNetworkCosts * slippagePercentBps) / 100 / 100 + + expect(Number(result.afterSlippage.buyAmount)).toBe(Math.ceil(buyAmountAfterNetworkCosts - slippageAmount)) + }) + }) + + describe('Buy order', () => { + it('Slippage should be added on top of sell amount after partner costs', () => { + const orderParams = BUY_ORDER + const result = getQuoteAmountsAndCosts({ + orderParams, + sellDecimals, + buyDecimals, + partnerFeeBps: undefined, + slippagePercentBps, + }) + + const sellAmountAfterNetworkCosts = +orderParams.sellAmount + +orderParams.feeAmount + const slippageAmount = (sellAmountAfterNetworkCosts * slippagePercentBps) / 100 / 100 + + // We are loosing precision here, because of using numbers and we have to use toBeCloseTo() + expect(Number(result.afterSlippage.sellAmount)).toBeCloseTo(sellAmountAfterNetworkCosts + slippageAmount, -2) + }) + }) + }) +}) diff --git a/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts b/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts new file mode 100644 index 000000000..d1acab87a --- /dev/null +++ b/external/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts @@ -0,0 +1,128 @@ +import { QuoteAmountsAndCosts } from './types' +import { OrderKind, type OrderParameters } from './generated' + +interface Params { + orderParams: OrderParameters + sellDecimals: number + buyDecimals: number + slippagePercentBps: number + partnerFeeBps: number | undefined +} + +const ONE_HUNDRED_BPS = BigInt(100 * 100) + +export function getQuoteAmountsAndCosts(params: Params): QuoteAmountsAndCosts { + const { orderParams, sellDecimals, buyDecimals, slippagePercentBps } = params + const partnerFeeBps = params.partnerFeeBps ?? 0 + const isSell = orderParams.kind === OrderKind.SELL + /** + * Wrap raw values into bigNumbers + * We also make amounts names more specific with "beforeNetworkCosts" and "afterNetworkCosts" suffixes + */ + const networkCostAmount = getBigNumber(orderParams.feeAmount, sellDecimals) + const sellAmountBeforeNetworkCosts = getBigNumber(orderParams.sellAmount, sellDecimals) + const buyAmountAfterNetworkCosts = getBigNumber(orderParams.buyAmount, buyDecimals) + + /** + * This is an actual price of the quote since it's derrived only from the quote sell and buy amounts + */ + const quotePrice = buyAmountAfterNetworkCosts.num / sellAmountBeforeNetworkCosts.num + + /** + * Before networkCosts + networkCosts = After networkCosts :) + */ + const sellAmountAfterNetworkCosts = getBigNumber( + sellAmountBeforeNetworkCosts.big + networkCostAmount.big, + sellDecimals + ) + + /** + * Since the quote contains only buy amount after network costs + * we have to calculate the buy amount before network costs from the quote price + */ + const buyAmountBeforeNetworkCosts = getBigNumber(quotePrice * sellAmountAfterNetworkCosts.num, buyDecimals) + + /** + * Partner fee is always added on the surplus amount, for sell-orders it's buy amount, for buy-orders it's sell amount + */ + const surplusAmount = isSell ? buyAmountBeforeNetworkCosts.big : sellAmountBeforeNetworkCosts.big + const partnerFeeAmount = partnerFeeBps > 0 ? (surplusAmount * BigInt(partnerFeeBps)) / ONE_HUNDRED_BPS : BigInt(0) + + /** + * Partner fee is always added on the surplus token, for sell-orders it's buy token, for buy-orders it's sell token + */ + const afterPartnerFees = isSell + ? { + sellAmount: sellAmountAfterNetworkCosts.big, + buyAmount: buyAmountAfterNetworkCosts.big - partnerFeeAmount, + } + : { + sellAmount: sellAmountAfterNetworkCosts.big + partnerFeeAmount, + buyAmount: buyAmountAfterNetworkCosts.big, + } + + const getSlippageAmount = (amount: bigint) => (amount * BigInt(slippagePercentBps)) / ONE_HUNDRED_BPS + + /** + * Same rules apply for slippage as for partner fees + */ + const afterSlippage = isSell + ? { + sellAmount: afterPartnerFees.sellAmount, + buyAmount: afterPartnerFees.buyAmount - getSlippageAmount(afterPartnerFees.buyAmount), + } + : { + sellAmount: afterPartnerFees.sellAmount + getSlippageAmount(afterPartnerFees.sellAmount), + buyAmount: afterPartnerFees.buyAmount, + } + + return { + isSell, + costs: { + networkFee: { + amountInSellCurrency: networkCostAmount.big, + amountInBuyCurrency: getBigNumber(quotePrice * networkCostAmount.num, buyDecimals).big, + }, + partnerFee: { + amount: partnerFeeAmount, + bps: partnerFeeBps, + }, + }, + beforeNetworkCosts: { + sellAmount: sellAmountBeforeNetworkCosts.big, + buyAmount: buyAmountBeforeNetworkCosts.big, + }, + afterNetworkCosts: { + sellAmount: sellAmountAfterNetworkCosts.big, + buyAmount: buyAmountAfterNetworkCosts.big, + }, + afterPartnerFees, + afterSlippage, + } +} + +type BigNumber = { + big: bigint + num: number +} + +/** + * BigInt works well with subtraction and addition, but it's not very good with multiplication and division + * To multiply/divide token amounts we have to convert them to numbers, but we have to be careful with precision + * @param value + * @param decimals + */ +function getBigNumber(value: string | bigint | number, decimals: number): BigNumber { + if (typeof value === 'number') { + const bigAsNumber = value * 10 ** decimals + const bigAsNumberString = bigAsNumber.toFixed() + const big = BigInt(bigAsNumberString.includes('e') ? bigAsNumber : bigAsNumberString) + + return { big, num: value } + } + + const big = BigInt(value) + const num = Number(big) / 10 ** decimals + + return { big, num } +} diff --git a/external/cow-sdk/src/order-book/request.test.ts b/external/cow-sdk/src/order-book/request.test.ts new file mode 100644 index 000000000..4a62b0202 --- /dev/null +++ b/external/cow-sdk/src/order-book/request.test.ts @@ -0,0 +1,98 @@ +import { request } from './request' +import fetchMock from 'jest-fetch-mock' +import { RateLimiter } from 'limiter' + +fetchMock.enableMocks() + +const URL = 'https://cow.fi' +const ERROR_MESSAGE = '💣💥 Booom!' + +const OK_RESPONSE = { + status: 200, + ok: true, + headers: new Headers({ + 'Content-Type': 'application/json', + }), + json: () => Promise.resolve(OK_RESPONSE), +} + +beforeEach(() => { + fetchMock.mockClear() +}) + +function mockAndFailUntilAttempt(attempt: number) { + let count = 0 + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + fetchMock.mockImplementation(() => { + count++ + // console.log('ATTEMPT', count) + return count >= attempt ? Promise.resolve(OK_RESPONSE) : Promise.reject(ERROR_MESSAGE) + }) +} + +const rateLimiter = new RateLimiter({ + tokensPerInterval: 5, + interval: 'second', +}) +// We use fetchWithRateLimit instead of fetchWithBackoff, since that is just a default config version of fetchWithBackoff +const fetchUrlWithBackoff = (attempts: number) => + request(URL, { path: '', method: 'GET' }, rateLimiter, { numOfAttempts: attempts }) + +describe('Fetch with backoff', () => { + it('No re-attempt if SUCCESS', async () => { + // GIVEN: A working API + mockAndFailUntilAttempt(0) + + // WHEN: Fetch url (backoff up to 10 attempts) + const result = await fetchUrlWithBackoff(10) + + // THEN: Only one request is needed (no need to re-attempt) + expect(fetchMock).toBeCalledTimes(1) + + // THEN: The result is OK + expect(result).toBe(OK_RESPONSE) + }) + + it('3 re-attempts if FAILS 3 times and then SUCCEED', async () => { + // GIVEN: An API which fails 3 tiems, and then succeeds + mockAndFailUntilAttempt(3) + + // WHEN: Fetch url (backoff up to 5 attempts) + const result = await fetchUrlWithBackoff(5) + + // THEN: Only one request is needed + expect(fetchMock).toBeCalledTimes(3) + + // THEN: The result is OK + expect(result).toBe(OK_RESPONSE) + }) + + it('SUCCEED in the last attempt', async () => { + // GIVEN: A API which fails 50 times + mockAndFailUntilAttempt(3) + + // WHEN: Fetch url (backoff up to 3 attempts) + const result = await fetchUrlWithBackoff(3) + + // THEN: We only call fetch 3 times + expect(fetchMock).toBeCalledTimes(3) + + // THEN: The result is OK + expect(result).toBe(OK_RESPONSE) + }) + + it("Don't reattempt after FAILING the MAXIMUM number of times", async () => { + // GIVEN: A API which fails 50 times + mockAndFailUntilAttempt(50) + + // WHEN: Fetch url (backoff up to 3 attempts) + const fetchPromise = fetchUrlWithBackoff(3) + + // THEN: The result is ERROR + await expect(fetchPromise).rejects.toBe(ERROR_MESSAGE) + + // THEN: We only call fetch 3 times + expect(fetchMock).toBeCalledTimes(3) + }) +}) diff --git a/external/cow-sdk/src/order-book/request.ts b/external/cow-sdk/src/order-book/request.ts new file mode 100644 index 000000000..cf4a685bd --- /dev/null +++ b/external/cow-sdk/src/order-book/request.ts @@ -0,0 +1,141 @@ +import { backOff, BackoffOptions } from 'exponential-backoff' +import { RateLimiter, RateLimiterOpts } from 'limiter' + +/** + * Error thrown when the CoW Protocol OrderBook API returns an error. + */ +export class OrderBookApiError extends Error { + /** + * Error thrown when the CoW Protocol OrderBook API returns an error. + * @param response The response from the CoW Protocol OrderBook API. + * @param body The body of the response. + * @constructor + */ + constructor(public readonly response: Response, public readonly body: T) { + super(typeof body === 'string' ? body : response.statusText) + } +} + +const REQUEST_TIMEOUT = 408 +const TOO_EARLY = 425 +const TOO_MANY_REQUESTS = 429 +const INTERNAL_SERVER_ERROR = 500 +const BAD_GATEWAY = 502 +const SERVICE_UNAVAILABLE = 503 +const GATEWAY_TIMEOUT = 504 + +const STATUS_CODES_TO_RETRY = [ + REQUEST_TIMEOUT, + TOO_EARLY, + TOO_MANY_REQUESTS, + INTERNAL_SERVER_ERROR, + BAD_GATEWAY, + SERVICE_UNAVAILABLE, + GATEWAY_TIMEOUT, +] + +/** + * The default backoff options for CoW Protocol's API + * @see {@link Backoff configuration: https://www.npmjs.com/package/@insertish/exponential-backoff} + */ +export const DEFAULT_BACKOFF_OPTIONS: BackoffOptions = { + numOfAttempts: 10, + maxDelay: Infinity, + jitter: 'none', + retry: (error: Error | OrderBookApiError) => { + if (error instanceof OrderBookApiError) { + return STATUS_CODES_TO_RETRY.includes(error.response.status) + } + + return true + }, +} + +/** + * The default rate limiter options for CoW Protocol's API. + * + * **CAUTION**: The CoW Protocol OrderBook API is limited to 5 requests per second per IP. + */ +export const DEFAULT_LIMITER_OPTIONS: RateLimiterOpts = { + tokensPerInterval: 5, + interval: 'second', +} + +/** + * Describe the parameters for a fetch request. + */ +export interface FetchParams { + path: string + method: 'GET' | 'POST' | 'DELETE' | 'PUT' + body?: unknown + query?: URLSearchParams +} + +const getResponseBody = async (response: Response): Promise => { + if (response.status !== 204) { + try { + const contentType = response.headers.get('Content-Type') + if (contentType) { + if (contentType.toLowerCase().startsWith('application/json')) { + return await response.json() + } else { + return await response.text() + } + } + } catch (error) { + console.error(error) + } + } + return undefined +} + +/** + * Helper function to make a rate-limited request to an API. + * @param baseUrl The base URL of the API. + * @param path The path of the request. + * @param query The query parameters of the request. + * @param method The HTTP method of the request. + * @param body The body of the request. + * @param rateLimiter The rate limiter to use. + * @param backoffOpts The backoff options to use. + * @returns The response of the request. + * @throws If the API returns an error or if the request fails. + */ +export async function request( + baseUrl: string, + { path, query, method, body }: FetchParams, + rateLimiter: RateLimiter, + backoffOpts: BackoffOptions +): Promise { + const queryString = query ? '?' + query : '' + const headers = { + Accept: 'application/json', + 'Content-Type': 'application/json', + } + + const url = `${baseUrl}${path}${queryString}` + const bodyContent = (() => { + if (!body) return undefined + + return typeof body === 'string' ? body : JSON.stringify(body) + })() + const init: RequestInit = { + method, + body: bodyContent, + headers, + } + + return backOff(async () => { + await rateLimiter.removeTokens(1) + + const response = await fetch(url, init) + const responseBody = (await getResponseBody(response)) as T + + // Successful response + if (response.status >= 200 && response.status < 300) { + return responseBody + } + + return Promise.reject(new OrderBookApiError(response, responseBody)) + }, backoffOpts) +} diff --git a/external/cow-sdk/src/order-book/transformOrder.test.ts b/external/cow-sdk/src/order-book/transformOrder.test.ts new file mode 100644 index 000000000..3676733dc --- /dev/null +++ b/external/cow-sdk/src/order-book/transformOrder.test.ts @@ -0,0 +1,59 @@ +import { Order, OrderClass, OrderKind, OrderStatus, SigningScheme } from './generated' +import { transformOrder } from './transformOrder' + +const ORDER: Order = { + sellToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + buyToken: '0x6810e776880c02933d47db1b9fc05908e5386b96', + sellAmount: '1234567890', + buyAmount: '1234567890', + validTo: 0, + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + partiallyFillable: true, + kind: OrderKind.BUY, + class: OrderClass.MARKET, + feeAmount: '1234567890', + signature: + '0x4d306ce7c770d22005bcfc00223f8d9aaa04e8a20099cc986cb9ccf60c7e876b777ceafb1e03f359ebc6d3dc84245d111a3df584212b5679cb5f9e6717b69b031b', + signingScheme: SigningScheme.EIP1271, + creationDate: '2020-12-03T18:35:18.814523Z', + owner: '0x6810e776880c02933d47db1b9fc05908e5386b96', + uid: '0x59920c85de0162e9e55df8d396e75f3b6b7c2dfdb535f03e5c807731c31585eaff714b8b0e2700303ec912bd40496c3997ceea2b616d6710', + executedSellAmount: '1234567890', + executedSellAmountBeforeFees: '1234567890', + executedBuyAmount: '1234567890', + executedFeeAmount: '1234567890', + invalidated: true, + status: OrderStatus.FULFILLED, +} + +describe('transformOrder', () => { + describe('addTotalFeeToOrder', () => { + test('should use executedFeeAmount when executedFee is 0', () => { + const rawOrder = { ...ORDER, executedFeeAmount: '1', executedFee: '0' } + const transformedOrder = transformOrder(rawOrder) + + expect(transformedOrder.totalFee).toEqual('1') + }) + + test('should use executedFee when executedFeeAmount is 0', () => { + const rawOrder = { ...ORDER, executedFeeAmount: '0', executedFee: '1' } + const transformedOrder = transformOrder(rawOrder) + + expect(transformedOrder.totalFee).toEqual('1') + }) + + test('should use sum of executedFeeAmount and executedFee', () => { + const rawOrder = { ...ORDER, executedFeeAmount: '1', executedFee: '1' } + const transformedOrder = transformOrder(rawOrder) + + expect(transformedOrder.totalFee).toEqual('2') + }) + + test('should not fail when executedFee is falsy', () => { + const rawOrder = { ...ORDER, executedFee: undefined } + const transformedOrder = transformOrder(rawOrder) + + expect(transformedOrder.totalFee).toEqual('1234567890') + }) + }) +}) diff --git a/external/cow-sdk/src/order-book/transformOrder.ts b/external/cow-sdk/src/order-book/transformOrder.ts new file mode 100644 index 000000000..f4790734f --- /dev/null +++ b/external/cow-sdk/src/order-book/transformOrder.ts @@ -0,0 +1,64 @@ +import { ETH_ADDRESS } from '../common/consts' +import { Order } from './generated' +import { EnrichedOrder } from './types' + +/** + * Apply programmatic transformations to an order. + * + * For example, transformations may be applied to an order to recognise it as a Native EthFlow order. + * @param order to apply transformations to + * @returns An order with the total fee added. + */ +export function transformOrder(order: Order): EnrichedOrder { + return transformEthFlowOrder(addTotalFeeToOrder(order)) +} + +/** + * Add the total fee to the order. + * + * The total fee of the order will be represented by the `totalFee` field, which is the sum of `executedFee` + * and `executedFeeAmount`. + * + * Note that either `executedFee` or `executedFeeAmount` may be `0`, or both might have a non `0` value. + * + * See https://cowservices.slack.com/archives/C036G0J90BU/p1705322037866779?thread_ts=1705083817.684659&cid=C036G0J90BU + * + * @param dto The order to add the total fee to. + * @returns The order with the total fee added. + */ +function addTotalFeeToOrder(dto: Order): EnrichedOrder { + const { executedFeeAmount, executedFee } = dto + + const _executedFeeAmount = BigInt(executedFeeAmount || '0') + const _executedFee = BigInt(executedFee || '0') + + const totalFee = String(_executedFeeAmount + _executedFee) + + return { + ...dto, + totalFee, + } +} + +/** + * Transform order field for Native EthFlow orders + * + * A no-op for regular orders + * For Native EthFlow, due to how the contract is setup: + * - sellToken set to Native token address + * - owner set to `onchainUser` + * - validTo set to `ethflowData.userValidTo` + */ +function transformEthFlowOrder(order: EnrichedOrder): EnrichedOrder { + const { ethflowData } = order + + if (!ethflowData) { + return order + } + + const { userValidTo: validTo } = ethflowData + const owner = order.onchainUser || order.owner + const sellToken = ETH_ADDRESS + + return { ...order, validTo, owner, sellToken } +} diff --git a/external/cow-sdk/src/order-book/types.ts b/external/cow-sdk/src/order-book/types.ts new file mode 100644 index 000000000..5e367c934 --- /dev/null +++ b/external/cow-sdk/src/order-book/types.ts @@ -0,0 +1,45 @@ +import { Order } from './generated' + +/** + * An order with the total fee added. + */ +export interface EnrichedOrder extends Order { + totalFee: string +} + +/** + * CoW Protocol quote has amounts (sell/buy) and costs (network fee), there is also partner fees. + * Besides that, CoW Protocol supports both sell and buy orders and the fees and costs are calculated differently. + * + * The order of adding fees and costs is as follows: + * 1. Network fee is always added to the sell amount + * 2. Partner fee is added to the surplus amount (sell amount for sell-orders, buy amount for buy-orders) + * + * For sell-orders the partner fee is subtracted from the buy amount after network costs. + * For buy-orders the partner fee is added on top of the sell amount after network costs. + */ +export interface QuoteAmountsAndCosts< + AmountType = bigint, + Amounts = { + sellAmount: AmountType + buyAmount: AmountType + } +> { + isSell: boolean + + costs: { + networkFee: { + amountInSellCurrency: AmountType + amountInBuyCurrency: AmountType + } + partnerFee: { + amount: AmountType + bps: number + } + } + + beforeNetworkCosts: Amounts + afterNetworkCosts: Amounts + afterPartnerFees: Amounts + afterSlippage: Amounts +} diff --git a/external/cow-sdk/src/order-signing/index.ts b/external/cow-sdk/src/order-signing/index.ts new file mode 100644 index 000000000..fe5a249f3 --- /dev/null +++ b/external/cow-sdk/src/order-signing/index.ts @@ -0,0 +1,2 @@ +export * from './orderSigningUtils' +export * from './types' diff --git a/external/cow-sdk/src/order-signing/orderSigningUtils.spec.ts b/external/cow-sdk/src/order-signing/orderSigningUtils.spec.ts new file mode 100644 index 000000000..972203df7 --- /dev/null +++ b/external/cow-sdk/src/order-signing/orderSigningUtils.spec.ts @@ -0,0 +1,110 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +import { OrderSigningUtils } from './orderSigningUtils' +import { SupportedChainId } from '../common' +import { UnsignedOrder } from './types' +import { OrderKind } from '../order-book' +import { mock, instance, when, anything, capture } from 'ts-mockito' +import type { TypedDataSigner } from '@cowprotocol/contracts' + +describe('OrderSigningApi', () => { + const signature = + '0xbb6aaa4207e9e97275934e26fc2fce3ed40a6d6b607870c1913cdb86b13070ec6196010f40e8ddfd36ad7f9eae033dfd5d4bf551feaf664a6ca768edde2d0a701c' + let signer: TypedDataSigner + + beforeEach(() => { + signer = mock() + + when(signer._signTypedData(anything(), anything(), anything())).thenCall(() => { + return Promise.resolve(signature) + }) + }) + + it('signOrder - should return an order signature', async () => { + const order: UnsignedOrder = { + sellToken: '0xd057b63f5e69cf1b929b356b579cba08d7688048', + buyToken: '0x7B878668Cd1a3adF89764D3a331E0A7BB832192D', + receiver: '0xa6ddbd0de6b310819b49f680f65871bee85f517e', + sellAmount: '500000000000000', + buyAmount: '23000020000', + validTo: 5000222, + appData: '0x0', + feeAmount: '2300000', + kind: OrderKind.SELL, + partiallyFillable: true, + } + const result = await OrderSigningUtils.signOrder(order, SupportedChainId.MAINNET, instance(signer)) + + expect(result.signature).toBe(signature) + }) + + it('signOrderCancellation - should return an order cancellation signature', async () => { + const orderId = + '0xdaaa7dddec9ad04cc101a121e3eed017eab4d3927c045d407d5ad6700eea2bf7fb3c7eb936caa12b5a884d612393969a557d430764060343' + const result = await OrderSigningUtils.signOrderCancellation(orderId, SupportedChainId.MAINNET, instance(signer)) + + expect(result.signature).toBe(signature) + }) + + it('signOrderCancellations - returns the signature for cancelling multiple orders', async () => { + const orderId1 = + '0x1aaa7dddecccc04cc101a121e3eed017eab4d3927c045d407d5ad6700eea2bf7fb3c7eb936caa12b5a884d612393969a557d430764060343' + const orderId2 = + '0x2aaa7dddec22204cc101a121e3eed017eab4d3927c045d407d5ad6700eea2bf7fb3c7eb936caa12b5a884d612393969a557d430764060343' + const orderId3 = + '0x3aaa7dddec33304cc101a121e3eed017eab4d3927c045d407d5ad6700eea2bf7fb3c7eb936caa12b5a884d612393969a557d430764060343' + + const ordersUids = [orderId1, orderId2, orderId3] + + const result = await OrderSigningUtils.signOrderCancellations( + ordersUids, + SupportedChainId.MAINNET, + instance(signer) + ) + + const [domain, typedData, ids] = capture(signer._signTypedData).first() + + expect(domain).toEqual({ + chainId: 1, + name: 'Gnosis Protocol', + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + version: 'v2', + }) + + expect(typedData).toEqual({ + OrderCancellations: [ + { + name: 'orderUids', + type: 'bytes[]', + }, + ], + }) + + expect(ids).toEqual({ + orderUids: ordersUids, + }) + + expect(result.signature).toBe(signature) + }) + + it('getDomain - should return an object with domain info', async () => { + const domain = await OrderSigningUtils.getDomain(SupportedChainId.MAINNET) + + expect(domain).toEqual({ + chainId: 1, + name: 'Gnosis Protocol', + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + version: 'v2', + }) + }) +}) diff --git a/external/cow-sdk/src/order-signing/orderSigningUtils.ts b/external/cow-sdk/src/order-signing/orderSigningUtils.ts new file mode 100644 index 000000000..025411c6d --- /dev/null +++ b/external/cow-sdk/src/order-signing/orderSigningUtils.ts @@ -0,0 +1,152 @@ +import type { SupportedChainId } from '../common' +import type { Signer } from '@ethersproject/abstract-signer' +import type { Order, TypedDataDomain, OrderUidParams } from '@cowprotocol/contracts' +import type { SigningResult, UnsignedOrder } from './types' + +const getSignUtils = () => import('./utils') +const ethersUtils = () => import('ethers/lib/utils') + +/** + * Utility class for signing order intents and cancellations. + * + * @remarks This class only supports `eth_sign` and wallet-native EIP-712 signing. For use of + * `presign` and `eip1271` {@link https://docs.cow.fi/ | see the docs}. + * @example + * + * ```typescript + * import { OrderSigningUtils, SupportedChainId, UnsignedOrder } from '@cowprotocol/cow-sdk' + * import { Web3Provider } from '@ethersproject/providers' + * + * const account = 'YOUR_WALLET_ADDRESS' + * const chainId = 100 // Gnosis chain + * const provider = new Web3Provider(window.ethereum) + * const signer = provider.getSigner() + * + * async function main() { + * const orderToSign: UnsignedOrder = { ... } + * const orderSigningResult = await OrderSigningUtils.signOrder(orderToSign, chainId, signer) + * + * const orderId = await orderBookApi.sendOrder({ ...orderToSign, ...orderSigningResult }) + * + * const order = await orderBookApi.getOrder(orderId) + * + * const trades = await orderBookApi.getTrades({ orderId }) + * + * const orderCancellationSigningResult = await OrderSigningUtils.signOrderCancellations([orderId], chainId, signer) + * + * const cancellationResult = await orderBookApi.sendSignedOrderCancellations({...orderCancellationSigningResult, orderUids: [orderId] }) + * + * console.log('Results: ', { orderId, order, trades, orderCancellationSigningResult, cancellationResult }) + * } + * ``` + */ +export class OrderSigningUtils { + /** + * Sign the order intent with the specified signer. + * + * @remarks If the API reports an error with the signature, it is likely to be due to an incorrectly + * specified `chainId`. Please ensure that the `chainId` is correct for the network you are + * using. + * @param {UnsignedOrder} order The unsigned order intent to be placed. + * @param {SupportedChainId} chainId The CoW Protocol `chainId` context that's being used. + * @param {Signer} signer The signer who is placing the order intent. + * @returns {Promise} Encoded signature including signing scheme for the order. + */ + static async signOrder(order: UnsignedOrder, chainId: SupportedChainId, signer: Signer): Promise { + const { signOrder } = await getSignUtils() + return signOrder(order, chainId, signer) + } + + /** + * Sign a cancellation message of an order intent with the specified signer. + * @param {string} orderUid The unique identifier of the order to cancel. + * @param {SupportedChainId} chainId The CoW Protocol `chainid` context that's being used. + * @param {Signer} signer The signer who initially placed the order intent. + * @returns {Promise} Encoded signature including signing scheme for the cancellation. + */ + static async signOrderCancellation( + orderUid: string, + chainId: SupportedChainId, + signer: Signer + ): Promise { + const { signOrderCancellation } = await getSignUtils() + return signOrderCancellation(orderUid, chainId, signer) + } + + /** + * Sign a cancellation message of multiple order intents with the specified signer. + * @param {string[]} orderUids An array of `orderUid` to cancel. + * @param {SupportedChainId} chainId The CoW Protocol `chainId` context that's being used. + * @param {Signer} signer The signer who initially placed the order intents. + * @returns {Promise} Encoded signature including signing scheme for the cancellation. + */ + static async signOrderCancellations( + orderUids: string[], + chainId: SupportedChainId, + signer: Signer + ): Promise { + const { signOrderCancellations } = await getSignUtils() + return signOrderCancellations(orderUids, chainId, signer) + } + + /** + * Get the EIP-712 typed domain data being used for signing. + * @param {SupportedChainId} chainId The CoW Protocol `chainId` context that's being used. + * @return The EIP-712 typed domain data. + * @see https://eips.ethereum.org/EIPS/eip-712 + */ + static async getDomain(chainId: SupportedChainId): Promise { + const { getDomain } = await getSignUtils() + return getDomain(chainId) + } + + /** + * Hashes the order intent and generate deterministic order ID. + * @param {SupportedChainId} chainId The CoW Protocol `chainId` context that's being used. + * @param {Order} order order to sign + * @param {Pick} params order unique identifier parameters. + */ + static async generateOrderId( + chainId: SupportedChainId, + order: Order, + params: Pick + ): Promise<{ orderId: string; orderDigest: string }> { + const { generateOrderId } = await getSignUtils() + return generateOrderId(chainId, order, params) + } + + /** + * Get the domain separator hash for the EIP-712 typed domain data being used for signing. + * @param chainId {SupportedChainId} chainId The CoW Protocol protocol `chainId` context that's being used. + * @returns A string representation of the EIP-712 typed domain data hash. + */ + static async getDomainSeparator(chainId: SupportedChainId): Promise { + const { getDomain } = await getSignUtils() + const { _TypedDataEncoder } = await ethersUtils() + return _TypedDataEncoder.hashDomain(getDomain(chainId)) + } + + /** + * Get the EIP-712 types used for signing a GPv2Order.Data struct. This is useful for when + * signing orders using smart contracts, whereby this SDK cannot do the EIP-1271 signing for you. + * @returns The EIP-712 types used for signing. + */ + static getEIP712Types(): Record { + return { + Order: [ + { name: 'sellToken', type: 'address' }, + { name: 'buyToken', type: 'address' }, + { name: 'receiver', type: 'address' }, + { name: 'sellAmount', type: 'uint256' }, + { name: 'buyAmount', type: 'uint256' }, + { name: 'validTo', type: 'uint32' }, + { name: 'appData', type: 'bytes32' }, + { name: 'feeAmount', type: 'uint256' }, + { name: 'kind', type: 'string' }, + { name: 'partiallyFillable', type: 'bool' }, + { name: 'sellTokenBalance', type: 'string' }, + { name: 'buyTokenBalance', type: 'string' }, + ], + } + } +} diff --git a/external/cow-sdk/src/order-signing/types.ts b/external/cow-sdk/src/order-signing/types.ts new file mode 100644 index 000000000..28eb907c2 --- /dev/null +++ b/external/cow-sdk/src/order-signing/types.ts @@ -0,0 +1,55 @@ +import type { SupportedChainId } from '../common' +import type { Signer } from '@ethersproject/abstract-signer' +import type { OrderParameters, EcdsaSigningScheme } from '../order-book' + +/** + * Unsigned order intent to be placed. + */ +export type UnsignedOrder = Omit & { receiver: string } + +/** + * Encoded signature including signing scheme for the order. + */ +export type SigningResult = { signature: string; signingScheme: EcdsaSigningScheme } + +/** + * Parameters for signing an order intent. + * @param chainId The CoW Protocol `chainId` context that's being used. + * @param signer The signer who is placing the order intent. + * @param order The unsigned order intent to be placed. + * @param signingScheme The signing scheme to use for the signature. + */ +export interface SignOrderParams { + chainId: SupportedChainId + signer: Signer + order: UnsignedOrder + signingScheme: EcdsaSigningScheme +} + +/** + * Parameters for signing an order cancellation. + * @param chainId The CoW Protocol `chainId` context that's being used. + * @param signer The signer who initially placed the order intent. + * @param orderUid The unique identifier of the order to cancel. + * @param signingScheme The signing scheme to use for the signature. + */ +export interface SignOrderCancellationParams { + chainId: SupportedChainId + signer: Signer + orderUid: string + signingScheme: EcdsaSigningScheme +} + +/** + * Parameters for signing multiple bulk order cancellations. + * @param chainId The CoW Protocol `chainId` context that's being used. + * @param signer The signer who initially placed the order intents. + * @param orderUids An array of `orderUid` to cancel. + * @param signingScheme The signing scheme to use for the signature. + */ +export interface SignOrderCancellationsParams { + chainId: SupportedChainId + signer: Signer + orderUids: string[] + signingScheme: EcdsaSigningScheme +} diff --git a/external/cow-sdk/src/order-signing/utils.ts b/external/cow-sdk/src/order-signing/utils.ts new file mode 100644 index 000000000..f3f2c2eb2 --- /dev/null +++ b/external/cow-sdk/src/order-signing/utils.ts @@ -0,0 +1,260 @@ +import type { + Order as OrderFromContract, + Signature, + TypedDataDomain, + EcdsaSigningScheme as EcdsaSigningSchemeContract, + Order, + OrderUidParams, +} from '@cowprotocol/contracts' +import { + domain as domainGp, + EcdsaSignature, + IntChainIdTypedDataV4Signer, + SigningScheme, + hashOrder, + packOrderUidParams, + signOrder as signOrderGp, + signOrderCancellation as signOrderCancellationGp, + signOrderCancellations as signOrderCancellationsGp, + TypedDataVersionedSigner, +} from '@cowprotocol/contracts' +import type { Signer } from '@ethersproject/abstract-signer' +import type { SigningResult, SignOrderParams, SignOrderCancellationParams, UnsignedOrder } from './types' + +import { COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS } from '../common/consts' +import { CowError, SupportedChainId } from '../common' +import { EcdsaSigningScheme } from '../order-book' +import { SignOrderCancellationsParams } from './types' + +// For error codes, see: +// - https://eth.wiki/json-rpc/json-rpc-error-codes-improvement-proposal +// - https://www.jsonrpc.org/specification#error_object +const METAMASK_SIGNATURE_ERROR_CODE = -32603 +const METHOD_NOT_FOUND_ERROR_CODE = -32601 +// Added the following because of 1Inch wallet who doesn't send the error code +// So we will check the actual error text +const METHOD_NOT_FOUND_ERROR_MSG_REGEX = /Method not found/i +const V4_ERROR_MSG_REGEX = /eth_signTypedData_v4 does not exist/i +const V3_ERROR_MSG_REGEX = /eth_signTypedData_v3 does not exist/i +const RPC_REQUEST_FAILED_REGEX = /RPC request failed/i +const METAMASK_STRING_CHAINID_REGEX = /provided chainid .* must match the active chainid/i + +const mapSigningSchema: Record = { + [EcdsaSigningScheme.EIP712]: SigningScheme.EIP712, + [EcdsaSigningScheme.ETHSIGN]: SigningScheme.ETHSIGN, +} + +interface ProviderRpcError extends Error { + message: string + code: number + data?: unknown +} + +type PayloadParams = + | Pick + | Pick + | Pick + +function isProviderRpcError(error: unknown): error is ProviderRpcError { + return (error as ProviderRpcError).code !== undefined || (error as ProviderRpcError).message !== undefined +} + +async function _signOrder(params: SignOrderParams): Promise { + const { chainId, signer, order, signingScheme } = params + + const domain = getDomain(chainId) + + return signOrderGp(domain, order as unknown as OrderFromContract, signer, mapSigningSchema[signingScheme]) +} + +async function _signOrderCancellation(params: SignOrderCancellationParams): Promise { + const { chainId, signer, signingScheme, orderUid } = params + + const domain = getDomain(chainId) + + return signOrderCancellationGp(domain, orderUid, signer, mapSigningSchema[signingScheme]) +} + +async function _signOrderCancellations(params: SignOrderCancellationsParams): Promise { + const { chainId, signer, signingScheme, orderUids } = params + + const domain = getDomain(chainId) + + return signOrderCancellationsGp(domain, orderUids, signer, mapSigningSchema[signingScheme]) +} + +async function _signPayload( + payload: PayloadParams, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + signFn: (params: any) => Promise, + signer: Signer, + signingMethod: 'default' | 'v4' | 'int_v4' | 'v3' | 'eth_sign' = 'v4' +): Promise { + const signingScheme: EcdsaSigningScheme = + signingMethod === 'eth_sign' ? EcdsaSigningScheme.ETHSIGN : EcdsaSigningScheme.EIP712 + let signature: Signature | null = null + + let _signer + try { + switch (signingMethod) { + case 'default': + case 'v3': + _signer = new TypedDataVersionedSigner(signer) + break + case 'int_v4': + _signer = new IntChainIdTypedDataV4Signer(signer) + break + default: + _signer = signer + } + } catch (e) { + console.error('Wallet not supported:', e) + throw new CowError('Wallet not supported') + } + + try { + signature = (await signFn({ ...payload, signer: _signer, signingScheme })) as EcdsaSignature // Only ECDSA signing supported for now + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (e: any) { + if (!isProviderRpcError(e)) { + // Some other error signing. Let it bubble up. + console.error(e) + throw e + } + + const regexErrorCheck = [METHOD_NOT_FOUND_ERROR_MSG_REGEX, RPC_REQUEST_FAILED_REGEX].some((regex) => + // for example 1Inch error doesn't have e.message so we will check the output of toString() + [e.message, e.toString()].some((msg) => regex.test(msg)) + ) + + if (e.code === METHOD_NOT_FOUND_ERROR_CODE || regexErrorCheck) { + // Maybe the wallet returns the proper error code? We can only hope 🤞 + // OR it failed with a generic message, there's no error code set, and we also hope it'll work + // with other methods... + switch (signingMethod) { + case 'v4': + return _signPayload(payload, signFn, signer, 'default') + case 'default': + return _signPayload(payload, signFn, signer, 'v3') + case 'v3': + return _signPayload(payload, signFn, signer, 'eth_sign') + default: + throw e + } + } else if (METAMASK_STRING_CHAINID_REGEX.test(e.message)) { + // Metamask now enforces chainId to be an integer + return _signPayload(payload, signFn, signer, 'int_v4') + } else if (e.code === METAMASK_SIGNATURE_ERROR_CODE) { + // We tried to sign order the nice way. + // That works fine for regular MM addresses. Does not work for Hardware wallets, though. + // See https://github.com/MetaMask/metamask-extension/issues/10240#issuecomment-810552020 + // So, when that specific error occurs, we know this is a problem with MM + HW. + // Then, we fallback to ETHSIGN. + return _signPayload(payload, signFn, signer, 'eth_sign') + } else if (V4_ERROR_MSG_REGEX.test(e.message)) { + // Failed with `v4`, and the wallet does not set the proper error code + return _signPayload(payload, signFn, signer, 'v3') + } else if (V3_ERROR_MSG_REGEX.test(e.message)) { + // Failed with `v3`, and the wallet does not set the proper error code + return _signPayload(payload, signFn, signer, 'eth_sign') + } else { + // Some other error signing. Let it bubble up. + console.error(e) + throw e + } + } + + const data: unknown = signature?.data + + return { signature: data?.toString() || '', signingScheme } +} + +/** + * Returns the signature for the specified order with the signing scheme encoded + * into the signature. + * @param {UnsignedOrder} order The order to sign. + * @param {SupportedChainId} chainId The chain Id + * @param {Signer} signer The owner for the order used to sign. + * @return {*} Encoded signature including signing scheme for the order. + */ +export async function signOrder( + order: UnsignedOrder, + chainId: SupportedChainId, + signer: Signer +): Promise { + return _signPayload({ order, chainId }, _signOrder, signer) +} + +/** + * Returns the signature for the Order Cancellation with the signing scheme encoded + * into the signature. + * @param {string} orderUid The unique identifier of the order being cancelled. + * @param {SupportedChainId} chainId The chain Id + * @param {Signer} signer The owner for the order used to sign. + * @return {*} Encoded signature including signing scheme for the order. + */ +export async function signOrderCancellation( + orderUid: string, + chainId: SupportedChainId, + signer: Signer +): Promise { + return _signPayload({ orderUid, chainId }, _signOrderCancellation, signer) +} + +/** + * Returns the signature for the Order Cancellations with the signing scheme encoded + * into the signature. + * + * @param {string[]} orderUids The unique identifiers of the orders being cancelled. + * @param {SupportedChainId} chainId The CoW Protocol protocol `chainId` context that's being used. + * @param {Signer} signer The owner that had placed the orders used to sign. + * @returns {*} Encoded signature including signing scheme for the order. + */ +export async function signOrderCancellations( + orderUids: string[], + chainId: SupportedChainId, + signer: Signer +): Promise { + return _signPayload({ orderUids, chainId }, _signOrderCancellations, signer) +} + +/** + * Returns the TypedDataDomain used for signing for the specified chainId. + * @param {SupportedChainId} chainId The chain Id + * @return {*} The TypedDataDomain for the specified chainId. + * @throws {CowError} If the chainId is not supported. + */ +export function getDomain(chainId: SupportedChainId): TypedDataDomain { + // Get settlement contract address + const settlementContract = COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS[chainId] + + if (!settlementContract) { + throw new CowError('Unsupported network. Settlement contract is not deployed') + } + + return domainGp(chainId, settlementContract) +} + +/** + * Generate a deterministic order ID for the specified order. + * @param {SupportedChainId} chainId The chain Id + * @param {Order} order order to sign + * @param {Pick} params order unique identifier parameters. + */ +export async function generateOrderId( + chainId: SupportedChainId, + order: Order, + params: Pick +): Promise<{ orderId: string; orderDigest: string }> { + const domain = await getDomain(chainId) + const orderDigest = hashOrder(domain, order) + // Generate the orderId from owner, orderDigest, and max validTo + const orderId = packOrderUidParams({ + ...params, + orderDigest, + // Different validTo when signing because EthFlow contract expects it to be max for all orders + validTo: order.validTo, + }) + + return { orderId, orderDigest } +} diff --git a/external/cow-sdk/src/subgraph/api.spec.ts b/external/cow-sdk/src/subgraph/api.spec.ts new file mode 100644 index 000000000..49a10ab79 --- /dev/null +++ b/external/cow-sdk/src/subgraph/api.spec.ts @@ -0,0 +1,353 @@ +import { gql } from 'graphql-request' +import fetchMock, { enableFetchMocks } from 'jest-fetch-mock' +import { SupportedChainId } from '../common/chains' +import { CowError } from '../common/cow-error' +import { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries' +import { SUBGRAPH_PROD_CONFIG, SubgraphApi } from './api' + +enableFetchMocks() + +const cowSubgraphApi = new SubgraphApi() +const prodUrls = SUBGRAPH_PROD_CONFIG + +const headers = { + 'Content-Type': 'application/json', +} + +const getFetchParameters = (query: string, operationName: string, variables?: unknown) => { + const body = { + query, + variables, + operationName, + } + + return { body: JSON.stringify(body), headers, method: 'POST' } +} + +const TOTALS_RESPONSE = { + data: { + totals: [ + { + tokens: '192', + orders: '365210', + traders: '50731', + settlements: '160092', + volumeUsd: '49548634.23978489392550883815112596', + volumeEth: '20349080.82753326160179174564685693', + feesUsd: '1495.18088540037791409373835505834', + feesEth: '632.7328748466552906975758491191759', + }, + ], + }, +} + +const LAST_7_DAYS_VOLUME_RESPONSE = { + data: { + dailyTotals: [ + { + timestamp: '1651104000', + volumeUsd: '32085.1639220805155999650325844739', + }, + { + timestamp: '1651017600', + volumeUsd: '34693.62007717297749801092930059675', + }, + { + timestamp: '1650931200', + volumeUsd: '33122.5365226034644783539316622137', + }, + { + timestamp: '1650844800', + volumeUsd: '44339.87713137673812392999146686429', + }, + { + timestamp: '1650758400', + volumeUsd: '33152.20678736108925012284114682263', + }, + { + timestamp: '1650672000', + volumeUsd: '74499.81969341967474378140565634503', + }, + { + timestamp: '1650585600', + volumeUsd: '55696.47839632449194353566942457261', + }, + ], + }, +} + +const LAST_24_HOURS_VOLUME_RESPONSE = { + data: { + hourlyTotals: [ + { + timestamp: '1651186800', + volumeUsd: '190.9404913756501392195019404899438', + }, + { + timestamp: '1651183200', + volumeUsd: '529.9946238000561779423929757743504', + }, + { + timestamp: '1651179600', + volumeUsd: '645.3587505699802324165958548720157', + }, + { + timestamp: '1651176000', + volumeUsd: '1708.483608648853800630669110444808', + }, + { + timestamp: '1651172400', + volumeUsd: '7121.457330823292680300996744986044', + }, + { + timestamp: '1651168800', + volumeUsd: '1821.297602760111978245784985569166', + }, + { + timestamp: '1651165200', + volumeUsd: '2785.484680212634326873580046251588', + }, + { + timestamp: '1651161600', + volumeUsd: '1969.469152211506355791899301692229', + }, + { + timestamp: '1651158000', + volumeUsd: '2162.897300873319012826008286358389', + }, + { + timestamp: '1651154400', + volumeUsd: '1513.553639465779399627761684465762', + }, + { + timestamp: '1651150800', + volumeUsd: '187.4730505008263524958136028913312', + }, + { + timestamp: '1651147200', + volumeUsd: '1003.733903282400166632845200890861', + }, + { + timestamp: '1651143600', + volumeUsd: '430.0861170487354094851133346726692', + }, + { + timestamp: '1651140000', + volumeUsd: '332.7800791403069749429589009477125', + }, + { + timestamp: '1651136400', + volumeUsd: '97.63235373438852625638744867165181', + }, + { + timestamp: '1651132800', + volumeUsd: '30.59818396279718981525514608110329', + }, + { + timestamp: '1651129200', + volumeUsd: '4891.57094852254524822966041865283', + }, + { + timestamp: '1651125600', + volumeUsd: '0.2822502035827220060153182158280592', + }, + { + timestamp: '1651122000', + volumeUsd: '2618.536314756480243120625177213215', + }, + { + timestamp: '1651118400', + volumeUsd: '188.6060152287524476251961231904293', + }, + { + timestamp: '1651114800', + volumeUsd: '1081.900497533608727191602938189487', + }, + { + timestamp: '1651111200', + volumeUsd: '189.2511347347182236433877630220942', + }, + { + timestamp: '1651107600', + volumeUsd: '443.7262478626930371100298278690119', + }, + { + timestamp: '1651104000', + volumeUsd: '240.7104588694898118223893758683719', + }, + ], + }, +} + +const TOKENS_BY_VOLUME_RESPONSE = { + data: { + tokens: [ + { + address: '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', + symbol: 'WXDAI', + totalVolumeUsd: '32889034.621839712648167717', + priceUsd: '1', + }, + { + address: '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83', + symbol: 'USDC', + totalVolumeUsd: '31296380.98818012532887553375630894', + priceUsd: '0.9983008873217955125012875742815512', + }, + { + address: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', + symbol: 'WETH', + totalVolumeUsd: '11313677.56406394346907690670613874', + priceUsd: '2930.058705030603523831034274967579', + }, + { + address: '0x4ecaba5870353805a9f068101a40e0f32ed605c6', + symbol: 'USDT', + totalVolumeUsd: '9390602.813697073697851431730404586', + priceUsd: '1.00560814041993584287438922806966', + }, + { + address: '0x9c58bacc331c9aa871afd802db6379a98e80cedb', + symbol: 'GNO', + totalVolumeUsd: '5667965.685777522243148118842046968', + priceUsd: '327.4436350035803489070442497891915', + }, + ], + }, +} + +const INVALID_QUERY_RESPONSE = { + errors: [ + { + locations: [ + { + line: 2, + column: 9, + }, + ], + message: 'Type `Query` has no field `invalidQuery`', + }, + ], +} + +describe('CoW subgraph URL', () => { + beforeEach(() => { + fetchMock.resetMocks() + }) + + afterEach(() => { + jest.restoreAllMocks() + }) + + test('Valid: Get Totals', async () => { + fetchMock.mockResponseOnce(JSON.stringify(TOTALS_RESPONSE), { + status: 200, + headers, + }) + const totals = await cowSubgraphApi.getTotals() + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + prodUrls[SupportedChainId.MAINNET], + getFetchParameters(TOTALS_QUERY, 'Totals') + ) + expect(totals).toEqual(TOTALS_RESPONSE.data.totals[0]) + }) + + test('Valid: Get Last 7 days volume', async () => { + fetchMock.mockResponseOnce(JSON.stringify(LAST_7_DAYS_VOLUME_RESPONSE), { + status: 200, + headers, + }) + const response = await cowSubgraphApi.getLastDaysVolume(7) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + prodUrls[SupportedChainId.MAINNET], + getFetchParameters(LAST_DAYS_VOLUME_QUERY, 'LastDaysVolume', { days: 7 }) + ) + expect(response).toEqual(LAST_7_DAYS_VOLUME_RESPONSE.data) + }) + + test('Valid: Get Last 24 hours volume', async () => { + fetchMock.mockResponseOnce(JSON.stringify(LAST_24_HOURS_VOLUME_RESPONSE), { + status: 200, + headers, + }) + const response = await cowSubgraphApi.getLastHoursVolume(24) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + prodUrls[SupportedChainId.MAINNET], + getFetchParameters(LAST_HOURS_VOLUME_QUERY, 'LastHoursVolume', { hours: 24 }) + ) + expect(response).toEqual(LAST_24_HOURS_VOLUME_RESPONSE.data) + }) + + test('Valid: Run custom query', async () => { + const query = gql` + query TokensByVolume { + tokens(first: 5, orderBy: totalVolumeUsd, orderDirection: desc) { + address + symbol + totalVolumeUsd + priceUsd + } + } + ` + fetchMock.mockResponseOnce(JSON.stringify(TOKENS_BY_VOLUME_RESPONSE), { + status: 200, + headers, + }) + const response = await cowSubgraphApi.runQuery(query) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + prodUrls[SupportedChainId.MAINNET], + getFetchParameters(query, 'TokensByVolume') + ) + expect(response).toEqual(TOKENS_BY_VOLUME_RESPONSE.data) + }) + + test('Invalid: non-existent query', async () => { + const query = gql` + query InvalidQuery { + invalidQuery { + field1 + field2 + } + } + ` + fetchMock.mockResponseOnce(JSON.stringify(INVALID_QUERY_RESPONSE), { + status: 200, + headers, + }) + await expect(cowSubgraphApi.runQuery(query)).rejects.toThrowError(CowError) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + prodUrls[SupportedChainId.MAINNET], + getFetchParameters(query, 'InvalidQuery') + ) + }) + + test('Uses urls from custom env config', async () => { + const customEnvConfig = { + [SupportedChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging', + [SupportedChainId.GNOSIS_CHAIN]: 'https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging', + [SupportedChainId.SEPOLIA]: null, + } + + const customSubgraphApi = new SubgraphApi({ + baseUrls: customEnvConfig, + }) + + fetchMock.mockResponseOnce(JSON.stringify(TOTALS_RESPONSE), { + status: 200, + headers, + }) + const totals = await customSubgraphApi.getTotals() + + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith( + customEnvConfig[SupportedChainId.MAINNET], + getFetchParameters(TOTALS_QUERY, 'Totals') + ) + expect(totals).toEqual(TOTALS_RESPONSE.data.totals[0]) + }) +}) diff --git a/external/cow-sdk/src/subgraph/api.ts b/external/cow-sdk/src/subgraph/api.ts new file mode 100644 index 000000000..13337e0b1 --- /dev/null +++ b/external/cow-sdk/src/subgraph/api.ts @@ -0,0 +1,147 @@ +import { Variables, request } from 'graphql-request' +import { DocumentNode } from 'graphql/index' +import { SupportedChainId } from '../common/chains' +import { ApiContext, CowEnv, DEFAULT_COW_API_CONTEXT } from '../common/configs' +import { CowError } from '../common/cow-error' +import { LastDaysVolumeQuery, LastHoursVolumeQuery, TotalsQuery } from './graphql' +import { LAST_DAYS_VOLUME_QUERY, LAST_HOURS_VOLUME_QUERY, TOTALS_QUERY } from './queries' + +const SUBGRAPH_BASE_URL = 'https://api.thegraph.com/subgraphs/name/cowprotocol' + +type SubgraphApiBaseUrls = Record + +interface SubgraphApiContext extends Omit { + baseUrls?: SubgraphApiBaseUrls +} + +type PartialSubgraphApiContext = Partial + +/** + * CoW Protocol Production Subgraph API configuration. + * @see {@link https://api.thegraph.com/subgraphs/name/cowprotocol/cow} + * @see {@link https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc} + */ +export const SUBGRAPH_PROD_CONFIG: SubgraphApiBaseUrls = { + [SupportedChainId.MAINNET]: SUBGRAPH_BASE_URL + '/cow', + [SupportedChainId.GNOSIS_CHAIN]: SUBGRAPH_BASE_URL + '/cow-gc', + [SupportedChainId.ARBITRUM_ONE]: null, + [SupportedChainId.BASE]: null, + [SupportedChainId.SEPOLIA]: null, +} + +/** + * CoW Protocol Staging Subgraph API configuration. + * @deprecated + * @see {@link https://api.thegraph.com/subgraphs/name/cowprotocol/cow-staging} + * @see {@link https://api.thegraph.com/subgraphs/name/cowprotocol/cow-gc-staging} + */ +export const SUBGRAPH_STAGING_CONFIG: SubgraphApiBaseUrls = { + [SupportedChainId.MAINNET]: SUBGRAPH_BASE_URL + '/cow-staging', + [SupportedChainId.GNOSIS_CHAIN]: SUBGRAPH_BASE_URL + '/cow-gc-staging', + [SupportedChainId.ARBITRUM_ONE]: null, + [SupportedChainId.BASE]: null, + [SupportedChainId.SEPOLIA]: null, +} + +/** + * TheGraph API client for CoW Protocol. + */ +export class SubgraphApi { + API_NAME = 'CoW Protocol Subgraph' + + public context: SubgraphApiContext + + /** + * Create a new CoW Protocol API instance. + * @param context Any properties of the {@link SubgraphApiContext} may be overridden by passing a {@link PartialSubgraphApiContext}. + */ + constructor(context: PartialSubgraphApiContext = {}) { + this.context = { + ...DEFAULT_COW_API_CONTEXT, + ...context, + } + } + + /** + * Query the totals from TheGraph for the CoW Protocol. + * @param contextOverride Override the context for this call only. + * @returns The totals for the CoW Protocol. + */ + async getTotals(contextOverride: PartialSubgraphApiContext = {}): Promise { + const response = await this.runQuery(TOTALS_QUERY, undefined, contextOverride) + return response.totals[0] + } + + /** + * Query the volume over the last N days from TheGraph for the CoW Protocol. + * @param {number} days The number of days to query. + * @param {PartialSubgraphApiContext} contextOverride Override the context for this call only. + * @returns The volume for the last N days. + */ + async getLastDaysVolume(days: number, contextOverride: PartialSubgraphApiContext = {}): Promise { + return this.runQuery(LAST_DAYS_VOLUME_QUERY, { days }, contextOverride) + } + + /** + * Query the volume over the last N hours from TheGraph for the CoW Protocol. + * @param {number} hours The number of hours to query. + * @param {PartialSubgraphApiContext} contextOverride Override the context for this call only. + * @returns The volume for the last N hours. + */ + async getLastHoursVolume( + hours: number, + contextOverride: PartialSubgraphApiContext = {} + ): Promise { + return this.runQuery(LAST_HOURS_VOLUME_QUERY, { hours }, contextOverride) + } + + /** + * Run a query against the CoW Protocol Subgraph. + * @param {string | DocumentNode} query GQL query string or DocumentNode. + * @param {Variables | undefined} variables To be passed to the query. + * @param {PartialSubgraphApiContext} contextOverride Override the context for this call only. + * @returns Results of the query. + * @throws {@link CowError} if the query fails. + */ + async runQuery( + query: string | DocumentNode, + variables: Variables | undefined = undefined, + contextOverride: PartialSubgraphApiContext = {} + ): Promise { + const { chainId, env } = this.getContextWithOverride(contextOverride) + const baseUrl = this.getEnvConfigs(env)[chainId] + + if (baseUrl === null) { + throw new Error('Unsupported Network. The subgraph API is not available in the Network ' + chainId) + } + + try { + return await request(baseUrl, query, variables) + } catch (error) { + console.error(`[subgraph:${this.API_NAME}]`, error) + throw new CowError( + `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}` + ) + } + } + + /** + * Override parts of the context for a specific call. + * @param {PartialSubgraphApiContext} contextOverride Override the context for this call only. + * @returns {SubgraphApiContext} The context with the override applied. + */ + private getContextWithOverride(contextOverride: PartialSubgraphApiContext = {}): SubgraphApiContext { + return { ...this.context, ...contextOverride } + } + + /** + * Get the base URLs for the given environment. + * @param {CowEnv} env The environment to get the base URLs for. + * @returns {ApiBaseUrls} The base URLs for the given environment. + */ + private getEnvConfigs(env: CowEnv): SubgraphApiBaseUrls { + if (this.context.baseUrls) return this.context.baseUrls + + return env === 'prod' ? SUBGRAPH_PROD_CONFIG : SUBGRAPH_STAGING_CONFIG + } +} diff --git a/external/cow-sdk/src/subgraph/graphql.ts b/external/cow-sdk/src/subgraph/graphql.ts new file mode 100644 index 000000000..a9cfbf41c --- /dev/null +++ b/external/cow-sdk/src/subgraph/graphql.ts @@ -0,0 +1,3393 @@ +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: string; + String: string; + Boolean: boolean; + Int: number; + Float: number; + BigDecimal: any; + BigInt: any; + Bytes: any; + Int8: any; + Timestamp: any; +}; + +export enum Aggregation_Interval { + Day = 'day', + Hour = 'hour' +} + +export type BlockChangedFilter = { + number_gte: Scalars['Int']; +}; + +export type Block_Height = { + hash?: InputMaybe; + number?: InputMaybe; + number_gte?: InputMaybe; +}; + +export type Bundle = { + __typename?: 'Bundle'; + /** Price of ETH in usd */ + ethPriceUSD: Scalars['BigDecimal']; + /** Singleton #1 */ + id: Scalars['ID']; +}; + +export type Bundle_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + ethPriceUSD?: InputMaybe; + ethPriceUSD_gt?: InputMaybe; + ethPriceUSD_gte?: InputMaybe; + ethPriceUSD_in?: InputMaybe>; + ethPriceUSD_lt?: InputMaybe; + ethPriceUSD_lte?: InputMaybe; + ethPriceUSD_not?: InputMaybe; + ethPriceUSD_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; +}; + +export enum Bundle_OrderBy { + EthPriceUsd = 'ethPriceUSD', + Id = 'id' +} + +export type DailyTotal = { + __typename?: 'DailyTotal'; + /** Total fees in Eth */ + feesEth?: Maybe; + /** Total fees in USD */ + feesUsd?: Maybe; + /** Day timestamp */ + id: Scalars['ID']; + /** Number of trades */ + numberOfTrades: Scalars['BigInt']; + /** Total number of orders placed */ + orders: Scalars['BigInt']; + /** Total number of batches settled */ + settlements: Scalars['BigInt']; + /** Start day timestamp */ + timestamp: Scalars['Int']; + /** Traded tokens */ + tokens: Array; + /** Total number of tokens traded */ + totalTokens: Scalars['BigInt']; + /** Total traded volume in ETH */ + volumeEth?: Maybe; + /** Total traded volume in USD */ + volumeUsd?: Maybe; +}; + + +export type DailyTotalTokensArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type DailyTotal_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + feesEth?: InputMaybe; + feesEth_gt?: InputMaybe; + feesEth_gte?: InputMaybe; + feesEth_in?: InputMaybe>; + feesEth_lt?: InputMaybe; + feesEth_lte?: InputMaybe; + feesEth_not?: InputMaybe; + feesEth_not_in?: InputMaybe>; + feesUsd?: InputMaybe; + feesUsd_gt?: InputMaybe; + feesUsd_gte?: InputMaybe; + feesUsd_in?: InputMaybe>; + feesUsd_lt?: InputMaybe; + feesUsd_lte?: InputMaybe; + feesUsd_not?: InputMaybe; + feesUsd_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + numberOfTrades?: InputMaybe; + numberOfTrades_gt?: InputMaybe; + numberOfTrades_gte?: InputMaybe; + numberOfTrades_in?: InputMaybe>; + numberOfTrades_lt?: InputMaybe; + numberOfTrades_lte?: InputMaybe; + numberOfTrades_not?: InputMaybe; + numberOfTrades_not_in?: InputMaybe>; + or?: InputMaybe>>; + orders?: InputMaybe; + orders_gt?: InputMaybe; + orders_gte?: InputMaybe; + orders_in?: InputMaybe>; + orders_lt?: InputMaybe; + orders_lte?: InputMaybe; + orders_not?: InputMaybe; + orders_not_in?: InputMaybe>; + settlements?: InputMaybe; + settlements_gt?: InputMaybe; + settlements_gte?: InputMaybe; + settlements_in?: InputMaybe>; + settlements_lt?: InputMaybe; + settlements_lte?: InputMaybe; + settlements_not?: InputMaybe; + settlements_not_in?: InputMaybe>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + tokens?: InputMaybe>; + tokens_?: InputMaybe; + tokens_contains?: InputMaybe>; + tokens_contains_nocase?: InputMaybe>; + tokens_not?: InputMaybe>; + tokens_not_contains?: InputMaybe>; + tokens_not_contains_nocase?: InputMaybe>; + totalTokens?: InputMaybe; + totalTokens_gt?: InputMaybe; + totalTokens_gte?: InputMaybe; + totalTokens_in?: InputMaybe>; + totalTokens_lt?: InputMaybe; + totalTokens_lte?: InputMaybe; + totalTokens_not?: InputMaybe; + totalTokens_not_in?: InputMaybe>; + volumeEth?: InputMaybe; + volumeEth_gt?: InputMaybe; + volumeEth_gte?: InputMaybe; + volumeEth_in?: InputMaybe>; + volumeEth_lt?: InputMaybe; + volumeEth_lte?: InputMaybe; + volumeEth_not?: InputMaybe; + volumeEth_not_in?: InputMaybe>; + volumeUsd?: InputMaybe; + volumeUsd_gt?: InputMaybe; + volumeUsd_gte?: InputMaybe; + volumeUsd_in?: InputMaybe>; + volumeUsd_lt?: InputMaybe; + volumeUsd_lte?: InputMaybe; + volumeUsd_not?: InputMaybe; + volumeUsd_not_in?: InputMaybe>; +}; + +export enum DailyTotal_OrderBy { + FeesEth = 'feesEth', + FeesUsd = 'feesUsd', + Id = 'id', + NumberOfTrades = 'numberOfTrades', + Orders = 'orders', + Settlements = 'settlements', + Timestamp = 'timestamp', + Tokens = 'tokens', + TotalTokens = 'totalTokens', + VolumeEth = 'volumeEth', + VolumeUsd = 'volumeUsd' +} + +export type HourlyTotal = { + __typename?: 'HourlyTotal'; + /** Total fees in Eth */ + feesEth?: Maybe; + /** Total fees in USD */ + feesUsd?: Maybe; + /** Hour timestamp */ + id: Scalars['ID']; + /** Number of trades */ + numberOfTrades: Scalars['BigInt']; + /** Total number of orders placed */ + orders: Scalars['BigInt']; + /** Total number of batches settled */ + settlements: Scalars['BigInt']; + /** Start hour timestamp */ + timestamp: Scalars['Int']; + /** Traded tokens */ + tokens: Array; + /** Total number of tokens traded */ + totalTokens: Scalars['BigInt']; + /** Total traded volume in ETH */ + volumeEth?: Maybe; + /** Total traded volume in USD */ + volumeUsd?: Maybe; +}; + + +export type HourlyTotalTokensArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type HourlyTotal_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + feesEth?: InputMaybe; + feesEth_gt?: InputMaybe; + feesEth_gte?: InputMaybe; + feesEth_in?: InputMaybe>; + feesEth_lt?: InputMaybe; + feesEth_lte?: InputMaybe; + feesEth_not?: InputMaybe; + feesEth_not_in?: InputMaybe>; + feesUsd?: InputMaybe; + feesUsd_gt?: InputMaybe; + feesUsd_gte?: InputMaybe; + feesUsd_in?: InputMaybe>; + feesUsd_lt?: InputMaybe; + feesUsd_lte?: InputMaybe; + feesUsd_not?: InputMaybe; + feesUsd_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + numberOfTrades?: InputMaybe; + numberOfTrades_gt?: InputMaybe; + numberOfTrades_gte?: InputMaybe; + numberOfTrades_in?: InputMaybe>; + numberOfTrades_lt?: InputMaybe; + numberOfTrades_lte?: InputMaybe; + numberOfTrades_not?: InputMaybe; + numberOfTrades_not_in?: InputMaybe>; + or?: InputMaybe>>; + orders?: InputMaybe; + orders_gt?: InputMaybe; + orders_gte?: InputMaybe; + orders_in?: InputMaybe>; + orders_lt?: InputMaybe; + orders_lte?: InputMaybe; + orders_not?: InputMaybe; + orders_not_in?: InputMaybe>; + settlements?: InputMaybe; + settlements_gt?: InputMaybe; + settlements_gte?: InputMaybe; + settlements_in?: InputMaybe>; + settlements_lt?: InputMaybe; + settlements_lte?: InputMaybe; + settlements_not?: InputMaybe; + settlements_not_in?: InputMaybe>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + tokens?: InputMaybe>; + tokens_?: InputMaybe; + tokens_contains?: InputMaybe>; + tokens_contains_nocase?: InputMaybe>; + tokens_not?: InputMaybe>; + tokens_not_contains?: InputMaybe>; + tokens_not_contains_nocase?: InputMaybe>; + totalTokens?: InputMaybe; + totalTokens_gt?: InputMaybe; + totalTokens_gte?: InputMaybe; + totalTokens_in?: InputMaybe>; + totalTokens_lt?: InputMaybe; + totalTokens_lte?: InputMaybe; + totalTokens_not?: InputMaybe; + totalTokens_not_in?: InputMaybe>; + volumeEth?: InputMaybe; + volumeEth_gt?: InputMaybe; + volumeEth_gte?: InputMaybe; + volumeEth_in?: InputMaybe>; + volumeEth_lt?: InputMaybe; + volumeEth_lte?: InputMaybe; + volumeEth_not?: InputMaybe; + volumeEth_not_in?: InputMaybe>; + volumeUsd?: InputMaybe; + volumeUsd_gt?: InputMaybe; + volumeUsd_gte?: InputMaybe; + volumeUsd_in?: InputMaybe>; + volumeUsd_lt?: InputMaybe; + volumeUsd_lte?: InputMaybe; + volumeUsd_not?: InputMaybe; + volumeUsd_not_in?: InputMaybe>; +}; + +export enum HourlyTotal_OrderBy { + FeesEth = 'feesEth', + FeesUsd = 'feesUsd', + Id = 'id', + NumberOfTrades = 'numberOfTrades', + Orders = 'orders', + Settlements = 'settlements', + Timestamp = 'timestamp', + Tokens = 'tokens', + TotalTokens = 'totalTokens', + VolumeEth = 'volumeEth', + VolumeUsd = 'volumeUsd' +} + +export type Order = { + __typename?: 'Order'; + /** Trade's OrderUid to hex string */ + id: Scalars['ID']; + /** block's timestamp on invalidate event */ + invalidateTimestamp?: Maybe; + /** Boolean value to show if the order is signed */ + isSigned?: Maybe; + /** Boolean value true by default unless is invalidated by the event */ + isValid?: Maybe; + /** Trade's owner or presign User */ + owner?: Maybe; + /** block's timestamp on presign event */ + presignTimestamp?: Maybe; + /** Array of trades on the order */ + trades?: Maybe>; + /** block's timestamp on trade event */ + tradesTimestamp?: Maybe; +}; + + +export type OrderTradesArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +/** Defines the order direction, either ascending or descending */ +export enum OrderDirection { + Asc = 'asc', + Desc = 'desc' +} + +export type Order_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + invalidateTimestamp?: InputMaybe; + invalidateTimestamp_gt?: InputMaybe; + invalidateTimestamp_gte?: InputMaybe; + invalidateTimestamp_in?: InputMaybe>; + invalidateTimestamp_lt?: InputMaybe; + invalidateTimestamp_lte?: InputMaybe; + invalidateTimestamp_not?: InputMaybe; + invalidateTimestamp_not_in?: InputMaybe>; + isSigned?: InputMaybe; + isSigned_in?: InputMaybe>; + isSigned_not?: InputMaybe; + isSigned_not_in?: InputMaybe>; + isValid?: InputMaybe; + isValid_in?: InputMaybe>; + isValid_not?: InputMaybe; + isValid_not_in?: InputMaybe>; + or?: InputMaybe>>; + owner?: InputMaybe; + owner_?: InputMaybe; + owner_contains?: InputMaybe; + owner_contains_nocase?: InputMaybe; + owner_ends_with?: InputMaybe; + owner_ends_with_nocase?: InputMaybe; + owner_gt?: InputMaybe; + owner_gte?: InputMaybe; + owner_in?: InputMaybe>; + owner_lt?: InputMaybe; + owner_lte?: InputMaybe; + owner_not?: InputMaybe; + owner_not_contains?: InputMaybe; + owner_not_contains_nocase?: InputMaybe; + owner_not_ends_with?: InputMaybe; + owner_not_ends_with_nocase?: InputMaybe; + owner_not_in?: InputMaybe>; + owner_not_starts_with?: InputMaybe; + owner_not_starts_with_nocase?: InputMaybe; + owner_starts_with?: InputMaybe; + owner_starts_with_nocase?: InputMaybe; + presignTimestamp?: InputMaybe; + presignTimestamp_gt?: InputMaybe; + presignTimestamp_gte?: InputMaybe; + presignTimestamp_in?: InputMaybe>; + presignTimestamp_lt?: InputMaybe; + presignTimestamp_lte?: InputMaybe; + presignTimestamp_not?: InputMaybe; + presignTimestamp_not_in?: InputMaybe>; + tradesTimestamp?: InputMaybe; + tradesTimestamp_gt?: InputMaybe; + tradesTimestamp_gte?: InputMaybe; + tradesTimestamp_in?: InputMaybe>; + tradesTimestamp_lt?: InputMaybe; + tradesTimestamp_lte?: InputMaybe; + tradesTimestamp_not?: InputMaybe; + tradesTimestamp_not_in?: InputMaybe>; + trades_?: InputMaybe; +}; + +export enum Order_OrderBy { + Id = 'id', + InvalidateTimestamp = 'invalidateTimestamp', + IsSigned = 'isSigned', + IsValid = 'isValid', + Owner = 'owner', + OwnerAddress = 'owner__address', + OwnerFirstTradeTimestamp = 'owner__firstTradeTimestamp', + OwnerId = 'owner__id', + OwnerIsSolver = 'owner__isSolver', + OwnerNumberOfTrades = 'owner__numberOfTrades', + OwnerSolvedAmountEth = 'owner__solvedAmountEth', + OwnerSolvedAmountUsd = 'owner__solvedAmountUsd', + OwnerTradedAmountEth = 'owner__tradedAmountEth', + OwnerTradedAmountUsd = 'owner__tradedAmountUsd', + PresignTimestamp = 'presignTimestamp', + Trades = 'trades', + TradesTimestamp = 'tradesTimestamp' +} + +export type Pair = { + __typename?: 'Pair'; + /** Token0-token1 sorted by token0 < token1 */ + id: Scalars['ID']; + /** The token 0 address lower than token1 */ + token0: Token; + /** Token0 last trade price */ + token0Price?: Maybe; + /** Token 0 price expressed in token1 in the last trade */ + token0relativePrice?: Maybe; + /** The token 1 address greater than token0 */ + token1: Token; + /** Token1 last trade price */ + token1Price?: Maybe; + /** Token 1 price expressed in token1 in the last trade */ + token1relativePrice?: Maybe; + /** Total volume of token 0 traded */ + volumeToken0?: Maybe; + /** Total volume of token 1 traded */ + volumeToken1?: Maybe; + /** Total volume in Eth */ + volumeTradedEth?: Maybe; + /** Total volume in Usd */ + volumeTradedUsd?: Maybe; +}; + +export type PairDaily = { + __typename?: 'PairDaily'; + /** token0-token1-timestamp sorted by token0 < token1 */ + id: Scalars['ID']; + /** Start day timestamp */ + timestamp: Scalars['Int']; + /** The token 0 address lower than token1 */ + token0: Token; + /** Token0 last trade price */ + token0Price?: Maybe; + /** Token 0 price expressed in token1 in the last trade */ + token0relativePrice?: Maybe; + /** The token 1 address greater than token0 */ + token1: Token; + /** Token1 last trade price */ + token1Price?: Maybe; + /** Token 1 price expressed in token1 in the last trade */ + token1relativePrice?: Maybe; + /** Total volume of token 0 traded */ + volumeToken0?: Maybe; + /** Total volume of token 1 traded */ + volumeToken1?: Maybe; + /** Total volume in Eth */ + volumeTradedEth?: Maybe; + /** Total volume in Usd */ + volumeTradedUsd?: Maybe; +}; + +export type PairDaily_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token0?: InputMaybe; + token0Price?: InputMaybe; + token0Price_gt?: InputMaybe; + token0Price_gte?: InputMaybe; + token0Price_in?: InputMaybe>; + token0Price_lt?: InputMaybe; + token0Price_lte?: InputMaybe; + token0Price_not?: InputMaybe; + token0Price_not_in?: InputMaybe>; + token0_?: InputMaybe; + token0_contains?: InputMaybe; + token0_contains_nocase?: InputMaybe; + token0_ends_with?: InputMaybe; + token0_ends_with_nocase?: InputMaybe; + token0_gt?: InputMaybe; + token0_gte?: InputMaybe; + token0_in?: InputMaybe>; + token0_lt?: InputMaybe; + token0_lte?: InputMaybe; + token0_not?: InputMaybe; + token0_not_contains?: InputMaybe; + token0_not_contains_nocase?: InputMaybe; + token0_not_ends_with?: InputMaybe; + token0_not_ends_with_nocase?: InputMaybe; + token0_not_in?: InputMaybe>; + token0_not_starts_with?: InputMaybe; + token0_not_starts_with_nocase?: InputMaybe; + token0_starts_with?: InputMaybe; + token0_starts_with_nocase?: InputMaybe; + token0relativePrice?: InputMaybe; + token0relativePrice_gt?: InputMaybe; + token0relativePrice_gte?: InputMaybe; + token0relativePrice_in?: InputMaybe>; + token0relativePrice_lt?: InputMaybe; + token0relativePrice_lte?: InputMaybe; + token0relativePrice_not?: InputMaybe; + token0relativePrice_not_in?: InputMaybe>; + token1?: InputMaybe; + token1Price?: InputMaybe; + token1Price_gt?: InputMaybe; + token1Price_gte?: InputMaybe; + token1Price_in?: InputMaybe>; + token1Price_lt?: InputMaybe; + token1Price_lte?: InputMaybe; + token1Price_not?: InputMaybe; + token1Price_not_in?: InputMaybe>; + token1_?: InputMaybe; + token1_contains?: InputMaybe; + token1_contains_nocase?: InputMaybe; + token1_ends_with?: InputMaybe; + token1_ends_with_nocase?: InputMaybe; + token1_gt?: InputMaybe; + token1_gte?: InputMaybe; + token1_in?: InputMaybe>; + token1_lt?: InputMaybe; + token1_lte?: InputMaybe; + token1_not?: InputMaybe; + token1_not_contains?: InputMaybe; + token1_not_contains_nocase?: InputMaybe; + token1_not_ends_with?: InputMaybe; + token1_not_ends_with_nocase?: InputMaybe; + token1_not_in?: InputMaybe>; + token1_not_starts_with?: InputMaybe; + token1_not_starts_with_nocase?: InputMaybe; + token1_starts_with?: InputMaybe; + token1_starts_with_nocase?: InputMaybe; + token1relativePrice?: InputMaybe; + token1relativePrice_gt?: InputMaybe; + token1relativePrice_gte?: InputMaybe; + token1relativePrice_in?: InputMaybe>; + token1relativePrice_lt?: InputMaybe; + token1relativePrice_lte?: InputMaybe; + token1relativePrice_not?: InputMaybe; + token1relativePrice_not_in?: InputMaybe>; + volumeToken0?: InputMaybe; + volumeToken0_gt?: InputMaybe; + volumeToken0_gte?: InputMaybe; + volumeToken0_in?: InputMaybe>; + volumeToken0_lt?: InputMaybe; + volumeToken0_lte?: InputMaybe; + volumeToken0_not?: InputMaybe; + volumeToken0_not_in?: InputMaybe>; + volumeToken1?: InputMaybe; + volumeToken1_gt?: InputMaybe; + volumeToken1_gte?: InputMaybe; + volumeToken1_in?: InputMaybe>; + volumeToken1_lt?: InputMaybe; + volumeToken1_lte?: InputMaybe; + volumeToken1_not?: InputMaybe; + volumeToken1_not_in?: InputMaybe>; + volumeTradedEth?: InputMaybe; + volumeTradedEth_gt?: InputMaybe; + volumeTradedEth_gte?: InputMaybe; + volumeTradedEth_in?: InputMaybe>; + volumeTradedEth_lt?: InputMaybe; + volumeTradedEth_lte?: InputMaybe; + volumeTradedEth_not?: InputMaybe; + volumeTradedEth_not_in?: InputMaybe>; + volumeTradedUsd?: InputMaybe; + volumeTradedUsd_gt?: InputMaybe; + volumeTradedUsd_gte?: InputMaybe; + volumeTradedUsd_in?: InputMaybe>; + volumeTradedUsd_lt?: InputMaybe; + volumeTradedUsd_lte?: InputMaybe; + volumeTradedUsd_not?: InputMaybe; + volumeTradedUsd_not_in?: InputMaybe>; +}; + +export enum PairDaily_OrderBy { + Id = 'id', + Timestamp = 'timestamp', + Token0 = 'token0', + Token0Price = 'token0Price', + Token0Address = 'token0__address', + Token0Decimals = 'token0__decimals', + Token0FirstTradeTimestamp = 'token0__firstTradeTimestamp', + Token0Id = 'token0__id', + Token0Name = 'token0__name', + Token0NumberOfTrades = 'token0__numberOfTrades', + Token0PriceEth = 'token0__priceEth', + Token0PriceUsd = 'token0__priceUsd', + Token0Symbol = 'token0__symbol', + Token0TotalVolume = 'token0__totalVolume', + Token0TotalVolumeEth = 'token0__totalVolumeEth', + Token0TotalVolumeUsd = 'token0__totalVolumeUsd', + Token0relativePrice = 'token0relativePrice', + Token1 = 'token1', + Token1Price = 'token1Price', + Token1Address = 'token1__address', + Token1Decimals = 'token1__decimals', + Token1FirstTradeTimestamp = 'token1__firstTradeTimestamp', + Token1Id = 'token1__id', + Token1Name = 'token1__name', + Token1NumberOfTrades = 'token1__numberOfTrades', + Token1PriceEth = 'token1__priceEth', + Token1PriceUsd = 'token1__priceUsd', + Token1Symbol = 'token1__symbol', + Token1TotalVolume = 'token1__totalVolume', + Token1TotalVolumeEth = 'token1__totalVolumeEth', + Token1TotalVolumeUsd = 'token1__totalVolumeUsd', + Token1relativePrice = 'token1relativePrice', + VolumeToken0 = 'volumeToken0', + VolumeToken1 = 'volumeToken1', + VolumeTradedEth = 'volumeTradedEth', + VolumeTradedUsd = 'volumeTradedUsd' +} + +export type PairHourly = { + __typename?: 'PairHourly'; + /** token0-token1-timestamp sorted by token0 < token1 */ + id: Scalars['ID']; + /** Start hour timestamp */ + timestamp: Scalars['Int']; + /** The token 0 address lower than token1 */ + token0: Token; + /** Token0 last trade price */ + token0Price?: Maybe; + /** Token 0 price expressed in token1 in the last trade */ + token0relativePrice?: Maybe; + /** The token 1 address greater than token0 */ + token1: Token; + /** Token1 last trade price */ + token1Price?: Maybe; + /** Token 1 price expressed in token1 in the last trade */ + token1relativePrice?: Maybe; + /** Total volume of token 0 traded */ + volumeToken0?: Maybe; + /** Total volume of token 1 traded */ + volumeToken1?: Maybe; + /** Total volume in Eth */ + volumeTradedEth?: Maybe; + /** Total volume in Usd */ + volumeTradedUsd?: Maybe; +}; + +export type PairHourly_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token0?: InputMaybe; + token0Price?: InputMaybe; + token0Price_gt?: InputMaybe; + token0Price_gte?: InputMaybe; + token0Price_in?: InputMaybe>; + token0Price_lt?: InputMaybe; + token0Price_lte?: InputMaybe; + token0Price_not?: InputMaybe; + token0Price_not_in?: InputMaybe>; + token0_?: InputMaybe; + token0_contains?: InputMaybe; + token0_contains_nocase?: InputMaybe; + token0_ends_with?: InputMaybe; + token0_ends_with_nocase?: InputMaybe; + token0_gt?: InputMaybe; + token0_gte?: InputMaybe; + token0_in?: InputMaybe>; + token0_lt?: InputMaybe; + token0_lte?: InputMaybe; + token0_not?: InputMaybe; + token0_not_contains?: InputMaybe; + token0_not_contains_nocase?: InputMaybe; + token0_not_ends_with?: InputMaybe; + token0_not_ends_with_nocase?: InputMaybe; + token0_not_in?: InputMaybe>; + token0_not_starts_with?: InputMaybe; + token0_not_starts_with_nocase?: InputMaybe; + token0_starts_with?: InputMaybe; + token0_starts_with_nocase?: InputMaybe; + token0relativePrice?: InputMaybe; + token0relativePrice_gt?: InputMaybe; + token0relativePrice_gte?: InputMaybe; + token0relativePrice_in?: InputMaybe>; + token0relativePrice_lt?: InputMaybe; + token0relativePrice_lte?: InputMaybe; + token0relativePrice_not?: InputMaybe; + token0relativePrice_not_in?: InputMaybe>; + token1?: InputMaybe; + token1Price?: InputMaybe; + token1Price_gt?: InputMaybe; + token1Price_gte?: InputMaybe; + token1Price_in?: InputMaybe>; + token1Price_lt?: InputMaybe; + token1Price_lte?: InputMaybe; + token1Price_not?: InputMaybe; + token1Price_not_in?: InputMaybe>; + token1_?: InputMaybe; + token1_contains?: InputMaybe; + token1_contains_nocase?: InputMaybe; + token1_ends_with?: InputMaybe; + token1_ends_with_nocase?: InputMaybe; + token1_gt?: InputMaybe; + token1_gte?: InputMaybe; + token1_in?: InputMaybe>; + token1_lt?: InputMaybe; + token1_lte?: InputMaybe; + token1_not?: InputMaybe; + token1_not_contains?: InputMaybe; + token1_not_contains_nocase?: InputMaybe; + token1_not_ends_with?: InputMaybe; + token1_not_ends_with_nocase?: InputMaybe; + token1_not_in?: InputMaybe>; + token1_not_starts_with?: InputMaybe; + token1_not_starts_with_nocase?: InputMaybe; + token1_starts_with?: InputMaybe; + token1_starts_with_nocase?: InputMaybe; + token1relativePrice?: InputMaybe; + token1relativePrice_gt?: InputMaybe; + token1relativePrice_gte?: InputMaybe; + token1relativePrice_in?: InputMaybe>; + token1relativePrice_lt?: InputMaybe; + token1relativePrice_lte?: InputMaybe; + token1relativePrice_not?: InputMaybe; + token1relativePrice_not_in?: InputMaybe>; + volumeToken0?: InputMaybe; + volumeToken0_gt?: InputMaybe; + volumeToken0_gte?: InputMaybe; + volumeToken0_in?: InputMaybe>; + volumeToken0_lt?: InputMaybe; + volumeToken0_lte?: InputMaybe; + volumeToken0_not?: InputMaybe; + volumeToken0_not_in?: InputMaybe>; + volumeToken1?: InputMaybe; + volumeToken1_gt?: InputMaybe; + volumeToken1_gte?: InputMaybe; + volumeToken1_in?: InputMaybe>; + volumeToken1_lt?: InputMaybe; + volumeToken1_lte?: InputMaybe; + volumeToken1_not?: InputMaybe; + volumeToken1_not_in?: InputMaybe>; + volumeTradedEth?: InputMaybe; + volumeTradedEth_gt?: InputMaybe; + volumeTradedEth_gte?: InputMaybe; + volumeTradedEth_in?: InputMaybe>; + volumeTradedEth_lt?: InputMaybe; + volumeTradedEth_lte?: InputMaybe; + volumeTradedEth_not?: InputMaybe; + volumeTradedEth_not_in?: InputMaybe>; + volumeTradedUsd?: InputMaybe; + volumeTradedUsd_gt?: InputMaybe; + volumeTradedUsd_gte?: InputMaybe; + volumeTradedUsd_in?: InputMaybe>; + volumeTradedUsd_lt?: InputMaybe; + volumeTradedUsd_lte?: InputMaybe; + volumeTradedUsd_not?: InputMaybe; + volumeTradedUsd_not_in?: InputMaybe>; +}; + +export enum PairHourly_OrderBy { + Id = 'id', + Timestamp = 'timestamp', + Token0 = 'token0', + Token0Price = 'token0Price', + Token0Address = 'token0__address', + Token0Decimals = 'token0__decimals', + Token0FirstTradeTimestamp = 'token0__firstTradeTimestamp', + Token0Id = 'token0__id', + Token0Name = 'token0__name', + Token0NumberOfTrades = 'token0__numberOfTrades', + Token0PriceEth = 'token0__priceEth', + Token0PriceUsd = 'token0__priceUsd', + Token0Symbol = 'token0__symbol', + Token0TotalVolume = 'token0__totalVolume', + Token0TotalVolumeEth = 'token0__totalVolumeEth', + Token0TotalVolumeUsd = 'token0__totalVolumeUsd', + Token0relativePrice = 'token0relativePrice', + Token1 = 'token1', + Token1Price = 'token1Price', + Token1Address = 'token1__address', + Token1Decimals = 'token1__decimals', + Token1FirstTradeTimestamp = 'token1__firstTradeTimestamp', + Token1Id = 'token1__id', + Token1Name = 'token1__name', + Token1NumberOfTrades = 'token1__numberOfTrades', + Token1PriceEth = 'token1__priceEth', + Token1PriceUsd = 'token1__priceUsd', + Token1Symbol = 'token1__symbol', + Token1TotalVolume = 'token1__totalVolume', + Token1TotalVolumeEth = 'token1__totalVolumeEth', + Token1TotalVolumeUsd = 'token1__totalVolumeUsd', + Token1relativePrice = 'token1relativePrice', + VolumeToken0 = 'volumeToken0', + VolumeToken1 = 'volumeToken1', + VolumeTradedEth = 'volumeTradedEth', + VolumeTradedUsd = 'volumeTradedUsd' +} + +export type Pair_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + token0?: InputMaybe; + token0Price?: InputMaybe; + token0Price_gt?: InputMaybe; + token0Price_gte?: InputMaybe; + token0Price_in?: InputMaybe>; + token0Price_lt?: InputMaybe; + token0Price_lte?: InputMaybe; + token0Price_not?: InputMaybe; + token0Price_not_in?: InputMaybe>; + token0_?: InputMaybe; + token0_contains?: InputMaybe; + token0_contains_nocase?: InputMaybe; + token0_ends_with?: InputMaybe; + token0_ends_with_nocase?: InputMaybe; + token0_gt?: InputMaybe; + token0_gte?: InputMaybe; + token0_in?: InputMaybe>; + token0_lt?: InputMaybe; + token0_lte?: InputMaybe; + token0_not?: InputMaybe; + token0_not_contains?: InputMaybe; + token0_not_contains_nocase?: InputMaybe; + token0_not_ends_with?: InputMaybe; + token0_not_ends_with_nocase?: InputMaybe; + token0_not_in?: InputMaybe>; + token0_not_starts_with?: InputMaybe; + token0_not_starts_with_nocase?: InputMaybe; + token0_starts_with?: InputMaybe; + token0_starts_with_nocase?: InputMaybe; + token0relativePrice?: InputMaybe; + token0relativePrice_gt?: InputMaybe; + token0relativePrice_gte?: InputMaybe; + token0relativePrice_in?: InputMaybe>; + token0relativePrice_lt?: InputMaybe; + token0relativePrice_lte?: InputMaybe; + token0relativePrice_not?: InputMaybe; + token0relativePrice_not_in?: InputMaybe>; + token1?: InputMaybe; + token1Price?: InputMaybe; + token1Price_gt?: InputMaybe; + token1Price_gte?: InputMaybe; + token1Price_in?: InputMaybe>; + token1Price_lt?: InputMaybe; + token1Price_lte?: InputMaybe; + token1Price_not?: InputMaybe; + token1Price_not_in?: InputMaybe>; + token1_?: InputMaybe; + token1_contains?: InputMaybe; + token1_contains_nocase?: InputMaybe; + token1_ends_with?: InputMaybe; + token1_ends_with_nocase?: InputMaybe; + token1_gt?: InputMaybe; + token1_gte?: InputMaybe; + token1_in?: InputMaybe>; + token1_lt?: InputMaybe; + token1_lte?: InputMaybe; + token1_not?: InputMaybe; + token1_not_contains?: InputMaybe; + token1_not_contains_nocase?: InputMaybe; + token1_not_ends_with?: InputMaybe; + token1_not_ends_with_nocase?: InputMaybe; + token1_not_in?: InputMaybe>; + token1_not_starts_with?: InputMaybe; + token1_not_starts_with_nocase?: InputMaybe; + token1_starts_with?: InputMaybe; + token1_starts_with_nocase?: InputMaybe; + token1relativePrice?: InputMaybe; + token1relativePrice_gt?: InputMaybe; + token1relativePrice_gte?: InputMaybe; + token1relativePrice_in?: InputMaybe>; + token1relativePrice_lt?: InputMaybe; + token1relativePrice_lte?: InputMaybe; + token1relativePrice_not?: InputMaybe; + token1relativePrice_not_in?: InputMaybe>; + volumeToken0?: InputMaybe; + volumeToken0_gt?: InputMaybe; + volumeToken0_gte?: InputMaybe; + volumeToken0_in?: InputMaybe>; + volumeToken0_lt?: InputMaybe; + volumeToken0_lte?: InputMaybe; + volumeToken0_not?: InputMaybe; + volumeToken0_not_in?: InputMaybe>; + volumeToken1?: InputMaybe; + volumeToken1_gt?: InputMaybe; + volumeToken1_gte?: InputMaybe; + volumeToken1_in?: InputMaybe>; + volumeToken1_lt?: InputMaybe; + volumeToken1_lte?: InputMaybe; + volumeToken1_not?: InputMaybe; + volumeToken1_not_in?: InputMaybe>; + volumeTradedEth?: InputMaybe; + volumeTradedEth_gt?: InputMaybe; + volumeTradedEth_gte?: InputMaybe; + volumeTradedEth_in?: InputMaybe>; + volumeTradedEth_lt?: InputMaybe; + volumeTradedEth_lte?: InputMaybe; + volumeTradedEth_not?: InputMaybe; + volumeTradedEth_not_in?: InputMaybe>; + volumeTradedUsd?: InputMaybe; + volumeTradedUsd_gt?: InputMaybe; + volumeTradedUsd_gte?: InputMaybe; + volumeTradedUsd_in?: InputMaybe>; + volumeTradedUsd_lt?: InputMaybe; + volumeTradedUsd_lte?: InputMaybe; + volumeTradedUsd_not?: InputMaybe; + volumeTradedUsd_not_in?: InputMaybe>; +}; + +export enum Pair_OrderBy { + Id = 'id', + Token0 = 'token0', + Token0Price = 'token0Price', + Token0Address = 'token0__address', + Token0Decimals = 'token0__decimals', + Token0FirstTradeTimestamp = 'token0__firstTradeTimestamp', + Token0Id = 'token0__id', + Token0Name = 'token0__name', + Token0NumberOfTrades = 'token0__numberOfTrades', + Token0PriceEth = 'token0__priceEth', + Token0PriceUsd = 'token0__priceUsd', + Token0Symbol = 'token0__symbol', + Token0TotalVolume = 'token0__totalVolume', + Token0TotalVolumeEth = 'token0__totalVolumeEth', + Token0TotalVolumeUsd = 'token0__totalVolumeUsd', + Token0relativePrice = 'token0relativePrice', + Token1 = 'token1', + Token1Price = 'token1Price', + Token1Address = 'token1__address', + Token1Decimals = 'token1__decimals', + Token1FirstTradeTimestamp = 'token1__firstTradeTimestamp', + Token1Id = 'token1__id', + Token1Name = 'token1__name', + Token1NumberOfTrades = 'token1__numberOfTrades', + Token1PriceEth = 'token1__priceEth', + Token1PriceUsd = 'token1__priceUsd', + Token1Symbol = 'token1__symbol', + Token1TotalVolume = 'token1__totalVolume', + Token1TotalVolumeEth = 'token1__totalVolumeEth', + Token1TotalVolumeUsd = 'token1__totalVolumeUsd', + Token1relativePrice = 'token1relativePrice', + VolumeToken0 = 'volumeToken0', + VolumeToken1 = 'volumeToken1', + VolumeTradedEth = 'volumeTradedEth', + VolumeTradedUsd = 'volumeTradedUsd' +} + +export type Query = { + __typename?: 'Query'; + /** Access to subgraph metadata */ + _meta?: Maybe<_Meta_>; + bundle?: Maybe; + bundles: Array; + dailyTotal?: Maybe; + dailyTotals: Array; + hourlyTotal?: Maybe; + hourlyTotals: Array; + order?: Maybe; + orders: Array; + pair?: Maybe; + pairDailies: Array; + pairDaily?: Maybe; + pairHourlies: Array; + pairHourly?: Maybe; + pairs: Array; + settlement?: Maybe; + settlements: Array; + token?: Maybe; + tokenDailyTotal?: Maybe; + tokenDailyTotals: Array; + tokenHourlyTotal?: Maybe; + tokenHourlyTotals: Array; + tokenTradingEvent?: Maybe; + tokenTradingEvents: Array; + tokens: Array; + total?: Maybe; + totals: Array; + trade?: Maybe; + trades: Array; + uniswapPool?: Maybe; + uniswapPools: Array; + uniswapToken?: Maybe; + uniswapTokens: Array; + user?: Maybe; + users: Array; +}; + + +export type Query_MetaArgs = { + block?: InputMaybe; +}; + + +export type QueryBundleArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryBundlesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryDailyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryDailyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryHourlyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryHourlyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryOrderArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryOrdersArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryPairArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryPairDailiesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryPairDailyArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryPairHourliesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryPairHourlyArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryPairsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QuerySettlementArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QuerySettlementsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTokenArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTokenDailyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTokenDailyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTokenHourlyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTokenHourlyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTokenTradingEventArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTokenTradingEventsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTokensArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryTradeArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryTradesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryUniswapPoolArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryUniswapPoolsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryUniswapTokenArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryUniswapTokensArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type QueryUserArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type QueryUsersArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + +export type Settlement = { + __typename?: 'Settlement'; + /** First trade timestamp */ + firstTradeTimestamp: Scalars['Int']; + /** TxHash */ + id: Scalars['ID']; + /** User who solved the settlement */ + solver?: Maybe; + /** Collection of trades */ + trades?: Maybe>; + /** Transaction hash */ + txHash: Scalars['Bytes']; +}; + + +export type SettlementTradesArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type Settlement_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + firstTradeTimestamp?: InputMaybe; + firstTradeTimestamp_gt?: InputMaybe; + firstTradeTimestamp_gte?: InputMaybe; + firstTradeTimestamp_in?: InputMaybe>; + firstTradeTimestamp_lt?: InputMaybe; + firstTradeTimestamp_lte?: InputMaybe; + firstTradeTimestamp_not?: InputMaybe; + firstTradeTimestamp_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + solver?: InputMaybe; + solver_?: InputMaybe; + solver_contains?: InputMaybe; + solver_contains_nocase?: InputMaybe; + solver_ends_with?: InputMaybe; + solver_ends_with_nocase?: InputMaybe; + solver_gt?: InputMaybe; + solver_gte?: InputMaybe; + solver_in?: InputMaybe>; + solver_lt?: InputMaybe; + solver_lte?: InputMaybe; + solver_not?: InputMaybe; + solver_not_contains?: InputMaybe; + solver_not_contains_nocase?: InputMaybe; + solver_not_ends_with?: InputMaybe; + solver_not_ends_with_nocase?: InputMaybe; + solver_not_in?: InputMaybe>; + solver_not_starts_with?: InputMaybe; + solver_not_starts_with_nocase?: InputMaybe; + solver_starts_with?: InputMaybe; + solver_starts_with_nocase?: InputMaybe; + trades_?: InputMaybe; + txHash?: InputMaybe; + txHash_contains?: InputMaybe; + txHash_gt?: InputMaybe; + txHash_gte?: InputMaybe; + txHash_in?: InputMaybe>; + txHash_lt?: InputMaybe; + txHash_lte?: InputMaybe; + txHash_not?: InputMaybe; + txHash_not_contains?: InputMaybe; + txHash_not_in?: InputMaybe>; +}; + +export enum Settlement_OrderBy { + FirstTradeTimestamp = 'firstTradeTimestamp', + Id = 'id', + Solver = 'solver', + SolverAddress = 'solver__address', + SolverFirstTradeTimestamp = 'solver__firstTradeTimestamp', + SolverId = 'solver__id', + SolverIsSolver = 'solver__isSolver', + SolverNumberOfTrades = 'solver__numberOfTrades', + SolverSolvedAmountEth = 'solver__solvedAmountEth', + SolverSolvedAmountUsd = 'solver__solvedAmountUsd', + SolverTradedAmountEth = 'solver__tradedAmountEth', + SolverTradedAmountUsd = 'solver__tradedAmountUsd', + Trades = 'trades', + TxHash = 'txHash' +} + +export type Subscription = { + __typename?: 'Subscription'; + /** Access to subgraph metadata */ + _meta?: Maybe<_Meta_>; + bundle?: Maybe; + bundles: Array; + dailyTotal?: Maybe; + dailyTotals: Array; + hourlyTotal?: Maybe; + hourlyTotals: Array; + order?: Maybe; + orders: Array; + pair?: Maybe; + pairDailies: Array; + pairDaily?: Maybe; + pairHourlies: Array; + pairHourly?: Maybe; + pairs: Array; + settlement?: Maybe; + settlements: Array; + token?: Maybe; + tokenDailyTotal?: Maybe; + tokenDailyTotals: Array; + tokenHourlyTotal?: Maybe; + tokenHourlyTotals: Array; + tokenTradingEvent?: Maybe; + tokenTradingEvents: Array; + tokens: Array; + total?: Maybe; + totals: Array; + trade?: Maybe; + trades: Array; + uniswapPool?: Maybe; + uniswapPools: Array; + uniswapToken?: Maybe; + uniswapTokens: Array; + user?: Maybe; + users: Array; +}; + + +export type Subscription_MetaArgs = { + block?: InputMaybe; +}; + + +export type SubscriptionBundleArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionBundlesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionDailyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionDailyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionHourlyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionHourlyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionOrderArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionOrdersArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionPairArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionPairDailiesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionPairDailyArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionPairHourliesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionPairHourlyArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionPairsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionSettlementArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionSettlementsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTokenArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTokenDailyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTokenDailyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTokenHourlyTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTokenHourlyTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTokenTradingEventArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTokenTradingEventsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTokensArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTotalArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTotalsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionTradeArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionTradesArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionUniswapPoolArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionUniswapPoolsArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionUniswapTokenArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionUniswapTokensArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + + +export type SubscriptionUserArgs = { + block?: InputMaybe; + id: Scalars['ID']; + subgraphError?: _SubgraphErrorPolicy_; +}; + + +export type SubscriptionUsersArgs = { + block?: InputMaybe; + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + subgraphError?: _SubgraphErrorPolicy_; + where?: InputMaybe; +}; + +export type Token = { + __typename?: 'Token'; + /** Token address */ + address: Scalars['Bytes']; + /** Daily totals */ + dailyTotals: Array; + /** Token decimals fetched by contract call */ + decimals: Scalars['Int']; + /** First token trade block timestamp */ + firstTradeTimestamp: Scalars['Int']; + /** History of trading for this token */ + history: Array; + /** Hourly totals */ + hourlyTotals: Array; + /** Token address to hexString */ + id: Scalars['ID']; + /** Token name fetched by ERC20 contract call */ + name: Scalars['String']; + /** Total trades */ + numberOfTrades: Scalars['Int']; + /** Derived price in ETH */ + priceEth?: Maybe; + /** Derived price in USD */ + priceUsd?: Maybe; + /** Token symbol fetched by contract call */ + symbol: Scalars['String']; + /** Total volume managed in CowSwap */ + totalVolume?: Maybe; + /** Total volume in Eth */ + totalVolumeEth: Scalars['BigDecimal']; + /** Total volume in Usd */ + totalVolumeUsd: Scalars['BigDecimal']; +}; + + +export type TokenDailyTotalsArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + + +export type TokenHistoryArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + + +export type TokenHourlyTotalsArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type TokenDailyTotal = { + __typename?: 'TokenDailyTotal'; + /** Average trade price */ + averagePrice: Scalars['BigDecimal']; + /** Last trade price */ + closePrice: Scalars['BigDecimal']; + /** Higher trade price */ + higherPrice: Scalars['BigDecimal']; + /** TokenAddress + timestamp day */ + id: Scalars['ID']; + /** Lower trade price */ + lowerPrice: Scalars['BigDecimal']; + /** First trade price */ + openPrice: Scalars['BigDecimal']; + /** Start day timestamp */ + timestamp: Scalars['Int']; + /** Token address */ + token: Token; + /** Number of trades that day */ + totalTrades: Scalars['BigInt']; + /** Total volume traded that day in token */ + totalVolume: Scalars['BigInt']; + /** Total amount traded that day in ETH */ + totalVolumeEth: Scalars['BigDecimal']; + /** Total amount traded that day in USD */ + totalVolumeUsd: Scalars['BigDecimal']; +}; + +export type TokenDailyTotal_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + averagePrice?: InputMaybe; + averagePrice_gt?: InputMaybe; + averagePrice_gte?: InputMaybe; + averagePrice_in?: InputMaybe>; + averagePrice_lt?: InputMaybe; + averagePrice_lte?: InputMaybe; + averagePrice_not?: InputMaybe; + averagePrice_not_in?: InputMaybe>; + closePrice?: InputMaybe; + closePrice_gt?: InputMaybe; + closePrice_gte?: InputMaybe; + closePrice_in?: InputMaybe>; + closePrice_lt?: InputMaybe; + closePrice_lte?: InputMaybe; + closePrice_not?: InputMaybe; + closePrice_not_in?: InputMaybe>; + higherPrice?: InputMaybe; + higherPrice_gt?: InputMaybe; + higherPrice_gte?: InputMaybe; + higherPrice_in?: InputMaybe>; + higherPrice_lt?: InputMaybe; + higherPrice_lte?: InputMaybe; + higherPrice_not?: InputMaybe; + higherPrice_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + lowerPrice?: InputMaybe; + lowerPrice_gt?: InputMaybe; + lowerPrice_gte?: InputMaybe; + lowerPrice_in?: InputMaybe>; + lowerPrice_lt?: InputMaybe; + lowerPrice_lte?: InputMaybe; + lowerPrice_not?: InputMaybe; + lowerPrice_not_in?: InputMaybe>; + openPrice?: InputMaybe; + openPrice_gt?: InputMaybe; + openPrice_gte?: InputMaybe; + openPrice_in?: InputMaybe>; + openPrice_lt?: InputMaybe; + openPrice_lte?: InputMaybe; + openPrice_not?: InputMaybe; + openPrice_not_in?: InputMaybe>; + or?: InputMaybe>>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token?: InputMaybe; + token_?: InputMaybe; + token_contains?: InputMaybe; + token_contains_nocase?: InputMaybe; + token_ends_with?: InputMaybe; + token_ends_with_nocase?: InputMaybe; + token_gt?: InputMaybe; + token_gte?: InputMaybe; + token_in?: InputMaybe>; + token_lt?: InputMaybe; + token_lte?: InputMaybe; + token_not?: InputMaybe; + token_not_contains?: InputMaybe; + token_not_contains_nocase?: InputMaybe; + token_not_ends_with?: InputMaybe; + token_not_ends_with_nocase?: InputMaybe; + token_not_in?: InputMaybe>; + token_not_starts_with?: InputMaybe; + token_not_starts_with_nocase?: InputMaybe; + token_starts_with?: InputMaybe; + token_starts_with_nocase?: InputMaybe; + totalTrades?: InputMaybe; + totalTrades_gt?: InputMaybe; + totalTrades_gte?: InputMaybe; + totalTrades_in?: InputMaybe>; + totalTrades_lt?: InputMaybe; + totalTrades_lte?: InputMaybe; + totalTrades_not?: InputMaybe; + totalTrades_not_in?: InputMaybe>; + totalVolume?: InputMaybe; + totalVolumeEth?: InputMaybe; + totalVolumeEth_gt?: InputMaybe; + totalVolumeEth_gte?: InputMaybe; + totalVolumeEth_in?: InputMaybe>; + totalVolumeEth_lt?: InputMaybe; + totalVolumeEth_lte?: InputMaybe; + totalVolumeEth_not?: InputMaybe; + totalVolumeEth_not_in?: InputMaybe>; + totalVolumeUsd?: InputMaybe; + totalVolumeUsd_gt?: InputMaybe; + totalVolumeUsd_gte?: InputMaybe; + totalVolumeUsd_in?: InputMaybe>; + totalVolumeUsd_lt?: InputMaybe; + totalVolumeUsd_lte?: InputMaybe; + totalVolumeUsd_not?: InputMaybe; + totalVolumeUsd_not_in?: InputMaybe>; + totalVolume_gt?: InputMaybe; + totalVolume_gte?: InputMaybe; + totalVolume_in?: InputMaybe>; + totalVolume_lt?: InputMaybe; + totalVolume_lte?: InputMaybe; + totalVolume_not?: InputMaybe; + totalVolume_not_in?: InputMaybe>; +}; + +export enum TokenDailyTotal_OrderBy { + AveragePrice = 'averagePrice', + ClosePrice = 'closePrice', + HigherPrice = 'higherPrice', + Id = 'id', + LowerPrice = 'lowerPrice', + OpenPrice = 'openPrice', + Timestamp = 'timestamp', + Token = 'token', + TokenAddress = 'token__address', + TokenDecimals = 'token__decimals', + TokenFirstTradeTimestamp = 'token__firstTradeTimestamp', + TokenId = 'token__id', + TokenName = 'token__name', + TokenNumberOfTrades = 'token__numberOfTrades', + TokenPriceEth = 'token__priceEth', + TokenPriceUsd = 'token__priceUsd', + TokenSymbol = 'token__symbol', + TokenTotalVolume = 'token__totalVolume', + TokenTotalVolumeEth = 'token__totalVolumeEth', + TokenTotalVolumeUsd = 'token__totalVolumeUsd', + TotalTrades = 'totalTrades', + TotalVolume = 'totalVolume', + TotalVolumeEth = 'totalVolumeEth', + TotalVolumeUsd = 'totalVolumeUsd' +} + +export type TokenHourlyTotal = { + __typename?: 'TokenHourlyTotal'; + /** Average trade price */ + averagePrice: Scalars['BigDecimal']; + /** Last trade price */ + closePrice: Scalars['BigDecimal']; + /** Higher trade price */ + higherPrice: Scalars['BigDecimal']; + /** TokenAddress + timestamp hour */ + id: Scalars['ID']; + /** Lower trade price */ + lowerPrice: Scalars['BigDecimal']; + /** First trade price */ + openPrice: Scalars['BigDecimal']; + /** Start hour timestamp */ + timestamp: Scalars['Int']; + /** Token address */ + token: Token; + /** Number of trades that hour */ + totalTrades: Scalars['BigInt']; + /** Total volume traded that day in token */ + totalVolume: Scalars['BigInt']; + /** Total amount traded that hour in ETH */ + totalVolumeEth: Scalars['BigDecimal']; + /** Total amount traded that hour in USD */ + totalVolumeUsd: Scalars['BigDecimal']; +}; + +export type TokenHourlyTotal_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + averagePrice?: InputMaybe; + averagePrice_gt?: InputMaybe; + averagePrice_gte?: InputMaybe; + averagePrice_in?: InputMaybe>; + averagePrice_lt?: InputMaybe; + averagePrice_lte?: InputMaybe; + averagePrice_not?: InputMaybe; + averagePrice_not_in?: InputMaybe>; + closePrice?: InputMaybe; + closePrice_gt?: InputMaybe; + closePrice_gte?: InputMaybe; + closePrice_in?: InputMaybe>; + closePrice_lt?: InputMaybe; + closePrice_lte?: InputMaybe; + closePrice_not?: InputMaybe; + closePrice_not_in?: InputMaybe>; + higherPrice?: InputMaybe; + higherPrice_gt?: InputMaybe; + higherPrice_gte?: InputMaybe; + higherPrice_in?: InputMaybe>; + higherPrice_lt?: InputMaybe; + higherPrice_lte?: InputMaybe; + higherPrice_not?: InputMaybe; + higherPrice_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + lowerPrice?: InputMaybe; + lowerPrice_gt?: InputMaybe; + lowerPrice_gte?: InputMaybe; + lowerPrice_in?: InputMaybe>; + lowerPrice_lt?: InputMaybe; + lowerPrice_lte?: InputMaybe; + lowerPrice_not?: InputMaybe; + lowerPrice_not_in?: InputMaybe>; + openPrice?: InputMaybe; + openPrice_gt?: InputMaybe; + openPrice_gte?: InputMaybe; + openPrice_in?: InputMaybe>; + openPrice_lt?: InputMaybe; + openPrice_lte?: InputMaybe; + openPrice_not?: InputMaybe; + openPrice_not_in?: InputMaybe>; + or?: InputMaybe>>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token?: InputMaybe; + token_?: InputMaybe; + token_contains?: InputMaybe; + token_contains_nocase?: InputMaybe; + token_ends_with?: InputMaybe; + token_ends_with_nocase?: InputMaybe; + token_gt?: InputMaybe; + token_gte?: InputMaybe; + token_in?: InputMaybe>; + token_lt?: InputMaybe; + token_lte?: InputMaybe; + token_not?: InputMaybe; + token_not_contains?: InputMaybe; + token_not_contains_nocase?: InputMaybe; + token_not_ends_with?: InputMaybe; + token_not_ends_with_nocase?: InputMaybe; + token_not_in?: InputMaybe>; + token_not_starts_with?: InputMaybe; + token_not_starts_with_nocase?: InputMaybe; + token_starts_with?: InputMaybe; + token_starts_with_nocase?: InputMaybe; + totalTrades?: InputMaybe; + totalTrades_gt?: InputMaybe; + totalTrades_gte?: InputMaybe; + totalTrades_in?: InputMaybe>; + totalTrades_lt?: InputMaybe; + totalTrades_lte?: InputMaybe; + totalTrades_not?: InputMaybe; + totalTrades_not_in?: InputMaybe>; + totalVolume?: InputMaybe; + totalVolumeEth?: InputMaybe; + totalVolumeEth_gt?: InputMaybe; + totalVolumeEth_gte?: InputMaybe; + totalVolumeEth_in?: InputMaybe>; + totalVolumeEth_lt?: InputMaybe; + totalVolumeEth_lte?: InputMaybe; + totalVolumeEth_not?: InputMaybe; + totalVolumeEth_not_in?: InputMaybe>; + totalVolumeUsd?: InputMaybe; + totalVolumeUsd_gt?: InputMaybe; + totalVolumeUsd_gte?: InputMaybe; + totalVolumeUsd_in?: InputMaybe>; + totalVolumeUsd_lt?: InputMaybe; + totalVolumeUsd_lte?: InputMaybe; + totalVolumeUsd_not?: InputMaybe; + totalVolumeUsd_not_in?: InputMaybe>; + totalVolume_gt?: InputMaybe; + totalVolume_gte?: InputMaybe; + totalVolume_in?: InputMaybe>; + totalVolume_lt?: InputMaybe; + totalVolume_lte?: InputMaybe; + totalVolume_not?: InputMaybe; + totalVolume_not_in?: InputMaybe>; +}; + +export enum TokenHourlyTotal_OrderBy { + AveragePrice = 'averagePrice', + ClosePrice = 'closePrice', + HigherPrice = 'higherPrice', + Id = 'id', + LowerPrice = 'lowerPrice', + OpenPrice = 'openPrice', + Timestamp = 'timestamp', + Token = 'token', + TokenAddress = 'token__address', + TokenDecimals = 'token__decimals', + TokenFirstTradeTimestamp = 'token__firstTradeTimestamp', + TokenId = 'token__id', + TokenName = 'token__name', + TokenNumberOfTrades = 'token__numberOfTrades', + TokenPriceEth = 'token__priceEth', + TokenPriceUsd = 'token__priceUsd', + TokenSymbol = 'token__symbol', + TokenTotalVolume = 'token__totalVolume', + TokenTotalVolumeEth = 'token__totalVolumeEth', + TokenTotalVolumeUsd = 'token__totalVolumeUsd', + TotalTrades = 'totalTrades', + TotalVolume = 'totalVolume', + TotalVolumeEth = 'totalVolumeEth', + TotalVolumeUsd = 'totalVolumeUsd' +} + +export type TokenTradingEvent = { + __typename?: 'TokenTradingEvent'; + /** Amount in Eth */ + amountEth: Scalars['BigDecimal']; + /** Amount in Usd */ + amountUsd: Scalars['BigDecimal']; + /** Id built using token-timestamp */ + id: Scalars['ID']; + /** Timestamp */ + timestamp: Scalars['Int']; + /** Token */ + token: Token; + /** Trade */ + trade: Trade; +}; + +export type TokenTradingEvent_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + amountEth?: InputMaybe; + amountEth_gt?: InputMaybe; + amountEth_gte?: InputMaybe; + amountEth_in?: InputMaybe>; + amountEth_lt?: InputMaybe; + amountEth_lte?: InputMaybe; + amountEth_not?: InputMaybe; + amountEth_not_in?: InputMaybe>; + amountUsd?: InputMaybe; + amountUsd_gt?: InputMaybe; + amountUsd_gte?: InputMaybe; + amountUsd_in?: InputMaybe>; + amountUsd_lt?: InputMaybe; + amountUsd_lte?: InputMaybe; + amountUsd_not?: InputMaybe; + amountUsd_not_in?: InputMaybe>; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + token?: InputMaybe; + token_?: InputMaybe; + token_contains?: InputMaybe; + token_contains_nocase?: InputMaybe; + token_ends_with?: InputMaybe; + token_ends_with_nocase?: InputMaybe; + token_gt?: InputMaybe; + token_gte?: InputMaybe; + token_in?: InputMaybe>; + token_lt?: InputMaybe; + token_lte?: InputMaybe; + token_not?: InputMaybe; + token_not_contains?: InputMaybe; + token_not_contains_nocase?: InputMaybe; + token_not_ends_with?: InputMaybe; + token_not_ends_with_nocase?: InputMaybe; + token_not_in?: InputMaybe>; + token_not_starts_with?: InputMaybe; + token_not_starts_with_nocase?: InputMaybe; + token_starts_with?: InputMaybe; + token_starts_with_nocase?: InputMaybe; + trade?: InputMaybe; + trade_?: InputMaybe; + trade_contains?: InputMaybe; + trade_contains_nocase?: InputMaybe; + trade_ends_with?: InputMaybe; + trade_ends_with_nocase?: InputMaybe; + trade_gt?: InputMaybe; + trade_gte?: InputMaybe; + trade_in?: InputMaybe>; + trade_lt?: InputMaybe; + trade_lte?: InputMaybe; + trade_not?: InputMaybe; + trade_not_contains?: InputMaybe; + trade_not_contains_nocase?: InputMaybe; + trade_not_ends_with?: InputMaybe; + trade_not_ends_with_nocase?: InputMaybe; + trade_not_in?: InputMaybe>; + trade_not_starts_with?: InputMaybe; + trade_not_starts_with_nocase?: InputMaybe; + trade_starts_with?: InputMaybe; + trade_starts_with_nocase?: InputMaybe; +}; + +export enum TokenTradingEvent_OrderBy { + AmountEth = 'amountEth', + AmountUsd = 'amountUsd', + Id = 'id', + Timestamp = 'timestamp', + Token = 'token', + TokenAddress = 'token__address', + TokenDecimals = 'token__decimals', + TokenFirstTradeTimestamp = 'token__firstTradeTimestamp', + TokenId = 'token__id', + TokenName = 'token__name', + TokenNumberOfTrades = 'token__numberOfTrades', + TokenPriceEth = 'token__priceEth', + TokenPriceUsd = 'token__priceUsd', + TokenSymbol = 'token__symbol', + TokenTotalVolume = 'token__totalVolume', + TokenTotalVolumeEth = 'token__totalVolumeEth', + TokenTotalVolumeUsd = 'token__totalVolumeUsd', + Trade = 'trade', + TradeBuyAmount = 'trade__buyAmount', + TradeBuyAmountEth = 'trade__buyAmountEth', + TradeBuyAmountUsd = 'trade__buyAmountUsd', + TradeFeeAmount = 'trade__feeAmount', + TradeGasPrice = 'trade__gasPrice', + TradeId = 'trade__id', + TradeSellAmount = 'trade__sellAmount', + TradeSellAmountEth = 'trade__sellAmountEth', + TradeSellAmountUsd = 'trade__sellAmountUsd', + TradeTimestamp = 'trade__timestamp', + TradeTxHash = 'trade__txHash' +} + +export type Token_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + address?: InputMaybe; + address_contains?: InputMaybe; + address_gt?: InputMaybe; + address_gte?: InputMaybe; + address_in?: InputMaybe>; + address_lt?: InputMaybe; + address_lte?: InputMaybe; + address_not?: InputMaybe; + address_not_contains?: InputMaybe; + address_not_in?: InputMaybe>; + and?: InputMaybe>>; + dailyTotals_?: InputMaybe; + decimals?: InputMaybe; + decimals_gt?: InputMaybe; + decimals_gte?: InputMaybe; + decimals_in?: InputMaybe>; + decimals_lt?: InputMaybe; + decimals_lte?: InputMaybe; + decimals_not?: InputMaybe; + decimals_not_in?: InputMaybe>; + firstTradeTimestamp?: InputMaybe; + firstTradeTimestamp_gt?: InputMaybe; + firstTradeTimestamp_gte?: InputMaybe; + firstTradeTimestamp_in?: InputMaybe>; + firstTradeTimestamp_lt?: InputMaybe; + firstTradeTimestamp_lte?: InputMaybe; + firstTradeTimestamp_not?: InputMaybe; + firstTradeTimestamp_not_in?: InputMaybe>; + history_?: InputMaybe; + hourlyTotals_?: InputMaybe; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + name?: InputMaybe; + name_contains?: InputMaybe; + name_contains_nocase?: InputMaybe; + name_ends_with?: InputMaybe; + name_ends_with_nocase?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_contains_nocase?: InputMaybe; + name_not_ends_with?: InputMaybe; + name_not_ends_with_nocase?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_starts_with?: InputMaybe; + name_not_starts_with_nocase?: InputMaybe; + name_starts_with?: InputMaybe; + name_starts_with_nocase?: InputMaybe; + numberOfTrades?: InputMaybe; + numberOfTrades_gt?: InputMaybe; + numberOfTrades_gte?: InputMaybe; + numberOfTrades_in?: InputMaybe>; + numberOfTrades_lt?: InputMaybe; + numberOfTrades_lte?: InputMaybe; + numberOfTrades_not?: InputMaybe; + numberOfTrades_not_in?: InputMaybe>; + or?: InputMaybe>>; + priceEth?: InputMaybe; + priceEth_gt?: InputMaybe; + priceEth_gte?: InputMaybe; + priceEth_in?: InputMaybe>; + priceEth_lt?: InputMaybe; + priceEth_lte?: InputMaybe; + priceEth_not?: InputMaybe; + priceEth_not_in?: InputMaybe>; + priceUsd?: InputMaybe; + priceUsd_gt?: InputMaybe; + priceUsd_gte?: InputMaybe; + priceUsd_in?: InputMaybe>; + priceUsd_lt?: InputMaybe; + priceUsd_lte?: InputMaybe; + priceUsd_not?: InputMaybe; + priceUsd_not_in?: InputMaybe>; + symbol?: InputMaybe; + symbol_contains?: InputMaybe; + symbol_contains_nocase?: InputMaybe; + symbol_ends_with?: InputMaybe; + symbol_ends_with_nocase?: InputMaybe; + symbol_gt?: InputMaybe; + symbol_gte?: InputMaybe; + symbol_in?: InputMaybe>; + symbol_lt?: InputMaybe; + symbol_lte?: InputMaybe; + symbol_not?: InputMaybe; + symbol_not_contains?: InputMaybe; + symbol_not_contains_nocase?: InputMaybe; + symbol_not_ends_with?: InputMaybe; + symbol_not_ends_with_nocase?: InputMaybe; + symbol_not_in?: InputMaybe>; + symbol_not_starts_with?: InputMaybe; + symbol_not_starts_with_nocase?: InputMaybe; + symbol_starts_with?: InputMaybe; + symbol_starts_with_nocase?: InputMaybe; + totalVolume?: InputMaybe; + totalVolumeEth?: InputMaybe; + totalVolumeEth_gt?: InputMaybe; + totalVolumeEth_gte?: InputMaybe; + totalVolumeEth_in?: InputMaybe>; + totalVolumeEth_lt?: InputMaybe; + totalVolumeEth_lte?: InputMaybe; + totalVolumeEth_not?: InputMaybe; + totalVolumeEth_not_in?: InputMaybe>; + totalVolumeUsd?: InputMaybe; + totalVolumeUsd_gt?: InputMaybe; + totalVolumeUsd_gte?: InputMaybe; + totalVolumeUsd_in?: InputMaybe>; + totalVolumeUsd_lt?: InputMaybe; + totalVolumeUsd_lte?: InputMaybe; + totalVolumeUsd_not?: InputMaybe; + totalVolumeUsd_not_in?: InputMaybe>; + totalVolume_gt?: InputMaybe; + totalVolume_gte?: InputMaybe; + totalVolume_in?: InputMaybe>; + totalVolume_lt?: InputMaybe; + totalVolume_lte?: InputMaybe; + totalVolume_not?: InputMaybe; + totalVolume_not_in?: InputMaybe>; +}; + +export enum Token_OrderBy { + Address = 'address', + DailyTotals = 'dailyTotals', + Decimals = 'decimals', + FirstTradeTimestamp = 'firstTradeTimestamp', + History = 'history', + HourlyTotals = 'hourlyTotals', + Id = 'id', + Name = 'name', + NumberOfTrades = 'numberOfTrades', + PriceEth = 'priceEth', + PriceUsd = 'priceUsd', + Symbol = 'symbol', + TotalVolume = 'totalVolume', + TotalVolumeEth = 'totalVolumeEth', + TotalVolumeUsd = 'totalVolumeUsd' +} + +export type Total = { + __typename?: 'Total'; + /** Total fees in Eth */ + feesEth?: Maybe; + /** Total fees in USD */ + feesUsd?: Maybe; + /** This is a singleton entity to contain accumulators for all values. Id will be always 1 */ + id: Scalars['ID']; + /** Number of trades */ + numberOfTrades: Scalars['BigInt']; + /** Total number of orders placed */ + orders: Scalars['BigInt']; + /** Total number of batches settled */ + settlements: Scalars['BigInt']; + /** Total number of tokens traded */ + tokens: Scalars['BigInt']; + /** Total number of traders */ + traders: Scalars['BigInt']; + /** Total traded volume in ETH */ + volumeEth?: Maybe; + /** Total traded volume in USD */ + volumeUsd?: Maybe; +}; + +export type Total_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + feesEth?: InputMaybe; + feesEth_gt?: InputMaybe; + feesEth_gte?: InputMaybe; + feesEth_in?: InputMaybe>; + feesEth_lt?: InputMaybe; + feesEth_lte?: InputMaybe; + feesEth_not?: InputMaybe; + feesEth_not_in?: InputMaybe>; + feesUsd?: InputMaybe; + feesUsd_gt?: InputMaybe; + feesUsd_gte?: InputMaybe; + feesUsd_in?: InputMaybe>; + feesUsd_lt?: InputMaybe; + feesUsd_lte?: InputMaybe; + feesUsd_not?: InputMaybe; + feesUsd_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + numberOfTrades?: InputMaybe; + numberOfTrades_gt?: InputMaybe; + numberOfTrades_gte?: InputMaybe; + numberOfTrades_in?: InputMaybe>; + numberOfTrades_lt?: InputMaybe; + numberOfTrades_lte?: InputMaybe; + numberOfTrades_not?: InputMaybe; + numberOfTrades_not_in?: InputMaybe>; + or?: InputMaybe>>; + orders?: InputMaybe; + orders_gt?: InputMaybe; + orders_gte?: InputMaybe; + orders_in?: InputMaybe>; + orders_lt?: InputMaybe; + orders_lte?: InputMaybe; + orders_not?: InputMaybe; + orders_not_in?: InputMaybe>; + settlements?: InputMaybe; + settlements_gt?: InputMaybe; + settlements_gte?: InputMaybe; + settlements_in?: InputMaybe>; + settlements_lt?: InputMaybe; + settlements_lte?: InputMaybe; + settlements_not?: InputMaybe; + settlements_not_in?: InputMaybe>; + tokens?: InputMaybe; + tokens_gt?: InputMaybe; + tokens_gte?: InputMaybe; + tokens_in?: InputMaybe>; + tokens_lt?: InputMaybe; + tokens_lte?: InputMaybe; + tokens_not?: InputMaybe; + tokens_not_in?: InputMaybe>; + traders?: InputMaybe; + traders_gt?: InputMaybe; + traders_gte?: InputMaybe; + traders_in?: InputMaybe>; + traders_lt?: InputMaybe; + traders_lte?: InputMaybe; + traders_not?: InputMaybe; + traders_not_in?: InputMaybe>; + volumeEth?: InputMaybe; + volumeEth_gt?: InputMaybe; + volumeEth_gte?: InputMaybe; + volumeEth_in?: InputMaybe>; + volumeEth_lt?: InputMaybe; + volumeEth_lte?: InputMaybe; + volumeEth_not?: InputMaybe; + volumeEth_not_in?: InputMaybe>; + volumeUsd?: InputMaybe; + volumeUsd_gt?: InputMaybe; + volumeUsd_gte?: InputMaybe; + volumeUsd_in?: InputMaybe>; + volumeUsd_lt?: InputMaybe; + volumeUsd_lte?: InputMaybe; + volumeUsd_not?: InputMaybe; + volumeUsd_not_in?: InputMaybe>; +}; + +export enum Total_OrderBy { + FeesEth = 'feesEth', + FeesUsd = 'feesUsd', + Id = 'id', + NumberOfTrades = 'numberOfTrades', + Orders = 'orders', + Settlements = 'settlements', + Tokens = 'tokens', + Traders = 'traders', + VolumeEth = 'volumeEth', + VolumeUsd = 'volumeUsd' +} + +export type Trade = { + __typename?: 'Trade'; + /** Trade event buyAmount */ + buyAmount: Scalars['BigInt']; + /** Buy amount in Eth */ + buyAmountEth?: Maybe; + /** Buy amount in Usd */ + buyAmountUsd?: Maybe; + /** Trade event buyToken */ + buyToken: Token; + /** Trade's fee amount */ + feeAmount: Scalars['BigInt']; + /** Transaction's gas price */ + gasPrice: Scalars['BigInt']; + /** This Id is composed using orderId|txHashString|eventIndex */ + id: Scalars['ID']; + /** Order */ + order: Order; + /** Trade event sellAmount */ + sellAmount: Scalars['BigInt']; + /** Sell amount in Eth */ + sellAmountEth?: Maybe; + /** Sell amount in Usd */ + sellAmountUsd?: Maybe; + /** Trade event sellToken */ + sellToken: Token; + /** Settlement */ + settlement: Settlement; + /** Block's timestamp */ + timestamp: Scalars['Int']; + /** Trade event transaction hash */ + txHash: Scalars['Bytes']; +}; + +export type Trade_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + buyAmount?: InputMaybe; + buyAmountEth?: InputMaybe; + buyAmountEth_gt?: InputMaybe; + buyAmountEth_gte?: InputMaybe; + buyAmountEth_in?: InputMaybe>; + buyAmountEth_lt?: InputMaybe; + buyAmountEth_lte?: InputMaybe; + buyAmountEth_not?: InputMaybe; + buyAmountEth_not_in?: InputMaybe>; + buyAmountUsd?: InputMaybe; + buyAmountUsd_gt?: InputMaybe; + buyAmountUsd_gte?: InputMaybe; + buyAmountUsd_in?: InputMaybe>; + buyAmountUsd_lt?: InputMaybe; + buyAmountUsd_lte?: InputMaybe; + buyAmountUsd_not?: InputMaybe; + buyAmountUsd_not_in?: InputMaybe>; + buyAmount_gt?: InputMaybe; + buyAmount_gte?: InputMaybe; + buyAmount_in?: InputMaybe>; + buyAmount_lt?: InputMaybe; + buyAmount_lte?: InputMaybe; + buyAmount_not?: InputMaybe; + buyAmount_not_in?: InputMaybe>; + buyToken?: InputMaybe; + buyToken_?: InputMaybe; + buyToken_contains?: InputMaybe; + buyToken_contains_nocase?: InputMaybe; + buyToken_ends_with?: InputMaybe; + buyToken_ends_with_nocase?: InputMaybe; + buyToken_gt?: InputMaybe; + buyToken_gte?: InputMaybe; + buyToken_in?: InputMaybe>; + buyToken_lt?: InputMaybe; + buyToken_lte?: InputMaybe; + buyToken_not?: InputMaybe; + buyToken_not_contains?: InputMaybe; + buyToken_not_contains_nocase?: InputMaybe; + buyToken_not_ends_with?: InputMaybe; + buyToken_not_ends_with_nocase?: InputMaybe; + buyToken_not_in?: InputMaybe>; + buyToken_not_starts_with?: InputMaybe; + buyToken_not_starts_with_nocase?: InputMaybe; + buyToken_starts_with?: InputMaybe; + buyToken_starts_with_nocase?: InputMaybe; + feeAmount?: InputMaybe; + feeAmount_gt?: InputMaybe; + feeAmount_gte?: InputMaybe; + feeAmount_in?: InputMaybe>; + feeAmount_lt?: InputMaybe; + feeAmount_lte?: InputMaybe; + feeAmount_not?: InputMaybe; + feeAmount_not_in?: InputMaybe>; + gasPrice?: InputMaybe; + gasPrice_gt?: InputMaybe; + gasPrice_gte?: InputMaybe; + gasPrice_in?: InputMaybe>; + gasPrice_lt?: InputMaybe; + gasPrice_lte?: InputMaybe; + gasPrice_not?: InputMaybe; + gasPrice_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + or?: InputMaybe>>; + order?: InputMaybe; + order_?: InputMaybe; + order_contains?: InputMaybe; + order_contains_nocase?: InputMaybe; + order_ends_with?: InputMaybe; + order_ends_with_nocase?: InputMaybe; + order_gt?: InputMaybe; + order_gte?: InputMaybe; + order_in?: InputMaybe>; + order_lt?: InputMaybe; + order_lte?: InputMaybe; + order_not?: InputMaybe; + order_not_contains?: InputMaybe; + order_not_contains_nocase?: InputMaybe; + order_not_ends_with?: InputMaybe; + order_not_ends_with_nocase?: InputMaybe; + order_not_in?: InputMaybe>; + order_not_starts_with?: InputMaybe; + order_not_starts_with_nocase?: InputMaybe; + order_starts_with?: InputMaybe; + order_starts_with_nocase?: InputMaybe; + sellAmount?: InputMaybe; + sellAmountEth?: InputMaybe; + sellAmountEth_gt?: InputMaybe; + sellAmountEth_gte?: InputMaybe; + sellAmountEth_in?: InputMaybe>; + sellAmountEth_lt?: InputMaybe; + sellAmountEth_lte?: InputMaybe; + sellAmountEth_not?: InputMaybe; + sellAmountEth_not_in?: InputMaybe>; + sellAmountUsd?: InputMaybe; + sellAmountUsd_gt?: InputMaybe; + sellAmountUsd_gte?: InputMaybe; + sellAmountUsd_in?: InputMaybe>; + sellAmountUsd_lt?: InputMaybe; + sellAmountUsd_lte?: InputMaybe; + sellAmountUsd_not?: InputMaybe; + sellAmountUsd_not_in?: InputMaybe>; + sellAmount_gt?: InputMaybe; + sellAmount_gte?: InputMaybe; + sellAmount_in?: InputMaybe>; + sellAmount_lt?: InputMaybe; + sellAmount_lte?: InputMaybe; + sellAmount_not?: InputMaybe; + sellAmount_not_in?: InputMaybe>; + sellToken?: InputMaybe; + sellToken_?: InputMaybe; + sellToken_contains?: InputMaybe; + sellToken_contains_nocase?: InputMaybe; + sellToken_ends_with?: InputMaybe; + sellToken_ends_with_nocase?: InputMaybe; + sellToken_gt?: InputMaybe; + sellToken_gte?: InputMaybe; + sellToken_in?: InputMaybe>; + sellToken_lt?: InputMaybe; + sellToken_lte?: InputMaybe; + sellToken_not?: InputMaybe; + sellToken_not_contains?: InputMaybe; + sellToken_not_contains_nocase?: InputMaybe; + sellToken_not_ends_with?: InputMaybe; + sellToken_not_ends_with_nocase?: InputMaybe; + sellToken_not_in?: InputMaybe>; + sellToken_not_starts_with?: InputMaybe; + sellToken_not_starts_with_nocase?: InputMaybe; + sellToken_starts_with?: InputMaybe; + sellToken_starts_with_nocase?: InputMaybe; + settlement?: InputMaybe; + settlement_?: InputMaybe; + settlement_contains?: InputMaybe; + settlement_contains_nocase?: InputMaybe; + settlement_ends_with?: InputMaybe; + settlement_ends_with_nocase?: InputMaybe; + settlement_gt?: InputMaybe; + settlement_gte?: InputMaybe; + settlement_in?: InputMaybe>; + settlement_lt?: InputMaybe; + settlement_lte?: InputMaybe; + settlement_not?: InputMaybe; + settlement_not_contains?: InputMaybe; + settlement_not_contains_nocase?: InputMaybe; + settlement_not_ends_with?: InputMaybe; + settlement_not_ends_with_nocase?: InputMaybe; + settlement_not_in?: InputMaybe>; + settlement_not_starts_with?: InputMaybe; + settlement_not_starts_with_nocase?: InputMaybe; + settlement_starts_with?: InputMaybe; + settlement_starts_with_nocase?: InputMaybe; + timestamp?: InputMaybe; + timestamp_gt?: InputMaybe; + timestamp_gte?: InputMaybe; + timestamp_in?: InputMaybe>; + timestamp_lt?: InputMaybe; + timestamp_lte?: InputMaybe; + timestamp_not?: InputMaybe; + timestamp_not_in?: InputMaybe>; + txHash?: InputMaybe; + txHash_contains?: InputMaybe; + txHash_gt?: InputMaybe; + txHash_gte?: InputMaybe; + txHash_in?: InputMaybe>; + txHash_lt?: InputMaybe; + txHash_lte?: InputMaybe; + txHash_not?: InputMaybe; + txHash_not_contains?: InputMaybe; + txHash_not_in?: InputMaybe>; +}; + +export enum Trade_OrderBy { + BuyAmount = 'buyAmount', + BuyAmountEth = 'buyAmountEth', + BuyAmountUsd = 'buyAmountUsd', + BuyToken = 'buyToken', + BuyTokenAddress = 'buyToken__address', + BuyTokenDecimals = 'buyToken__decimals', + BuyTokenFirstTradeTimestamp = 'buyToken__firstTradeTimestamp', + BuyTokenId = 'buyToken__id', + BuyTokenName = 'buyToken__name', + BuyTokenNumberOfTrades = 'buyToken__numberOfTrades', + BuyTokenPriceEth = 'buyToken__priceEth', + BuyTokenPriceUsd = 'buyToken__priceUsd', + BuyTokenSymbol = 'buyToken__symbol', + BuyTokenTotalVolume = 'buyToken__totalVolume', + BuyTokenTotalVolumeEth = 'buyToken__totalVolumeEth', + BuyTokenTotalVolumeUsd = 'buyToken__totalVolumeUsd', + FeeAmount = 'feeAmount', + GasPrice = 'gasPrice', + Id = 'id', + Order = 'order', + OrderId = 'order__id', + OrderInvalidateTimestamp = 'order__invalidateTimestamp', + OrderIsSigned = 'order__isSigned', + OrderIsValid = 'order__isValid', + OrderPresignTimestamp = 'order__presignTimestamp', + OrderTradesTimestamp = 'order__tradesTimestamp', + SellAmount = 'sellAmount', + SellAmountEth = 'sellAmountEth', + SellAmountUsd = 'sellAmountUsd', + SellToken = 'sellToken', + SellTokenAddress = 'sellToken__address', + SellTokenDecimals = 'sellToken__decimals', + SellTokenFirstTradeTimestamp = 'sellToken__firstTradeTimestamp', + SellTokenId = 'sellToken__id', + SellTokenName = 'sellToken__name', + SellTokenNumberOfTrades = 'sellToken__numberOfTrades', + SellTokenPriceEth = 'sellToken__priceEth', + SellTokenPriceUsd = 'sellToken__priceUsd', + SellTokenSymbol = 'sellToken__symbol', + SellTokenTotalVolume = 'sellToken__totalVolume', + SellTokenTotalVolumeEth = 'sellToken__totalVolumeEth', + SellTokenTotalVolumeUsd = 'sellToken__totalVolumeUsd', + Settlement = 'settlement', + SettlementFirstTradeTimestamp = 'settlement__firstTradeTimestamp', + SettlementId = 'settlement__id', + SettlementTxHash = 'settlement__txHash', + Timestamp = 'timestamp', + TxHash = 'txHash' +} + +export type UniswapPool = { + __typename?: 'UniswapPool'; + /** Pool address */ + id: Scalars['ID']; + /** In range liquidity */ + liquidity: Scalars['BigInt']; + /** Current tick */ + tick?: Maybe; + /** Token0 */ + token0: UniswapToken; + /** Token0 per token1 */ + token0Price: Scalars['BigDecimal']; + /** Token1 */ + token1: UniswapToken; + /** Token1 per token0 */ + token1Price: Scalars['BigDecimal']; + /** Total token 0 across all ticks */ + totalValueLockedToken0: Scalars['BigDecimal']; + /** Total token 1 across all ticks */ + totalValueLockedToken1: Scalars['BigDecimal']; +}; + +export type UniswapPool_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + and?: InputMaybe>>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + liquidity?: InputMaybe; + liquidity_gt?: InputMaybe; + liquidity_gte?: InputMaybe; + liquidity_in?: InputMaybe>; + liquidity_lt?: InputMaybe; + liquidity_lte?: InputMaybe; + liquidity_not?: InputMaybe; + liquidity_not_in?: InputMaybe>; + or?: InputMaybe>>; + tick?: InputMaybe; + tick_gt?: InputMaybe; + tick_gte?: InputMaybe; + tick_in?: InputMaybe>; + tick_lt?: InputMaybe; + tick_lte?: InputMaybe; + tick_not?: InputMaybe; + tick_not_in?: InputMaybe>; + token0?: InputMaybe; + token0Price?: InputMaybe; + token0Price_gt?: InputMaybe; + token0Price_gte?: InputMaybe; + token0Price_in?: InputMaybe>; + token0Price_lt?: InputMaybe; + token0Price_lte?: InputMaybe; + token0Price_not?: InputMaybe; + token0Price_not_in?: InputMaybe>; + token0_?: InputMaybe; + token0_contains?: InputMaybe; + token0_contains_nocase?: InputMaybe; + token0_ends_with?: InputMaybe; + token0_ends_with_nocase?: InputMaybe; + token0_gt?: InputMaybe; + token0_gte?: InputMaybe; + token0_in?: InputMaybe>; + token0_lt?: InputMaybe; + token0_lte?: InputMaybe; + token0_not?: InputMaybe; + token0_not_contains?: InputMaybe; + token0_not_contains_nocase?: InputMaybe; + token0_not_ends_with?: InputMaybe; + token0_not_ends_with_nocase?: InputMaybe; + token0_not_in?: InputMaybe>; + token0_not_starts_with?: InputMaybe; + token0_not_starts_with_nocase?: InputMaybe; + token0_starts_with?: InputMaybe; + token0_starts_with_nocase?: InputMaybe; + token1?: InputMaybe; + token1Price?: InputMaybe; + token1Price_gt?: InputMaybe; + token1Price_gte?: InputMaybe; + token1Price_in?: InputMaybe>; + token1Price_lt?: InputMaybe; + token1Price_lte?: InputMaybe; + token1Price_not?: InputMaybe; + token1Price_not_in?: InputMaybe>; + token1_?: InputMaybe; + token1_contains?: InputMaybe; + token1_contains_nocase?: InputMaybe; + token1_ends_with?: InputMaybe; + token1_ends_with_nocase?: InputMaybe; + token1_gt?: InputMaybe; + token1_gte?: InputMaybe; + token1_in?: InputMaybe>; + token1_lt?: InputMaybe; + token1_lte?: InputMaybe; + token1_not?: InputMaybe; + token1_not_contains?: InputMaybe; + token1_not_contains_nocase?: InputMaybe; + token1_not_ends_with?: InputMaybe; + token1_not_ends_with_nocase?: InputMaybe; + token1_not_in?: InputMaybe>; + token1_not_starts_with?: InputMaybe; + token1_not_starts_with_nocase?: InputMaybe; + token1_starts_with?: InputMaybe; + token1_starts_with_nocase?: InputMaybe; + totalValueLockedToken0?: InputMaybe; + totalValueLockedToken0_gt?: InputMaybe; + totalValueLockedToken0_gte?: InputMaybe; + totalValueLockedToken0_in?: InputMaybe>; + totalValueLockedToken0_lt?: InputMaybe; + totalValueLockedToken0_lte?: InputMaybe; + totalValueLockedToken0_not?: InputMaybe; + totalValueLockedToken0_not_in?: InputMaybe>; + totalValueLockedToken1?: InputMaybe; + totalValueLockedToken1_gt?: InputMaybe; + totalValueLockedToken1_gte?: InputMaybe; + totalValueLockedToken1_in?: InputMaybe>; + totalValueLockedToken1_lt?: InputMaybe; + totalValueLockedToken1_lte?: InputMaybe; + totalValueLockedToken1_not?: InputMaybe; + totalValueLockedToken1_not_in?: InputMaybe>; +}; + +export enum UniswapPool_OrderBy { + Id = 'id', + Liquidity = 'liquidity', + Tick = 'tick', + Token0 = 'token0', + Token0Price = 'token0Price', + Token0Address = 'token0__address', + Token0Decimals = 'token0__decimals', + Token0Id = 'token0__id', + Token0Name = 'token0__name', + Token0PriceEth = 'token0__priceEth', + Token0PriceUsd = 'token0__priceUsd', + Token0Symbol = 'token0__symbol', + Token1 = 'token1', + Token1Price = 'token1Price', + Token1Address = 'token1__address', + Token1Decimals = 'token1__decimals', + Token1Id = 'token1__id', + Token1Name = 'token1__name', + Token1PriceEth = 'token1__priceEth', + Token1PriceUsd = 'token1__priceUsd', + Token1Symbol = 'token1__symbol', + TotalValueLockedToken0 = 'totalValueLockedToken0', + TotalValueLockedToken1 = 'totalValueLockedToken1' +} + +export type UniswapToken = { + __typename?: 'UniswapToken'; + /** Token address */ + address: Scalars['Bytes']; + /** Pools token is in that are allow listed for USD pricing */ + allowedPools: Array; + /** Token decimals fetched by contract call */ + decimals: Scalars['Int']; + /** Token address to hexString */ + id: Scalars['ID']; + /** Token name fetched by ERC20 contract call */ + name: Scalars['String']; + /** Derived price in ETH */ + priceEth?: Maybe; + /** Derived price in USD */ + priceUsd?: Maybe; + /** Token symbol fetched by contract call */ + symbol: Scalars['String']; +}; + + +export type UniswapTokenAllowedPoolsArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type UniswapToken_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + address?: InputMaybe; + address_contains?: InputMaybe; + address_gt?: InputMaybe; + address_gte?: InputMaybe; + address_in?: InputMaybe>; + address_lt?: InputMaybe; + address_lte?: InputMaybe; + address_not?: InputMaybe; + address_not_contains?: InputMaybe; + address_not_in?: InputMaybe>; + allowedPools?: InputMaybe>; + allowedPools_?: InputMaybe; + allowedPools_contains?: InputMaybe>; + allowedPools_contains_nocase?: InputMaybe>; + allowedPools_not?: InputMaybe>; + allowedPools_not_contains?: InputMaybe>; + allowedPools_not_contains_nocase?: InputMaybe>; + and?: InputMaybe>>; + decimals?: InputMaybe; + decimals_gt?: InputMaybe; + decimals_gte?: InputMaybe; + decimals_in?: InputMaybe>; + decimals_lt?: InputMaybe; + decimals_lte?: InputMaybe; + decimals_not?: InputMaybe; + decimals_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + name?: InputMaybe; + name_contains?: InputMaybe; + name_contains_nocase?: InputMaybe; + name_ends_with?: InputMaybe; + name_ends_with_nocase?: InputMaybe; + name_gt?: InputMaybe; + name_gte?: InputMaybe; + name_in?: InputMaybe>; + name_lt?: InputMaybe; + name_lte?: InputMaybe; + name_not?: InputMaybe; + name_not_contains?: InputMaybe; + name_not_contains_nocase?: InputMaybe; + name_not_ends_with?: InputMaybe; + name_not_ends_with_nocase?: InputMaybe; + name_not_in?: InputMaybe>; + name_not_starts_with?: InputMaybe; + name_not_starts_with_nocase?: InputMaybe; + name_starts_with?: InputMaybe; + name_starts_with_nocase?: InputMaybe; + or?: InputMaybe>>; + priceEth?: InputMaybe; + priceEth_gt?: InputMaybe; + priceEth_gte?: InputMaybe; + priceEth_in?: InputMaybe>; + priceEth_lt?: InputMaybe; + priceEth_lte?: InputMaybe; + priceEth_not?: InputMaybe; + priceEth_not_in?: InputMaybe>; + priceUsd?: InputMaybe; + priceUsd_gt?: InputMaybe; + priceUsd_gte?: InputMaybe; + priceUsd_in?: InputMaybe>; + priceUsd_lt?: InputMaybe; + priceUsd_lte?: InputMaybe; + priceUsd_not?: InputMaybe; + priceUsd_not_in?: InputMaybe>; + symbol?: InputMaybe; + symbol_contains?: InputMaybe; + symbol_contains_nocase?: InputMaybe; + symbol_ends_with?: InputMaybe; + symbol_ends_with_nocase?: InputMaybe; + symbol_gt?: InputMaybe; + symbol_gte?: InputMaybe; + symbol_in?: InputMaybe>; + symbol_lt?: InputMaybe; + symbol_lte?: InputMaybe; + symbol_not?: InputMaybe; + symbol_not_contains?: InputMaybe; + symbol_not_contains_nocase?: InputMaybe; + symbol_not_ends_with?: InputMaybe; + symbol_not_ends_with_nocase?: InputMaybe; + symbol_not_in?: InputMaybe>; + symbol_not_starts_with?: InputMaybe; + symbol_not_starts_with_nocase?: InputMaybe; + symbol_starts_with?: InputMaybe; + symbol_starts_with_nocase?: InputMaybe; +}; + +export enum UniswapToken_OrderBy { + Address = 'address', + AllowedPools = 'allowedPools', + Decimals = 'decimals', + Id = 'id', + Name = 'name', + PriceEth = 'priceEth', + PriceUsd = 'priceUsd', + Symbol = 'symbol' +} + +export type User = { + __typename?: 'User'; + /** Owner's address */ + address: Scalars['Bytes']; + /** First trade block timestamp */ + firstTradeTimestamp: Scalars['Int']; + /** Trade event order owner */ + id: Scalars['ID']; + /** Determine if user has solved a settlement */ + isSolver: Scalars['Boolean']; + /** Solved trades */ + numberOfTrades: Scalars['Int']; + /** List of orders placed by this user */ + ordersPlaced: Array; + /** total amount solved by the user in Eth */ + solvedAmountEth?: Maybe; + /** total amount solved by the user in Usd */ + solvedAmountUsd?: Maybe; + /** total amount traded by the user in Eth */ + tradedAmountEth?: Maybe; + /** total amount traded by the user in Usd */ + tradedAmountUsd?: Maybe; +}; + + +export type UserOrdersPlacedArgs = { + first?: InputMaybe; + orderBy?: InputMaybe; + orderDirection?: InputMaybe; + skip?: InputMaybe; + where?: InputMaybe; +}; + +export type User_Filter = { + /** Filter for the block changed event. */ + _change_block?: InputMaybe; + address?: InputMaybe; + address_contains?: InputMaybe; + address_gt?: InputMaybe; + address_gte?: InputMaybe; + address_in?: InputMaybe>; + address_lt?: InputMaybe; + address_lte?: InputMaybe; + address_not?: InputMaybe; + address_not_contains?: InputMaybe; + address_not_in?: InputMaybe>; + and?: InputMaybe>>; + firstTradeTimestamp?: InputMaybe; + firstTradeTimestamp_gt?: InputMaybe; + firstTradeTimestamp_gte?: InputMaybe; + firstTradeTimestamp_in?: InputMaybe>; + firstTradeTimestamp_lt?: InputMaybe; + firstTradeTimestamp_lte?: InputMaybe; + firstTradeTimestamp_not?: InputMaybe; + firstTradeTimestamp_not_in?: InputMaybe>; + id?: InputMaybe; + id_gt?: InputMaybe; + id_gte?: InputMaybe; + id_in?: InputMaybe>; + id_lt?: InputMaybe; + id_lte?: InputMaybe; + id_not?: InputMaybe; + id_not_in?: InputMaybe>; + isSolver?: InputMaybe; + isSolver_in?: InputMaybe>; + isSolver_not?: InputMaybe; + isSolver_not_in?: InputMaybe>; + numberOfTrades?: InputMaybe; + numberOfTrades_gt?: InputMaybe; + numberOfTrades_gte?: InputMaybe; + numberOfTrades_in?: InputMaybe>; + numberOfTrades_lt?: InputMaybe; + numberOfTrades_lte?: InputMaybe; + numberOfTrades_not?: InputMaybe; + numberOfTrades_not_in?: InputMaybe>; + or?: InputMaybe>>; + ordersPlaced_?: InputMaybe; + solvedAmountEth?: InputMaybe; + solvedAmountEth_gt?: InputMaybe; + solvedAmountEth_gte?: InputMaybe; + solvedAmountEth_in?: InputMaybe>; + solvedAmountEth_lt?: InputMaybe; + solvedAmountEth_lte?: InputMaybe; + solvedAmountEth_not?: InputMaybe; + solvedAmountEth_not_in?: InputMaybe>; + solvedAmountUsd?: InputMaybe; + solvedAmountUsd_gt?: InputMaybe; + solvedAmountUsd_gte?: InputMaybe; + solvedAmountUsd_in?: InputMaybe>; + solvedAmountUsd_lt?: InputMaybe; + solvedAmountUsd_lte?: InputMaybe; + solvedAmountUsd_not?: InputMaybe; + solvedAmountUsd_not_in?: InputMaybe>; + tradedAmountEth?: InputMaybe; + tradedAmountEth_gt?: InputMaybe; + tradedAmountEth_gte?: InputMaybe; + tradedAmountEth_in?: InputMaybe>; + tradedAmountEth_lt?: InputMaybe; + tradedAmountEth_lte?: InputMaybe; + tradedAmountEth_not?: InputMaybe; + tradedAmountEth_not_in?: InputMaybe>; + tradedAmountUsd?: InputMaybe; + tradedAmountUsd_gt?: InputMaybe; + tradedAmountUsd_gte?: InputMaybe; + tradedAmountUsd_in?: InputMaybe>; + tradedAmountUsd_lt?: InputMaybe; + tradedAmountUsd_lte?: InputMaybe; + tradedAmountUsd_not?: InputMaybe; + tradedAmountUsd_not_in?: InputMaybe>; +}; + +export enum User_OrderBy { + Address = 'address', + FirstTradeTimestamp = 'firstTradeTimestamp', + Id = 'id', + IsSolver = 'isSolver', + NumberOfTrades = 'numberOfTrades', + OrdersPlaced = 'ordersPlaced', + SolvedAmountEth = 'solvedAmountEth', + SolvedAmountUsd = 'solvedAmountUsd', + TradedAmountEth = 'tradedAmountEth', + TradedAmountUsd = 'tradedAmountUsd' +} + +export type _Block_ = { + __typename?: '_Block_'; + /** The hash of the block */ + hash?: Maybe; + /** The block number */ + number: Scalars['Int']; + /** The hash of the parent block */ + parentHash?: Maybe; + /** Integer representation of the timestamp stored in blocks for the chain */ + timestamp?: Maybe; +}; + +/** The type for the top-level _meta field */ +export type _Meta_ = { + __typename?: '_Meta_'; + /** + * Information about a specific subgraph block. The hash of the block + * will be null if the _meta field has a block constraint that asks for + * a block number. It will be filled if the _meta field has no block constraint + * and therefore asks for the latest block + * + */ + block: _Block_; + /** The deployment ID */ + deployment: Scalars['String']; + /** If `true`, the subgraph encountered indexing errors at some past block */ + hasIndexingErrors: Scalars['Boolean']; +}; + +export enum _SubgraphErrorPolicy_ { + /** Data will be returned even if the subgraph has indexing errors */ + Allow = 'allow', + /** If the subgraph has indexing errors, data will be omitted. The default. */ + Deny = 'deny' +} + +export type TotalsQueryVariables = Exact<{ [key: string]: never; }>; + + +export type TotalsQuery = { __typename?: 'Query', totals: Array<{ __typename?: 'Total', tokens: any, orders: any, traders: any, settlements: any, volumeUsd?: any | null, volumeEth?: any | null, feesUsd?: any | null, feesEth?: any | null }> }; + +export type LastDaysVolumeQueryVariables = Exact<{ + days: Scalars['Int']; +}>; + + +export type LastDaysVolumeQuery = { __typename?: 'Query', dailyTotals: Array<{ __typename?: 'DailyTotal', timestamp: number, volumeUsd?: any | null }> }; + +export type LastHoursVolumeQueryVariables = Exact<{ + hours: Scalars['Int']; +}>; + + +export type LastHoursVolumeQuery = { __typename?: 'Query', hourlyTotals: Array<{ __typename?: 'HourlyTotal', timestamp: number, volumeUsd?: any | null }> }; diff --git a/external/cow-sdk/src/subgraph/index.ts b/external/cow-sdk/src/subgraph/index.ts new file mode 100644 index 000000000..3318fdbc9 --- /dev/null +++ b/external/cow-sdk/src/subgraph/index.ts @@ -0,0 +1 @@ +export * from './api' diff --git a/external/cow-sdk/src/subgraph/queries.ts b/external/cow-sdk/src/subgraph/queries.ts new file mode 100644 index 000000000..7491cb1c8 --- /dev/null +++ b/external/cow-sdk/src/subgraph/queries.ts @@ -0,0 +1,45 @@ +import { gql } from 'graphql-request' + +/** + * GraphQL query for the total number of tokens, orders, traders, settlements, volume, and fees. + */ +export const TOTALS_QUERY = gql` + query Totals { + totals { + tokens + orders + traders + settlements + volumeUsd + volumeEth + feesUsd + feesEth + } + } +` + +/** + * GraphQL query for the total volume over the last N days. + * @param days The number of days to query. + */ +export const LAST_DAYS_VOLUME_QUERY = gql` + query LastDaysVolume($days: Int!) { + dailyTotals(orderBy: timestamp, orderDirection: desc, first: $days) { + timestamp + volumeUsd + } + } +` + +/** + * GraphQL query for the total volume over the last N hours. + * @param hours The number of hours to query. + */ +export const LAST_HOURS_VOLUME_QUERY = gql` + query LastHoursVolume($hours: Int!) { + hourlyTotals(orderBy: timestamp, orderDirection: desc, first: $hours) { + timestamp + volumeUsd + } + } +` diff --git a/external/cow-sdk/src/trading/README.md b/external/cow-sdk/src/trading/README.md new file mode 100644 index 000000000..30956a30f --- /dev/null +++ b/external/cow-sdk/src/trading/README.md @@ -0,0 +1,432 @@ +# Trading SDK + +CoW Protocol is intent based, decentralized trading protocol that allows users to trade ERC-20 tokens. + +The basic swap flow: +1. 🔎 Get a quote (price) for a trade +2. ✍️ Sign the order +3. ✅ Post the order to the order-book + +The CoW Protocol provides very flexible and powerful trading capabilities. +However, this flexibility comes with a cost: the complexity of the protocol. +This SDK serves to simplify the interaction with the CoW Protocol. +It will put all necessary parameters to your order, calculates proper amounts, and signs the order. + +> You can find an example of the SDK usage in the [examples](../../examples/vanilla/src/index.ts). + +### What constitutes the complexity? + + - [app-data](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) (order's metadata) + - [order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils) + - network costs, partner fee and slippage + - order parameters (validTo, partiallyFillable, etc.) + - quote API (priceQuality, signingScheme, etc.) + - order kind (sell/buy) + - order class (swap/limit/and others) + - on-chain trades + +## TradingSdk + +The SDK provides three main functions: + - `postSwapOrder` - get quote with market price and create a swap order + - `postLimitOrder` - create a limit order + - `getQuote` - fetch a quote for a swap order + +And two for specific cases: + - `postSellNativeCurrencyOrder` - create an order to sell blockchain native tokens (ETH for Ethereum) + - `getPreSignTransaction` - get a transaction to sign the order with a smart-contract wallet (EIP-1271) + +### Initialization + +The SDK requires the following parameters: + - `chainId` - one of supported chain ids (see [`SupportedChainId`](../common/chains.ts)) + - `signer` - private key or ethers signer or `Eip1193` provider. The signer is used to sign the order. If you use a private key, the SDK will create an ethers signer from it. If you use an ethers signer, the SDK will use it directly. + - `appCode` - a unique identifier for your application. It is used to identify orders created by your application. + +#### Example +```typescript +import { SupportedChainId, TradingSdk } from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) +``` + +### postSwapOrder + +This function fetches a quote for a swap order and just creates the order. + +The parameters required are: + - `kind` - the order kind (sell/buy) + - `sellToken` - the sell token address + - `sellTokenDecimals` - the sell token decimals + - `buyToken` - the buy token address + - `buyTokenDecimals` - the buy token decimals + - `amount` - the amount to sell/buy in atoms + +> When sell token is a blockchain native token (ETH for Ethereum), then order will be created as an on-chain transaction. See [postSellNativeCurrencyOrder](#postSellNativeCurrencyOrder) + +#### Example + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const orderId = await sdk.postSwapOrder(parameters) + +console.log('Order created, id: ', orderId) +``` + +### getQuote + +In case if you want to get a quote and only then create an order, you can use the `getQuote` function. + +The parameters required are the same as for the `postSwapOrder` function. + +The function returns `quoteResults` object with the following properties: + - `tradeParameters` - trade type, assets, amounts and other optional parameters + - `amountsAndCosts` - the order sell/buy amounts including network costs, fees and slippage + - `orderToSign` - order parameters to sign (see [order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils)) + - `quoteResponse` - DTO from [quote API](https://api.cow.fi/docs/#/default/post_api_v1_quote) + - `appDataInfo` - [order's metadata](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) + - `orderTypedData` - EIP-712 typed data for signing + +Another parameter is returned by this function is `postSwapOrderFromQuote`. +It can be used to create an order from the received quote. + +#### Example + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const { quoteResults, postSwapOrderFromQuote } = await sdk.getQuote(parameters) + +const buyAmount = quoteResults.amountsAndCosts.afterSlippage.buyAmount + +if (confirm(`You will get at least: ${buyAmount}, ok?`)) { + const orderId = await postSwapOrderFromQuote() + + console.log('Order created, id: ', orderId) +} +``` + +### Get quote for a smart-contract wallet + +If you want to use a smart-contract wallet to sign the order, you should specify the `signingScheme` parameter in order to get more accurate quote in terms of gas efficiency. +Smart-contract wallets are supported by using a different signing scheme - `SigningScheme.PRESIGN`. + +#### Example + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + SwapAdvancedSettings, + SigningScheme, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const advancedParameters: SwapAdvancedSettings = { + quoteRequest: { + // Specify the signing scheme + signingScheme: SigningScheme.PRESIGN + } +} + +const { quoteResults } = await sdk.getQuote(parameters) + +console.log('Quote:', quoteResults) +```` + +### Create an order with smart-contract wallet + +If you want to create an order with a smart-contract wallet, you should specify the `signingScheme` parameter in the `postSwapOrder` function. +And then you need to send a transaction from `getPreSignTransaction` result in order to sign the order. + +#### Example + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const advancedParameters: SwapAdvancedSettings = { + quoteRequest: { + // Specify the signing scheme + signingScheme: SigningScheme.PRESIGN + } +} + +const smartContractWalletAddress = '0x' +const orderId = await sdk.postSwapOrder(parameters, advancedParameters) +const preSignTransaction = await sdk.getPreSignTransaction({ orderId, account: smartContractWalletAddress }) + +console.log('Order created with "pre-sign" state, id: ', orderId) +console.log('Execute the transaction to sign the order', preSignTransaction) +``` + + +### postLimitOrder + +This main difference between this function and `postSwapOrder` is that here you need to specify both sell and buy amounts. + +You need to provide the following parameters: + - `kind` - the order kind (sell/buy) + - `sellToken` - the sell token address + - `sellTokenDecimals` - the sell token decimals + - `buyToken` - the buy token address + - `buyTokenDecimals` - the buy token decimals + - `sellAmount` - the amount to sell in atoms + - `buyAmount` - the amount to buy in atoms + +And optional parameters: + - `quoteId` - id of the quote from the quote API (see getQuote function) + - `validTo` - the order expiration time in seconds + +```typescript +import { + SupportedChainId, + OrderKind, + LimitTradeParameters, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const limitOrderParameters: LimitTradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + sellAmount: '120000000000000000', + buyAmount: '66600000000000000000', +} + +const orderId = await sdk.postLimitOrder(limitOrderParameters) + +console.log('Order created, id: ', orderId) +``` + +### postSellNativeCurrencyOrder + +CoW Protocol supports on-chain trades for selling blockchain native tokens (ETH for Ethereum). +In this case, the order is created as an on-chain transaction. +You don't have to think about the case when you use `postSwapOrder` function, it will be handled automatically. +But if you need more flexible way to create an order to sell native token, you can use the `postSellNativeCurrencyOrder` function. + +> We consider the order as native token selling order if the sell token has '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' address. + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const orderId = await sdk.postSellNativeCurrencyOrder(parameters) + +console.log('Order created, id: ', orderId) +``` + +### Optional parameters + +Both `postSwapOrder` and `postLimitOrder` functions have optional parameters. +See `TradeOptionalParameters` type for more details. + +| **Parameter** | **Type** | **Default Value** | **Description** | +|-----------------------|-----------------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `env` | `Env` | `prod` | The environment to use (`prod` or `staging`). | +| `partiallyFillable` | `boolean` | `false` | Indicates whether the order is fill-or-kill or partially fillable. | +| `slippageBps` | `number` | 0 | Slippage tolerance applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent). | +| `receiver` | `string` | order creator | The address that will receive the order's tokens. | +| `validFor` | `number` | 10 mins | The order expiration time in seconds. | +| `partnerFee` | `PartnerFee` | - | Partners of the protocol can specify their fee for the order, including the fee in basis points (BPS) and the fee recipient address. [Read more](https://docs.cow.fi/governance/fees/partner-fee) | + +##### Example + +```typescript +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000', + // Optional parameters + slippageBps: 200, // 2% + validFor: 1200, // 20 mins + receiver: '0xdef1ca1fb7f1232777520aa7f396b4e015f497ab' // Just a random address, don't use it! +} + +const orderId = await sdk.postSwapOrder(parameters) + +console.log('Order created, id: ', orderId) +``` + +### Advanced swap order creation + +By default, the SDK requires only the basic parameters to create an order. +However, you can provide additional parameters to customize the order creation. + +#### Swap + +1. `quoteRequest` - the quote request object. It is used to get a quote from the quote API ([read more](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/modules#orderquoterequest)) +2. `appData` - the order's metadata ([read more](https://docs.cow.fi/cow-protocol/reference/sdks/app-data/modules#appdataparams)) + +##### Example + +```typescript +import { + SupportedChainId, + OrderKind, + TradeParameters, + TradingSdk, + SwapAdvancedSettings, + PriceQuality +} from '@cowprotocol/cow-sdk' + +const sdk = new TradingSdk({ + chainId: SupportedChainId.SEPOLIA, + signer: '', + appCode: '', +}) + +const parameters: TradeParameters = { + kind: OrderKind.BUY, + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '120000000000000000' +} + +const advancedSettings: SwapAdvancedSettings = { + quoteRequest: { + priceQuality: PriceQuality.FAST, + validFor: 120, + }, + appData: { + hooks: { + version: 1, + pre: [ + { + target: '0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab', + callData: '0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045', + gasLimit: 21000 + } + ] + } + }, +} +const orderId = await sdk.postSwapOrder(parameters, advancedSettings) + +console.log('Order created, id: ', orderId) +``` + +#### Limit order + +Same as for the swap order but without the `quoteRequest` parameter. diff --git a/external/cow-sdk/src/trading/appDataUtils.test.ts b/external/cow-sdk/src/trading/appDataUtils.test.ts new file mode 100644 index 000000000..ae0edc698 --- /dev/null +++ b/external/cow-sdk/src/trading/appDataUtils.test.ts @@ -0,0 +1,51 @@ +import { buildAppData, generateAppDataFromDoc } from './appDataUtils' + +describe('AppData utils', () => { + it('Should add all required parameters to the doc', async () => { + const data = await buildAppData({ + slippageBps: 100, + appCode: 'cowswap', + orderClass: 'market', + }) + const parsedData = JSON.parse(data.fullAppData) + + expect(parsedData.metadata.quote.slippageBips).toBe(100) + expect(parsedData.appCode).toBe('cowswap') + expect(parsedData.metadata.orderClass.orderClass).toBe('market') + }) + + it('Should add advanced parameters to the doc', async () => { + const data = await buildAppData( + { + slippageBps: 100, + appCode: 'cowswap', + orderClass: 'market', + }, + { + environment: 'staging', + metadata: { + partnerFee: { + bps: 66, + recipient: '0xccc', + }, + replacedOrder: { + uid: '0xaaa', + }, + }, + } + ) + const parsedData = JSON.parse(data.fullAppData) + + expect(parsedData.environment).toBe('staging') + expect(parsedData.metadata.partnerFee.bps).toBe(66) + expect(parsedData.metadata.partnerFee.recipient).toBe('0xccc') + expect(parsedData.metadata.replacedOrder.uid).toBe('0xaaa') + }) + + it('App data doc should be stringified in deterministic way', async () => { + const data1 = await generateAppDataFromDoc({ version: '1.0', appCode: 'code', metadata: {} }) + const data2 = await generateAppDataFromDoc({ appCode: 'code', metadata: {}, version: '1.0' }) + + expect(data1.fullAppData).toBe(data2.fullAppData) + }) +}) diff --git a/external/cow-sdk/src/trading/appDataUtils.ts b/external/cow-sdk/src/trading/appDataUtils.ts new file mode 100644 index 000000000..6c4d9f2a4 --- /dev/null +++ b/external/cow-sdk/src/trading/appDataUtils.ts @@ -0,0 +1,35 @@ +import { AppDataInfo, AppDataRootSchema, BuildAppDataParams } from './types' +import { AppDataParams, MetadataApi, stringifyDeterministic } from '@cowprotocol/app-data' +import { keccak256, toUtf8Bytes } from 'ethers/lib/utils' + +export async function buildAppData( + { slippageBps, appCode, orderClass: orderClassName }: BuildAppDataParams, + advancedParams?: AppDataParams +): Promise { + const metadataApiSDK = new MetadataApi() + + const quoteParams = { slippageBips: slippageBps } + const orderClass = { orderClass: orderClassName } + + const doc = await metadataApiSDK.generateAppDataDoc({ + appCode, + metadata: { + quote: quoteParams, + orderClass, + }, + ...advancedParams, + }) + + const { fullAppData, appDataKeccak256 } = await generateAppDataFromDoc(doc) + + return { doc, fullAppData, appDataKeccak256 } +} + +export async function generateAppDataFromDoc( + doc: AppDataRootSchema +): Promise> { + const fullAppData = await stringifyDeterministic(doc) + const appDataKeccak256 = keccak256(toUtf8Bytes(fullAppData)) + + return { fullAppData, appDataKeccak256 } +} diff --git a/external/cow-sdk/src/trading/calculateUniqueOrderId.test.ts b/external/cow-sdk/src/trading/calculateUniqueOrderId.test.ts new file mode 100644 index 000000000..1b22ea530 --- /dev/null +++ b/external/cow-sdk/src/trading/calculateUniqueOrderId.test.ts @@ -0,0 +1,91 @@ +jest.mock('../order-signing', () => ({ + OrderSigningUtils: { + generateOrderId: jest.fn(), + }, +})) + +import { calculateUniqueOrderId } from './calculateUniqueOrderId' +import { MAX_VALID_TO_EPOCH, SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '../common' +import { OrderSigningUtils as OrderSigningUtilsMock, UnsignedOrder } from '../order-signing' +import { BuyTokenDestination, OrderKind, SellTokenSource } from '../order-book/generated' + +const orderMock: UnsignedOrder = { + buyAmount: '100', + buyToken: '0xb', + buyTokenBalance: BuyTokenDestination.ERC20, + sellAmount: '30', + sellToken: '0xa', + sellTokenBalance: SellTokenSource.ERC20, + validTo: 10000033, + feeAmount: '0', + kind: OrderKind.BUY, + partiallyFillable: false, + receiver: '0x123', + appData: '0x0004', +} + +describe('calculateUniqueOrderId', () => { + let generateOrderId: jest.SpyInstance + + beforeAll(() => { + generateOrderId = OrderSigningUtilsMock.generateOrderId as unknown as jest.SpyInstance + }) + + beforeEach(() => { + generateOrderId.mockResolvedValue({ orderDigest: '0x000dd', orderId: '0xab444' }) + }) + + afterEach(() => { + generateOrderId.mockReset() + }) + + it('Should always set validTo to the maximum value', async () => { + await calculateUniqueOrderId(SupportedChainId.MAINNET, orderMock) + + const [chainId, order] = generateOrderId.mock.calls[0] + + expect(chainId).toBe(SupportedChainId.MAINNET) + expect(order.validTo).toBe(MAX_VALID_TO_EPOCH) + }) + it('Should always set sellToken to wrapped native token', async () => { + await calculateUniqueOrderId(SupportedChainId.MAINNET, orderMock) + + const [chainId, order] = generateOrderId.mock.calls[0] + + expect(chainId).toBe(SupportedChainId.MAINNET) + expect(order.sellToken).toBe(WRAPPED_NATIVE_CURRENCIES[SupportedChainId.MAINNET]) + }) + + describe('When checkEthFlowOrderExists is set', () => { + it('Then the callback should be called with the orderId and orderDigest', async () => { + const checkEthFlowOrderExists = jest.fn().mockResolvedValue(false) + await calculateUniqueOrderId(SupportedChainId.MAINNET, orderMock, checkEthFlowOrderExists) + + expect(checkEthFlowOrderExists).toHaveBeenCalledWith('0xab444', '0x000dd') + expect(checkEthFlowOrderExists).toHaveBeenCalledTimes(1) + }) + + describe('When checkEthFlowOrderExists returns true', () => { + it('Then it should call itself with the adjusted order', async () => { + let alreadyCalled = false + + const checkEthFlowOrderExists = jest.fn().mockImplementation(() => { + return Promise.resolve( + (() => { + if (alreadyCalled) return false + alreadyCalled = true + + return true + })() + ) + }) + await calculateUniqueOrderId(SupportedChainId.MAINNET, orderMock, checkEthFlowOrderExists) + + const [chainId, order] = generateOrderId.mock.calls[1] + + expect(chainId).toBe(SupportedChainId.MAINNET) + expect(order.buyAmount).toBe('99') + }) + }) + }) +}) diff --git a/external/cow-sdk/src/trading/calculateUniqueOrderId.ts b/external/cow-sdk/src/trading/calculateUniqueOrderId.ts new file mode 100644 index 000000000..418d9b72f --- /dev/null +++ b/external/cow-sdk/src/trading/calculateUniqueOrderId.ts @@ -0,0 +1,58 @@ +import { OrderSigningUtils, UnsignedOrder } from '../order-signing' +import { + BARN_ETH_FLOW_ADDRESSES, + CowEnv, + ETH_FLOW_ADDRESSES, + MAX_VALID_TO_EPOCH, + SupportedChainId, + WRAPPED_NATIVE_CURRENCIES, +} from '../common' +import type { Order, OrderBalance } from '@cowprotocol/contracts' + +export interface EthFlowOrderExistsCallback { + (orderId: string, orderDigest: string): Promise +} + +export async function calculateUniqueOrderId( + chainId: SupportedChainId, + order: UnsignedOrder, + checkEthFlowOrderExists?: EthFlowOrderExistsCallback, + env?: CowEnv +): Promise { + const { orderDigest, orderId } = await OrderSigningUtils.generateOrderId( + chainId, + { + ...order, + sellTokenBalance: order.sellTokenBalance as string as OrderBalance, + buyTokenBalance: order.buyTokenBalance as string as OrderBalance, + validTo: MAX_VALID_TO_EPOCH, + sellToken: WRAPPED_NATIVE_CURRENCIES[chainId], + } as Order, + { + owner: (env === 'staging' ? BARN_ETH_FLOW_ADDRESSES : ETH_FLOW_ADDRESSES)[chainId], + } + ) + + if (checkEthFlowOrderExists && (await checkEthFlowOrderExists(orderId, orderDigest))) { + console.error('ETH FLOW', '[calculateUniqueOrderId] ❌ Collision detected: ' + orderId, { + sellAmount: order.sellAmount, + fee: order.feeAmount, + }) + + // Recursive call, increment one fee until we get an unique order Id + return calculateUniqueOrderId(chainId, adjustAmounts(order), checkEthFlowOrderExists) + } + + return orderId +} + +function adjustAmounts(order: UnsignedOrder): UnsignedOrder { + const buyAmount = BigInt(order.buyAmount) + + // On fee=0, fee is, well, 0. Thus, we cannot shift amounts around and remain with the exact same price. + // Also, we don't want to touch the sell amount. + // If we move it down, the price might become "too good", if we move it up, the user might not have enough funds! + // Thus, we make the buy amount a tad bit worse by 1 wei. + // We can only hope this doesn't happen for an order buying 0 a decimals token 🤞 + return { ...order, buyAmount: (buyAmount - BigInt(1)).toString() } +} diff --git a/external/cow-sdk/src/trading/consts.ts b/external/cow-sdk/src/trading/consts.ts new file mode 100644 index 000000000..0d91d0c35 --- /dev/null +++ b/external/cow-sdk/src/trading/consts.ts @@ -0,0 +1,13 @@ +import { EcdsaSigningScheme, SigningScheme } from '../order-book' + +export const log = (text: string) => console.log(`[COW TRADING SDK] ${text}`) + +export const DEFAULT_QUOTE_VALIDITY = 60 * 10 // 10 min + +export const SIGN_SCHEME_MAP = { + [EcdsaSigningScheme.EIP712]: SigningScheme.EIP712, + [EcdsaSigningScheme.ETHSIGN]: SigningScheme.ETHSIGN, +} + +// Use a 150K gas as a fallback if there's issue calculating the gas estimation (fixes some issues with some nodes failing to calculate gas costs for SC wallets) +export const GAS_LIMIT_DEFAULT = BigInt(150000) diff --git a/external/cow-sdk/src/trading/getEthFlowTransaction.test.ts b/external/cow-sdk/src/trading/getEthFlowTransaction.test.ts new file mode 100644 index 000000000..a15ea909c --- /dev/null +++ b/external/cow-sdk/src/trading/getEthFlowTransaction.test.ts @@ -0,0 +1,80 @@ +const GAS = '0x1e848' // 125000 + +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) +jest.mock('../common/generated', () => { + const original = jest.requireActual('../common/generated') + + return { + ...original, + EthFlow__factory: { + connect: jest.fn().mockReturnValue({ + address: '0xaa1', + estimateGas: { + createOrder: jest.fn().mockResolvedValue({ toHexString: () => GAS }), + }, + interface: { + encodeFunctionData: jest.fn().mockReturnValue('0x0ac'), + }, + }), + }, + } +}) + +import { getEthFlowTransaction } from './getEthFlowTransaction' +import { VoidSigner } from '@ethersproject/abstract-signer' +import { SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '../common' +import { LimitTradeParameters } from './types' +import { OrderKind } from '../order-book' + +const appDataKeccak256 = '0x578c975b1cfd3e24c21fb599076c4f7879c4268efd33eed3eb9efa5e30efac21' + +const params: LimitTradeParameters = { + kind: OrderKind.SELL, + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + buyToken: '0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab', + sellAmount: '12000000000000000', + buyAmount: '36520032402342342322', + quoteId: 3, + sellTokenDecimals: 18, + buyTokenDecimals: 18, +} + +describe('getEthFlowTransaction', () => { + const chainId = SupportedChainId.GNOSIS_CHAIN + const account = '0x21c3de23d98caddc406e3d31b25e807addf33333' + const signer = new VoidSigner(account) + + signer.getChainId = jest.fn().mockResolvedValue(chainId) + signer.getAddress = jest.fn().mockResolvedValue(account) + + it('Should always override sell token with wrapped native token', async () => { + const result = await getEthFlowTransaction(signer, appDataKeccak256, params) + const wrappedToken = WRAPPED_NATIVE_CURRENCIES[chainId] + + expect(result.transaction.data.includes(params.sellToken.slice(2))).toBe(false) + expect(result.transaction.data.includes(wrappedToken.slice(2))).toBe(false) + }) + + it('Should call gas estimation and return estimated value + 20%', async () => { + const result = await getEthFlowTransaction(signer, appDataKeccak256, params) + const gasNum = +GAS + + expect(+result.transaction.gas).toBe(gasNum + gasNum * 0.2) + }) + + it('Transaction value should be equal to sell amount', async () => { + const result = await getEthFlowTransaction(signer, appDataKeccak256, params) + + expect(result.transaction.value).toBe('0x' + BigInt(params.sellAmount).toString(16)) + }) +}) diff --git a/external/cow-sdk/src/trading/getEthFlowTransaction.ts b/external/cow-sdk/src/trading/getEthFlowTransaction.ts new file mode 100644 index 000000000..dd62a68fb --- /dev/null +++ b/external/cow-sdk/src/trading/getEthFlowTransaction.ts @@ -0,0 +1,68 @@ +import { Signer } from 'ethers' +import { LimitTradeParametersFromQuote, TransactionParams } from './types' +import { calculateUniqueOrderId, EthFlowOrderExistsCallback } from './calculateUniqueOrderId' +import { getOrderToSign } from './getOrderToSign' +import { type EthFlow, EthFlow__factory } from '../common/generated' +import { + BARN_ETH_FLOW_ADDRESSES, + CowEnv, + ETH_FLOW_ADDRESSES, + SupportedChainId, + WRAPPED_NATIVE_CURRENCIES, +} from '../common' +import { GAS_LIMIT_DEFAULT } from './consts' +import type { EthFlowOrder } from '../common/generated/EthFlow' +import { calculateGasMargin } from './utils' + +export async function getEthFlowTransaction( + signer: Signer, + appDataKeccak256: string, + _params: LimitTradeParametersFromQuote, + networkCostsAmount = '0', + checkEthFlowOrderExists?: EthFlowOrderExistsCallback +): Promise<{ orderId: string; transaction: TransactionParams }> { + const chainId = (await signer.getChainId()) as SupportedChainId + const from = await signer.getAddress() + + const params = { + ..._params, + sellToken: WRAPPED_NATIVE_CURRENCIES[chainId], + } + const { quoteId } = params + + const contract = getEthFlowContract(chainId, signer, params.env) + const orderToSign = getOrderToSign({ from, networkCostsAmount }, params, appDataKeccak256) + const orderId = await calculateUniqueOrderId(chainId, orderToSign, checkEthFlowOrderExists, params.env) + + const ethOrderParams: EthFlowOrder.DataStruct = { + ...orderToSign, + quoteId, + appData: appDataKeccak256, + validTo: orderToSign.validTo.toString(), + } + + const estimatedGas = await contract.estimateGas + .createOrder(ethOrderParams, { value: orderToSign.sellAmount }) + .then((res) => BigInt(res.toHexString())) + .catch((error) => { + console.error(error) + + return GAS_LIMIT_DEFAULT + }) + + const data = contract.interface.encodeFunctionData('createOrder', [ethOrderParams]) + + return { + orderId, + transaction: { + data, + gas: '0x' + calculateGasMargin(estimatedGas).toString(16), + to: contract.address, + value: '0x' + BigInt(orderToSign.sellAmount).toString(16), + }, + } +} + +function getEthFlowContract(chainId: SupportedChainId, signer: Signer, env?: CowEnv): EthFlow { + return EthFlow__factory.connect((env === 'staging' ? BARN_ETH_FLOW_ADDRESSES : ETH_FLOW_ADDRESSES)[chainId], signer) +} diff --git a/external/cow-sdk/src/trading/getOrderToSign.test.ts b/external/cow-sdk/src/trading/getOrderToSign.test.ts new file mode 100644 index 000000000..1dd2f665c --- /dev/null +++ b/external/cow-sdk/src/trading/getOrderToSign.test.ts @@ -0,0 +1,81 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +import { getOrderToSign } from './getOrderToSign' +import { LimitOrderParameters } from './types' +import { SupportedChainId } from '../common' +import { OrderKind } from '../order-book' +import { DEFAULT_QUOTE_VALIDITY } from './consts' + +const currentTimestamp = 1487076708000 + +const params = { from: '0xaaa444' } + +const defaultOrderParams: LimitOrderParameters = { + chainId: SupportedChainId.GNOSIS_CHAIN, + signer: '0x006', + appCode: '0x007', + sellToken: '0xaaa', + sellTokenDecimals: 18, + buyToken: '0xbbb', + buyTokenDecimals: 18, + sellAmount: '1000000000000000000', + buyAmount: '2000000000000000000', + kind: OrderKind.SELL, + quoteId: 31, + slippageBps: 50, +} + +const appDataKeccak256 = '0x00355666666' + +describe('getOrderToSign', () => { + beforeEach(() => { + Date.now = jest.fn(() => currentTimestamp) + }) + it('When receiver is not set, then should use "from" parameter instead', () => { + const result = getOrderToSign(params, { ...defaultOrderParams, receiver: undefined }, appDataKeccak256) + + expect(result.receiver).toBe('0xaaa444') + }) + + it('When validTo is not set, then should use "validFor" parameter instead', () => { + const result = getOrderToSign( + params, + { ...defaultOrderParams, validTo: undefined, validFor: 600 }, + appDataKeccak256 + ) + + expect(result.validTo).toBe(currentTimestamp / 1000 + 600) + }) + + it('When both validTo and validFor are not set, then should use default value', () => { + const result = getOrderToSign( + params, + { ...defaultOrderParams, validTo: undefined, validFor: undefined }, + appDataKeccak256 + ) + + expect(result.validTo).toBe(currentTimestamp / 1000 + DEFAULT_QUOTE_VALIDITY) + }) + + it('When sell order, then buy amount should be adjusted to slippage', () => { + const result = getOrderToSign(params, { ...defaultOrderParams, kind: OrderKind.SELL }, appDataKeccak256) + + expect(result.buyAmount).toBe('1990000000000000000') + }) + + it('When buy order, then sell amount should be adjusted to slippage', () => { + const result = getOrderToSign(params, { ...defaultOrderParams, kind: OrderKind.BUY }, appDataKeccak256) + + expect(result.sellAmount).toBe('1005000000000000000') + }) +}) diff --git a/external/cow-sdk/src/trading/getOrderToSign.ts b/external/cow-sdk/src/trading/getOrderToSign.ts new file mode 100644 index 000000000..1b0992e18 --- /dev/null +++ b/external/cow-sdk/src/trading/getOrderToSign.ts @@ -0,0 +1,68 @@ +import { BuyTokenDestination, getQuoteAmountsAndCosts, type OrderParameters, SellTokenSource } from '../order-book' +import { UnsignedOrder } from '../order-signing' +import { LimitTradeParameters } from './types' +import { DEFAULT_QUOTE_VALIDITY } from './consts' + +interface OrderToSignParams { + from: string + networkCostsAmount?: string +} + +export function getOrderToSign( + { from, networkCostsAmount = '0' }: OrderToSignParams, + limitOrderParams: LimitTradeParameters, + appDataKeccak256: string +): UnsignedOrder { + const { + sellAmount, + buyAmount, + sellToken, + sellTokenDecimals, + buyToken, + buyTokenDecimals, + kind, + partiallyFillable = false, + slippageBps = 0, + partnerFee, + validFor, + } = limitOrderParams + + const receiver = limitOrderParams.receiver || from + const validTo = limitOrderParams.validTo || Math.floor(Date.now() / 1000) + (validFor || DEFAULT_QUOTE_VALIDITY) + + const orderParams: OrderParameters = { + sellToken, + buyToken, + sellAmount, + buyAmount, + receiver, + validTo, + kind, + feeAmount: networkCostsAmount, + appData: appDataKeccak256, + partiallyFillable, + } + + const { afterSlippage } = getQuoteAmountsAndCosts({ + orderParams, + slippagePercentBps: slippageBps, + partnerFeeBps: partnerFee?.bps, + sellDecimals: sellTokenDecimals, + buyDecimals: buyTokenDecimals, + }) + + return { + sellToken, + buyToken, + sellAmount: afterSlippage.sellAmount.toString(), + buyAmount: afterSlippage.buyAmount.toString(), + validTo, + kind, + partiallyFillable, + appData: appDataKeccak256, + receiver, + feeAmount: '0', + sellTokenBalance: SellTokenSource.ERC20, + buyTokenBalance: BuyTokenDestination.ERC20, + } +} diff --git a/external/cow-sdk/src/trading/getOrderTypedData.ts b/external/cow-sdk/src/trading/getOrderTypedData.ts new file mode 100644 index 000000000..327b9acf9 --- /dev/null +++ b/external/cow-sdk/src/trading/getOrderTypedData.ts @@ -0,0 +1,28 @@ +import { ORDER_TYPE_FIELDS } from '@cowprotocol/contracts' +import { ORDER_PRIMARY_TYPE, OrderTypedData } from './types' +import { OrderSigningUtils, UnsignedOrder } from '../order-signing' +import { SupportedChainId } from '../common' + +const EIP712DomainTypes = [ + { name: 'name', type: 'string' }, + { name: 'version', type: 'string' }, + { name: 'chainId', type: 'uint256' }, + { name: 'verifyingContract', type: 'address' }, +] + +export async function getOrderTypedData( + chainId: SupportedChainId, + orderToSign: UnsignedOrder +): Promise { + const domain = (await OrderSigningUtils.getDomain(chainId)) as OrderTypedData['domain'] + + return { + domain, + primaryType: ORDER_PRIMARY_TYPE, + types: { + [ORDER_PRIMARY_TYPE]: ORDER_TYPE_FIELDS, + EIP712Domain: EIP712DomainTypes, + }, + message: orderToSign, + } +} diff --git a/external/cow-sdk/src/trading/getPreSignTransaction.test.ts b/external/cow-sdk/src/trading/getPreSignTransaction.test.ts new file mode 100644 index 000000000..980fd4d36 --- /dev/null +++ b/external/cow-sdk/src/trading/getPreSignTransaction.test.ts @@ -0,0 +1,60 @@ +const GAS = '0x1e848' // 125000 + +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) +jest.mock('../common/generated', () => { + const original = jest.requireActual('../common/generated') + + return { + ...original, + GPv2Settlement__factory: { + connect: jest.fn().mockReturnValue({ + address: '0xaa1', + estimateGas: { + setPreSignature: jest.fn().mockResolvedValue({ toHexString: () => GAS }), + }, + interface: { + encodeFunctionData: jest.fn().mockReturnValue('0x0ac'), + }, + }), + }, + } +}) + +import { SupportedChainId } from '../common' +import { VoidSigner } from '@ethersproject/abstract-signer' +import { getPreSignTransaction } from './getPreSignTransaction' + +const chainId = SupportedChainId.GNOSIS_CHAIN +const account = '0x21c3de23d98caddc406e3d31b25e807addf33333' +const orderId = + '0xd64389693b6cf89ad6c140a113b10df08073e5ef3063d05a02f3f42e1a42f0ad0b7795e18767259cc253a2af471dbc4c72b49516ffffffff' + +describe('getPreSignTransaction', () => { + const signer = new VoidSigner(account) + + signer.getChainId = jest.fn().mockResolvedValue(chainId) + signer.getAddress = jest.fn().mockResolvedValue(account) + + it('Should call gas estimation and return estimated value + 20%', async () => { + const result = await getPreSignTransaction(signer, chainId, account, orderId) + const gasNum = +GAS + + expect(+result.gas).toBe(gasNum * 1.2) + }) + + it('Tx value should always be zero', async () => { + const result = await getPreSignTransaction(signer, chainId, account, orderId) + + expect(result.value).toBe('0') + }) +}) diff --git a/external/cow-sdk/src/trading/getPreSignTransaction.ts b/external/cow-sdk/src/trading/getPreSignTransaction.ts new file mode 100644 index 000000000..86ff2fac9 --- /dev/null +++ b/external/cow-sdk/src/trading/getPreSignTransaction.ts @@ -0,0 +1,35 @@ +import { COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS, SupportedChainId } from '../common' +import type { Signer } from 'ethers' +import { GAS_LIMIT_DEFAULT } from './consts' +import { calculateGasMargin } from './utils' + +import { GPv2Settlement__factory } from '../common/generated' +import { TransactionParams } from './types' + +export async function getPreSignTransaction( + signer: Signer, + chainId: SupportedChainId, + account: string, + orderId: string +): Promise { + const contract = GPv2Settlement__factory.connect(account, signer) + + const settlementContractAddress = COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS[chainId] as `0x${string}` + const preSignatureCall = contract.interface.encodeFunctionData('setPreSignature', [orderId, true]) + + const gas = await contract.estimateGas + .setPreSignature(orderId, true) + .then((res) => BigInt(res.toHexString())) + .catch((error) => { + console.error(error) + + return GAS_LIMIT_DEFAULT + }) + + return { + data: preSignatureCall, + gas: '0x' + calculateGasMargin(gas).toString(16), + to: settlementContractAddress, + value: '0', + } +} diff --git a/external/cow-sdk/src/trading/getQuote.test.ts b/external/cow-sdk/src/trading/getQuote.test.ts new file mode 100644 index 000000000..b2c0d0eed --- /dev/null +++ b/external/cow-sdk/src/trading/getQuote.test.ts @@ -0,0 +1,169 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +import { getQuoteWithSigner } from './getQuote' +import { SwapParameters } from './types' +import { ETH_ADDRESS, SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '../common' +import { OrderBookApi, OrderKind, OrderQuoteResponse } from '../order-book' + +const quoteResponseMock = { + quote: { + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + receiver: '0xfb3c7eb936caa12b5a884d612393969a557d4307', + sellAmount: '98115217044683860', + buyAmount: '984440000000', + validTo: 1731059375, + appData: + '{"appCode":"CoW Swap","environment":"production","metadata":{"orderClass":{"orderClass":"market"},"quote":{"slippageBips":50,"smartSlippage":false}},"version":"1.3.0"}', + appDataHash: '0x05fb36aed7ba01f92544e72888fb354cdeab68b6bbb0b9ea5e64edc364093b42', + feeAmount: '1884782955316140', + kind: 'sell', + partiallyFillable: false, + sellTokenBalance: 'erc20', + buyTokenBalance: 'erc20', + signingScheme: 'eip712', + }, + from: '0xfb3c7eb936caa12b5a884d612393969a557d4307', + expiration: '2024-11-08T09:21:35.442772888Z', + id: 486289, + verified: true, +} as OrderQuoteResponse + +const defaultOrderParams: SwapParameters = { + chainId: SupportedChainId.GNOSIS_CHAIN, + signer: '1bb337bafb276f779c3035874b8914e4b851bb989dbb34e776397076576f3804', + appCode: '0x007', + sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + amount: '100000000000000000', + kind: OrderKind.SELL, + slippageBps: 50, +} + +const getQuoteMock = jest.fn() +const orderBookApiMock = { + getQuote: getQuoteMock, +} as unknown as OrderBookApi + +describe('getQuoteToSign', () => { + beforeEach(() => { + getQuoteMock.mockReset() + getQuoteMock.mockResolvedValue(quoteResponseMock) + }) + + describe('App data', () => { + it('Should add slippageBps and appCode from parameters', async () => { + const { result } = await getQuoteWithSigner({ ...defaultOrderParams, slippageBps: 76 }, {}, orderBookApiMock) + const appData = JSON.parse(result.appDataInfo.fullAppData) + + expect(appData.metadata.quote.slippageBips).toBe(76) + expect(appData.appCode).toBe(defaultOrderParams.appCode) + }) + + it('Should add advanced appData parameters', async () => { + const { result } = await getQuoteWithSigner( + defaultOrderParams, + { + appData: { + environment: 'barn', + }, + }, + orderBookApiMock + ) + + const appData = JSON.parse(result.appDataInfo.fullAppData) + + expect(appData.environment).toBe('barn') + }) + }) + + describe('Quote request', () => { + it('When sell ETH, then should override sell token with wrapped one', async () => { + await getQuoteWithSigner({ ...defaultOrderParams, sellToken: ETH_ADDRESS }, {}, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + + expect(call.sellToken).toBe(WRAPPED_NATIVE_CURRENCIES[defaultOrderParams.chainId]) + }) + it('Should add appData to the request', async () => { + await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + const appData = JSON.parse(call.appData) + + expect(appData.appCode).toBe(defaultOrderParams.appCode) + expect(appData.metadata.quote.slippageBips).toBe(defaultOrderParams.slippageBps) + }) + it('priceQuality must always be OPTIMAL', async () => { + await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + + expect(call.priceQuality).toBe('optimal') + }) + it('When is sell order, then should set sellAmountBeforeFee', async () => { + await getQuoteWithSigner({ ...defaultOrderParams, kind: OrderKind.SELL }, {}, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + + expect(call.sellAmountBeforeFee).toBe(defaultOrderParams.amount) + }) + it('When is buy order, then should set buyAmountAfterFee', async () => { + await getQuoteWithSigner({ ...defaultOrderParams, kind: OrderKind.BUY }, {}, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + + expect(call.buyAmountAfterFee).toBe(defaultOrderParams.amount) + }) + it('Should add advanced quote parameters', async () => { + await getQuoteWithSigner(defaultOrderParams, { quoteRequest: { onchainOrder: { foo: 'bar' } } }, orderBookApiMock) + + const call = getQuoteMock.mock.calls[0][0] + + expect(call.onchainOrder).toEqual({ foo: 'bar' }) + }) + }) + + describe('Amounts and costs', () => { + it('Should take slippage value into account', async () => { + const { result } = await getQuoteWithSigner({ ...defaultOrderParams, slippageBps: 20 }, {}, orderBookApiMock) + const buyAmount = +quoteResponseMock.quote.buyAmount + + expect(+result.amountsAndCosts.afterSlippage.buyAmount.toString()).toBe( + buyAmount - (buyAmount * 20) / (100 * 100) + ) + }) + it('Should calculate network costs based on quote API response', async () => { + const { result } = await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) + + expect(result.amountsAndCosts.costs.networkFee.amountInSellCurrency.toString()).toBe( + quoteResponseMock.quote.feeAmount + ) + }) + }) + + describe('Order to sign', () => { + it('feeAmount should always be zero', async () => { + const { result } = await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) + + expect(result.orderToSign.feeAmount).toBe('0') + }) + it('Should add appDataKeccak256 to the order', async () => { + const { result } = await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) + + expect(result.orderToSign.appData.length).toBe(2 + 64) + }) + }) +}) diff --git a/external/cow-sdk/src/trading/getQuote.ts b/external/cow-sdk/src/trading/getQuote.ts new file mode 100644 index 000000000..41c6b58ff --- /dev/null +++ b/external/cow-sdk/src/trading/getQuote.ts @@ -0,0 +1,161 @@ +import { + AccountAddress, + QuoteResults, + QuoterParameters, + SwapAdvancedSettings, + SwapParameters, + TradeParameters, +} from './types' +import { DEFAULT_QUOTE_VALIDITY, log } from './consts' + +import { + getQuoteAmountsAndCosts, + OrderBookApi, + OrderQuoteRequest, + OrderQuoteSideKindBuy, + OrderQuoteSideKindSell, + PriceQuality, + SigningScheme, +} from '../order-book' +import { buildAppData } from './appDataUtils' +import { getOrderToSign } from './getOrderToSign' +import { getIsEthFlowOrder, getSigner, swapParamsToLimitOrderParams } from './utils' +import { Signer } from 'ethers' +import { WRAPPED_NATIVE_CURRENCIES } from '../common' +import { getOrderTypedData } from './getOrderTypedData' + +// ETH-FLOW orders require different quote params +// check the isEthFlow flag and set in quote req obj +const ETH_FLOW_AUX_QUOTE_PARAMS = { + signingScheme: SigningScheme.EIP1271, + onchainOrder: true, + // Ethflow orders are subsidized in the backend. + // This means we can assume the verification gas costs are zero for the quote/fee estimation + verificationGasLimit: 0, +} + +export type QuoteResultsWithSigner = { result: QuoteResults & { signer: Signer }; orderBookApi: OrderBookApi } + +export async function getQuote( + _tradeParameters: TradeParameters, + trader: QuoterParameters, + advancedSettings?: SwapAdvancedSettings, + _orderBookApi?: OrderBookApi +): Promise<{ result: QuoteResults; orderBookApi: OrderBookApi }> { + const { appCode, chainId, account: from } = trader + const isEthFlow = getIsEthFlowOrder(_tradeParameters) + + const tradeParameters = isEthFlow + ? { + ..._tradeParameters, + sellToken: WRAPPED_NATIVE_CURRENCIES[chainId], + } + : _tradeParameters + + const { + sellToken, + sellTokenDecimals, + buyToken, + buyTokenDecimals, + amount, + kind, + partnerFee, + validFor = DEFAULT_QUOTE_VALIDITY, + slippageBps = 0, + env = 'prod', + } = tradeParameters + + log(`Swap ${amount} ${sellToken} for ${buyToken} on chain ${chainId}`) + + const orderBookApi = _orderBookApi || new OrderBookApi({ chainId, env }) + + const receiver = tradeParameters.receiver || from + const isSell = kind === 'sell' + + log('Building app data...') + + const appDataInfo = await buildAppData( + { + slippageBps, + orderClass: 'market', + appCode, + }, + advancedSettings?.appData + ) + + const { appDataKeccak256, fullAppData } = appDataInfo + + const quoteRequest: OrderQuoteRequest = { + from, + sellToken, + buyToken, + receiver, + validFor, + appData: fullAppData, + appDataHash: appDataKeccak256, + priceQuality: PriceQuality.OPTIMAL, // Do not change this parameter because we rely on the fact that quote has id + signingScheme: SigningScheme.EIP712, + ...(isEthFlow ? ETH_FLOW_AUX_QUOTE_PARAMS : {}), + ...(isSell + ? { kind: OrderQuoteSideKindSell.SELL, sellAmountBeforeFee: amount } + : { kind: OrderQuoteSideKindBuy.BUY, buyAmountAfterFee: amount }), + ...advancedSettings?.quoteRequest, + } + + log('Getting quote...') + + const quoteResponse = await orderBookApi.getQuote(quoteRequest) + + const amountsAndCosts = getQuoteAmountsAndCosts({ + orderParams: quoteResponse.quote, + slippagePercentBps: slippageBps, + partnerFeeBps: partnerFee?.bps, + sellDecimals: sellTokenDecimals, + buyDecimals: buyTokenDecimals, + }) + + const orderToSign = getOrderToSign( + { from, networkCostsAmount: quoteResponse.quote.feeAmount }, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + swapParamsToLimitOrderParams(tradeParameters, quoteResponse.id!, amountsAndCosts), + appDataInfo.appDataKeccak256 + ) + + const orderTypedData = await getOrderTypedData(chainId, orderToSign) + + return { + result: { + tradeParameters, + amountsAndCosts, + orderToSign, + quoteResponse, + appDataInfo, + orderTypedData, + }, + orderBookApi, + } +} + +export async function getQuoteWithSigner( + swapParameters: SwapParameters, + advancedSettings?: SwapAdvancedSettings, + orderBookApi?: OrderBookApi +): Promise { + const signer = getSigner(swapParameters.signer) + + const trader = { + chainId: swapParameters.chainId, + appCode: swapParameters.appCode, + account: (await signer.getAddress()) as AccountAddress, + } + + const result = await getQuote(swapParameters, trader, advancedSettings, orderBookApi) + + return { + result: { + ...result.result, + signer, + }, + orderBookApi: result.orderBookApi, + } +} diff --git a/external/cow-sdk/src/trading/index.ts b/external/cow-sdk/src/trading/index.ts new file mode 100644 index 000000000..1cc5e8a11 --- /dev/null +++ b/external/cow-sdk/src/trading/index.ts @@ -0,0 +1,22 @@ +export * from './types' +export * from './tradingSdk' + +/** + * Main trading functions + */ +export { getQuote, getQuoteWithSigner } from './getQuote' +export { postSwapOrder, postSwapOrderFromQuote } from './postSwapOrder' +export { postLimitOrder } from './postLimitOrder' +export { postCoWProtocolTrade } from './postCoWProtocolTrade' +export { getOrderToSign } from './getOrderToSign' +export { postSellNativeCurrencyOrder } from './postSellNativeCurrencyOrder' +export { getEthFlowTransaction } from './getEthFlowTransaction' +export { getPreSignTransaction } from './getPreSignTransaction' + +/** + * Helpers + */ + +export * from './appDataUtils' +export * from './calculateUniqueOrderId' +export { swapParamsToLimitOrderParams, mapQuoteAmountsAndCosts } from './utils' diff --git a/external/cow-sdk/src/trading/postCoWProtocolTrade.test.ts b/external/cow-sdk/src/trading/postCoWProtocolTrade.test.ts new file mode 100644 index 000000000..dcc373b24 --- /dev/null +++ b/external/cow-sdk/src/trading/postCoWProtocolTrade.test.ts @@ -0,0 +1,127 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +jest.mock('../order-signing', () => { + return { + OrderSigningUtils: { + signOrder: jest.fn(), + }, + } +}) + +jest.mock('./postSellNativeCurrencyOrder', () => { + return { + postSellNativeCurrencyOrder: jest.fn(), + } +}) + +import { postCoWProtocolTrade } from './postCoWProtocolTrade' +import { postSellNativeCurrencyOrder } from './postSellNativeCurrencyOrder' + +import { AppDataInfo, LimitOrderParameters } from './types' +import { ETH_ADDRESS, SupportedChainId } from '../common' +import { OrderBookApi, OrderKind } from '../order-book' +import { OrderSigningUtils as OrderSigningUtilsMock } from '../order-signing' +import { VoidSigner } from '@ethersproject/abstract-signer' + +const defaultOrderParams: LimitOrderParameters = { + chainId: SupportedChainId.GNOSIS_CHAIN, + signer: '0x006', + appCode: '0x007', + sellToken: '0xaaa', + sellTokenDecimals: 18, + buyToken: '0xbbb', + buyTokenDecimals: 18, + sellAmount: '1000000000000000000', + buyAmount: '2000000000000000000', + kind: OrderKind.SELL, + quoteId: 31, + slippageBps: 50, +} + +const currentTimestamp = 1487076708000 + +const signatureMock = { signature: '0x000a1', signingScheme: 'eip712' } + +const signer = new VoidSigner('0x21c3de23d98caddc406e3d31b25e807addf33333') +signer.getChainId = jest.fn().mockResolvedValue(SupportedChainId.GNOSIS_CHAIN) + +const sendOrderMock = jest.fn() +const orderBookApiMock = { + sendOrder: sendOrderMock, +} as unknown as OrderBookApi +const appDataMock = { + appDataKeccak256: '0xaf1908d8e30f63bf4a6dbd41d2191eb092ac0af626b37c720596426130717658', + fullAppData: + '{\\"appCode\\":\\"CoW Swap\\",\\"environment\\":\\"barn\\",\\"metadata\\":{\\"orderClass\\":{\\"orderClass\\":\\"market\\"},\\"quote\\":{\\"slippageBips\\":201,\\"smartSlippage\\":true}},\\"version\\":\\"1.3.0\\"}', +} as unknown as AppDataInfo + +describe('postCoWProtocolTrade', () => { + let signOrderMock: jest.SpyInstance + let postSellNativeCurrencyOrderMock: jest.SpyInstance + + beforeAll(() => { + signOrderMock = OrderSigningUtilsMock.signOrder as unknown as jest.SpyInstance + postSellNativeCurrencyOrderMock = postSellNativeCurrencyOrder as unknown as jest.SpyInstance + }) + + beforeEach(() => { + Date.now = jest.fn(() => currentTimestamp) + signOrderMock.mockResolvedValue(signatureMock) + }) + + afterEach(() => { + signOrderMock.mockReset() + postSellNativeCurrencyOrderMock.mockReset() + sendOrderMock.mockReset() + }) + + it('When sell token is native, then should post on-chain order', async () => { + postSellNativeCurrencyOrderMock.mockResolvedValue({ orderId: '0x01' }) + + const order = { ...defaultOrderParams, sellToken: ETH_ADDRESS } + await postCoWProtocolTrade(orderBookApiMock, signer, appDataMock, order) + + expect(postSellNativeCurrencyOrderMock).toHaveBeenCalledTimes(1) + expect(postSellNativeCurrencyOrderMock).toHaveBeenCalledWith(orderBookApiMock, signer, appDataMock, order, '0') + }) + + it('API request should contain all specified parameters', async () => { + sendOrderMock.mockResolvedValue('0x02') + + const order = { ...defaultOrderParams } + await postCoWProtocolTrade(orderBookApiMock, signer, appDataMock, order) + + const callBody = sendOrderMock.mock.calls[0][0] + + expect(sendOrderMock).toHaveBeenCalledTimes(1) + expect(callBody).toEqual({ + appData: appDataMock.fullAppData, + appDataHash: appDataMock.appDataKeccak256, + sellToken: '0xaaa', + sellAmount: '1000000000000000000', + sellTokenBalance: 'erc20', + buyToken: '0xbbb', + buyAmount: '1990000000000000000', // Slippage is taken into account + buyTokenBalance: 'erc20', + feeAmount: '0', + from: '0x21c3de23d98caddc406e3d31b25e807addf33333', + kind: 'sell', + partiallyFillable: false, + quoteId: 31, + receiver: '0x21c3de23d98caddc406e3d31b25e807addf33333', + signature: '0x000a1', + signingScheme: 'eip712', + validTo: 1487077308, + }) + }) +}) diff --git a/external/cow-sdk/src/trading/postCoWProtocolTrade.ts b/external/cow-sdk/src/trading/postCoWProtocolTrade.ts new file mode 100644 index 000000000..098cabcf3 --- /dev/null +++ b/external/cow-sdk/src/trading/postCoWProtocolTrade.ts @@ -0,0 +1,64 @@ +import { OrderBookApi, OrderCreation } from '../order-book' +import type { Signer } from 'ethers' +import { AppDataInfo, LimitTradeParameters } from './types' +import { log, SIGN_SCHEME_MAP } from './consts' +import { OrderSigningUtils } from '../order-signing' +import { getOrderToSign } from './getOrderToSign' +import { postSellNativeCurrencyOrder } from './postSellNativeCurrencyOrder' +import { getIsEthFlowOrder } from './utils' + +export async function postCoWProtocolTrade( + orderBookApi: OrderBookApi, + signer: Signer, + appData: AppDataInfo, + params: LimitTradeParameters, + networkCostsAmount = '0' +): Promise { + if (getIsEthFlowOrder(params)) { + const quoteId = params.quoteId + + if (typeof quoteId === 'number') { + const { orderId } = await postSellNativeCurrencyOrder( + orderBookApi, + signer, + appData, + { ...params, quoteId }, + networkCostsAmount + ) + + return orderId + } else { + throw new Error('quoteId is required for EthFlow orders') + } + } + + const { quoteId = null } = params + const { appDataKeccak256, fullAppData } = appData + + const chainId = await signer.getChainId() + const from = await signer.getAddress() + + const orderToSign = getOrderToSign({ from, networkCostsAmount }, params, appData.appDataKeccak256) + + log('Signing order...') + + const { signature, signingScheme } = await OrderSigningUtils.signOrder(orderToSign, chainId, signer) + + const orderBody: OrderCreation = { + ...orderToSign, + from, + signature, + signingScheme: SIGN_SCHEME_MAP[signingScheme], + quoteId, + appData: fullAppData, + appDataHash: appDataKeccak256, + } + + log('Posting order...') + + const orderId = await orderBookApi.sendOrder(orderBody) + + log(`Order created, id: ${orderId}`) + + return orderId +} diff --git a/external/cow-sdk/src/trading/postLimitOrder.test.ts b/external/cow-sdk/src/trading/postLimitOrder.test.ts new file mode 100644 index 000000000..6883593b1 --- /dev/null +++ b/external/cow-sdk/src/trading/postLimitOrder.test.ts @@ -0,0 +1,94 @@ +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +jest.mock('./postCoWProtocolTrade', () => { + return { + postCoWProtocolTrade: jest.fn(), + } +}) + +jest.mock('./appDataUtils', () => { + return { + buildAppData: jest.fn(), + } +}) + +import { postCoWProtocolTrade } from './postCoWProtocolTrade' +import { buildAppData } from './appDataUtils' + +import { AppDataInfo, LimitOrderParameters } from './types' +import { SupportedChainId } from '../common' +import { OrderBookApi, OrderKind } from '../order-book' +import { postLimitOrder } from './postLimitOrder' + +const defaultOrderParams: LimitOrderParameters = { + chainId: SupportedChainId.GNOSIS_CHAIN, + signer: '1bb337bafb276f779c3035874b8914e4b851bb989dbb34e776397076576f3804', + appCode: '0x007', + sellToken: '0xaaa', + sellTokenDecimals: 18, + buyToken: '0xbbb', + buyTokenDecimals: 18, + sellAmount: '1000000000000000000', + buyAmount: '2000000000000000000', + kind: OrderKind.SELL, + quoteId: 31, + slippageBps: 50, +} + +const currentTimestamp = 1487076708000 + +const orderBookApiMock = {} as unknown as OrderBookApi +const appDataMock = {} as unknown as AppDataInfo + +describe('postLimitOrder', () => { + let buildAppDataMock: jest.SpyInstance + let postCoWProtocolTradeMock: jest.SpyInstance + + beforeAll(() => { + buildAppDataMock = buildAppData as unknown as jest.SpyInstance + postCoWProtocolTradeMock = postCoWProtocolTrade as unknown as jest.SpyInstance + }) + + beforeEach(() => { + Date.now = jest.fn(() => currentTimestamp) + + buildAppDataMock.mockResolvedValue(appDataMock) + }) + + afterEach(() => { + buildAppDataMock.mockReset() + postCoWProtocolTradeMock.mockReset() + }) + + it('Should add advanced appData parameters', async () => { + const advancedData = { appData: { environment: 'sandbox' } } + + await postLimitOrder(defaultOrderParams, advancedData, orderBookApiMock) + + const call = buildAppDataMock.mock.calls[0][1] + + expect(call).toEqual(advancedData.appData) + }) + + it('Should call order posting with all specified parameters', async () => { + await postLimitOrder(defaultOrderParams, {}, orderBookApiMock) + + expect(postCoWProtocolTradeMock).toHaveBeenCalledTimes(1) + expect(postCoWProtocolTradeMock).toHaveBeenCalledWith( + orderBookApiMock, + expect.anything(), + appDataMock, + defaultOrderParams + ) + }) +}) diff --git a/external/cow-sdk/src/trading/postLimitOrder.ts b/external/cow-sdk/src/trading/postLimitOrder.ts new file mode 100644 index 000000000..51f6b6058 --- /dev/null +++ b/external/cow-sdk/src/trading/postLimitOrder.ts @@ -0,0 +1,32 @@ +import { LimitOrderAdvancedSettings, LimitOrderParameters } from './types' +import { log } from './consts' +import { OrderBookApi } from '../order-book' +import { buildAppData } from './appDataUtils' +import { postCoWProtocolTrade } from './postCoWProtocolTrade' +import { getSigner } from './utils' + +export async function postLimitOrder( + params: LimitOrderParameters, + advancedSettings?: LimitOrderAdvancedSettings, + _orderBookApi?: OrderBookApi +): Promise { + const { appCode, chainId, sellToken, buyToken, sellAmount, buyAmount, slippageBps = 0, env = 'prod' } = params + + log(`Limit order ${sellAmount} ${sellToken} for ${buyAmount} ${buyToken} on chain ${chainId}`) + + const signer = getSigner(params.signer) + const orderBookApi = _orderBookApi || new OrderBookApi({ chainId, env }) + + log('Building app data...') + + const appDataInfo = await buildAppData( + { + slippageBps, + orderClass: 'limit', + appCode, + }, + advancedSettings?.appData + ) + + return postCoWProtocolTrade(orderBookApi, signer, appDataInfo, params) +} diff --git a/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.test.ts b/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.test.ts new file mode 100644 index 000000000..308fbe3ea --- /dev/null +++ b/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.test.ts @@ -0,0 +1,150 @@ +import { EthFlow__factory } from '../common/generated' +import { VoidSigner } from '@ethersproject/abstract-signer' +import { AppDataInfo, LimitOrderParameters } from './types' +import { SupportedChainId, WRAPPED_NATIVE_CURRENCIES } from '../common' +import { OrderBookApi, OrderKind } from '../order-book' +import { postSellNativeCurrencyOrder } from './postSellNativeCurrencyOrder' + +jest.mock('cross-fetch', () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const fetchMock = require('jest-fetch-mock') + // Require the original module to not be mocked... + const originalFetch = jest.requireActual('cross-fetch') + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +jest.mock('../common/generated', () => { + const original = jest.requireActual('../common/generated') + + return { + ...original, + EthFlow__factory: { + connect: jest.fn(), + }, + } +}) + +const defaultOrderParams: LimitOrderParameters & { quoteId: number } = { + chainId: SupportedChainId.GNOSIS_CHAIN, + signer: '1bb337bafb276f779c3035874b8914e4b851bb989dbb34e776397076576f3804', + appCode: '0x007', + sellToken: '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', + sellTokenDecimals: 18, + buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', + buyTokenDecimals: 18, + sellAmount: '1000000000000000000', + buyAmount: '2000000000000000000', + kind: OrderKind.SELL, + quoteId: 31, + slippageBps: 50, + validTo: 520, +} + +const account = '0x21c3de23d98caddc406e3d31b25e807addf33333' +const signer = new VoidSigner(account) + +signer.getChainId = jest.fn().mockResolvedValue(SupportedChainId.GNOSIS_CHAIN) + +const callData = '0x123456' +const currentTimestamp = 1487076708000 + +const uploadAppDataMock = jest.fn() +const orderBookApiMock = { uploadAppData: uploadAppDataMock } as unknown as OrderBookApi +const appDataMock = { + appDataKeccak256: '0xaf1908d8e30f63bf4a6dbd41d2191eb092ac0af626b37c720596426130717658', + fullAppData: + '{\\"appCode\\":\\"CoW Swap\\",\\"environment\\":\\"barn\\",\\"metadata\\":{\\"orderClass\\":{\\"orderClass\\":\\"market\\"},\\"quote\\":{\\"slippageBips\\":201,\\"smartSlippage\\":true}},\\"version\\":\\"1.3.0\\"}', +} as unknown as AppDataInfo + +let ethFlowContractFactoryMock: jest.SpyInstance +const ethFlowContractMock = { + estimateGas: { + createOrder: jest.fn(), + }, + createOrder: jest.fn(), + interface: { + encodeFunctionData: jest.fn().mockReturnValue(callData), + }, +} + +describe('postSellNativeCurrencyTrade', () => { + beforeAll(() => { + ethFlowContractFactoryMock = EthFlow__factory.connect as unknown as jest.SpyInstance + }) + + beforeEach(() => { + ethFlowContractFactoryMock.mockReturnValue(ethFlowContractMock) + uploadAppDataMock.mockResolvedValue(undefined) + ethFlowContractMock.estimateGas.createOrder.mockResolvedValue({ toHexString: () => '0x1' }) + signer.sendTransaction = jest.fn().mockImplementation(() => { + return Promise.resolve({ hash: '0xccdd11', orderId: '0xabc22' }) + }) + + Date.now = jest.fn(() => currentTimestamp) + }) + + afterEach(() => { + uploadAppDataMock.mockReset() + ethFlowContractFactoryMock.mockReset() + ethFlowContractMock.estimateGas.createOrder.mockReset() + ethFlowContractMock.interface.encodeFunctionData.mockReset() + }) + + it('Should call checkEthFlowOrderExists if it is set', async () => { + const checkEthFlowOrderExists = jest.fn().mockResolvedValue(false) + + await postSellNativeCurrencyOrder( + orderBookApiMock, + signer, + appDataMock, + defaultOrderParams, + '0', + checkEthFlowOrderExists + ) + + expect(checkEthFlowOrderExists).toHaveBeenCalledTimes(1) + }) + + it('Should upload appData', async () => { + await postSellNativeCurrencyOrder(orderBookApiMock, signer, appDataMock, defaultOrderParams) + + expect(uploadAppDataMock).toHaveBeenCalledWith(appDataMock.appDataKeccak256, appDataMock.fullAppData) + }) + + it('When transaction gas estimation is failed, then should use fallback value + 20%', async () => { + ethFlowContractMock.estimateGas.createOrder.mockRejectedValue(new Error('Estimation failed')) + + await postSellNativeCurrencyOrder(orderBookApiMock, signer, appDataMock, defaultOrderParams) + + const call = (signer.sendTransaction as jest.Mock).mock.calls[0][0] + + expect(+call.gas).toBe(180000) // 150000 by default + 20% + }) + + it('Should create an on-chain transaction with all specified parameters', async () => { + await postSellNativeCurrencyOrder(orderBookApiMock, signer, appDataMock, defaultOrderParams) + + expect(ethFlowContractMock.interface.encodeFunctionData).toHaveBeenCalledTimes(1) + expect(ethFlowContractMock.interface.encodeFunctionData).toHaveBeenCalledWith('createOrder', [ + { + appData: appDataMock.appDataKeccak256, + sellToken: WRAPPED_NATIVE_CURRENCIES[defaultOrderParams.chainId], + sellAmount: defaultOrderParams.sellAmount, + sellTokenBalance: 'erc20', + buyAmount: '1990000000000000000', // defaultOrderParams.buyAmount - slippage + buyToken: defaultOrderParams.buyToken, + buyTokenBalance: 'erc20', + feeAmount: '0', + partiallyFillable: false, + kind: defaultOrderParams.kind, + quoteId: defaultOrderParams.quoteId, + receiver: account, + validTo: defaultOrderParams.validTo?.toString(), + }, + ]) + }) +}) diff --git a/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts b/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts new file mode 100644 index 000000000..666923380 --- /dev/null +++ b/external/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts @@ -0,0 +1,35 @@ +import { Signer } from 'ethers' +import { AppDataInfo, LimitTradeParametersFromQuote } from './types' +import { EthFlowOrderExistsCallback } from './calculateUniqueOrderId' + +import { log } from './consts' +import { OrderBookApi } from '../order-book' +import { getEthFlowTransaction } from './getEthFlowTransaction' + +export async function postSellNativeCurrencyOrder( + orderBookApi: OrderBookApi, + signer: Signer, + appData: Pick, + _params: LimitTradeParametersFromQuote, + networkCostsAmount = '0', + checkEthFlowOrderExists?: EthFlowOrderExistsCallback +): Promise<{ txHash: string; orderId: string }> { + const { appDataKeccak256, fullAppData } = appData + + const { orderId, transaction } = await getEthFlowTransaction( + signer, + appDataKeccak256, + _params, + networkCostsAmount, + checkEthFlowOrderExists + ) + + log('Uploading app-data') + await orderBookApi.uploadAppData(appDataKeccak256, fullAppData) + + log('Sending on-chain order transaction') + const txReceipt = await signer.sendTransaction(transaction) + + log(`On-chain order transaction sent, txHash: ${txReceipt.hash}, order: ${orderId}`) + return { txHash: txReceipt.hash, orderId } +} diff --git a/external/cow-sdk/src/trading/postSwapOrder.ts b/external/cow-sdk/src/trading/postSwapOrder.ts new file mode 100644 index 000000000..889020544 --- /dev/null +++ b/external/cow-sdk/src/trading/postSwapOrder.ts @@ -0,0 +1,23 @@ +import { SwapAdvancedSettings, SwapParameters } from './types' + +import { postCoWProtocolTrade } from './postCoWProtocolTrade' +import { getQuoteWithSigner, QuoteResultsWithSigner } from './getQuote' +import { swapParamsToLimitOrderParams } from './utils' + +export async function postSwapOrder(params: SwapParameters, advancedSettings?: SwapAdvancedSettings) { + return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings)) +} + +export async function postSwapOrderFromQuote({ + orderBookApi, + result: { signer, appDataInfo, quoteResponse, tradeParameters, amountsAndCosts }, +}: QuoteResultsWithSigner): Promise { + return postCoWProtocolTrade( + orderBookApi, + signer, + appDataInfo, + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + swapParamsToLimitOrderParams(tradeParameters, quoteResponse.id!, amountsAndCosts), + quoteResponse.quote.feeAmount + ) +} diff --git a/external/cow-sdk/src/trading/tradingSdk.ts b/external/cow-sdk/src/trading/tradingSdk.ts new file mode 100644 index 000000000..735b18b11 --- /dev/null +++ b/external/cow-sdk/src/trading/tradingSdk.ts @@ -0,0 +1,62 @@ +import { + LimitOrderAdvancedSettings, + LimitTradeParameters, + QuoteAndPost, + SwapAdvancedSettings, + TradeParameters, + TraderParameters, +} from './types' +import { postSwapOrder, postSwapOrderFromQuote } from './postSwapOrder' +import { postLimitOrder } from './postLimitOrder' +import { getQuoteWithSigner } from './getQuote' +import { postSellNativeCurrencyOrder } from './postSellNativeCurrencyOrder' +import { getSigner, swapParamsToLimitOrderParams } from './utils' +import { getPreSignTransaction } from './getPreSignTransaction' + +export class TradingSdk { + constructor(public readonly traderParams: TraderParameters) {} + + async getQuote(params: TradeParameters, advancedSettings?: SwapAdvancedSettings): Promise { + const quoteResults = await getQuoteWithSigner(this.mergeParams(params), advancedSettings) + + return { + quoteResults: quoteResults.result, + postSwapOrderFromQuote: () => postSwapOrderFromQuote(quoteResults), + } + } + + async postSwapOrder(params: TradeParameters, advancedSettings?: SwapAdvancedSettings): Promise { + return postSwapOrder(this.mergeParams(params), advancedSettings) + } + + async postLimitOrder(params: LimitTradeParameters, advancedSettings?: LimitOrderAdvancedSettings): Promise { + return postLimitOrder(this.mergeParams(params), advancedSettings) + } + + async postSellNativeCurrencyOrder( + params: TradeParameters, + advancedSettings?: SwapAdvancedSettings + ): Promise> { + const quoteResults = await getQuoteWithSigner(this.mergeParams(params), advancedSettings) + + const { tradeParameters, quoteResponse, amountsAndCosts } = quoteResults.result + return postSellNativeCurrencyOrder( + quoteResults.orderBookApi, + quoteResults.result.signer, + quoteResults.result.appDataInfo, + // Quote response response always has an id + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + swapParamsToLimitOrderParams(tradeParameters, quoteResponse.id!, amountsAndCosts) + ) + } + + async getPreSignTransaction(params: { orderId: string; account: string }): ReturnType { + const signer = getSigner(this.traderParams.signer) + + return getPreSignTransaction(signer, this.traderParams.chainId, params.account, params.orderId) + } + + private mergeParams(params: T): T & TraderParameters { + return { ...params, ...this.traderParams } + } +} diff --git a/external/cow-sdk/src/trading/types.ts b/external/cow-sdk/src/trading/types.ts new file mode 100644 index 000000000..bd1821f2f --- /dev/null +++ b/external/cow-sdk/src/trading/types.ts @@ -0,0 +1,165 @@ +import type { AppDataParams, latest, LatestAppDataDocVersion } from '@cowprotocol/app-data' +import { + AppData, + AppDataHash, + OrderKind, + OrderParameters, + OrderQuoteRequest, + OrderQuoteResponse, + QuoteAmountsAndCosts, + TokenAmount, +} from '../order-book' +import type { Signer } from '@ethersproject/abstract-signer' +import type { CowEnv, SupportedChainId } from '../common' +import type { ExternalProvider } from '@ethersproject/providers' +import type { UnsignedOrder } from '../order-signing' + +export type PrivateKey = string // 64 characters +export type AccountAddress = `0x${string}` // 42 characters + +export const ORDER_PRIMARY_TYPE = 'Order' as const + +/** + * EIP-712 typed data domain. + */ +interface TypedDataDomain { + name: string + version: string + chainId: number + verifyingContract: string +} + +/** + * EIP-712 typed data field. + */ +interface TypedDataField { + name: string + type: string +} + +/** + * EIP-712 typed data for an order. + */ +export interface OrderTypedData { + domain: TypedDataDomain + primaryType: typeof ORDER_PRIMARY_TYPE + types: Record + message: UnsignedOrder +} + +/** + * Minimal set of parameters to create a trade. + */ +export interface TradeBaseParameters { + kind: OrderKind + sellToken: OrderParameters['sellToken'] + sellTokenDecimals: number + buyToken: OrderParameters['buyToken'] + buyTokenDecimals: number + amount: TokenAmount +} + +/** + * Optional parameters to create a trade. + */ +export interface TradeOptionalParameters { + env?: CowEnv + partiallyFillable?: OrderParameters['partiallyFillable'] + slippageBps?: latest.SlippageBips + receiver?: OrderParameters['receiver'] + validFor?: OrderParameters['validTo'] + partnerFee?: latest.PartnerFee +} + +/** + * Information about the trader. + */ +export interface TraderParameters { + chainId: SupportedChainId + appCode: latest.AppCode + signer: Signer | ExternalProvider | PrivateKey +} + +export type QuoterParameters = Omit & { account: AccountAddress } + +/** + * Trade type, assets, amounts, and optional parameters. + */ +export interface TradeParameters extends TradeBaseParameters, TradeOptionalParameters {} + +export interface SwapParameters extends TradeParameters, TraderParameters {} + +export interface LimitTradeParameters extends Omit { + sellAmount: OrderParameters['sellAmount'] + buyAmount: OrderParameters['buyAmount'] + /** + * Id of the quote to be used for the limit order. + */ + quoteId?: number + validTo?: OrderParameters['validTo'] +} + +export interface LimitTradeParametersFromQuote extends LimitTradeParameters { + quoteId: number +} + +export interface LimitOrderParameters extends TraderParameters, LimitTradeParameters {} + +export interface SwapAdvancedSettings { + quoteRequest?: Partial> + appData?: AppDataParams +} + +export interface LimitOrderAdvancedSettings { + appData?: AppDataParams +} + +/** + * Exhaustive set of data which includes information about trade, quote, order, "app-data", and more. + * This data is used to create a trade, sign an order, and post it to the order book. + */ +export interface QuoteResults { + tradeParameters: TradeParameters + amountsAndCosts: QuoteAmountsAndCosts + orderToSign: UnsignedOrder + quoteResponse: OrderQuoteResponse + appDataInfo: AppDataInfo + orderTypedData: OrderTypedData +} + +export interface QuoteResultsSerialized extends Omit { + amountsAndCosts: QuoteAmountsAndCosts +} + +export interface QuoteAndPost { + quoteResults: QuoteResults + + postSwapOrderFromQuote(): Promise +} + +export type AppDataRootSchema = latest.AppDataRootSchema + +export interface BuildAppDataParams { + appCode: latest.AppCode + slippageBps: latest.SlippageBips + orderClass: latest.OrderClass['orderClass'] +} + +/** + * https://github.com/cowprotocol/app-data + */ +export interface AppDataInfo { + doc: LatestAppDataDocVersion + fullAppData: AppData + appDataKeccak256: AppDataHash +} + +/** + * A standard Ethereum transaction object + */ +export interface TransactionParams { + data: string + gas: string + to: string + value: string +} diff --git a/external/cow-sdk/src/trading/utils.ts b/external/cow-sdk/src/trading/utils.ts new file mode 100644 index 000000000..4e136d0e3 --- /dev/null +++ b/external/cow-sdk/src/trading/utils.ts @@ -0,0 +1,78 @@ +import { LimitTradeParametersFromQuote, PrivateKey, TradeParameters } from './types' +import { QuoteAmountsAndCosts } from '../order-book' +import { ETH_ADDRESS } from '../common' +import { ethers, Signer } from 'ethers' +import { type ExternalProvider, Web3Provider } from '@ethersproject/providers' + +export function swapParamsToLimitOrderParams( + params: TradeParameters, + quoteId: number, + amounts: QuoteAmountsAndCosts +): LimitTradeParametersFromQuote { + return { + ...params, + sellAmount: amounts.afterSlippage.sellAmount.toString(), + buyAmount: amounts.afterSlippage.buyAmount.toString(), + quoteId, + } +} + +export function getIsEthFlowOrder(params: { sellToken: string }): boolean { + return params.sellToken.toLowerCase() === ETH_ADDRESS.toLowerCase() +} + +export function getSigner(signer: Signer | ExternalProvider | PrivateKey): Signer { + if (typeof signer === 'string') return new ethers.Wallet(signer) + + if ('request' in signer || 'send' in signer) { + const provider = new Web3Provider(signer) + + return provider.getSigner() + } + + return signer as Signer +} + +/** + * Returns the gas value plus a margin for unexpected or variable gas costs (20%) + * @param value the gas value to pad + */ +export function calculateGasMargin(value: bigint): bigint { + return value + (value * BigInt(20)) / BigInt(100) +} + +export function mapQuoteAmountsAndCosts( + value: QuoteAmountsAndCosts, + mapper: (value: T) => R +): QuoteAmountsAndCosts { + const { + costs: { networkFee, partnerFee }, + } = value + + function serializeAmounts(value: { sellAmount: T; buyAmount: T }): { sellAmount: R; buyAmount: R } { + return { + sellAmount: mapper(value.sellAmount), + buyAmount: mapper(value.buyAmount), + } + } + + return { + ...value, + costs: { + ...value.costs, + networkFee: { + ...networkFee, + amountInSellCurrency: mapper(networkFee.amountInSellCurrency), + amountInBuyCurrency: mapper(networkFee.amountInBuyCurrency), + }, + partnerFee: { + ...partnerFee, + amount: mapper(partnerFee.amount), + }, + }, + beforeNetworkCosts: serializeAmounts(value.beforeNetworkCosts), + afterNetworkCosts: serializeAmounts(value.afterNetworkCosts), + afterPartnerFees: serializeAmounts(value.afterPartnerFees), + afterSlippage: serializeAmounts(value.afterSlippage), + } +} diff --git a/external/cow-sdk/src/utils.ts b/external/cow-sdk/src/utils.ts new file mode 100644 index 000000000..ac4938dd1 --- /dev/null +++ b/external/cow-sdk/src/utils.ts @@ -0,0 +1,10 @@ +import type { Order } from '@cowprotocol/contracts' +import type { SupportedChainId } from './common' +import { OrderSigningUtils } from './order-signing' + +export async function computeOrderUid(chainId: SupportedChainId, owner: string, order: Order): Promise { + const { computeOrderUid: _computeOrderUid } = await import('@cowprotocol/contracts') + const domain = await OrderSigningUtils.getDomain(chainId) + + return _computeOrderUid(domain, order, owner) +} diff --git a/external/cow-sdk/tsconfig.json b/external/cow-sdk/tsconfig.json new file mode 100644 index 000000000..1c086c593 --- /dev/null +++ b/external/cow-sdk/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compileOnSave": false, + "include": ["src/**/*"], + "exclude": ["src/**/*.test.ts", "src/**/*.spec.ts", "test/*", "src/**/__mock__/*"], + "compilerOptions": { + "baseUrl": "./", + "module": "commonjs", + "target": "es2015", + "outDir": "./dist", + "sourceMap": true, + "declaration": true, + "moduleResolution": "node", + "esModuleInterop": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "importHelpers": true, + "strict": true, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strictNullChecks": true, + "typeRoots": ["node_modules/@types"], + "lib": ["es2018", "dom"] + } +} diff --git a/external/cow-sdk/workflows/publish.sh b/external/cow-sdk/workflows/publish.sh new file mode 100755 index 000000000..d16fea6c9 --- /dev/null +++ b/external/cow-sdk/workflows/publish.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -o nounset +set -o pipefail +set -o errexit + +fail_if_unset () { + local var_name="$1" + if [[ -z "${!var_name:-""}" ]]; then + printf '%s not set\n' "$var_name" >&2 + exit 1 + fi +} + +package_exists () { + npm view --json "$1" &>/dev/null; +} + +fail_if_unset NODE_AUTH_TOKEN + +git_username="GitHub Actions" +git_useremail="GitHub-Actions@cow.fi" + +package_name="$(jq --raw-output .name ./package.json)" +version="$(jq --raw-output .version ./package.json)" + +if package_exists "$package_name" && grep --silent --line-regexp --fixed-strings -- "$version" \ + <(npm view --json "$package_name" | jq '.versions[] | .' --raw-output); then + echo "Version $version already published" + exit 1 +fi + +version_tag="v$version" +if ! git fetch --end-of-options origin "refs/tags/$version_tag" 2>/dev/null; then + echo "Tag $version_tag is not created. Create the Release first." + exit 1 +fi + +latest_tag="$(git describe --tags --abbrev=0)" +if ! [ "$version_tag" = "$latest_tag" ]; then + echo "Latest tag $latest_tag version doesn't match package.json version $version" + exit 1 +fi + +yarn publish --access public + +echo "Package $package_name version $version successfully published." \ No newline at end of file diff --git a/external/cow-sdk/yarn.lock b/external/cow-sdk/yarn.lock new file mode 100644 index 000000000..36fef308f --- /dev/null +++ b/external/cow-sdk/yarn.lock @@ -0,0 +1,11034 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@apidevtools/json-schema-ref-parser@9.0.9": + version "9.0.9" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#d720f9256e3609621280584f2b47ae165359268b" + integrity sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w== + dependencies: + "@jsdevtools/ono" "^7.1.3" + "@types/json-schema" "^7.0.6" + call-me-maybe "^1.0.1" + js-yaml "^4.1.0" + +"@ardatan/relay-compiler@12.0.0": + version "12.0.0" + resolved "https://registry.yarnpkg.com/@ardatan/relay-compiler/-/relay-compiler-12.0.0.tgz#2e4cca43088e807adc63450e8cab037020e91106" + integrity sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q== + dependencies: + "@babel/core" "^7.14.0" + "@babel/generator" "^7.14.0" + "@babel/parser" "^7.14.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.4.0" + chalk "^4.0.0" + fb-watchman "^2.0.0" + fbjs "^3.0.0" + glob "^7.1.1" + immutable "~3.7.6" + invariant "^2.2.4" + nullthrows "^1.1.1" + relay-runtime "12.0.0" + signedsource "^1.0.0" + yargs "^15.3.1" + +"@ardatan/sync-fetch@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz#3385d3feedceb60a896518a1db857ec1e945348f" + integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== + dependencies: + node-fetch "^2.6.1" + +"@assemblyscript/loader@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" + integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/code-frame@^7.22.10", "@babel/code-frame@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.10.tgz#1c20e612b768fefa75f6e90d6ecb86329247f0a3" + integrity sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA== + dependencies: + "@babel/highlight" "^7.22.10" + chalk "^2.4.2" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": + version "7.20.14" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" + integrity sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw== + +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + +"@babel/compat-data@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" + integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== + +"@babel/core@^7.11.6": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/core@^7.12.10": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" + integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.0" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.21.0" + "@babel/helpers" "^7.21.0" + "@babel/parser" "^7.21.0" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.0" + +"@babel/core@^7.12.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.14.0": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.10.tgz#aad442c7bcd1582252cb4576747ace35bc122f35" + integrity sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.10" + "@babel/generator" "^7.22.10" + "@babel/helper-compilation-targets" "^7.22.10" + "@babel/helper-module-transforms" "^7.22.9" + "@babel/helpers" "^7.22.10" + "@babel/parser" "^7.22.10" + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.10" + "@babel/types" "^7.22.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.2" + semver "^6.3.1" + +"@babel/generator@^7.14.0", "@babel/generator@^7.18.13", "@babel/generator@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.10.tgz#c92254361f398e160645ac58831069707382b722" + integrity sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A== + dependencies: + "@babel/types" "^7.22.10" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/generator@^7.20.7": + version "7.20.14" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" + integrity sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg== + dependencies: + "@babel/types" "^7.20.7" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/generator@^7.21.0", "@babel/generator@^7.21.1": + version "7.21.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.1.tgz#951cc626057bc0af2c35cd23e9c64d384dea83dd" + integrity sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA== + dependencies: + "@babel/types" "^7.21.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-compilation-targets@^7.22.10", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz#01d648bbc25dd88f513d862ee0df27b7d4e67024" + integrity sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.5" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" + integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-member-expression-to-functions" "^7.21.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" + integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" + integrity sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/helper-split-export-declaration" "^7.18.6" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" + integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.2.1" + +"@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + +"@babel/helper-environment-visitor@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" + integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + +"@babel/helper-function-name@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/types" "^7.21.0" + +"@babel/helper-function-name@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" + integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== + dependencies: + "@babel/template" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + +"@babel/helper-member-expression-to-functions@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" + integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== + dependencies: + "@babel/types" "^7.20.7" + +"@babel/helper-member-expression-to-functions@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" + integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== + dependencies: + "@babel/types" "^7.21.0" + +"@babel/helper-member-expression-to-functions@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" + integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" + integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" + +"@babel/helper-module-transforms@^7.21.0": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" + integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.2" + "@babel/types" "^7.21.2" + +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" + integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.5" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + +"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.3": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-remap-async-to-generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helper-replace-supers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" + integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.20.7" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/helper-replace-supers@^7.22.5": + version "7.22.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" + integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/helper-validator-identifier@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" + integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-validator-option@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" + integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== + +"@babel/helper-wrap-function@^7.18.9": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== + dependencies: + "@babel/helper-function-name" "^7.19.0" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.20.5" + "@babel/types" "^7.20.5" + +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + +"@babel/helpers@^7.20.7": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" + integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.13" + "@babel/types" "^7.20.7" + +"@babel/helpers@^7.21.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" + integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.21.0" + "@babel/types" "^7.21.0" + +"@babel/helpers@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.10.tgz#ae6005c539dfbcb5cd71fb51bfc8a52ba63bc37a" + integrity sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw== + dependencies: + "@babel/template" "^7.22.5" + "@babel/traverse" "^7.22.10" + "@babel/types" "^7.22.10" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/highlight@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.10.tgz#02a3f6d8c1cb4521b2fd0ab0da8f4739936137d7" + integrity sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ== + dependencies: + "@babel/helper-validator-identifier" "^7.22.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + +"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.22.10", "@babel/parser@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.10.tgz#e37634f9a12a1716136c44624ef54283cabd3f55" + integrity sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ== + +"@babel/parser@^7.20.13", "@babel/parser@^7.20.7": + version "7.20.15" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" + integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== + +"@babel/parser@^7.21.0", "@babel/parser@^7.21.2", "@babel/parser@^7.3.3": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" + integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.7" + +"@babel/plugin-proposal-async-generator-functions@^7.20.1": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" + integrity sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" + integrity sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" + integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-flow@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" + integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-import-assertions@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.19.0" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0" + integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" + integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz#88a1dccc3383899eb5e660534a76a22ecee64faa" + integrity sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-block-scoping@^7.20.2": + version "7.20.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz#3e1b2aa9cbbe1eb8d644c823141a9c5c2a22392d" + integrity sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.22.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" + integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + globals "^11.1.0" + +"@babel/plugin-transform-classes@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" + integrity sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-replace-supers" "^7.20.7" + "@babel/helper-split-export-declaration" "^7.18.6" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" + integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/template" "^7.20.7" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz#38e2273814a58c810b6c34ea293be4973c4eb5e2" + integrity sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-destructuring@^7.20.2": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" + integrity sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" + integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-flow" "^7.22.5" + +"@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" + integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-flow" "^7.18.6" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" + integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg== + dependencies: + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== + dependencies: + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-modules-amd@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" + integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== + dependencies: + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-commonjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== + dependencies: + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" + +"@babel/plugin-transform-modules-systemjs@^7.19.6": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== + dependencies: + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-identifier" "^7.19.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.20.5" + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + +"@babel/plugin-transform-parameters@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" + integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" + integrity sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-react-jsx-development@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.18.6" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.5.tgz#932c291eb6dd1153359e2a90cb5e557dcf068416" + integrity sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" + integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + "@babel/types" "^7.21.0" + +"@babel/plugin-transform-react-pure-annotations@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.18.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" + integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + regenerator-transform "^0.15.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-spread@^7.19.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-typescript@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.8.tgz#303feb7a920e650f2213ef37b36bbf327e6fa5a0" + integrity sha512-p2xM8HI83UObjsZGofMV/EdYjamsDm6MoN3hXPYIT0+gxIoopE+B7rPYKAxfrz9K9PK7JafTTjqYC6qipLExYA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-typescript" "^7.18.6" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" + integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" + integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg== + dependencies: + "@babel/compat-data" "^7.20.1" + "@babel/helper-compilation-targets" "^7.20.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.20.1" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.20.2" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.20.2" + "@babel/plugin-transform-classes" "^7.20.2" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.20.2" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.19.6" + "@babel/plugin-transform-modules-commonjs" "^7.19.6" + "@babel/plugin-transform-modules-systemjs" "^7.19.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.20.1" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.19.0" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.20.2" + babel-plugin-polyfill-corejs2 "^0.3.3" + babel-plugin-polyfill-corejs3 "^0.6.0" + babel-plugin-polyfill-regenerator "^0.4.1" + core-js-compat "^3.25.1" + semver "^6.3.0" + +"@babel/preset-flow@^7.12.1": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" + integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-flow-strip-types" "^7.18.6" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.10": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-react-display-name" "^7.18.6" + "@babel/plugin-transform-react-jsx" "^7.18.6" + "@babel/plugin-transform-react-jsx-development" "^7.18.6" + "@babel/plugin-transform-react-pure-annotations" "^7.18.6" + +"@babel/preset-typescript@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" + integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-transform-typescript" "^7.18.6" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.0.0": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" + integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.12.5": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" + integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/runtime@^7.8.4": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" + integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== + dependencies: + regenerator-runtime "^0.13.11" + +"@babel/template@^7.18.10", "@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + +"@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/template@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" + integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== + dependencies: + "@babel/code-frame" "^7.22.5" + "@babel/parser" "^7.22.5" + "@babel/types" "^7.22.5" + +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.10.tgz#20252acb240e746d27c2e82b4484f199cf8141aa" + integrity sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig== + dependencies: + "@babel/code-frame" "^7.22.10" + "@babel/generator" "^7.22.10" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.22.10" + "@babel/types" "^7.22.10" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7": + version "7.20.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" + integrity sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.20.7" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.20.13" + "@babel/types" "^7.20.7" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.2.tgz#ac7e1f27658750892e815e60ae90f382a46d8e75" + integrity sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.21.1" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.21.0" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.21.2" + "@babel/types" "^7.21.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@babel/types@^7.16.8", "@babel/types@^7.18.13", "@babel/types@^7.22.10", "@babel/types@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.10.tgz#4a9e76446048f2c66982d1a989dd12b8a2d2dc03" + integrity sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.5" + to-fast-properties "^2.0.0" + +"@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.4.4": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@babel/types@^7.21.0", "@babel/types@^7.21.2": + version "7.21.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.2.tgz#92246f6e00f91755893c2876ad653db70c8310d1" + integrity sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@cowprotocol/app-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/app-data/-/app-data-2.4.0.tgz#326e20065161e06308cf0ff429fe9dd2908c1c30" + integrity sha512-aG3CicUdR7jpY5/linxXmpL4axmiUvEwiHlOM0qKO/QdbNSntKNXjSu3r4QtHZ7BUiF1VUkcDVvvFW4D2MA0Rw== + dependencies: + ajv "^8.11.0" + cross-fetch "^3.1.5" + ipfs-only-hash "^4.0.0" + json-stringify-deterministic "^1.0.8" + multiformats "^9.6.4" + +"@cowprotocol/contracts@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@cowprotocol/contracts/-/contracts-1.6.0.tgz#d0fc83ed8c624b968d1a68bb5c74712c11ec81e0" + integrity sha512-+UKhYRzkvnqqviBru5D3btTLYc743n0O5YTG+wpYwGl4fb7VNKBkFHe28C5Mf1DF/kOfmqfu+0IAvX9Vuq5Dqw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@eslint/eslintrc@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" + integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.4.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@graphql-codegen/cli@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-3.0.0.tgz#eb367adfe51349e4822518183fc7ea7c06aea11b" + integrity sha512-16nuFabHCfPQ/d+v52OvR1ueL8eiJvS/nRuvuEV8d9T1fkborHKRw4lhyKVebu9izFBs6G0CvVCLhgVzQwHSLw== + dependencies: + "@babel/generator" "^7.18.13" + "@babel/template" "^7.18.10" + "@babel/types" "^7.18.13" + "@graphql-codegen/core" "^3.0.0" + "@graphql-codegen/plugin-helpers" "^4.0.0" + "@graphql-tools/apollo-engine-loader" "^7.3.6" + "@graphql-tools/code-file-loader" "^7.3.17" + "@graphql-tools/git-loader" "^7.2.13" + "@graphql-tools/github-loader" "^7.3.20" + "@graphql-tools/graphql-file-loader" "^7.5.0" + "@graphql-tools/json-file-loader" "^7.4.1" + "@graphql-tools/load" "^7.8.0" + "@graphql-tools/prisma-loader" "^7.2.49" + "@graphql-tools/url-loader" "^7.13.2" + "@graphql-tools/utils" "^9.0.0" + "@whatwg-node/fetch" "^0.6.0" + chalk "^4.1.0" + chokidar "^3.5.2" + cosmiconfig "^7.0.0" + cosmiconfig-typescript-loader "^4.3.0" + debounce "^1.2.0" + detect-indent "^6.0.0" + graphql-config "^4.4.0" + inquirer "^8.0.0" + is-glob "^4.0.1" + json-to-pretty-yaml "^1.2.2" + listr2 "^4.0.5" + log-symbols "^4.0.0" + shell-quote "^1.7.3" + string-env-interpolation "^1.0.1" + ts-log "^2.2.3" + ts-node "^10.9.1" + tslib "^2.4.0" + yaml "^1.10.0" + yargs "^17.0.0" + +"@graphql-codegen/core@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-3.1.0.tgz#ad859d52d509a4eb2ebe5aabba6543a628fb181b" + integrity sha512-DH1/yaR7oJE6/B+c6ZF2Tbdh7LixF1K8L+8BoSubjNyQ8pNwR4a70mvc1sv6H7qgp6y1bPQ9tKE+aazRRshysw== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.1.0" + "@graphql-tools/schema" "^9.0.0" + "@graphql-tools/utils" "^9.1.1" + tslib "~2.5.0" + +"@graphql-codegen/plugin-helpers@^4.0.0", "@graphql-codegen/plugin-helpers@^4.1.0", "@graphql-codegen/plugin-helpers@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-4.2.0.tgz#8324914d0f99162a223cfa01796cdd6be972d2ae" + integrity sha512-THFTCfg+46PXlXobYJ/OoCX6pzjI+9woQqCjdyKtgoI0tn3Xq2HUUCiidndxUpEYVrXb5pRiRXb7b/ZbMQqD0A== + dependencies: + "@graphql-tools/utils" "^9.0.0" + change-case-all "1.0.15" + common-tags "1.8.2" + import-from "4.0.0" + lodash "~4.17.0" + tslib "~2.5.0" + +"@graphql-codegen/schema-ast@^3.0.0", "@graphql-codegen/schema-ast@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-3.0.1.tgz#37b458bb57b95715a9eb4259341c856dae2a461d" + integrity sha512-rTKTi4XiW4QFZnrEqetpiYEWVsOFNoiR/v3rY9mFSttXFbIwNXPme32EspTiGWmEEdHY8UuTDtZN3vEcs/31zw== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.1.0" + "@graphql-tools/utils" "^9.0.0" + tslib "~2.5.0" + +"@graphql-codegen/typescript-operations@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-3.0.4.tgz#60163c07f0ef73655779ece450d02c1172c44027" + integrity sha512-6yE2OL2+WJ1vd5MwFEGXpaxsFGzjAGUytPVHDML3Bi3TwP1F3lnQlIko4untwvHW0JhZEGQ7Ck30H9HjcxpdKA== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.2.0" + "@graphql-codegen/typescript" "^3.0.4" + "@graphql-codegen/visitor-plugin-common" "3.1.1" + auto-bind "~4.0.0" + tslib "~2.5.0" + +"@graphql-codegen/typescript@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-3.0.0.tgz#473dde1646540039bca5db4b6daf174d13af0ce3" + integrity sha512-FQWyuIUy1y+fxb9+EZfvdBHBQpYExlIBHV5sg2WGNCsyVyCqBTl0mO8icyOtsQPVg6YFMFe8JJO69vQbwHma5w== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.0.0" + "@graphql-codegen/schema-ast" "^3.0.0" + "@graphql-codegen/visitor-plugin-common" "3.0.0" + auto-bind "~4.0.0" + tslib "~2.4.0" + +"@graphql-codegen/typescript@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-3.0.4.tgz#e12dc106a2722ebc7d18556980ccf47fa9d0805f" + integrity sha512-x4O47447DZrWNtE/l5CU9QzzW4m1RbmCEdijlA3s2flG/y1Ckqdemob4CWfilSm5/tZ3w1junVDY616RDTSvZw== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.2.0" + "@graphql-codegen/schema-ast" "^3.0.1" + "@graphql-codegen/visitor-plugin-common" "3.1.1" + auto-bind "~4.0.0" + tslib "~2.5.0" + +"@graphql-codegen/visitor-plugin-common@3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-3.0.0.tgz#527185eb3b1b06739702084bc6263713e167a166" + integrity sha512-ZoNlCmmkGClB137SpJT9og/nkihLN7Z4Ynl9Ir3OlbDuI20dbpyXsclpr9QGLcxEcfQeVfhGw9CooW7wZJJ8LA== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.0.0" + "@graphql-tools/optimize" "^1.3.0" + "@graphql-tools/relay-operation-optimizer" "^6.5.0" + "@graphql-tools/utils" "^9.0.0" + auto-bind "~4.0.0" + change-case-all "1.0.15" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.4.0" + +"@graphql-codegen/visitor-plugin-common@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-3.1.1.tgz#50c2aa3c537a805ce68d2f115d0a9811b151428c" + integrity sha512-uAfp+zu/009R3HUAuTK2AamR1bxIltM6rrYYI6EXSmkM3rFtFsLTuJhjUDj98HcUCszJZrADppz8KKLGRUVlNg== + dependencies: + "@graphql-codegen/plugin-helpers" "^4.2.0" + "@graphql-tools/optimize" "^1.3.0" + "@graphql-tools/relay-operation-optimizer" "^6.5.0" + "@graphql-tools/utils" "^9.0.0" + auto-bind "~4.0.0" + change-case-all "1.0.15" + dependency-graph "^0.11.0" + graphql-tag "^2.11.0" + parse-filepath "^1.0.2" + tslib "~2.5.0" + +"@graphql-tools/apollo-engine-loader@^7.3.6": + version "7.3.26" + resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-7.3.26.tgz#91e54460d5579933e42a2010b8688c3459c245d8" + integrity sha512-h1vfhdJFjnCYn9b5EY1Z91JTF0KB3hHVJNQIsiUV2mpQXZdeOXQoaWeYEKaiI5R6kwBw5PP9B0fv3jfUIG8LyQ== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/utils" "^9.2.1" + "@whatwg-node/fetch" "^0.8.0" + tslib "^2.4.0" + +"@graphql-tools/batch-execute@^8.5.22": + version "8.5.22" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-8.5.22.tgz#a742aa9d138fe794e786d8fb6429665dc7df5455" + integrity sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A== + dependencies: + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/code-file-loader@^7.3.17": + version "7.3.23" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-7.3.23.tgz#33793f9a1f8e74981f8ae6ec4ab7061f9713db15" + integrity sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/delegate@^9.0.31": + version "9.0.35" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-9.0.35.tgz#94683f4bcec63520b4a6c8b2abf2e2e9324ea4f1" + integrity sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA== + dependencies: + "@graphql-tools/batch-execute" "^8.5.22" + "@graphql-tools/executor" "^0.0.20" + "@graphql-tools/schema" "^9.0.19" + "@graphql-tools/utils" "^9.2.1" + dataloader "^2.2.2" + tslib "^2.5.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-graphql-ws@^0.0.14": + version "0.0.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-0.0.14.tgz#e0f53fc4cfc8a06cc461b2bc1edb4bb9a8e837ed" + integrity sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "3.0.4" + "@types/ws" "^8.0.0" + graphql-ws "5.12.1" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" + +"@graphql-tools/executor-http@^0.1.7", "@graphql-tools/executor-http@^0.1.9": + version "0.1.10" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-0.1.10.tgz#faf48e18e62a925796c9653c2f50cf2095bc8e6f" + integrity sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@repeaterjs/repeater" "^3.0.4" + "@whatwg-node/fetch" "^0.8.1" + dset "^3.1.2" + extract-files "^11.0.0" + meros "^1.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/executor-legacy-ws@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-0.0.11.tgz#a1e12be8279e92a363a23d4105461a34cd9e389e" + integrity sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@types/ws" "^8.0.0" + isomorphic-ws "5.0.0" + tslib "^2.4.0" + ws "8.13.0" + +"@graphql-tools/executor@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-0.0.20.tgz#d51d159696e839522dd49d936636af251670e425" + integrity sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA== + dependencies: + "@graphql-tools/utils" "^9.2.1" + "@graphql-typed-document-node/core" "3.2.0" + "@repeaterjs/repeater" "^3.0.4" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/git-loader@^7.2.13": + version "7.3.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-7.3.0.tgz#ca10c17d4f58c4592432d9d2ac1c2b393aebad16" + integrity sha512-gcGAK+u16eHkwsMYqqghZbmDquh8QaO24Scsxq+cVR+vx1ekRlsEiXvu+yXVDbZdcJ6PBIbeLcQbEu+xhDLmvQ== + dependencies: + "@graphql-tools/graphql-tag-pluck" "7.5.2" + "@graphql-tools/utils" "^9.2.1" + is-glob "4.0.3" + micromatch "^4.0.4" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/github-loader@^7.3.20": + version "7.3.28" + resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-7.3.28.tgz#a7166b136e8442bd8b3ab943ad3b66c84bcabfcf" + integrity sha512-OK92Lf9pmxPQvjUNv05b3tnVhw0JRfPqOf15jZjyQ8BfdEUrJoP32b4dRQQem/wyRL24KY4wOfArJNqzpsbwCA== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/executor-http" "^0.1.9" + "@graphql-tools/graphql-tag-pluck" "^7.4.6" + "@graphql-tools/utils" "^9.2.1" + "@whatwg-node/fetch" "^0.8.0" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/graphql-file-loader@^7.3.7", "@graphql-tools/graphql-file-loader@^7.5.0": + version "7.5.17" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-7.5.17.tgz#7c281617ea3ab4db4d42a2bdb49850f2b937f0f9" + integrity sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw== + dependencies: + "@graphql-tools/import" "6.7.18" + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/graphql-tag-pluck@7.5.2", "@graphql-tools/graphql-tag-pluck@^7.4.6": + version "7.5.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-7.5.2.tgz#502f1e066e19d832ebdeba5f571d7636dc27572d" + integrity sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA== + dependencies: + "@babel/parser" "^7.16.8" + "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/import@6.7.18": + version "6.7.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.7.18.tgz#ad092d8a4546bb6ffc3e871e499eec7ac368680b" + integrity sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ== + dependencies: + "@graphql-tools/utils" "^9.2.1" + resolve-from "5.0.0" + tslib "^2.4.0" + +"@graphql-tools/json-file-loader@^7.3.7", "@graphql-tools/json-file-loader@^7.4.1": + version "7.4.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-7.4.18.tgz#d78ae40979bde51cfc59717757354afc9e35fba2" + integrity sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w== + dependencies: + "@graphql-tools/utils" "^9.2.1" + globby "^11.0.3" + tslib "^2.4.0" + unixify "^1.0.0" + +"@graphql-tools/load@^7.5.5", "@graphql-tools/load@^7.8.0": + version "7.8.14" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-7.8.14.tgz#f2356f9a5f658a42e33934ae036e4b2cadf2d1e9" + integrity sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg== + dependencies: + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + p-limit "3.1.0" + tslib "^2.4.0" + +"@graphql-tools/merge@^8.2.6", "@graphql-tools/merge@^8.4.1": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.4.2.tgz#95778bbe26b635e8d2f60ce9856b388f11fe8288" + integrity sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw== + dependencies: + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/optimize@^1.3.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-1.4.0.tgz#20d6a9efa185ef8fc4af4fd409963e0907c6e112" + integrity sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw== + dependencies: + tslib "^2.4.0" + +"@graphql-tools/prisma-loader@^7.2.49": + version "7.2.72" + resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-7.2.72.tgz#6304fc23600458396f3ede713d8e2371df7850e3" + integrity sha512-0a7uV7Fky6yDqd0tI9+XMuvgIo6GAqiVzzzFV4OSLry4AwiQlI3igYseBV7ZVOGhedOTqj/URxjpiv07hRcwag== + dependencies: + "@graphql-tools/url-loader" "^7.17.18" + "@graphql-tools/utils" "^9.2.1" + "@types/js-yaml" "^4.0.0" + "@types/json-stable-stringify" "^1.0.32" + "@whatwg-node/fetch" "^0.8.2" + chalk "^4.1.0" + debug "^4.3.1" + dotenv "^16.0.0" + graphql-request "^6.0.0" + http-proxy-agent "^6.0.0" + https-proxy-agent "^6.0.0" + jose "^4.11.4" + js-yaml "^4.0.0" + json-stable-stringify "^1.0.1" + lodash "^4.17.20" + scuid "^1.1.0" + tslib "^2.4.0" + yaml-ast-parser "^0.0.43" + +"@graphql-tools/relay-operation-optimizer@^6.5.0": + version "6.5.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.5.18.tgz#a1b74a8e0a5d0c795b8a4d19629b654cf66aa5ab" + integrity sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg== + dependencies: + "@ardatan/relay-compiler" "12.0.0" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + +"@graphql-tools/schema@^9.0.0", "@graphql-tools/schema@^9.0.18", "@graphql-tools/schema@^9.0.19": + version "9.0.19" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-9.0.19.tgz#c4ad373b5e1b8a0cf365163435b7d236ebdd06e7" + integrity sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w== + dependencies: + "@graphql-tools/merge" "^8.4.1" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-tools/url-loader@^7.13.2", "@graphql-tools/url-loader@^7.17.18", "@graphql-tools/url-loader@^7.9.7": + version "7.17.18" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-7.17.18.tgz#3e253594d23483e4c0dd3a4c3dd2ad5cd0141192" + integrity sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw== + dependencies: + "@ardatan/sync-fetch" "^0.0.1" + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/executor-graphql-ws" "^0.0.14" + "@graphql-tools/executor-http" "^0.1.7" + "@graphql-tools/executor-legacy-ws" "^0.0.11" + "@graphql-tools/utils" "^9.2.1" + "@graphql-tools/wrap" "^9.4.2" + "@types/ws" "^8.0.0" + "@whatwg-node/fetch" "^0.8.0" + isomorphic-ws "^5.0.0" + tslib "^2.4.0" + value-or-promise "^1.0.11" + ws "^8.12.0" + +"@graphql-tools/utils@^9.0.0", "@graphql-tools/utils@^9.1.1", "@graphql-tools/utils@^9.2.1": + version "9.2.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-9.2.1.tgz#1b3df0ef166cfa3eae706e3518b17d5922721c57" + integrity sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + tslib "^2.4.0" + +"@graphql-tools/wrap@^9.4.2": + version "9.4.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-9.4.2.tgz#30835587c4c73be1780908a7cb077d8013aa2703" + integrity sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA== + dependencies: + "@graphql-tools/delegate" "^9.0.31" + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + tslib "^2.4.0" + value-or-promise "^1.0.12" + +"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1", "@graphql-typed-document-node/core@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" + integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== + +"@humanwhocodes/config-array@^0.11.8": + version "0.11.8" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.4.tgz#a7e2d84516301f986bba0dd55af9d5fe37f46527" + integrity sha512-wNK6gC0Ha9QeEPSkeJedQuTQqxZYnDPuDcDhVuVatRvMkL4D0VTvFVZj+Yuh6caG2aOfzkUZ36KtCmLNtR02hw== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.6.3" + jest-util "^29.6.3" + slash "^3.0.0" + +"@jest/core@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.4.tgz#265ebee05ec1ff3567757e7a327155c8d6bdb126" + integrity sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg== + dependencies: + "@jest/console" "^29.6.4" + "@jest/reporters" "^29.6.4" + "@jest/test-result" "^29.6.4" + "@jest/transform" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.6.3" + jest-config "^29.6.4" + jest-haste-map "^29.6.4" + jest-message-util "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.6.4" + jest-resolve-dependencies "^29.6.4" + jest-runner "^29.6.4" + jest-runtime "^29.6.4" + jest-snapshot "^29.6.4" + jest-util "^29.6.3" + jest-validate "^29.6.3" + jest-watcher "^29.6.4" + micromatch "^4.0.4" + pretty-format "^29.6.3" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.4.tgz#78ec2c9f8c8829a37616934ff4fea0c028c79f4f" + integrity sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ== + dependencies: + "@jest/fake-timers" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.6.3" + +"@jest/expect-utils@^29.4.2": + version "29.4.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.4.2.tgz#cd0065dfdd8e8a182aa350cc121db97b5eed7b3f" + integrity sha512-Dd3ilDJpBnqa0GiPN7QrudVs0cczMMHtehSo2CSTjm3zdHx0RcpmhFNVEltuEFeqfLIyWKFI224FsMSQ/nsJQA== + dependencies: + jest-get-type "^29.4.2" + +"@jest/expect-utils@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.4.tgz#17c7dfe6cec106441f218b0aff4b295f98346679" + integrity sha512-FEhkJhqtvBwgSpiTrocquJCdXPsyvNKcl/n7A3u7X4pVoF4bswm11c9d4AV+kfq2Gpv/mM8x7E7DsRvH+djkrg== + dependencies: + jest-get-type "^29.6.3" + +"@jest/expect@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.4.tgz#1d6ae17dc68d906776198389427ab7ce6179dba6" + integrity sha512-Warhsa7d23+3X5bLbrbYvaehcgX5TLYhI03JKoedTiI8uJU4IhqYBWF7OSSgUyz4IgLpUYPkK0AehA5/fRclAA== + dependencies: + expect "^29.6.4" + jest-snapshot "^29.6.4" + +"@jest/fake-timers@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.4.tgz#45a27f093c43d5d989362a3e7a8c70c83188b4f6" + integrity sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.6.3" + jest-mock "^29.6.3" + jest-util "^29.6.3" + +"@jest/globals@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.4.tgz#4f04f58731b062b44ef23036b79bdb31f40c7f63" + integrity sha512-wVIn5bdtjlChhXAzVXavcY/3PEjf4VqM174BM3eGL5kMxLiZD5CLnbmkEyA1Dwh9q8XjP6E8RwjBsY/iCWrWsA== + dependencies: + "@jest/environment" "^29.6.4" + "@jest/expect" "^29.6.4" + "@jest/types" "^29.6.3" + jest-mock "^29.6.3" + +"@jest/reporters@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.4.tgz#9d6350c8a2761ece91f7946e97ab0dabc06deab7" + integrity sha512-sxUjWxm7QdchdrD3NfWKrL8FBsortZeibSJv4XLjESOOjSUOkjQcb0ZHJwfhEGIvBvTluTzfG2yZWZhkrXJu8g== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.6.4" + "@jest/test-result" "^29.6.4" + "@jest/transform" "^29.6.4" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^6.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.6.3" + jest-util "^29.6.3" + jest-worker "^29.6.4" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^29.4.2": + version "29.4.2" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.2.tgz#cf7cfe97c5649f518452b176c47ed07486270fc1" + integrity sha512-ZrGzGfh31NtdVH8tn0mgJw4khQuNHiKqdzJAFbCaERbyCP9tHlxWuL/mnMu8P7e/+k4puWjI1NOzi/sFsjce/g== + dependencies: + "@sinclair/typebox" "^0.25.16" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.4.tgz#adf5c79f6e1fb7405ad13d67d9e2b6ff54b54c6b" + integrity sha512-uQ1C0AUEN90/dsyEirgMLlouROgSY+Wc/JanVVk0OiUKa5UFh7sJpMEM3aoUBAz2BRNvUJ8j3d294WFuRxSyOQ== + dependencies: + "@jest/console" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.4.tgz#86aef66aaa22b181307ed06c26c82802fb836d7b" + integrity sha512-E84M6LbpcRq3fT4ckfKs9ryVanwkaIB0Ws9bw3/yP4seRLg/VaCZ/LgW0MCq5wwk4/iP/qnilD41aj2fsw2RMg== + dependencies: + "@jest/test-result" "^29.6.4" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.4" + slash "^3.0.0" + +"@jest/transform@^29.6.4": + version "29.6.4" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.4.tgz#a6bc799ef597c5d85b2e65a11fd96b6b239bab5a" + integrity sha512-8thgRSiXUqtr/pPGY/OsyHuMjGyhVnWrFAwoxmIemlBuiMyU1WFs0tXoNxzcr4A4uErs/ABre76SGmrr5ab/AA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.4" + jest-regex-util "^29.6.3" + jest-util "^29.6.3" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + +"@jest/types@^29.4.2": + version "29.4.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.2.tgz#8f724a414b1246b2bfd56ca5225d9e1f39540d82" + integrity sha512-CKlngyGP0fwlgC1BRUtPZSiWLBhyS9dKwKmyGxk8Z6M82LBEGB2aLQSg+U1MyLsU+M7UjnlLllBM2BLWKVm/Uw== + dependencies: + "@jest/schemas" "^29.4.2" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17": + version "0.3.17" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" + integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== + dependencies: + "@jridgewell/resolve-uri" "3.1.0" + "@jridgewell/sourcemap-codec" "1.4.14" + +"@jridgewell/trace-mapping@^0.3.18": + version "0.3.19" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" + integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + +"@multiformats/base-x@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" + integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@openzeppelin/merkle-tree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@openzeppelin/merkle-tree/-/merkle-tree-1.0.5.tgz#4836d377777a7e39f31674f06ec3d6909def7913" + integrity sha512-JkwG2ysdHeIphrScNxYagPy6jZeNONgDRyqU6lbFgE8HKCZFSkcP8r6AjZs+3HZk4uRNV0kNBBzuWhKQ3YV7Kw== + dependencies: + "@ethersproject/abi" "^5.7.0" + ethereum-cryptography "^1.1.2" + +"@peculiar/asn1-schema@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" + integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== + dependencies: + asn1js "^3.0.5" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +"@peculiar/json-schema@^1.1.12": + version "1.1.12" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.12.tgz#fe61e85259e3b5ba5ad566cb62ca75b3d3cd5339" + integrity sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w== + dependencies: + tslib "^2.0.0" + +"@peculiar/webcrypto@^1.4.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@peculiar/webcrypto/-/webcrypto-1.4.3.tgz#078b3e8f598e847b78683dc3ba65feb5029b93a7" + integrity sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + pvtsutils "^1.3.2" + tslib "^2.5.0" + webcrypto-core "^1.7.7" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@repeaterjs/repeater@3.0.4", "@repeaterjs/repeater@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" + integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== + +"@rollup/plugin-alias@^3.1.1": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" + integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== + dependencies: + slash "^3.0.0" + +"@rollup/plugin-babel@^5.2.2": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-commonjs@^17.0.0": + version "17.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" + integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^11.0.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rollup/pluginutils@^4.1.2": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@sinclair/typebox@^0.25.16": + version "0.25.21" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.21.tgz#763b05a4b472c93a8db29b2c3e359d55b29ce272" + integrity sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^10.0.2": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz#d10549ed1f423d80639c528b6c7f5a1017747d0c" + integrity sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw== + dependencies: + "@sinonjs/commons" "^2.0.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.2": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v5@^11.0.0": + version "11.1.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.1.tgz#23a358135a302140cf89a186592464dd6bbf1f98" + integrity sha512-D9WyUrCJ4Z5Gg8T00HWLpuqn1CqSDXlCiUOOpLaWoCbnZrE2jSIOUwR9blBZNo6LE5058e3niVu6xk205Et7tg== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/graceful-fs@^4.1.3": + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^29.4.0": + version "29.4.0" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.4.0.tgz#a8444ad1704493e84dbf07bb05990b275b3b9206" + integrity sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/js-yaml@^4.0.0": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" + integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== + +"@types/json-schema@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json-schema@^7.0.6", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json-stable-stringify@^1.0.32": + version "1.0.34" + resolved "https://registry.yarnpkg.com/@types/json-stable-stringify/-/json-stable-stringify-1.0.34.tgz#c0fb25e4d957e0ee2e497c1f553d7f8bb668fd75" + integrity sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw== + +"@types/long@^4.0.1": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" + integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== + +"@types/minimist@^1.2.0": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" + integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== + +"@types/node@*": + version "18.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" + integrity sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg== + +"@types/node@>=13.7.0": + version "20.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.9.tgz#12e8e765ab27f8c421a1820c99f5f313a933b420" + integrity sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg== + dependencies: + undici-types "~5.26.4" + +"@types/node@^22.9.0": + version "22.9.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.9.0.tgz#b7f16e5c3384788542c72dc3d561a7ceae2c0365" + integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== + dependencies: + undici-types "~6.19.8" + +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/semver@^7.3.12": + version "7.3.13" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/ws@^8.0.0": + version "8.5.5" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" + integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.8": + version "17.0.22" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" + integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.51.0.tgz#da3f2819633061ced84bb82c53bba45a6fe9963a" + integrity sha512-wcAwhEWm1RgNd7dxD/o+nnLW8oH+6RK1OGnmbmkj/GGoDPV1WWMVP0FXYQBivKHdwM1pwii3bt//RC62EriIUQ== + dependencies: + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/type-utils" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + debug "^4.3.4" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.51.0.tgz#2d74626652096d966ef107f44b9479f02f51f271" + integrity sha512-fEV0R9gGmfpDeRzJXn+fGQKcl0inIeYobmmUWijZh9zA7bxJ8clPhV9up2ZQzATxAiFAECqPQyMDB4o4B81AaA== + dependencies: + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.51.0.tgz#ad3e3c2ecf762d9a4196c0fbfe19b142ac498990" + integrity sha512-gNpxRdlx5qw3yaHA0SFuTjW4rxeYhpHxt491PEcKF8Z6zpq0kMhe0Tolxt0qjlojS+/wArSDlj/LtE69xUJphQ== + dependencies: + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.0" + +"@typescript-eslint/type-utils@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.51.0.tgz#7af48005531700b62a20963501d47dfb27095988" + integrity sha512-QHC5KKyfV8sNSyHqfNa0UbTbJ6caB8uhcx2hYcWVvJAZYJRBo5HyyZfzMdRx8nvS+GyMg56fugMzzWnojREuQQ== + dependencies: + "@typescript-eslint/typescript-estree" "5.51.0" + "@typescript-eslint/utils" "5.51.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.51.0.tgz#e7c1622f46c7eea7e12bbf1edfb496d4dec37c90" + integrity sha512-SqOn0ANn/v6hFn0kjvLwiDi4AzR++CBZz0NV5AnusT2/3y32jdc0G4woXPWHCumWtUXZKPAS27/9vziSsC9jnw== + +"@typescript-eslint/typescript-estree@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.51.0.tgz#0ec8170d7247a892c2b21845b06c11eb0718f8de" + integrity sha512-TSkNupHvNRkoH9FMA3w7TazVFcBPveAAmb7Sz+kArY6sLT86PA5Vx80cKlYmd8m3Ha2SwofM1KwraF24lM9FvA== + dependencies: + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/visitor-keys" "5.51.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.51.0.tgz#074f4fabd5b12afe9c8aa6fdee881c050f8b4d47" + integrity sha512-76qs+5KWcaatmwtwsDJvBk4H76RJQBFe+Gext0EfJdC3Vd2kpY2Pf//OHHzHp84Ciw0/rYoGTDnIAr3uWhhJYw== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.51.0" + "@typescript-eslint/types" "5.51.0" + "@typescript-eslint/typescript-estree" "5.51.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.51.0": + version "5.51.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.51.0.tgz#c0147dd9a36c0de758aaebd5b48cae1ec59eba87" + integrity sha512-Oh2+eTdjHjOFjKA27sxESlA87YPSOJafGCR0md5oeMdh1ZcCfAGCIOL216uTBAkAIptvLIfKQhl7lHxMJet4GQ== + dependencies: + "@typescript-eslint/types" "5.51.0" + eslint-visitor-keys "^3.3.0" + +"@whatwg-node/events@^0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.0.2.tgz#7b7107268d2982fc7b7aff5ee6803c64018f84dd" + integrity sha512-WKj/lI4QjnLuPrim0cfO7i+HsDSXHxNv1y0CrJhdntuO3hxWZmnXCwNDnwOvry11OjRin6cgWNF+j/9Pn8TN4w== + +"@whatwg-node/events@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@whatwg-node/events/-/events-0.0.3.tgz#13a65dd4f5893f55280f766e29ae48074927acad" + integrity sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA== + +"@whatwg-node/fetch@^0.6.0": + version "0.6.9" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.6.9.tgz#6cc694cc0378e27b8dfed427c5bf633eda6972b9" + integrity sha512-JfrBCJdMu9n9OARc0e/hPHcD98/8Nz1CKSdGYDg6VbObDkV/Ys30xe5i/wPOatYbxuvatj1kfWeHf7iNX3i17w== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@whatwg-node/node-fetch" "^0.0.5" + busboy "^1.6.0" + urlpattern-polyfill "^6.0.2" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/fetch@^0.8.0", "@whatwg-node/fetch@^0.8.1", "@whatwg-node/fetch@^0.8.2": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.8.8.tgz#48c6ad0c6b7951a73e812f09dd22d75e9fa18cae" + integrity sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg== + dependencies: + "@peculiar/webcrypto" "^1.4.0" + "@whatwg-node/node-fetch" "^0.3.6" + busboy "^1.6.0" + urlpattern-polyfill "^8.0.0" + web-streams-polyfill "^3.2.1" + +"@whatwg-node/node-fetch@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.0.5.tgz#bebf18891088e5e2fc449dea8d1bc94af5ec38df" + integrity sha512-hbccmaSZaItdsRuBKBEEhLoO+5oXJPxiyd0kG2xXd0Dh3Rt+vZn4pADHxuSiSHLd9CM+S2z4+IxlEGbWUgiz9g== + dependencies: + "@whatwg-node/events" "^0.0.2" + busboy "^1.6.0" + tslib "^2.3.1" + +"@whatwg-node/node-fetch@^0.3.6": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.3.6.tgz#e28816955f359916e2d830b68a64493124faa6d0" + integrity sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA== + dependencies: + "@whatwg-node/events" "^0.0.3" + busboy "^1.6.0" + fast-querystring "^1.1.1" + fast-url-parser "^1.1.3" + tslib "^2.3.1" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.4.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +acorn@^8.5.0, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.11.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" + integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^3.0.3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +asn1js@^3.0.1, asn1js@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-3.0.5.tgz#5ea36820443dbefb51cc7f88a2ebb5b462114f38" + integrity sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ== + dependencies: + pvtsutils "^1.3.2" + pvutils "^1.1.3" + tslib "^2.4.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-each@^1.0.0: + version "1.0.6" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" + integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +asyncro@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" + integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +auto-bind@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + +autoprefixer@^10.1.0: + version "10.4.13" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" + integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== + dependencies: + browserslist "^4.21.4" + caniuse-lite "^1.0.30001426" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +babel-jest@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.4.tgz#98dbc45d1c93319c82a8ab4a478b670655dd2585" + integrity sha512-meLj23UlSLddj6PC+YTOFRgDAtjnZom8w/ACsrx0gtPtv5cJZk0A5Unk5bV4wixD7XaPCN1fQvpww8czkZURmw== + dependencies: + "@jest/transform" "^29.6.4" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.6.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-plugin-inline-import@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz#220eb2a52f8e779d8fb89447f950275e1e3f5981" + integrity sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ== + dependencies: + require-resolve "0.0.2" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-polyfill-corejs2@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + core-js-compat "^3.25.1" + +babel-plugin-polyfill-regenerator@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + +babel-plugin-transform-async-to-promises@^0.8.18: + version "0.8.18" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz#f4dc5980b8afa0fc9c784b8d931afde913413e39" + integrity sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw== + +babel-plugin-transform-replace-expressions@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz#59cba8df4b4a675e7c78cd21548f8e7685bbc30d" + integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== + dependencies: + "@babel/parser" "^7.3.3" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-fbjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz#38a14e5a7a3b285a3f3a86552d650dca5cf6111c" + integrity sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== + dependencies: + babel-plugin-jest-hoist "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + +babel-runtime@^6.9.2: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bl@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" + integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +brotli-size@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + dependencies: + duplexer "0.1.1" + +browserslist@^4.0.0, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +browserslist@^4.20.2: + version "4.21.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" + integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== + dependencies: + caniuse-lite "^1.0.30001370" + electron-to-chromium "^1.4.202" + node-releases "^2.0.6" + update-browserslist-db "^1.0.5" + +browserslist@^4.21.9: + version "4.21.10" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" + integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== + dependencies: + caniuse-lite "^1.0.30001517" + electron-to-chromium "^1.4.477" + node-releases "^2.0.13" + update-browserslist-db "^1.0.11" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +busboy@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001426: + version "1.0.30001460" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz#31d2e26f0a2309860ed3eff154e03890d9d851a7" + integrity sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ== + +caniuse-lite@^1.0.30001370: + version "1.0.30001370" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" + integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== + +caniuse-lite@^1.0.30001449: + version "1.0.30001451" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" + integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w== + +caniuse-lite@^1.0.30001517: + version "1.0.30001519" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" + integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^1.0.0, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case-all@1.0.15: + version "1.0.15" + resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.15.tgz#de29393167fc101d646cd76b0ef23e27d09756ad" + integrity sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ== + dependencies: + change-case "^4.1.2" + is-lower-case "^2.0.2" + is-upper-case "^2.0.2" + lower-case "^2.0.2" + lower-case-first "^2.0.2" + sponge-case "^1.0.1" + swap-case "^2.0.2" + title-case "^3.0.3" + upper-case "^2.0.2" + upper-case-first "^2.0.2" + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^1.6.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: + version "1.1.9" + resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" + integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== + dependencies: + multibase "^4.0.1" + multicodec "^3.0.1" + multihashes "^4.0.1" + uint8arrays "^3.0.0" + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" + integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.16: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^12.0.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^9.3.0: + version "9.5.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" + integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== + +common-tags@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-with-sourcemaps@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + +convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +core-js-compat@^3.25.1: + version "3.28.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.28.0.tgz#c08456d854608a7264530a2afa281fadf20ecee6" + integrity sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg== + dependencies: + browserslist "^4.21.5" + +core-js@^2.4.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig-typescript-loader@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz#f3feae459ea090f131df5474ce4b1222912319f9" + integrity sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw== + +cosmiconfig@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.0.0.tgz#e9feae014eab580f858f8a0288f38997a7bebe97" + integrity sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ== + dependencies: + import-fresh "^3.2.1" + js-yaml "^4.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + +cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +coveralls@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" + integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== + dependencies: + js-yaml "^3.13.1" + lcov-parse "^1.0.0" + log-driver "^1.2.7" + minimist "^1.2.5" + request "^2.88.2" + +cpx@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" + integrity sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA== + dependencies: + babel-runtime "^6.9.2" + chokidar "^1.6.0" + duplexer "^0.1.1" + glob "^7.0.5" + glob2base "^0.0.12" + minimatch "^3.0.2" + mkdirp "^0.5.1" + resolve "^1.1.7" + safe-buffer "^5.0.1" + shell-quote "^1.6.1" + subarg "^1.0.0" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^3.0.4, cross-fetch@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" + integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== + dependencies: + node-fetch "2.6.7" + +cross-spawn@^7.0.0: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-declaration-sorter@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec" + integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.1: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +dataloader@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.2.tgz#216dc509b5abe39d43a9b9d97e6e5e473dfbe3e0" + integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== + +debounce@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" + integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +decamelize-keys@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" + integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-properties@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.2.tgz#711fe6bd8a5869fe2539cee4a5152425ff671fda" + integrity sha512-R6P0Y6PrsH3n4hUXxL3nns0rbRk6Q33js3ygJBeEpbzLzgcNuJ61+u0RXasFpTKISw99TxUzFnumSnRLsjhLaw== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@^16.0.0: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + +dset@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" + integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== + +duplexer@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== + +duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ejs@^3.1.6: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.202: + version "1.4.202" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.202.tgz#0c2ed733f42b02ec49a955c5badfcc65888c390b" + integrity sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA== + +electron-to-chromium@^1.4.284: + version "1.4.294" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz#ad80317b85f0859a9454680fbc1c726fefa7e6fd" + integrity sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ== + +electron-to-chromium@^1.4.477: + version "1.4.488" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.488.tgz#442b1855f8c84fb1ed79f518985c65db94f64cc9" + integrity sha512-Dv4sTjiW7t/UWGL+H8ZkgIjtUAVZDgb/PwGWvMsCT7jipzUV/u5skbLXPFKb6iV0tiddVi/bcS2/kUrczeWgIQ== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +err-code@^3.0.0, err-code@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" + integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" + integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.3" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.4" + is-array-buffer "^3.0.1" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.2" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-prettier@^8.6.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207" + integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== + +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-unused-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz#d25175b0072ff16a91892c3aa72a09ca3a9e69e7" + integrity sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw== + dependencies: + eslint-rule-composer "^0.3.0" + +eslint-rule-composer@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9" + integrity sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.33.0: + version "8.33.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.33.0.tgz#02f110f32998cb598c6461f24f4d306e41ca33d7" + integrity sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA== + dependencies: + "@eslint/eslintrc" "^1.4.1" + "@humanwhocodes/config-array" "^0.11.8" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.4.0" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + grapheme-splitter "^1.0.4" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-sdsl "^4.1.4" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + +espree@^9.4.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" + integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ethereum-cryptography@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethers@^5.7.2: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +event-stream@=3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" + integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== + dependencies: + duplexer "~0.1.1" + from "~0" + map-stream "~0.1.0" + pause-stream "0.0.11" + split "0.3" + stream-combiner "~0.0.4" + through "~2.3.1" + +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== + dependencies: + fill-range "^2.1.0" + +expect@^29.0.0: + version "29.4.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.4.2.tgz#2ae34eb88de797c64a1541ad0f1e2ea8a7a7b492" + integrity sha512-+JHYg9O3hd3RlICG90OPVjRkPBoiUH7PxvDVMnRiaq1g6JUgZStX514erMl0v2Dc5SkfVbm7ztqbd6qHHPn+mQ== + dependencies: + "@jest/expect-utils" "^29.4.2" + jest-get-type "^29.4.2" + jest-matcher-utils "^29.4.2" + jest-message-util "^29.4.2" + jest-util "^29.4.2" + +expect@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.4.tgz#a6e6f66d4613717859b2fe3da98a739437b6f4b8" + integrity sha512-F2W2UyQ8XYyftHT57dtfg8Ue3X5qLgm2sSug0ivvLRH/VKNRL/pDxg/TH7zVzbQB0tu80clNFy6LU7OS/VSEKA== + dependencies: + "@jest/expect-utils" "^29.6.4" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.6.4" + jest-message-util "^29.6.3" + jest-util "^29.6.3" + +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-files@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-11.0.0.tgz#b72d428712f787eef1f5193aff8ab5351ca8469a" + integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-decode-uri-component@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz#46f8b6c22b30ff7a81357d4f59abfae938202543" + integrity sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-querystring@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fast-querystring/-/fast-querystring-1.1.2.tgz#a6d24937b4fc6f791b4ee31dcb6f53aeafb89f53" + integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== + dependencies: + fast-decode-uri-component "^1.0.1" + +fast-url-parser@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" + integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== + dependencies: + punycode "^1.3.2" + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + +figures@^1.0.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== + +filesize@^6.1.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" + integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg== + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.6" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.6.tgz#022e9218c637f9f3fc9c35ab9c9193f05add60b2" + integrity sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== + dependencies: + for-in "^1.0.1" + +foreground-child@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +from@~0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== + +fs-extra@^10.0.0, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^1.0.0: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== + dependencies: + loader-utils "^3.2.0" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== + dependencies: + is-glob "^2.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA== + dependencies: + find-index "^0.1.1" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^10.3.12: + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.20.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + +globby@^11.0.3, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +graphql-config@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-4.5.0.tgz#257c2338950b8dce295a27f75c5f6c39f8f777b2" + integrity sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw== + dependencies: + "@graphql-tools/graphql-file-loader" "^7.3.7" + "@graphql-tools/json-file-loader" "^7.3.7" + "@graphql-tools/load" "^7.5.5" + "@graphql-tools/merge" "^8.2.6" + "@graphql-tools/url-loader" "^7.9.7" + "@graphql-tools/utils" "^9.0.0" + cosmiconfig "8.0.0" + jiti "1.17.1" + minimatch "4.2.3" + string-env-interpolation "1.0.1" + tslib "^2.4.0" + +graphql-request@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" + integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== + dependencies: + cross-fetch "^3.1.5" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" + integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== + dependencies: + "@graphql-typed-document-node/core" "^3.2.0" + cross-fetch "^3.1.5" + +graphql-tag@^2.11.0: + version "2.12.6" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== + dependencies: + tslib "^2.1.0" + +graphql-ws@5.12.1: + version "5.12.1" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.12.1.tgz#c62d5ac54dbd409cc6520b0b39de374b3d59d0dd" + integrity sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg== + +graphql@^16.3.0: + version "16.6.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" + integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== + +gzip-size@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w== + dependencies: + duplexer "^0.1.1" + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +hamt-sharding@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" + integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== + dependencies: + sparse-array "^1.3.1" + uint8arrays "^3.0.0" + +handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +hosted-git-info@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== + dependencies: + lru-cache "^6.0.0" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-proxy-agent@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-6.1.1.tgz#dc04f1a84e09511740cfbd984a56f86cc42e4277" + integrity sha512-JRCz+4Whs6yrrIoIlrH+ZTmhrRwtMnmOHsHn8GFEn9O2sVfSE+DAZ3oyyGIKF8tjJEeSJmP89j7aTjVsSqsU0g== + dependencies: + agent-base "^7.1.0" + debug "^4.3.4" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^6.0.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-6.2.1.tgz#0965ab47371b3e531cf6794d1eb148710a992ba7" + integrity sha512-ONsE3+yfZF2caH5+bJlcddtWqNI3Gvs5A38+ngvljxaBiRXRswym2c7yf8UAeFpRFKjFNHIFEHqR/OLAWJzyiA== + dependencies: + agent-base "^7.0.2" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== + +icss-utils@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== + +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" + integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^8.0.0: + version "8.2.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" + integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^6.0.1" + +interface-ipld-format@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" + integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== + dependencies: + cids "^1.1.6" + multicodec "^3.0.1" + multihashes "^4.0.2" + +internal-slot@^1.0.3, internal-slot@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ipfs-only-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6" + integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== + dependencies: + ipfs-unixfs-importer "^7.0.1" + meow "^9.0.0" + +ipfs-unixfs-importer@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz#b850e831ca9647d589ef50bc33421f65bab7bba6" + integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== + dependencies: + bl "^5.0.0" + cids "^1.1.5" + err-code "^3.0.1" + hamt-sharding "^2.0.0" + ipfs-unixfs "^4.0.3" + ipld-dag-pb "^0.22.2" + it-all "^1.0.5" + it-batch "^1.0.8" + it-first "^1.0.6" + it-parallel-batch "^1.0.9" + merge-options "^3.0.4" + multihashing-async "^2.1.0" + rabin-wasm "^0.1.4" + uint8arrays "^2.1.2" + +ipfs-unixfs@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" + integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipld-dag-pb@^0.22.2: + version "0.22.3" + resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" + integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== + dependencies: + cids "^1.0.0" + interface-ipld-format "^1.0.0" + multicodec "^3.0.1" + multihashing-async "^2.0.0" + protobufjs "^6.10.2" + stable "^0.1.8" + uint8arrays "^2.0.5" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" + integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== + dependencies: + hasown "^2.0.0" + +is-array-buffer@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.5.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" + integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== + dependencies: + hasown "^2.0.2" + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" + integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33" + integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== + dependencies: + is-accessor-descriptor "^1.0.1" + is-data-descriptor "^1.0.1" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306" + integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== + dependencies: + is-accessor-descriptor "^1.0.1" + is-data-descriptor "^1.0.1" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@4.0.3, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== + dependencies: + is-extglob "^1.0.0" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-2.0.2.tgz#1c0884d3012c841556243483aa5d522f47396d2a" + integrity sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ== + dependencies: + tslib "^2.0.3" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-2.0.2.tgz#f1105ced1fe4de906a5f39553e7d3803fd804649" + integrity sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ== + dependencies: + tslib "^2.0.3" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" + integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-instrument@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" + integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +it-all@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-batch@^1.0.8, it-batch@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" + integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== + +it-first@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" + integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== + +it-parallel-batch@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz#f889b4e1c7a62ef24111dbafbaaa010b33d00f69" + integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== + dependencies: + it-batch "^1.0.9" + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + +jest-changed-files@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.6.3.tgz#97cfdc93f74fb8af2a1acb0b78f836f1fb40c449" + integrity sha512-G5wDnElqLa4/c66ma5PG9eRjE342lIbF6SUnTJi26C3J28Fv2TVY2rOyKB9YGbSA5ogwevgmxc4j4aVjrEK6Yg== + dependencies: + execa "^5.0.0" + jest-util "^29.6.3" + p-limit "^3.1.0" + +jest-circus@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.4.tgz#f074c8d795e0cc0f2ebf0705086b1be6a9a8722f" + integrity sha512-YXNrRyntVUgDfZbjXWBMPslX1mQ8MrSG0oM/Y06j9EYubODIyHWP8hMUbjbZ19M3M+zamqEur7O80HODwACoJw== + dependencies: + "@jest/environment" "^29.6.4" + "@jest/expect" "^29.6.4" + "@jest/test-result" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.6.3" + jest-matcher-utils "^29.6.4" + jest-message-util "^29.6.3" + jest-runtime "^29.6.4" + jest-snapshot "^29.6.4" + jest-util "^29.6.3" + p-limit "^3.1.0" + pretty-format "^29.6.3" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.4.tgz#ad52f2dfa1b0291de7ec7f8d7c81ac435521ede0" + integrity sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ== + dependencies: + "@jest/core" "^29.6.4" + "@jest/test-result" "^29.6.4" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.6.4" + jest-util "^29.6.3" + jest-validate "^29.6.3" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.4.tgz#eff958ee41d4e1ee7a6106d02b74ad9fc427d79e" + integrity sha512-JWohr3i9m2cVpBumQFv2akMEnFEPVOh+9L2xIBJhJ0zOaci2ZXuKJj0tgMKQCBZAKA09H049IR4HVS/43Qb19A== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.6.4" + "@jest/types" "^29.6.3" + babel-jest "^29.6.4" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.6.4" + jest-environment-node "^29.6.4" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.6.4" + jest-runner "^29.6.4" + jest-util "^29.6.3" + jest-validate "^29.6.3" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.6.3" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.4.2.tgz#b88502d5dc02d97f6512d73c37da8b36f49b4871" + integrity sha512-EK8DSajVtnjx9sa1BkjZq3mqChm2Cd8rIzdXkQMA8e0wuXq53ypz6s5o5V8HRZkoEt2ywJ3eeNWFKWeYr8HK4g== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.2" + jest-get-type "^29.4.2" + pretty-format "^29.4.2" + +jest-diff@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.4.tgz#85aaa6c92a79ae8cd9a54ebae8d5b6d9a513314a" + integrity sha512-9F48UxR9e4XOEZvoUXEHSWY4qC4zERJaOfrbBg9JpbJOO43R1vN76REt/aMGZoY6GD5g84nnJiBIVlscegefpw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.6.3" + +jest-docblock@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.6.3.tgz#293dca5188846c9f7c0c2b1bb33e5b11f21645f2" + integrity sha512-2+H+GOTQBEm2+qFSQ7Ma+BvyV+waiIFxmZF5LdpBsAEjWX8QYjSCa4FrkIYtbfXUJJJnFCYrOtt6TZ+IAiTjBQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.3.tgz#1956f14f5f0cb8ae0b2e7cabc10bb03ec817c142" + integrity sha512-KoXfJ42k8cqbkfshW7sSHcdfnv5agDdHCPA87ZBdmHP+zJstTJc0ttQaJ/x7zK6noAL76hOuTIJ6ZkQRS5dcyg== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.6.3" + pretty-format "^29.6.3" + +jest-environment-node@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.4.tgz#4ce311549afd815d3cafb49e60a1e4b25f06d29f" + integrity sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ== + dependencies: + "@jest/environment" "^29.6.4" + "@jest/fake-timers" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-mock "^29.6.3" + jest-util "^29.6.3" + +jest-fetch-mock@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" + integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== + dependencies: + cross-fetch "^3.0.4" + promise-polyfill "^8.1.3" + +jest-get-type@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.2.tgz#7cb63f154bca8d8f57364d01614477d466fa43fe" + integrity sha512-vERN30V5i2N6lqlFu4ljdTqQAgrkTFMC9xaIIfOPYBw04pufjXRty5RuXBiB1d72tGbURa/UgoiHB90ruOSivg== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.4.tgz#97143ce833829157ea7025204b08f9ace609b96a" + integrity sha512-12Ad+VNTDHxKf7k+M65sviyynRoZYuL1/GTuhEVb8RYsNSNln71nANRb/faSyWvx0j+gHcivChXHIoMJrGYjog== + dependencies: + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.6.3" + jest-util "^29.6.3" + jest-worker "^29.6.4" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.3.tgz#b9661bc3aec8874e59aff361fa0c6d7cd507ea01" + integrity sha512-0kfbESIHXYdhAdpLsW7xdwmYhLf1BRu4AA118/OxFm0Ho1b2RcTmO4oF6aAMaxpxdxnJ3zve2rgwzNBD4Zbm7Q== + dependencies: + jest-get-type "^29.6.3" + pretty-format "^29.6.3" + +jest-matcher-utils@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.4.2.tgz#08d0bf5abf242e3834bec92c7ef5071732839e85" + integrity sha512-EZaAQy2je6Uqkrm6frnxBIdaWtSYFoR8SVb2sNLAtldswlR/29JAgx+hy67llT3+hXBaLB0zAm5UfeqerioZyg== + dependencies: + chalk "^4.0.0" + jest-diff "^29.4.2" + jest-get-type "^29.4.2" + pretty-format "^29.4.2" + +jest-matcher-utils@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.4.tgz#327db7ababea49455df3b23e5d6109fe0c709d24" + integrity sha512-KSzwyzGvK4HcfnserYqJHYi7sZVqdREJ9DMPAKVbS98JsIAvumihaNUbjrWw0St7p9IY7A9UskCW5MYlGmBQFQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.6.4" + jest-get-type "^29.6.3" + pretty-format "^29.6.3" + +jest-message-util@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.4.2.tgz#309a2924eae6ca67cf7f25781a2af1902deee717" + integrity sha512-SElcuN4s6PNKpOEtTInjOAA8QvItu0iugkXqhYyguRvQoXapg5gN+9RQxLAkakChZA7Y26j6yUCsFWN+hlKD6g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.4.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.4.2" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.3.tgz#bce16050d86801b165f20cfde34dc01d3cf85fbf" + integrity sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.3.tgz#433f3fd528c8ec5a76860177484940628bdf5e0a" + integrity sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + jest-util "^29.6.3" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== + +jest-resolve-dependencies@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.4.tgz#20156b33c7eacbb6bb77aeba4bed0eab4a3f8734" + integrity sha512-7+6eAmr1ZBF3vOAJVsfLj1QdqeXG+WYhidfLHBRZqGN24MFRIiKG20ItpLw2qRAsW/D2ZUUmCNf6irUr/v6KHA== + dependencies: + jest-regex-util "^29.6.3" + jest-snapshot "^29.6.4" + +jest-resolve@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.4.tgz#e34cb06f2178b429c38455d98d1a07572ac9faa3" + integrity sha512-fPRq+0vcxsuGlG0O3gyoqGTAxasagOxEuyoxHeyxaZbc9QNek0AmJWSkhjlMG+mTsj+8knc/mWb3fXlRNVih7Q== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.4" + jest-pnp-resolver "^1.2.2" + jest-util "^29.6.3" + jest-validate "^29.6.3" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + +jest-runner@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.4.tgz#b3b8ccb85970fde0fae40c73ee11eb75adccfacf" + integrity sha512-SDaLrMmtVlQYDuG0iSPYLycG8P9jLI+fRm8AF/xPKhYDB2g6xDWjXBrR5M8gEWsK6KVFlebpZ4QsrxdyIX1Jaw== + dependencies: + "@jest/console" "^29.6.4" + "@jest/environment" "^29.6.4" + "@jest/test-result" "^29.6.4" + "@jest/transform" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.6.3" + jest-environment-node "^29.6.4" + jest-haste-map "^29.6.4" + jest-leak-detector "^29.6.3" + jest-message-util "^29.6.3" + jest-resolve "^29.6.4" + jest-runtime "^29.6.4" + jest-util "^29.6.3" + jest-watcher "^29.6.4" + jest-worker "^29.6.4" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.4.tgz#b0bc495c9b6b12a0a7042ac34ca9bb85f8cd0ded" + integrity sha512-s/QxMBLvmwLdchKEjcLfwzP7h+jsHvNEtxGP5P+Fl1FMaJX2jMiIqe4rJw4tFprzCwuSvVUo9bn0uj4gNRXsbA== + dependencies: + "@jest/environment" "^29.6.4" + "@jest/fake-timers" "^29.6.4" + "@jest/globals" "^29.6.4" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.6.4" + "@jest/transform" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.4" + jest-message-util "^29.6.3" + jest-mock "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.6.4" + jest-snapshot "^29.6.4" + jest-util "^29.6.3" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.4.tgz#9833eb6b66ff1541c7fd8ceaa42d541f407b4876" + integrity sha512-VC1N8ED7+4uboUKGIDsbvNAZb6LakgIPgAF4RSpF13dN6YaMokfRqO+BaqK4zIh6X3JffgwbzuGqDEjHm/MrvA== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.6.4" + "@jest/transform" "^29.6.4" + "@jest/types" "^29.6.3" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.6.4" + graceful-fs "^4.2.9" + jest-diff "^29.6.4" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.6.4" + jest-message-util "^29.6.3" + jest-util "^29.6.3" + natural-compare "^1.4.0" + pretty-format "^29.6.3" + semver "^7.5.3" + +jest-util@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.2.tgz#3db8580b295df453a97de4a1b42dd2578dabd2c2" + integrity sha512-wKnm6XpJgzMUSRFB7YF48CuwdzuDIHenVuoIb1PLuJ6F+uErZsuDkU+EiExkChf6473XcawBrSfDSnXl+/YG4g== + dependencies: + "@jest/types" "^29.4.2" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.3.tgz#e15c3eac8716440d1ed076f09bc63ace1aebca63" + integrity sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.3.tgz#a75fca774cfb1c5758c70d035d30a1f9c2784b4d" + integrity sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg== + dependencies: + "@jest/types" "^29.6.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.6.3" + leven "^3.1.0" + pretty-format "^29.6.3" + +jest-watcher@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.4.tgz#633eb515ae284aa67fd6831f1c9d1b534cf0e0ba" + integrity sha512-oqUWvx6+On04ShsT00Ir9T4/FvBeEh2M9PTubgITPxDa739p4hoQweWPRGyYeaojgT0xTpZKF0Y/rSY1UgMxvQ== + dependencies: + "@jest/test-result" "^29.6.4" + "@jest/types" "^29.6.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.6.3" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.4.tgz#f34279f4afc33c872b470d4af21b281ac616abd3" + integrity sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q== + dependencies: + "@types/node" "*" + jest-util "^29.6.3" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^29.6.4: + version "29.6.4" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.4.tgz#7c48e67a445ba264b778253b5d78d4ebc9d0a622" + integrity sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw== + dependencies: + "@jest/core" "^29.6.4" + "@jest/types" "^29.6.3" + import-local "^3.0.2" + jest-cli "^29.6.4" + +jiti@1.17.1: + version "1.17.1" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.17.1.tgz#264daa43ee89a03e8be28c3d712ccc4eb9f1e8ed" + integrity sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw== + +jose@^4.11.4: + version "4.14.4" + resolved "https://registry.yarnpkg.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" + integrity sha512-j8GhLiKmUAh+dsFXlX1aJCbt5KMibuKb+d7j1JaOJG6s2UjX1PQlW+OKB/sD4a/5ZYF4RcmYmLSndOoU3Lt/3g== + +js-sdsl@^4.1.4: + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" + integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.0.0, js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-ref-parser@^9.0.9: + version "9.0.9" + resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-9.0.9.tgz#66ea538e7450b12af342fa3d5b8458bc1e1e013f" + integrity sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q== + dependencies: + "@apidevtools/json-schema-ref-parser" "9.0.9" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0" + integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g== + dependencies: + jsonify "^0.0.1" + +json-stringify-deterministic@^1.0.8: + version "1.0.12" + resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" + integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json-to-pretty-yaml@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz#f4cd0bd0a5e8fe1df25aaf5ba118b099fd992d5b" + integrity sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A== + dependencies: + remedial "^1.0.7" + remove-trailing-spaces "^1.0.6" + +json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978" + integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +just-performance@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/just-performance/-/just-performance-4.3.0.tgz#cc2bc8c9227f09e97b6b1df4cd0de2df7ae16db1" + integrity sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.1.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +lcov-parse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" + integrity sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ== + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.3, lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +limiter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/limiter/-/limiter-2.1.0.tgz#d38d7c5b63729bb84fb0c4d8594b7e955a5182a2" + integrity sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw== + dependencies: + just-performance "4.3.0" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +listr2@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" + integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.5" + through "^2.3.8" + wrap-ansi "^7.0.0" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@~4.17.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-driver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" + integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== + +log-symbols@^4.0.0, log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +long@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" + integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" + integrity sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg== + dependencies: + tslib "^2.0.3" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-cache@^0.2.0, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== + +map-obj@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" + integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== + +map-stream@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" + integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +maxmin@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" + integrity sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw== + dependencies: + chalk "^1.0.0" + figures "^1.0.1" + gzip-size "^3.0.0" + pretty-bytes "^3.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize "^1.2.0" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +meros@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" + integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== + +microbundle@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.15.1.tgz#3fa67128934b31736823b5c868dae4b92d94e766" + integrity sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q== + dependencies: + "@babel/core" "^7.12.10" + "@babel/plugin-proposal-class-properties" "7.12.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/plugin-transform-flow-strip-types" "^7.12.10" + "@babel/plugin-transform-react-jsx" "^7.12.11" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/preset-env" "^7.12.11" + "@babel/preset-flow" "^7.12.1" + "@babel/preset-react" "^7.12.10" + "@rollup/plugin-alias" "^3.1.1" + "@rollup/plugin-babel" "^5.2.2" + "@rollup/plugin-commonjs" "^17.0.0" + "@rollup/plugin-json" "^4.1.0" + "@rollup/plugin-node-resolve" "^11.0.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.2" + asyncro "^3.0.0" + autoprefixer "^10.1.0" + babel-plugin-macros "^3.0.1" + babel-plugin-transform-async-to-promises "^0.8.18" + babel-plugin-transform-replace-expressions "^0.2.0" + brotli-size "^4.0.0" + builtin-modules "^3.1.0" + camelcase "^6.2.0" + escape-string-regexp "^4.0.0" + filesize "^6.1.0" + gzip-size "^6.0.0" + kleur "^4.1.3" + lodash.merge "^4.6.2" + postcss "^8.2.1" + pretty-bytes "^5.4.1" + rollup "^2.35.1" + rollup-plugin-bundle-size "^1.0.3" + rollup-plugin-postcss "^4.0.0" + rollup-plugin-terser "^7.0.2" + rollup-plugin-typescript2 "^0.32.0" + rollup-plugin-visualizer "^5.6.0" + sade "^1.7.4" + terser "^5.7.0" + tiny-glob "^0.2.8" + tslib "^2.0.3" + typescript "^4.1.3" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.3.tgz#b4dcece1d674dee104bb0fb833ebb85a78cbbca6" + integrity sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + +minimist@^1.1.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minimist@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multibase@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" + integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== + dependencies: + "@multiformats/base-x" "^4.0.1" + +multicodec@^3.0.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" + integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== + dependencies: + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^9.4.2, multiformats@^9.6.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multihashes@^4.0.1, multihashes@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" + integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== + dependencies: + multibase "^4.0.1" + uint8arrays "^3.0.0" + varint "^5.0.2" + +multihashing-async@^2.0.0, multihashing-async@^2.1.0: + version "2.1.4" + resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" + integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== + dependencies: + blakejs "^1.1.0" + err-code "^3.0.0" + js-sha3 "^0.8.0" + multihashes "^4.0.1" + murmurhash3js-revisited "^3.0.0" + uint8arrays "^3.0.0" + +murmurhash3js-revisited@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" + integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nan@^2.12.1: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-cleanup@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" + integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== + +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@^2.6.1: + version "2.6.12" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" + integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + dependencies: + whatwg-url "^5.0.0" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.2, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +openapi-typescript-codegen@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/openapi-typescript-codegen/-/openapi-typescript-codegen-0.23.0.tgz#702a651eefc536b27e87e4ad54a80a31d36487f0" + integrity sha512-gOJXy5g3H3HlLpVNN+USrNK2i2KYBmDczk9Xk34u6JorwrGiDJZUj+al4S+i9TXdfUQ/ZaLxE59Xf3wqkxGfqA== + dependencies: + camelcase "^6.3.0" + commander "^9.3.0" + fs-extra "^10.1.0" + handlebars "^4.7.7" + json-schema-ref-parser "^9.0.9" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@3.1.0, p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-filepath@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-extra@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/path-extra/-/path-extra-1.0.3.tgz#7c112189a6e50d595790e7ad2037e44e410c1166" + integrity sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== + dependencies: + path-root-regex "^0.1.0" + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-load-config@^3.0.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-modules@^4.0.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" + integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== + dependencies: + generic-names "^4.0.0" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + string-hash "^1.1.1" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.11" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" + integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.2.1: + version "8.4.21" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" + integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +prettier@^2.5.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-bytes@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" + integrity sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow== + dependencies: + number-is-nan "^1.0.0" + +pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-format@^29.0.0, pretty-format@^29.4.2: + version "29.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.4.2.tgz#64bf5ccc0d718c03027d94ac957bdd32b3fb2401" + integrity sha512-qKlHR8yFVCbcEWba0H0TOC8dnLlO4vPlyEjRPw31FZ2Rupy9nLa8ZLbYny8gWEl8CkEhJqAE6IzdNELTBVcBEg== + dependencies: + "@jest/schemas" "^29.4.2" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.3.tgz#d432bb4f1ca6f9463410c3fb25a0ba88e594ace7" + integrity sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-polyfill@^8.1.3: + version "8.2.3" + resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.3.tgz#2edc7e4b81aff781c88a0d577e5fe9da822107c6" + integrity sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg== + +promise.series@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" + integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +protobufjs@^6.10.2: + version "6.11.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" + integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.1" + "@types/node" ">=13.7.0" + long "^4.0.0" + +ps-tree@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" + integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== + dependencies: + event-stream "=3.3.4" + +psl@^1.1.28: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^1.3.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + +pvtsutils@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.3.tgz#29ef8ea50318d1187b15260b1d0b32e57eea32dc" + integrity sha512-6sAOMlXyrJ+8tRN5IAaYfuYZRp1C2uJ0SyDynEFxL+VY8kCRib9Lpj/+KPaNFpaQWr/iRik5nrzz6iaNlxgEGA== + dependencies: + tslib "^2.6.1" + +pvutils@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.1.3.tgz#f35fc1d27e7cd3dfbd39c0826d173e806a03f5a3" + integrity sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ== + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + +rabin-wasm@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" + integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== + dependencies: + "@assemblyscript/loader" "^0.9.4" + bl "^5.0.0" + debug "^4.3.1" + minimist "^1.2.5" + node-fetch "^2.6.1" + readable-stream "^3.6.0" + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +react-is@^18.0.0: + version "18.2.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +readable-stream@^2.0.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate-unicode-properties@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.11: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^5.2.1: + version "5.3.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.0.tgz#4d0d044b76fedbad6238703ae84bfdedee2cf074" + integrity sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relay-runtime@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237" + integrity sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^3.0.0" + invariant "^2.2.4" + +remedial@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/remedial/-/remedial-1.0.8.tgz#a5e4fd52a0e4956adbaf62da63a5a46a78c578a0" + integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg== + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +remove-trailing-spaces@^1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz#4354d22f3236374702f58ee373168f6d6887ada7" + integrity sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA== + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.5.2, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require-resolve@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/require-resolve/-/require-resolve-0.0.2.tgz#bab410ab1aee2f3f55b79317451dd3428764e6f3" + integrity sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A== + dependencies: + x-path "^0.0.2" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve.exports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" + integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== + +resolve@^1.1.7: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.10.0: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-bundle-size@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" + integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== + dependencies: + chalk "^1.1.3" + maxmin "^2.1.0" + +rollup-plugin-postcss@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" + integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== + dependencies: + chalk "^4.1.0" + concat-with-sourcemaps "^1.1.0" + cssnano "^5.0.1" + import-cwd "^3.0.0" + p-queue "^6.6.2" + pify "^5.0.0" + postcss-load-config "^3.0.0" + postcss-modules "^4.0.0" + promise.series "^0.2.0" + resolve "^1.19.0" + rollup-pluginutils "^2.8.2" + safe-identifier "^0.4.2" + style-inject "^0.3.0" + +rollup-plugin-terser@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup-plugin-typescript2@^0.32.0: + version "0.32.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.32.1.tgz#470ded8e1965efac02043cc0ef4a7fa36bed83b9" + integrity sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw== + dependencies: + "@rollup/pluginutils" "^4.1.2" + find-cache-dir "^3.3.2" + fs-extra "^10.0.0" + resolve "^1.20.0" + tslib "^2.4.0" + +rollup-plugin-visualizer@^5.6.0: + version "5.9.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz#013ac54fb6a9d7c9019e7eb77eced673399e5a0b" + integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^2.35.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@^7.5.5: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + +sade@^1.7.4: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-identifier@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" + integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +safe-stable-stringify@^2.4.3: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +scuid@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/scuid/-/scuid-1.1.0.tgz#d3f9f920956e737a60f72d0e4ad280bf324d5dab" + integrity sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg== + +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^7.5.3, semver@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + +shell-quote@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +sparse-array@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" + integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.18" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" + integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split@0.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" + integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== + dependencies: + through "2" + +sponge-case@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" + integrity sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA== + dependencies: + tslib "^2.0.3" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-combiner@~0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" + integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== + dependencies: + duplexer "~0.1.1" + +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + +string-argv@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-env-interpolation@1.0.1, string-env-interpolation@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" + integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.6: + version "4.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.3" + side-channel "^1.0.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-inject@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" + integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +subarg@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" + integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg== + dependencies: + minimist "^1.1.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +swap-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-2.0.2.tgz#671aedb3c9c137e2985ef51c51f9e98445bf70d9" + integrity sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw== + dependencies: + tslib "^2.0.3" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +terser@^5.0.0, terser@^5.7.0: + version "5.16.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" + integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tiny-glob@^0.2.8: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + +title-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" + integrity sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA== + dependencies: + tslib "^2.0.3" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-newlines@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" + integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-json-schema-generator@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/ts-json-schema-generator/-/ts-json-schema-generator-2.3.0.tgz#d533027cdb13b625acba0a3e931a4ba88f0e44ad" + integrity sha512-t4lBQAwZc0sOJq9LJt3NgbznIcslVnm0JeEMFq8qIRklpMRY8jlYD0YmnRWbqBKANxkby91P1XanSSlSOFpUmg== + dependencies: + "@types/json-schema" "^7.0.15" + commander "^12.0.0" + glob "^10.3.12" + json5 "^2.2.3" + normalize-path "^3.0.0" + safe-stable-stringify "^2.4.3" + tslib "^2.6.2" + typescript "^5.4.5" + +ts-log@^2.2.3: + version "2.2.5" + resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.5.tgz#aef3252f1143d11047e2cb6f7cfaac7408d96623" + integrity sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA== + +ts-mockito@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.6.1.tgz#bc9ee2619033934e6fad1c4455aca5b5ace34e73" + integrity sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw== + dependencies: + lodash "^4.17.5" + +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsc-watch@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-6.0.0.tgz#474b661b8d6a226c0921a3b6048d7a91f61d888a" + integrity sha512-zgpju+/z5z29/kK5V28Nz16CMkX2voFOUxkTlCim/R25hxzbyUqu2NfTnmJBQfESBSPbEQUGqDdB9A8opAcB4A== + dependencies: + cross-spawn "^7.0.3" + node-cleanup "^2.1.2" + ps-tree "^1.2.0" + string-argv "^0.3.1" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1, tslib@^2.5.0, tslib@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410" + integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== + +tslib@^2.0.3, tslib@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tslib@~2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tslib@~2.5.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.3.tgz#24944ba2d990940e6e982c4bea147aba80209913" + integrity sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typechain@^8.2.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb" + integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript@^4.1.3, typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.4.5: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +ua-parser-js@^1.0.35: + version "1.0.35" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" + integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== + +uglify-js@^3.1.4: + version "3.17.4" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" + integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== + +uint8arrays@^2.0.5, uint8arrays@^2.1.2: + version "2.1.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" + integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== + dependencies: + multiformats "^9.4.2" + +uint8arrays@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" + integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== + dependencies: + multiformats "^9.4.2" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~6.19.8: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unixify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== + dependencies: + normalize-path "^2.1.1" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +update-browserslist-db@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" + integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-browserslist-db@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +update-browserslist-db@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + +uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +urlpattern-polyfill@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-6.0.2.tgz#a193fe773459865a2a5c93b246bb794b13d07256" + integrity sha512-5vZjFlH9ofROmuWmXM9yj2wljYKgWstGwe8YTyiqM7hVum/g9LyCizPZtb3UqsuppVwety9QJmfc42VggLpTgg== + dependencies: + braces "^3.0.2" + +urlpattern-polyfill@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5" + integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ== + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" + integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +value-or-promise@^1.0.11, value-or-promise@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.12.tgz#0e5abfeec70148c78460a849f6b003ea7986f15c" + integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== + +varint@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web-streams-polyfill@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + +webcrypto-core@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c" + integrity sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/json-schema" "^1.1.12" + asn1js "^3.0.1" + pvtsutils "^1.3.2" + tslib "^2.4.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.13.0, ws@^8.12.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + +x-path@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/x-path/-/x-path-0.0.2.tgz#294d076bb97a7706cc070bbb2a6fd8c54df67b12" + integrity sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw== + dependencies: + path-extra "^1.0.2" + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-ast-parser@^0.0.43: + version "0.0.43" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" + integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== + +yaml@^1.10.0, yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.0.0: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^17.3.1: + version "17.6.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541" + integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yargs@^17.5.1: + version "17.7.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.1.tgz#34a77645201d1a8fc5213ace787c220eabbd0967" + integrity sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/scripts/fetch-sdk-readme.js b/scripts/fetch-sdk-readme.js index 4e9919362..892f26e0f 100644 --- a/scripts/fetch-sdk-readme.js +++ b/scripts/fetch-sdk-readme.js @@ -5,7 +5,7 @@ import path from 'path'; const README_URL = 'https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main/packages/sdk/README.md'; // Destination file in Docusaurus docs -const DOCS_PATH = path.join(process.cwd(), 'docs/cow-protocol/reference/sdks/cow-sdk', 'README.mdx'); +const DOCS_PATH = path.join(process.cwd(), 'docs/cow-protocol/sdks/cow-sdk', 'README.mdx'); async function fetchReadme() { try { diff --git a/sidebars-cow-amm.ts b/sidebars-cow-amm.ts new file mode 100644 index 000000000..e7e35ed95 --- /dev/null +++ b/sidebars-cow-amm.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + cowAmmSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +module.exports = sidebars; diff --git a/sidebars-cow-dao.ts b/sidebars-cow-dao.ts new file mode 100644 index 000000000..92388bf4f --- /dev/null +++ b/sidebars-cow-dao.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + cowDaoSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +module.exports = sidebars; diff --git a/sidebars-cow-protocol.ts b/sidebars-cow-protocol.ts new file mode 100644 index 000000000..9dcb950a8 --- /dev/null +++ b/sidebars-cow-protocol.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + cowProtocolSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +module.exports = sidebars; diff --git a/sidebars-cow-swap.ts b/sidebars-cow-swap.ts new file mode 100644 index 000000000..f28473ea3 --- /dev/null +++ b/sidebars-cow-swap.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + cowSwapSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +module.exports = sidebars; diff --git a/sidebars-cow-widget.ts b/sidebars-cow-widget.ts new file mode 100644 index 000000000..84c4a8160 --- /dev/null +++ b/sidebars-cow-widget.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + cowWidgetSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +export default sidebars; diff --git a/sidebars-mevblocker.ts b/sidebars-mevblocker.ts new file mode 100644 index 000000000..2d6651972 --- /dev/null +++ b/sidebars-mevblocker.ts @@ -0,0 +1,12 @@ +import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; + +const sidebars: SidebarsConfig = { + mevBlockerSidebar: [ + { + type: 'autogenerated', + dirName: '.', + }, + ], +}; + +module.exports = sidebars; diff --git a/src/clientModules/gtagFix.js b/src/clientModules/gtagFix.js new file mode 100644 index 000000000..5234a6011 --- /dev/null +++ b/src/clientModules/gtagFix.js @@ -0,0 +1,53 @@ +// Fix for gtag not being available on client-side navigation +// Create a safe wrapper for gtag that won't throw errors +if (typeof window !== 'undefined') { + // Store the original gtag if it exists + const originalGtag = window.gtag; + + // Create a safe wrapper + window.gtag = function(...args) { + // Only call if the original gtag function exists and is actually a function + if (typeof originalGtag === 'function') { + try { + return originalGtag.apply(this, args); + } catch (e) { + // Silently ignore gtag errors + console.debug('gtag error (ignored):', e); + } + } else if (window.dataLayer) { + // If gtag doesn't exist but dataLayer does, push directly + window.dataLayer.push(arguments); + } + }; + + // Restore the original gtag once it's loaded + const checkGtagLoaded = setInterval(() => { + if (window.google_tag_manager || (window.gtag && window.gtag !== originalGtag)) { + clearInterval(checkGtagLoaded); + } + }, 100); + + // Clear the interval after 10 seconds to prevent infinite checking + setTimeout(() => clearInterval(checkGtagLoaded), 10000); +} + +export function onRouteDidUpdate({location, previousLocation}) { + // Don't execute if we are still on the same page; the lifecycle may be fired + // because the hash changes (e.g. when navigating between headings) + if (location.pathname === previousLocation?.pathname) { + return; + } + + // Safely call gtag for page view tracking + if (typeof window !== 'undefined' && typeof window.gtag === 'function') { + try { + window.gtag('event', 'page_view', { + page_path: location.pathname + location.search + location.hash, + page_title: document.title, + }); + } catch (e) { + // Silently ignore errors + console.debug('gtag page_view error (ignored):', e); + } + } +} diff --git a/src/components/ProductGrid/index.tsx b/src/components/ProductGrid/index.tsx new file mode 100644 index 000000000..9f866baf2 --- /dev/null +++ b/src/components/ProductGrid/index.tsx @@ -0,0 +1,71 @@ +import React from 'react'; +import Link from '@docusaurus/Link'; +import styles from './styles.module.css'; + +interface Product { + title: string; + emoji: string; + description: string; + link: string; + color: string; +} + +const products: Product[] = [ + { + title: 'CoW Protocol', + emoji: '🐮', + description: 'The leading intents-based DEX aggregation protocol protecting users from MEV.', + link: '/cow-protocol', + color: '#012f7a', + }, + { + title: 'CoW Swap', + emoji: '🔄', + description: 'User-friendly interface for trading on CoW Protocol with MEV protection and best prices.', + link: '/cow-swap', + color: '#1b6aae', + }, + { + title: 'CoW Widget', + emoji: '🧩', + description: 'Embeddable widget to bring MEV-protected swaps directly to your website or dApp.', + link: '/cow-widget', + color: '#2d9a4d', + }, + { + title: 'CoW AMM', + emoji: '🌊', + description: 'Automated Market Maker protecting liquidity providers from price exploitation.', + link: '/cow-amm', + color: '#0c5d99', + }, + { + title: 'MEV Blocker', + emoji: '🏖️', + description: 'RPC endpoint protecting transactions from MEV attacks before they reach the mempool.', + link: '/mevblocker', + color: '#f2994a', + }, +]; + +export default function ProductGrid(): JSX.Element { + return ( +
+
+ {products.map((product, idx) => ( + +
{product.emoji}
+

{product.title}

+

{product.description}

+ Explore documentation → + + ))} +
+
+ ); +} diff --git a/src/components/ProductGrid/styles.module.css b/src/components/ProductGrid/styles.module.css new file mode 100644 index 000000000..532ccba35 --- /dev/null +++ b/src/components/ProductGrid/styles.module.css @@ -0,0 +1,88 @@ +.productGrid { + padding: 2rem 0; + margin: 2rem 0; +} + +.container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 2rem; + max-width: 1200px; + margin: 0 auto; +} + +.productCard { + background: var(--ifm-card-background-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: 8px; + padding: 2rem; + text-decoration: none; + color: inherit; + transition: all 0.3s ease; + display: flex; + flex-direction: column; + gap: 1rem; + position: relative; + overflow: hidden; +} + +.productCard::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--product-color); + transform: scaleX(0); + transform-origin: left; + transition: transform 0.3s ease; +} + +.productCard:hover { + border-color: var(--product-color); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); + transform: translateY(-4px); +} + +.productCard:hover::before { + transform: scaleX(1); +} + +.productEmoji { + font-size: 3rem; + line-height: 1; + margin-bottom: 0.5rem; +} + +.productTitle { + margin: 0; + font-size: 1.5rem; + font-weight: 600; + color: var(--ifm-heading-color); +} + +.productDescription { + margin: 0; + flex: 1; + color: var(--ifm-color-emphasis-700); + line-height: 1.6; +} + +.productLink { + color: var(--product-color); + font-weight: 500; + display: inline-flex; + align-items: center; + transition: transform 0.2s ease; +} + +.productCard:hover .productLink { + transform: translateX(4px); +} + +@media (max-width: 768px) { + .container { + grid-template-columns: 1fr; + } +} diff --git a/src/css/custom.css b/src/css/custom.css index 4e01c3174..ea55b866c 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -156,4 +156,244 @@ html .menu_node_modules-\@docusaurus-theme-classic-lib-theme-DocSidebar-Desktop- div.theme-doc-markdown > div img { margin-bottom: 1em!important; +} + +/* Product-specific color schemes */ + +/* CoW Protocol - Blue theme (default) */ +html[data-current-docs-plugin-id="cow-protocol"]:root { + --ifm-color-primary: #012f7a; + --ifm-color-primary-dark: #012964; + --ifm-color-primary-darker: #01265d; + --ifm-color-primary-darkest: #011f4c; + --ifm-color-primary-light: #023590; + --ifm-color-primary-lighter: #023897; + --ifm-color-primary-lightest: #0341a8; +} + +html[data-theme='dark'][data-current-docs-plugin-id="cow-protocol"]:root { + --ifm-color-primary: #5b9cff; + --ifm-color-primary-dark: #428eff; + --ifm-color-primary-darker: #2e82ff; + --ifm-color-primary-darkest: #0069ff; + --ifm-color-primary-light: #74aaff; + --ifm-color-primary-lighter: #88b6ff; + --ifm-color-primary-lightest: #b0cfff; +} + +/* CoW Swap - Light Blue theme */ +html[data-current-docs-plugin-id="cow-swap"]:root { + --ifm-color-primary: #1b6aae; + --ifm-color-primary-dark: #185f9c; + --ifm-color-primary-darker: #175a93; + --ifm-color-primary-darkest: #134a79; + --ifm-color-primary-light: #1e75c0; + --ifm-color-primary-lighter: #1f7ac9; + --ifm-color-primary-lightest: #2489db; +} + +html[data-theme='dark'][data-current-docs-plugin-id="cow-swap"]:root { + --ifm-color-primary: #6ba9e0; + --ifm-color-primary-dark: #529dd9; + --ifm-color-primary-darker: #4697d7; + --ifm-color-primary-darkest: #2c85cb; + --ifm-color-primary-light: #84b5e7; + --ifm-color-primary-lighter: #90bde9; + --ifm-color-primary-lightest: #b4d3f0; +} + +/* CoW Widget - Green/Lime theme */ +html[data-current-docs-plugin-id="cow-widget"]:root { + --ifm-color-primary: #2d9a4d; + --ifm-color-primary-dark: #288b45; + --ifm-color-primary-darker: #268341; + --ifm-color-primary-darkest: #1f6c35; + --ifm-color-primary-light: #32a955; + --ifm-color-primary-lighter: #35b159; + --ifm-color-primary-lightest: #40c765; +} + +html[data-theme='dark'][data-current-docs-plugin-id="cow-widget"]:root { + --ifm-color-primary: #5dd87d; + --ifm-color-primary-dark: #46d36b; + --ifm-color-primary-darker: #3ad062; + --ifm-color-primary-darkest: #26c24f; + --ifm-color-primary-light: #74dd8f; + --ifm-color-primary-lighter: #80e098; + --ifm-color-primary-lightest: #a6e9b5; +} + +/* CoW AMM - Teal/Ocean theme */ +html[data-current-docs-plugin-id="cow-amm"]:root { + --ifm-color-primary: #0c5d99; + --ifm-color-primary-dark: #0b5489; + --ifm-color-primary-darker: #0a4f81; + --ifm-color-primary-darkest: #08416a; + --ifm-color-primary-light: #0d66a9; + --ifm-color-primary-lighter: #0e6bb1; + --ifm-color-primary-lightest: #107ac7; +} + +html[data-theme='dark'][data-current-docs-plugin-id="cow-amm"]:root { + --ifm-color-primary: #3eb8f5; + --ifm-color-primary-dark: #26aff3; + --ifm-color-primary-darker: #19a9f2; + --ifm-color-primary-darkest: #0d97de; + --ifm-color-primary-light: #56c1f7; + --ifm-color-primary-lighter: #69c7f8; + --ifm-color-primary-lightest: #95d7fa; +} + +/* MEV Blocker - Orange/Sunset theme */ +html[data-current-docs-plugin-id="mevblocker"]:root { + --ifm-color-primary: #f2994a; + --ifm-color-primary-dark: #f08a2f; + --ifm-color-primary-darker: #ef8222; + --ifm-color-primary-darkest: #e76d0a; + --ifm-color-primary-light: #f4a865; + --ifm-color-primary-lighter: #f5b072; + --ifm-color-primary-lightest: #f8c593; +} + +html[data-theme='dark'][data-current-docs-plugin-id="mevblocker"]:root { + --ifm-color-primary: #fdb574; + --ifm-color-primary-dark: #fca85c; + --ifm-color-primary-darker: #fca04f; + --ifm-color-primary-darkest: #fb8e2e; + --ifm-color-primary-light: #fdc28c; + --ifm-color-primary-lighter: #feca99; + --ifm-color-primary-lightest: #feddb3; +} + +/* CoW DAO - Purple/Governance theme */ +html[data-current-docs-plugin-id="cow-dao"]:root { + --ifm-color-primary: #5f3dc4; + --ifm-color-primary-dark: #5637b0; + --ifm-color-primary-darker: #5134a6; + --ifm-color-primary-darkest: #432b89; + --ifm-color-primary-light: #6843d8; + --ifm-color-primary-lighter: #7046dc; + --ifm-color-primary-lightest: #8556e8; +} + +html[data-theme='dark'][data-current-docs-plugin-id="cow-dao"]:root { + --ifm-color-primary: #b197fc; + --ifm-color-primary-dark: #9f7efb; + --ifm-color-primary-darker: #9470fb; + --ifm-color-primary-darkest: #7654fa; + --ifm-color-primary-light: #c3b0fd; + --ifm-color-primary-lighter: #cebefd; + --ifm-color-primary-lightest: #e9dffe; +} + +/* Navbar improvements - prevent wrapping and improve spacing */ +.navbar__inner { + flex-wrap: nowrap; + gap: 0.5rem; + align-items: center; +} + +/* Make navbar title more compact */ +.navbar__title { + font-size: 0.95rem; + white-space: nowrap; +} + +/* Style navbar buttons to look more like buttons */ +.navbar__item.navbar__link, +.navbar__link { + border-radius: 6px; + padding: 0.5rem 1rem; + font-weight: 500; + transition: all 0.2s ease; + white-space: nowrap; + display: inline-flex; + align-items: center; + line-height: 1.5; + height: 36px; + box-sizing: border-box; +} + +/* Products dropdown button styling */ +.navbar__link.navbar__link--active, +.navbar__item.dropdown > .navbar__link { + background: rgba(255, 255, 255, 0.15); + border: 1px solid rgba(255, 255, 255, 0.2); + height: 36px; +} + +html[data-theme='dark'] .navbar__link.navbar__link--active, +html[data-theme='dark'] .navbar__item.dropdown > .navbar__link { + background: rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.15); +} + +/* CoW DAO button - make it stand out more */ +.navbar__items--left > .navbar__item:not(.dropdown) > .navbar__link { + background: rgba(255, 255, 255, 0.2); + border: 1px solid rgba(255, 255, 255, 0.3); + height: 36px; +} + +html[data-theme='dark'] .navbar__items--left > .navbar__item:not(.dropdown) > .navbar__link { + background: rgba(255, 255, 255, 0.1); + border: 1px solid rgba(255, 255, 255, 0.2); +} + +/* Hover states */ +.navbar__link:hover, +.navbar__item.dropdown > .navbar__link:hover { + background: rgba(255, 255, 255, 0.25); + border-color: rgba(255, 255, 255, 0.35); + text-decoration: none; +} + +html[data-theme='dark'] .navbar__link:hover, +html[data-theme='dark'] .navbar__item.dropdown > .navbar__link:hover { + background: rgba(255, 255, 255, 0.15); + border-color: rgba(255, 255, 255, 0.25); +} + +/* Adjust navbar item spacing for better fit */ +.navbar__item { + padding: 0; + margin: 0 0.4rem; +} + +/* Prevent navbar from wrapping on smaller screens */ +@media (max-width: 1200px) { + .navbar__title { + font-size: 0.9rem; + } + + .navbar__link { + padding: 0.35rem 0.7rem; + font-size: 0.9rem; + } +} + +@media (max-width: 996px) { + .navbar__title { + font-size: 0.85rem; + } + + .navbar__link { + padding: 0.3rem 0.6rem; + font-size: 0.85rem; + } + + .navbar__item { + margin: 0 0.15rem; + } +} + +@media (max-width: 768px) { + .navbar__title { + display: none; + } + + .navbar__link { + padding: 0.3rem 0.5rem; + font-size: 0.8rem; + } } \ No newline at end of file diff --git a/src/pages/index.module.css b/src/pages/index.module.css new file mode 100644 index 000000000..3fb916271 --- /dev/null +++ b/src/pages/index.module.css @@ -0,0 +1,267 @@ +.main { + max-width: 1200px; + margin: 0 auto; + padding: 2rem 1rem; +} + +/* Hero Section */ +.hero { + background: linear-gradient(135deg, var(--ifm-color-primary) 0%, var(--ifm-color-primary-dark) 100%); + color: white; + padding: 4rem 1rem; + text-align: center; +} + +.heroContainer { + max-width: 800px; + margin: 0 auto; +} + +.heroTitle { + font-size: 3rem; + font-weight: 700; + margin-bottom: 1rem; + line-height: 1.2; +} + +.heroSubtitle { + font-size: 1.5rem; + margin-bottom: 1.5rem; + font-weight: 500; + opacity: 0.95; +} + +.heroDescription { + font-size: 1.125rem; + opacity: 0.9; + line-height: 1.6; + max-width: 700px; + margin: 0 auto; +} + +/* Products Section */ +.productsSection { + padding: 3rem 0; +} + +.sectionTitle { + font-size: 2.5rem; + font-weight: 700; + text-align: center; + margin-bottom: 3rem; + color: var(--ifm-heading-color); +} + +.productsGrid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-bottom: 3rem; +} + +.productCard { + background: var(--ifm-card-background-color); + border: 1px solid var(--ifm-color-emphasis-300); + border-radius: 12px; + padding: 2rem; + text-decoration: none; + color: inherit; + transition: all 0.3s ease; + display: flex; + flex-direction: column; + gap: 1rem; + position: relative; + overflow: hidden; +} + +.productCard::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--product-color); + transform: scaleX(0); + transform-origin: left; + transition: transform 0.3s ease; +} + +.productCard:hover { + border-color: var(--product-color); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); + transform: translateY(-4px); +} + +.productCard:hover::before { + transform: scaleX(1); +} + +.productEmoji { + font-size: 3.5rem; + line-height: 1; + margin-bottom: 0.5rem; +} + +.productTitle { + margin: 0; + font-size: 1.75rem; + font-weight: 600; + color: var(--ifm-heading-color); +} + +.productDescription { + margin: 0; + flex: 1; + color: var(--ifm-color-emphasis-700); + line-height: 1.6; + font-size: 1rem; +} + +.productLink { + color: var(--product-color); + font-weight: 500; + display: inline-flex; + align-items: center; + transition: transform 0.2s ease; + font-size: 1rem; +} + +.productCard:hover .productLink { + transform: translateX(4px); +} + +/* Governance Section */ +.governanceSection { + padding: 3rem 0; + margin: 3rem 0; +} + +.governanceCard { + background: var(--ifm-card-background-color); + border: 2px solid var(--ifm-color-primary); + border-radius: 12px; + padding: 3rem; + display: flex; + flex-direction: column; + gap: 1.5rem; + align-items: center; + text-align: center; + transition: all 0.3s ease; +} + +.governanceCard:hover { + box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); + transform: translateY(-2px); +} + +.governanceEmoji { + font-size: 4rem; + line-height: 1; +} + +.governanceContent { + max-width: 700px; +} + +.governanceTitle { + margin: 0 0 1rem 0; + font-size: 2rem; + font-weight: 700; + color: var(--ifm-heading-color); +} + +.governanceDescription { + margin: 0; + font-size: 1.125rem; + line-height: 1.6; + color: var(--ifm-color-emphasis-700); +} + +.governanceButton { + background: var(--ifm-color-primary); + color: white; + padding: 0.875rem 2rem; + border-radius: 8px; + text-decoration: none; + font-weight: 600; + font-size: 1.125rem; + transition: all 0.2s ease; + display: inline-block; +} + +.governanceButton:hover { + background: var(--ifm-color-primary-dark); + color: white; + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); +} + +/* Methodology Section */ +.methodologySection { + padding: 4rem 0; + text-align: center; +} + +.methodologyTitle { + font-size: 2.25rem; + font-weight: 700; + margin-bottom: 1rem; + color: var(--ifm-heading-color); +} + +.methodologyDescription { + font-size: 1.125rem; + color: var(--ifm-color-emphasis-700); + margin-bottom: 2.5rem; +} + +.methodologyGrid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.methodologyCard { + background: var(--ifm-background-surface-color); + padding: 2rem; + border-radius: 12px; + border: 1px solid var(--ifm-color-emphasis-300); +} + +.methodologyCard h3 { + font-size: 1.5rem; + margin-bottom: 1rem; + color: var(--ifm-heading-color); +} + +.methodologyCard p { + margin: 0; + line-height: 1.6; + color: var(--ifm-color-emphasis-700); +} + +/* Responsive */ +@media (max-width: 768px) { + .heroTitle { + font-size: 2rem; + } + + .heroSubtitle { + font-size: 1.25rem; + } + + .productsGrid, + .methodologyGrid { + grid-template-columns: 1fr; + } + + .governanceCard { + padding: 2rem; + } + + .sectionTitle { + font-size: 2rem; + } +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 000000000..688864fbe --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,147 @@ +import React from 'react'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import styles from './index.module.css'; + +interface Product { + title: string; + emoji: string; + description: string; + link: string; + color: string; +} + +const products: Product[] = [ + { + title: 'CoW Protocol', + emoji: '🐮', + description: 'Fully permissionless trading protocol leveraging fair combinatorial batch auctions as its price finding mechanism.', + link: '/cow-protocol', + color: '#012f7a', + }, + { + title: 'CoW Swap', + emoji: '🔄', + description: 'User-friendly trading interface built on CoW Protocol, offering MEV protection and optimal prices for swaps.', + link: '/cow-swap', + color: '#1b6aae', + }, + { + title: 'CoW AMM', + emoji: '🌊', + description: 'New type of AMM built to protect LPs from price exploitation in the form of LVR (Loss Versus Rebalancing).', + link: '/cow-amm', + color: '#0c5d99', + }, + { + title: 'MEV Blocker', + emoji: '🏖️', + description: 'RPC endpoint protecting user transactions from MEV attacks such as frontrunning and sandwiching.', + link: '/mevblocker', + color: '#f2994a', + }, +]; + +function Hero() { + return ( +
+
+

CoW DAO Documentation

+

+ Building the most user-protective products in Ethereum +

+

+ CoW DAO is on a mission to innovate the most user-protective products in Ethereum. + Explore our products and learn how to build on top of our protocols. +

+
+
+ ); +} + +function ProductCard({ product }: { product: Product }) { + return ( + +
{product.emoji}
+

{product.title}

+

{product.description}

+ Explore documentation → + + ); +} + +function GovernanceSection() { + return ( +
+
+
🗳️
+
+

CoW DAO

+

+ CoW DAO is of its community, by its community, and for its community. + Learn about our decentralized governance model, token, and how to participate. +

+
+ + Learn about governance → + +
+
+ ); +} + +function MethodologySection() { + return ( +
+

How to use this documentation

+

+ Our documentation follows a structured approach to help you find what you need: +

+
+
+

💡 Concepts

+

Learn what something is (e.g., batch auctions, order types)

+
+
+

🎓 Tutorials

+

Learn how to do something (e.g., create an order, integrate CoW Protocol)

+
+
+

📚 Technical Reference

+

Access technical information (e.g., SDKs, APIs, contracts)

+
+
+
+ ); +} + +export default function Home(): JSX.Element { + const { siteConfig } = useDocusaurusContext(); + return ( + + +
+
+

Our Products

+
+ {products.map((product, idx) => ( + + ))} +
+
+ + + + +
+
+ ); +}