From f23e440197b39ac847a0ca78c421204d3b38f171 Mon Sep 17 00:00:00 2001 From: Nabarun Date: Thu, 6 Jun 2024 11:42:55 +0000 Subject: [PATCH] Generate watcher for sushiswap v3 subgraph (#1) Part of [Generate watchers for sushiswap subgraphs deployed in graph-node](https://www.notion.so/Generate-watchers-for-sushiswap-subgraphs-deployed-in-graph-node-b3f2e475373d4ab1887d9f8720bd5ae6) Co-authored-by: neeraj Reviewed-on: https://git.vdb.to/cerc-io/sushiswap-watcher-ts/pulls/1 Co-authored-by: Nabarun Co-committed-by: Nabarun --- .gitignore | 4 + .husky/pre-commit | 4 + .npmrc | 1 + LICENSE | 662 + lerna.json | 8 + package.json | 24 + packages/v3-watcher/.eslintignore | 2 + packages/v3-watcher/.eslintrc.json | 28 + packages/v3-watcher/.gitignore | 6 + packages/v3-watcher/.husky/pre-commit | 4 + packages/v3-watcher/.npmrc | 1 + packages/v3-watcher/LICENSE | 661 + packages/v3-watcher/README.md | 216 + packages/v3-watcher/environments/local.toml | 109 + packages/v3-watcher/package.json | 77 + .../v3-watcher/src/artifacts/Factory.json | 200 + .../artifacts/NonfungiblePositionManager.json | 1195 ++ packages/v3-watcher/src/artifacts/Pool.json | 990 ++ .../src/cli/checkpoint-cmds/create.ts | 44 + .../src/cli/checkpoint-cmds/verify.ts | 40 + packages/v3-watcher/src/cli/checkpoint.ts | 39 + packages/v3-watcher/src/cli/export-state.ts | 38 + packages/v3-watcher/src/cli/import-state.ts | 39 + packages/v3-watcher/src/cli/index-block.ts | 38 + packages/v3-watcher/src/cli/inspect-cid.ts | 38 + .../src/cli/reset-cmds/job-queue.ts | 22 + .../v3-watcher/src/cli/reset-cmds/state.ts | 24 + .../v3-watcher/src/cli/reset-cmds/watcher.ts | 37 + packages/v3-watcher/src/cli/reset.ts | 24 + packages/v3-watcher/src/cli/watch-contract.ts | 38 + packages/v3-watcher/src/client.ts | 55 + packages/v3-watcher/src/database.ts | 307 + .../v3-watcher/src/entity/BlockProgress.ts | 48 + packages/v3-watcher/src/entity/Bundle.ts | 29 + packages/v3-watcher/src/entity/Burn.ts | 68 + packages/v3-watcher/src/entity/Collect.ts | 56 + packages/v3-watcher/src/entity/Contract.ts | 27 + .../v3-watcher/src/entity/DecreaseEvent.ts | 52 + packages/v3-watcher/src/entity/Event.ts | 38 + packages/v3-watcher/src/entity/Factory.ts | 62 + packages/v3-watcher/src/entity/Flash.ts | 59 + .../v3-watcher/src/entity/FrothyEntity.ts | 21 + .../v3-watcher/src/entity/IncreaseEvent.ts | 52 + packages/v3-watcher/src/entity/Mint.ts | 71 + packages/v3-watcher/src/entity/Pool.ts | 113 + packages/v3-watcher/src/entity/PoolDayData.ts | 83 + .../v3-watcher/src/entity/PoolHourData.ts | 83 + packages/v3-watcher/src/entity/Position.ts | 89 + .../v3-watcher/src/entity/PositionSnapshot.ts | 71 + .../src/entity/SetProtocolFeeEvent.ts | 46 + packages/v3-watcher/src/entity/State.ts | 31 + .../v3-watcher/src/entity/StateSyncStatus.ts | 17 + packages/v3-watcher/src/entity/Subscriber.ts | 21 + packages/v3-watcher/src/entity/Swap.ts | 68 + packages/v3-watcher/src/entity/SyncStatus.ts | 45 + packages/v3-watcher/src/entity/Tick.ts | 86 + packages/v3-watcher/src/entity/TickDayData.ts | 59 + .../v3-watcher/src/entity/TickHourData.ts | 53 + packages/v3-watcher/src/entity/Token.ts | 71 + .../v3-watcher/src/entity/TokenDayData.ts | 65 + .../v3-watcher/src/entity/TokenHourData.ts | 65 + packages/v3-watcher/src/entity/Transaction.ts | 37 + .../v3-watcher/src/entity/UniswapDayData.ts | 47 + packages/v3-watcher/src/fill.ts | 48 + packages/v3-watcher/src/gql/index.ts | 3 + .../v3-watcher/src/gql/mutations/index.ts | 4 + .../src/gql/mutations/watchContract.gql | 3 + packages/v3-watcher/src/gql/queries/_meta.gql | 11 + .../v3-watcher/src/gql/queries/bundle.gql | 6 + .../v3-watcher/src/gql/queries/bundles.gql | 6 + packages/v3-watcher/src/gql/queries/burn.gql | 86 + packages/v3-watcher/src/gql/queries/burns.gql | 86 + .../v3-watcher/src/gql/queries/collect.gql | 50 + .../v3-watcher/src/gql/queries/collects.gql | 50 + .../src/gql/queries/decreaseEvent.gql | 98 + .../src/gql/queries/decreaseEvents.gql | 98 + .../v3-watcher/src/gql/queries/events.gql | 129 + .../src/gql/queries/eventsInRange.gql | 129 + .../v3-watcher/src/gql/queries/factories.gql | 17 + .../v3-watcher/src/gql/queries/factory.gql | 17 + packages/v3-watcher/src/gql/queries/flash.gql | 51 + .../v3-watcher/src/gql/queries/flashes.gql | 51 + .../v3-watcher/src/gql/queries/getState.gql | 15 + .../src/gql/queries/getStateByCID.gql | 15 + .../src/gql/queries/getSyncStatus.gql | 12 + .../src/gql/queries/increaseEvent.gql | 98 + .../src/gql/queries/increaseEvents.gql | 98 + packages/v3-watcher/src/gql/queries/index.ts | 55 + packages/v3-watcher/src/gql/queries/mint.gql | 87 + packages/v3-watcher/src/gql/queries/mints.gql | 87 + packages/v3-watcher/src/gql/queries/pool.gql | 181 + .../src/gql/queries/poolDayData.gql | 53 + .../src/gql/queries/poolDayDatas.gql | 53 + .../src/gql/queries/poolHourData.gql | 53 + .../src/gql/queries/poolHourDatas.gql | 53 + packages/v3-watcher/src/gql/queries/pools.gql | 181 + .../v3-watcher/src/gql/queries/position.gql | 149 + .../src/gql/queries/positionSnapshot.gql | 72 + .../src/gql/queries/positionSnapshots.gql | 72 + .../v3-watcher/src/gql/queries/positions.gql | 149 + .../src/gql/queries/setProtocolFeeEvent.gql | 41 + .../src/gql/queries/setProtocolFeeEvents.gql | 41 + packages/v3-watcher/src/gql/queries/swap.gql | 86 + packages/v3-watcher/src/gql/queries/swaps.gql | 86 + packages/v3-watcher/src/gql/queries/tick.gql | 54 + .../src/gql/queries/tickDayData.gql | 66 + .../src/gql/queries/tickDayDatas.gql | 66 + .../src/gql/queries/tickHourData.gql | 64 + .../src/gql/queries/tickHourDatas.gql | 64 + packages/v3-watcher/src/gql/queries/ticks.gql | 54 + packages/v3-watcher/src/gql/queries/token.gql | 64 + .../src/gql/queries/tokenDayData.gql | 34 + .../src/gql/queries/tokenDayDatas.gql | 34 + .../src/gql/queries/tokenHourData.gql | 34 + .../src/gql/queries/tokenHourDatas.gql | 34 + .../v3-watcher/src/gql/queries/tokens.gql | 64 + .../src/gql/queries/transaction.gql | 72 + .../src/gql/queries/transactions.gql | 72 + .../src/gql/queries/uniswapDayData.gql | 12 + .../src/gql/queries/uniswapDayDatas.gql | 12 + .../v3-watcher/src/gql/subscriptions/index.ts | 4 + .../src/gql/subscriptions/onEvent.gql | 129 + packages/v3-watcher/src/hooks.ts | 86 + packages/v3-watcher/src/indexer.ts | 1456 ++ packages/v3-watcher/src/job-runner.ts | 48 + packages/v3-watcher/src/resolvers.ts | 1320 ++ packages/v3-watcher/src/schema.gql | 5298 ++++++++ packages/v3-watcher/src/server.ts | 43 + packages/v3-watcher/src/types.ts | 3 + .../subgraph-build/Factory/Factory.wasm | Bin 0 -> 228235 bytes .../subgraph-build/Factory/abis/ERC20.json | 222 + .../Factory/abis/ERC20NameBytes.json | 17 + .../Factory/abis/ERC20SymbolBytes.json | 17 + .../subgraph-build/Factory/abis/factory.json | 198 + .../subgraph-build/Factory/abis/pool.json | 988 ++ .../NonfungiblePositionManager.wasm | Bin 0 -> 232581 bytes .../abis/ERC20.json | 222 + .../abis/NonfungiblePositionManager.json | 1193 ++ .../abis/factory.json | 198 + .../NonfungiblePositionManager/abis/pool.json | 988 ++ .../subgraph-build/Pool/abis/ERC20.json | 222 + .../subgraph-build/Pool/abis/factory.json | 198 + .../subgraph-build/Pool/abis/pool.json | 988 ++ .../v3-watcher/subgraph-build/schema.graphql | 707 + .../v3-watcher/subgraph-build/subgraph.yaml | 100 + .../subgraph-build/templates/Pool/Pool.wasm | Bin 0 -> 326224 bytes packages/v3-watcher/tsconfig.json | 74 + yarn.lock | 11292 ++++++++++++++++ 148 files changed, 36199 insertions(+) create mode 100644 .gitignore create mode 100755 .husky/pre-commit create mode 100644 .npmrc create mode 100644 LICENSE create mode 100644 lerna.json create mode 100644 package.json create mode 100644 packages/v3-watcher/.eslintignore create mode 100644 packages/v3-watcher/.eslintrc.json create mode 100644 packages/v3-watcher/.gitignore create mode 100755 packages/v3-watcher/.husky/pre-commit create mode 100644 packages/v3-watcher/.npmrc create mode 100644 packages/v3-watcher/LICENSE create mode 100644 packages/v3-watcher/README.md create mode 100644 packages/v3-watcher/environments/local.toml create mode 100644 packages/v3-watcher/package.json create mode 100644 packages/v3-watcher/src/artifacts/Factory.json create mode 100644 packages/v3-watcher/src/artifacts/NonfungiblePositionManager.json create mode 100644 packages/v3-watcher/src/artifacts/Pool.json create mode 100644 packages/v3-watcher/src/cli/checkpoint-cmds/create.ts create mode 100644 packages/v3-watcher/src/cli/checkpoint-cmds/verify.ts create mode 100644 packages/v3-watcher/src/cli/checkpoint.ts create mode 100644 packages/v3-watcher/src/cli/export-state.ts create mode 100644 packages/v3-watcher/src/cli/import-state.ts create mode 100644 packages/v3-watcher/src/cli/index-block.ts create mode 100644 packages/v3-watcher/src/cli/inspect-cid.ts create mode 100644 packages/v3-watcher/src/cli/reset-cmds/job-queue.ts create mode 100644 packages/v3-watcher/src/cli/reset-cmds/state.ts create mode 100644 packages/v3-watcher/src/cli/reset-cmds/watcher.ts create mode 100644 packages/v3-watcher/src/cli/reset.ts create mode 100644 packages/v3-watcher/src/cli/watch-contract.ts create mode 100644 packages/v3-watcher/src/client.ts create mode 100644 packages/v3-watcher/src/database.ts create mode 100644 packages/v3-watcher/src/entity/BlockProgress.ts create mode 100644 packages/v3-watcher/src/entity/Bundle.ts create mode 100644 packages/v3-watcher/src/entity/Burn.ts create mode 100644 packages/v3-watcher/src/entity/Collect.ts create mode 100644 packages/v3-watcher/src/entity/Contract.ts create mode 100644 packages/v3-watcher/src/entity/DecreaseEvent.ts create mode 100644 packages/v3-watcher/src/entity/Event.ts create mode 100644 packages/v3-watcher/src/entity/Factory.ts create mode 100644 packages/v3-watcher/src/entity/Flash.ts create mode 100644 packages/v3-watcher/src/entity/FrothyEntity.ts create mode 100644 packages/v3-watcher/src/entity/IncreaseEvent.ts create mode 100644 packages/v3-watcher/src/entity/Mint.ts create mode 100644 packages/v3-watcher/src/entity/Pool.ts create mode 100644 packages/v3-watcher/src/entity/PoolDayData.ts create mode 100644 packages/v3-watcher/src/entity/PoolHourData.ts create mode 100644 packages/v3-watcher/src/entity/Position.ts create mode 100644 packages/v3-watcher/src/entity/PositionSnapshot.ts create mode 100644 packages/v3-watcher/src/entity/SetProtocolFeeEvent.ts create mode 100644 packages/v3-watcher/src/entity/State.ts create mode 100644 packages/v3-watcher/src/entity/StateSyncStatus.ts create mode 100644 packages/v3-watcher/src/entity/Subscriber.ts create mode 100644 packages/v3-watcher/src/entity/Swap.ts create mode 100644 packages/v3-watcher/src/entity/SyncStatus.ts create mode 100644 packages/v3-watcher/src/entity/Tick.ts create mode 100644 packages/v3-watcher/src/entity/TickDayData.ts create mode 100644 packages/v3-watcher/src/entity/TickHourData.ts create mode 100644 packages/v3-watcher/src/entity/Token.ts create mode 100644 packages/v3-watcher/src/entity/TokenDayData.ts create mode 100644 packages/v3-watcher/src/entity/TokenHourData.ts create mode 100644 packages/v3-watcher/src/entity/Transaction.ts create mode 100644 packages/v3-watcher/src/entity/UniswapDayData.ts create mode 100644 packages/v3-watcher/src/fill.ts create mode 100644 packages/v3-watcher/src/gql/index.ts create mode 100644 packages/v3-watcher/src/gql/mutations/index.ts create mode 100644 packages/v3-watcher/src/gql/mutations/watchContract.gql create mode 100644 packages/v3-watcher/src/gql/queries/_meta.gql create mode 100644 packages/v3-watcher/src/gql/queries/bundle.gql create mode 100644 packages/v3-watcher/src/gql/queries/bundles.gql create mode 100644 packages/v3-watcher/src/gql/queries/burn.gql create mode 100644 packages/v3-watcher/src/gql/queries/burns.gql create mode 100644 packages/v3-watcher/src/gql/queries/collect.gql create mode 100644 packages/v3-watcher/src/gql/queries/collects.gql create mode 100644 packages/v3-watcher/src/gql/queries/decreaseEvent.gql create mode 100644 packages/v3-watcher/src/gql/queries/decreaseEvents.gql create mode 100644 packages/v3-watcher/src/gql/queries/events.gql create mode 100644 packages/v3-watcher/src/gql/queries/eventsInRange.gql create mode 100644 packages/v3-watcher/src/gql/queries/factories.gql create mode 100644 packages/v3-watcher/src/gql/queries/factory.gql create mode 100644 packages/v3-watcher/src/gql/queries/flash.gql create mode 100644 packages/v3-watcher/src/gql/queries/flashes.gql create mode 100644 packages/v3-watcher/src/gql/queries/getState.gql create mode 100644 packages/v3-watcher/src/gql/queries/getStateByCID.gql create mode 100644 packages/v3-watcher/src/gql/queries/getSyncStatus.gql create mode 100644 packages/v3-watcher/src/gql/queries/increaseEvent.gql create mode 100644 packages/v3-watcher/src/gql/queries/increaseEvents.gql create mode 100644 packages/v3-watcher/src/gql/queries/index.ts create mode 100644 packages/v3-watcher/src/gql/queries/mint.gql create mode 100644 packages/v3-watcher/src/gql/queries/mints.gql create mode 100644 packages/v3-watcher/src/gql/queries/pool.gql create mode 100644 packages/v3-watcher/src/gql/queries/poolDayData.gql create mode 100644 packages/v3-watcher/src/gql/queries/poolDayDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/poolHourData.gql create mode 100644 packages/v3-watcher/src/gql/queries/poolHourDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/pools.gql create mode 100644 packages/v3-watcher/src/gql/queries/position.gql create mode 100644 packages/v3-watcher/src/gql/queries/positionSnapshot.gql create mode 100644 packages/v3-watcher/src/gql/queries/positionSnapshots.gql create mode 100644 packages/v3-watcher/src/gql/queries/positions.gql create mode 100644 packages/v3-watcher/src/gql/queries/setProtocolFeeEvent.gql create mode 100644 packages/v3-watcher/src/gql/queries/setProtocolFeeEvents.gql create mode 100644 packages/v3-watcher/src/gql/queries/swap.gql create mode 100644 packages/v3-watcher/src/gql/queries/swaps.gql create mode 100644 packages/v3-watcher/src/gql/queries/tick.gql create mode 100644 packages/v3-watcher/src/gql/queries/tickDayData.gql create mode 100644 packages/v3-watcher/src/gql/queries/tickDayDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/tickHourData.gql create mode 100644 packages/v3-watcher/src/gql/queries/tickHourDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/ticks.gql create mode 100644 packages/v3-watcher/src/gql/queries/token.gql create mode 100644 packages/v3-watcher/src/gql/queries/tokenDayData.gql create mode 100644 packages/v3-watcher/src/gql/queries/tokenDayDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/tokenHourData.gql create mode 100644 packages/v3-watcher/src/gql/queries/tokenHourDatas.gql create mode 100644 packages/v3-watcher/src/gql/queries/tokens.gql create mode 100644 packages/v3-watcher/src/gql/queries/transaction.gql create mode 100644 packages/v3-watcher/src/gql/queries/transactions.gql create mode 100644 packages/v3-watcher/src/gql/queries/uniswapDayData.gql create mode 100644 packages/v3-watcher/src/gql/queries/uniswapDayDatas.gql create mode 100644 packages/v3-watcher/src/gql/subscriptions/index.ts create mode 100644 packages/v3-watcher/src/gql/subscriptions/onEvent.gql create mode 100644 packages/v3-watcher/src/hooks.ts create mode 100644 packages/v3-watcher/src/indexer.ts create mode 100644 packages/v3-watcher/src/job-runner.ts create mode 100644 packages/v3-watcher/src/resolvers.ts create mode 100644 packages/v3-watcher/src/schema.gql create mode 100644 packages/v3-watcher/src/server.ts create mode 100644 packages/v3-watcher/src/types.ts create mode 100644 packages/v3-watcher/subgraph-build/Factory/Factory.wasm create mode 100644 packages/v3-watcher/subgraph-build/Factory/abis/ERC20.json create mode 100644 packages/v3-watcher/subgraph-build/Factory/abis/ERC20NameBytes.json create mode 100644 packages/v3-watcher/subgraph-build/Factory/abis/ERC20SymbolBytes.json create mode 100644 packages/v3-watcher/subgraph-build/Factory/abis/factory.json create mode 100644 packages/v3-watcher/subgraph-build/Factory/abis/pool.json create mode 100644 packages/v3-watcher/subgraph-build/NonfungiblePositionManager/NonfungiblePositionManager.wasm create mode 100644 packages/v3-watcher/subgraph-build/NonfungiblePositionManager/abis/ERC20.json create mode 100644 packages/v3-watcher/subgraph-build/NonfungiblePositionManager/abis/NonfungiblePositionManager.json create mode 100644 packages/v3-watcher/subgraph-build/NonfungiblePositionManager/abis/factory.json create mode 100644 packages/v3-watcher/subgraph-build/NonfungiblePositionManager/abis/pool.json create mode 100644 packages/v3-watcher/subgraph-build/Pool/abis/ERC20.json create mode 100644 packages/v3-watcher/subgraph-build/Pool/abis/factory.json create mode 100644 packages/v3-watcher/subgraph-build/Pool/abis/pool.json create mode 100644 packages/v3-watcher/subgraph-build/schema.graphql create mode 100644 packages/v3-watcher/subgraph-build/subgraph.yaml create mode 100644 packages/v3-watcher/subgraph-build/templates/Pool/Pool.wasm create mode 100644 packages/v3-watcher/tsconfig.json create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ca63848 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +out/ +.vscode diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..6cdaab7 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +yarn lint diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..6b64c5b --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +@cerc-io:registry=https://git.vdb.to/api/packages/cerc-io/npm/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d60996d --- /dev/null +++ b/LICENSE @@ -0,0 +1,662 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for + software and other kinds of works, specifically designed to ensure + cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + our General Public Licenses are intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights + with two steps: (1) assert copyright on the software, and (2) offer + you this License which gives you legal permission to copy, distribute + and/or modify the software. + + A secondary benefit of defending all users' freedom is that + improvements made in alternate versions of the program, if they + receive widespread use, become available for other developers to + incorporate. Many developers of free software are heartened and + encouraged by the resulting cooperation. However, in the case of + software used on network servers, this result may fail to come about. + The GNU General Public License permits making a modified version and + letting the public access it on a server without ever releasing its + source code to the public. + + The GNU Affero General Public License is designed specifically to + ensure that, in such cases, the modified source code becomes available + to the community. It requires the operator of a network server to + provide the source code of the modified version running there to the + users of that server. Therefore, public use of a modified version, on + a publicly accessible server, gives the public access to the source + code of the modified version. + + An older license, called the Affero General Public License and + published by Affero, was designed to accomplish similar goals. This is + a different license, not a version of the Affero GPL, but Affero has + released a new version of the Affero GPL which permits relicensing under + this license. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the + Program, your modified version must prominently offer all users + interacting with it remotely through a computer network (if your version + supports such interaction) an opportunity to receive the Corresponding + Source of your version by providing access to the Corresponding Source + from a network server at no charge, through some standard or customary + means of facilitating copying of software. This Corresponding Source + shall include the Corresponding Source for any work covered by version 3 + of the GNU General Public License that is incorporated pursuant to the + following paragraph. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the work with which it is combined will remain governed by version + 3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU Affero General Public License from time to time. Such new versions + will be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU Affero General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU Affero General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU Affero General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer + network, you should also make sure that it provides a way for users to + get its source. For example, if your program is a web application, its + interface could display a "Source" link that leads users to an archive + of the code. There are many ways you could offer source, and different + solutions will be better for different programs; see section 13 for the + specific requirements. + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU AGPL, see + . + \ No newline at end of file diff --git a/lerna.json b/lerna.json new file mode 100644 index 0000000..7ce7b3e --- /dev/null +++ b/lerna.json @@ -0,0 +1,8 @@ +{ + "packages": [ + "packages/*" + ], + "useWorkspaces": true, + "version": "0.1.4", + "npmClient": "yarn" +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..bf5d4f5 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "azimuth-watcher-ts", + "private": true, + "license": "AGPL-3.0", + "workspaces": { + "packages": [ + "packages/*" + ], + "nohoist": [ + "**/@cerc-io/rpc-eth-client", + "**/typeorm-naming-strategies" + ] + }, + "scripts": { + "build": "lerna run build --stream", + "lint": "lerna run lint --stream -- --max-warnings=0", + "prepare": "husky install", + "version:set": "lerna version --no-git-tag-version" + }, + "devDependencies": { + "husky": "^7.0.2", + "lerna": "^6.6.1" + } +} diff --git a/packages/v3-watcher/.eslintignore b/packages/v3-watcher/.eslintignore new file mode 100644 index 0000000..55cb522 --- /dev/null +++ b/packages/v3-watcher/.eslintignore @@ -0,0 +1,2 @@ +# Don't lint build output. +dist diff --git a/packages/v3-watcher/.eslintrc.json b/packages/v3-watcher/.eslintrc.json new file mode 100644 index 0000000..a2b842c --- /dev/null +++ b/packages/v3-watcher/.eslintrc.json @@ -0,0 +1,28 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "semistandard", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "indent": ["error", 2, { "SwitchCase": 1 }], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": [ + "warn", + { + "allowArgumentsExplicitlyTypedAsAny": true + } + ] + } +} diff --git a/packages/v3-watcher/.gitignore b/packages/v3-watcher/.gitignore new file mode 100644 index 0000000..0b4cc3f --- /dev/null +++ b/packages/v3-watcher/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +dist/ +out/ + +.vscode +.idea diff --git a/packages/v3-watcher/.husky/pre-commit b/packages/v3-watcher/.husky/pre-commit new file mode 100755 index 0000000..9dcd433 --- /dev/null +++ b/packages/v3-watcher/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn lint diff --git a/packages/v3-watcher/.npmrc b/packages/v3-watcher/.npmrc new file mode 100644 index 0000000..6b64c5b --- /dev/null +++ b/packages/v3-watcher/.npmrc @@ -0,0 +1 @@ +@cerc-io:registry=https://git.vdb.to/api/packages/cerc-io/npm/ diff --git a/packages/v3-watcher/LICENSE b/packages/v3-watcher/LICENSE new file mode 100644 index 0000000..331f7cf --- /dev/null +++ b/packages/v3-watcher/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for + software and other kinds of works, specifically designed to ensure + cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed + to take away your freedom to share and change the works. By contrast, + our General Public Licenses are intended to guarantee your freedom to + share and change all versions of a program--to make sure it remains free + software for all its users. + + When we speak of free software, we are referring to freedom, not + price. Our General Public Licenses are designed to make sure that you + have the freedom to distribute copies of free software (and charge for + them if you wish), that you receive source code or can get it if you + want it, that you can change the software or use pieces of it in new + free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights + with two steps: (1) assert copyright on the software, and (2) offer + you this License which gives you legal permission to copy, distribute + and/or modify the software. + + A secondary benefit of defending all users' freedom is that + improvements made in alternate versions of the program, if they + receive widespread use, become available for other developers to + incorporate. Many developers of free software are heartened and + encouraged by the resulting cooperation. However, in the case of + software used on network servers, this result may fail to come about. + The GNU General Public License permits making a modified version and + letting the public access it on a server without ever releasing its + source code to the public. + + The GNU Affero General Public License is designed specifically to + ensure that, in such cases, the modified source code becomes available + to the community. It requires the operator of a network server to + provide the source code of the modified version running there to the + users of that server. Therefore, public use of a modified version, on + a publicly accessible server, gives the public access to the source + code of the modified version. + + An older license, called the Affero General Public License and + published by Affero, was designed to accomplish similar goals. This is + a different license, not a version of the Affero GPL, but Affero has + released a new version of the Affero GPL which permits relicensing under + this license. + + The precise terms and conditions for copying, distribution and + modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of + works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this + License. Each licensee is addressed as "you". "Licensees" and + "recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work + in a fashion requiring copyright permission, other than the making of an + exact copy. The resulting work is called a "modified version" of the + earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based + on the Program. + + To "propagate" a work means to do anything with it that, without + permission, would make you directly or secondarily liable for + infringement under applicable copyright law, except executing it on a + computer or modifying a private copy. Propagation includes copying, + distribution (with or without modification), making available to the + public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other + parties to make or receive copies. Mere interaction with a user through + a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" + to the extent that it includes a convenient and prominently visible + feature that (1) displays an appropriate copyright notice, and (2) + tells the user that there is no warranty for the work (except to the + extent that warranties are provided), that licensees may convey the + work under this License, and how to view a copy of this License. If + the interface presents a list of user commands or options, such as a + menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work + for making modifications to it. "Object code" means any non-source + form of a work. + + A "Standard Interface" means an interface that either is an official + standard defined by a recognized standards body, or, in the case of + interfaces specified for a particular programming language, one that + is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other + than the work as a whole, that (a) is included in the normal form of + packaging a Major Component, but which is not part of that Major + Component, and (b) serves only to enable use of the work with that + Major Component, or to implement a Standard Interface for which an + implementation is available to the public in source code form. A + "Major Component", in this context, means a major essential component + (kernel, window system, and so on) of the specific operating system + (if any) on which the executable work runs, or a compiler used to + produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all + the source code needed to generate, install, and (for an executable + work) run the object code and to modify the work, including scripts to + control those activities. However, it does not include the work's + System Libraries, or general-purpose tools or generally available free + programs which are used unmodified in performing those activities but + which are not part of the work. For example, Corresponding Source + includes interface definition files associated with source files for + the work, and the source code for shared libraries and dynamically + linked subprograms that the work is specifically designed to require, + such as by intimate data communication or control flow between those + subprograms and other parts of the work. + + The Corresponding Source need not include anything that users + can regenerate automatically from other parts of the Corresponding + Source. + + The Corresponding Source for a work in source code form is that + same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of + copyright on the Program, and are irrevocable provided the stated + conditions are met. This License explicitly affirms your unlimited + permission to run the unmodified Program. The output from running a + covered work is covered by this License only if the output, given its + content, constitutes a covered work. This License acknowledges your + rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not + convey, without conditions so long as your license otherwise remains + in force. You may convey covered works to others for the sole purpose + of having them make modifications exclusively for you, or provide you + with facilities for running those works, provided that you comply with + the terms of this License in conveying all material for which you do + not control copyright. Those thus making or running the covered works + for you must do so exclusively on your behalf, under your direction + and control, on terms that prohibit them from making any copies of + your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under + the conditions stated below. Sublicensing is not allowed; section 10 + makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological + measure under any applicable law fulfilling obligations under article + 11 of the WIPO copyright treaty adopted on 20 December 1996, or + similar laws prohibiting or restricting circumvention of such + measures. + + When you convey a covered work, you waive any legal power to forbid + circumvention of technological measures to the extent such circumvention + is effected by exercising rights under this License with respect to + the covered work, and you disclaim any intention to limit operation or + modification of the work as a means of enforcing, against the work's + users, your or third parties' legal rights to forbid circumvention of + technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you + receive it, in any medium, provided that you conspicuously and + appropriately publish on each copy an appropriate copyright notice; + keep intact all notices stating that this License and any + non-permissive terms added in accord with section 7 apply to the code; + keep intact all notices of the absence of any warranty; and give all + recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, + and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to + produce it from the Program, in the form of source code under the + terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent + works, which are not by their nature extensions of the covered work, + and which are not combined with it such as to form a larger program, + in or on a volume of a storage or distribution medium, is called an + "aggregate" if the compilation and its resulting copyright are not + used to limit the access or legal rights of the compilation's users + beyond what the individual works permit. Inclusion of a covered work + in an aggregate does not cause this License to apply to the other + parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms + of sections 4 and 5, provided that you also convey the + machine-readable Corresponding Source under the terms of this License, + in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded + from the Corresponding Source as a System Library, need not be + included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any + tangible personal property which is normally used for personal, family, + or household purposes, or (2) anything designed or sold for incorporation + into a dwelling. In determining whether a product is a consumer product, + doubtful cases shall be resolved in favor of coverage. For a particular + product received by a particular user, "normally used" refers to a + typical or common use of that class of product, regardless of the status + of the particular user or of the way in which the particular user + actually uses, or expects or is expected to use, the product. A product + is a consumer product regardless of whether the product has substantial + commercial, industrial or non-consumer uses, unless such uses represent + the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, + procedures, authorization keys, or other information required to install + and execute modified versions of a covered work in that User Product from + a modified version of its Corresponding Source. The information must + suffice to ensure that the continued functioning of the modified object + code is in no case prevented or interfered with solely because + modification has been made. + + If you convey an object code work under this section in, or with, or + specifically for use in, a User Product, and the conveying occurs as + part of a transaction in which the right of possession and use of the + User Product is transferred to the recipient in perpetuity or for a + fixed term (regardless of how the transaction is characterized), the + Corresponding Source conveyed under this section must be accompanied + by the Installation Information. But this requirement does not apply + if neither you nor any third party retains the ability to install + modified object code on the User Product (for example, the work has + been installed in ROM). + + The requirement to provide Installation Information does not include a + requirement to continue to provide support service, warranty, or updates + for a work that has been modified or installed by the recipient, or for + the User Product in which it has been modified or installed. Access to a + network may be denied when the modification itself materially and + adversely affects the operation of the network or violates the rules and + protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, + in accord with this section must be in a format that is publicly + documented (and with an implementation available to the public in + source code form), and must require no special password or key for + unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this + License by making exceptions from one or more of its conditions. + Additional permissions that are applicable to the entire Program shall + be treated as though they were included in this License, to the extent + that they are valid under applicable law. If additional permissions + apply only to part of the Program, that part may be used separately + under those permissions, but the entire Program remains governed by + this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option + remove any additional permissions from that copy, or from any part of + it. (Additional permissions may be written to require their own + removal in certain cases when you modify the work.) You may place + additional permissions on material, added by you to a covered work, + for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you + add to a covered work, you may (if authorized by the copyright holders of + that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further + restrictions" within the meaning of section 10. If the Program as you + received it, or any part of it, contains a notice stating that it is + governed by this License along with a term that is a further + restriction, you may remove that term. If a license document contains + a further restriction but permits relicensing or conveying under this + License, you may add to a covered work material governed by the terms + of that license document, provided that the further restriction does + not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you + must place, in the relevant source files, a statement of the + additional terms that apply to those files, or a notice indicating + where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the + form of a separately written license, or stated as exceptions; + the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly + provided under this License. Any attempt otherwise to propagate or + modify it is void, and will automatically terminate your rights under + this License (including any patent licenses granted under the third + paragraph of section 11). + + However, if you cease all violation of this License, then your + license from a particular copyright holder is reinstated (a) + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright + holder fails to notify you of the violation by some reasonable means + prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is + reinstated permanently if the copyright holder notifies you of the + violation by some reasonable means, this is the first time you have + received notice of violation of this License (for any work) from that + copyright holder, and you cure the violation prior to 30 days after + your receipt of the notice. + + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under + this License. If your rights have been terminated and not permanently + reinstated, you do not qualify to receive new licenses for the same + material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or + run a copy of the Program. Ancillary propagation of a covered work + occurring solely as a consequence of using peer-to-peer transmission + to receive a copy likewise does not require acceptance. However, + nothing other than this License grants you permission to propagate or + modify any covered work. These actions infringe copyright if you do + not accept this License. Therefore, by modifying or propagating a + covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically + receives a license from the original licensors, to run, modify and + propagate that work, subject to this License. You are not responsible + for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an + organization, or substantially all assets of one, or subdividing an + organization, or merging organizations. If propagation of a covered + work results from an entity transaction, each party to that + transaction who receives a copy of the work also receives whatever + licenses to the work the party's predecessor in interest had or could + give under the previous paragraph, plus a right to possession of the + Corresponding Source of the work from the predecessor in interest, if + the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the + rights granted or affirmed under this License. For example, you may + not impose a license fee, royalty, or other charge for exercise of + rights granted under this License, and you may not initiate litigation + (including a cross-claim or counterclaim in a lawsuit) alleging that + any patent claim is infringed by making, using, selling, offering for + sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this + License of the Program or a work on which the Program is based. The + work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims + owned or controlled by the contributor, whether already acquired or + hereafter acquired, that would be infringed by some manner, permitted + by this License, of making, using, or selling its contributor version, + but do not include claims that would be infringed only as a + consequence of further modification of the contributor version. For + purposes of this definition, "control" includes the right to grant + patent sublicenses in a manner consistent with the requirements of + this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free + patent license under the contributor's essential patent claims, to + make, use, sell, offer for sale, import and otherwise run, modify and + propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express + agreement or commitment, however denominated, not to enforce a patent + (such as an express permission to practice a patent or covenant not to + sue for patent infringement). To "grant" such a patent license to a + party means to make such an agreement or commitment not to enforce a + patent against the party. + + If you convey a covered work, knowingly relying on a patent license, + and the Corresponding Source of the work is not available for anyone + to copy, free of charge and under the terms of this License, through a + publicly available network server or other readily accessible means, + then you must either (1) cause the Corresponding Source to be so + available, or (2) arrange to deprive yourself of the benefit of the + patent license for this particular work, or (3) arrange, in a manner + consistent with the requirements of this License, to extend the patent + license to downstream recipients. "Knowingly relying" means you have + actual knowledge that, but for the patent license, your conveying the + covered work in a country, or your recipient's use of the covered work + in a country, would infringe one or more identifiable patents in that + country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or + arrangement, you convey, or propagate by procuring conveyance of, a + covered work, and grant a patent license to some of the parties + receiving the covered work authorizing them to use, propagate, modify + or convey a specific copy of the covered work, then the patent license + you grant is automatically extended to all recipients of the covered + work and works based on it. + + A patent license is "discriminatory" if it does not include within + the scope of its coverage, prohibits the exercise of, or is + conditioned on the non-exercise of one or more of the rights that are + specifically granted under this License. You may not convey a covered + work if you are a party to an arrangement with a third party that is + in the business of distributing software, under which you make payment + to the third party based on the extent of your activity of conveying + the work, and under which the third party grants, to any of the + parties who would receive the covered work from you, a discriminatory + patent license (a) in connection with copies of the covered work + conveyed by you (or copies made from those copies), or (b) primarily + for and in connection with specific products or compilations that + contain the covered work, unless you entered into that arrangement, + or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting + any implied license or other defenses to infringement that may + otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot convey a + covered work so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you may + not convey it at all. For example, if you agree to terms that obligate you + to collect a royalty for further conveying from those to whom you convey + the Program, the only way you could satisfy both those terms and this + License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the + Program, your modified version must prominently offer all users + interacting with it remotely through a computer network (if your version + supports such interaction) an opportunity to receive the Corresponding + Source of your version by providing access to the Corresponding Source + from a network server at no charge, through some standard or customary + means of facilitating copying of software. This Corresponding Source + shall include the Corresponding Source for any work covered by version 3 + of the GNU General Public License that is incorporated pursuant to the + following paragraph. + + Notwithstanding any other provision of this License, you have + permission to link or combine any covered work with a work licensed + under version 3 of the GNU General Public License into a single + combined work, and to convey the resulting work. The terms of this + License will continue to apply to the part which is the covered work, + but the work with which it is combined will remain governed by version + 3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of + the GNU Affero General Public License from time to time. Such new versions + will be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies that a certain numbered version of the GNU Affero General + Public License "or any later version" applies to it, you have the + option of following the terms and conditions either of that numbered + version or of any later version published by the Free Software + Foundation. If the Program does not specify a version number of the + GNU Affero General Public License, you may choose any version ever published + by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future + versions of the GNU Affero General Public License can be used, that proxy's + public statement of acceptance of a version permanently authorizes you + to choose that version for the Program. + + Later license versions may give you additional or different + permissions. However, no additional obligations are imposed on any + author or copyright holder as a result of your choosing to follow a + later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY + APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM + IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF + ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS + THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY + GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE + USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD + PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), + EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF + SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided + above cannot be given local legal effect according to their terms, + reviewing courts shall apply local law that most closely approximates + an absolute waiver of all civil liability in connection with the + Program, unless a warranty or assumption of liability accompanies a + copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + state the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer + network, you should also make sure that it provides a way for users to + get its source. For example, if your program is a web application, its + interface could display a "Source" link that leads users to an archive + of the code. There are many ways you could offer source, and different + solutions will be better for different programs; see section 13 for the + specific requirements. + + You should also get your employer (if you work as a programmer) or school, + if any, to sign a "copyright disclaimer" for the program, if necessary. + For more information on this, and how to apply and follow the GNU AGPL, see + . diff --git a/packages/v3-watcher/README.md b/packages/v3-watcher/README.md new file mode 100644 index 0000000..6a71b43 --- /dev/null +++ b/packages/v3-watcher/README.md @@ -0,0 +1,216 @@ +# v3-watcher + +## Source + +* Subgraph: sushiswap-subgraphs [v0.1.1-watcher-0.1.0](https://github.com/cerc-io/sushiswap-subgraphs/releases/tag/v0.1.1-watcher-0.1.0) + +## Setup + +* Run the following command to install required packages: + + ```bash + yarn + ``` + +* Create a postgres12 database for the watcher: + + ```bash + sudo su - postgres + createdb v3-watcher + ``` + +* If the watcher is an `active` watcher: + + Create database for the job queue and enable the `pgcrypto` extension on them (https://github.com/timgit/pg-boss/blob/master/docs/usage.md#intro): + + ``` + createdb v3-watcher-job-queue + ``` + + ``` + postgres@tesla:~$ psql -U postgres -h localhost v3-watcher-job-queue + Password for user postgres: + psql (12.7 (Ubuntu 12.7-1.pgdg18.04+1)) + SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) + Type "help" for help. + + v3-watcher-job-queue=# CREATE EXTENSION pgcrypto; + CREATE EXTENSION + v3-watcher-job-queue=# exit + ``` + +* In the [config file](./environments/local.toml): + + * Update the database connection settings. + + * Update the `upstream` config and provide the `ipld-eth-server` GQL API endpoint. + + * Update the `server` config with state checkpoint settings. + +## Customize + +* Indexing on an event: + + * Edit the custom hook function `handleEvent` (triggered on an event) in [hooks.ts](./src/hooks.ts) to perform corresponding indexing using the `Indexer` object. + + * While using the indexer storage methods for indexing, pass `diff` as true if default state is desired to be generated using the state variables being indexed. + +* Generating state: + + * Edit the custom hook function `createInitialState` (triggered if the watcher passes the start block, checkpoint: `true`) in [hooks.ts](./src/hooks.ts) to save an initial `State` using the `Indexer` object. + + * Edit the custom hook function `createStateDiff` (triggered on a block) in [hooks.ts](./src/hooks.ts) to save the state in a `diff` `State` using the `Indexer` object. The default state (if exists) is updated. + + * Edit the custom hook function `createStateCheckpoint` (triggered just before default and CLI checkpoint) in [hooks.ts](./src/hooks.ts) to save the state in a `checkpoint` `State` using the `Indexer` object. + +### GQL Caching + +To enable GQL requests caching: + +* Update the `server.gql.cache` config with required settings. + +* In the GQL [schema file](./src/schema.gql), use the `cacheControl` directive to apply cache hints at schema level. + + * Eg. Set `inheritMaxAge` to true for non-scalar fields of a type. + +* In the GQL [resolvers file](./src/resolvers.ts), uncomment the `setGQLCacheHints()` calls in resolvers for required queries. + +## Run + +* If the watcher is a `lazy` watcher: + + * Run the server: + + ```bash + yarn server + ``` + + GQL console: http://localhost:3008/graphql + +* If the watcher is an `active` watcher: + + * Run the job-runner: + + ```bash + yarn job-runner + ``` + + * Run the server: + + ```bash + yarn server + ``` + + GQL console: http://localhost:3008/graphql + + * To watch a contract: + + ```bash + yarn watch:contract --address --kind --checkpoint --starting-block [block-number] + ``` + + * `address`: Address or identifier of the contract to be watched. + * `kind`: Kind of the contract. + * `checkpoint`: Turn checkpointing on (`true` | `false`). + * `starting-block`: Starting block for the contract (default: `1`). + + Examples: + + Watch a contract with its address and checkpointing on: + + ```bash + yarn watch:contract --address 0x1F78641644feB8b64642e833cE4AFE93DD6e7833 --kind ERC20 --checkpoint true + ``` + + Watch a contract with its identifier and checkpointing on: + + ```bash + yarn watch:contract --address MyProtocol --kind protocol --checkpoint true + ``` + + * To fill a block range: + + ```bash + yarn fill --start-block --end-block + ``` + + * `start-block`: Block number to start filling from. + * `end-block`: Block number till which to fill. + + * To create a checkpoint for a contract: + + ```bash + yarn checkpoint create --address --block-hash [block-hash] + ``` + + * `address`: Address or identifier of the contract for which to create a checkpoint. + * `block-hash`: Hash of a block (in the pruned region) at which to create the checkpoint (default: latest canonical block hash). + + * To verify a checkpoint: + + ```bash + yarn checkpoint verify --cid + ``` + + `cid`: CID of the checkpoint for which to verify. + + * To reset the watcher to a previous block number: + + * Reset watcher: + + ```bash + yarn reset watcher --block-number + ``` + + * Reset job-queue: + + ```bash + yarn reset job-queue + ``` + + * Reset state: + + ```bash + yarn reset state --block-number + ``` + + * `block-number`: Block number to which to reset the watcher. + + * To export and import the watcher state: + + * In source watcher, export watcher state: + + ```bash + yarn export-state --export-file [export-file-path] --block-number [snapshot-block-height] + ``` + + * `export-file`: Path of file to which to export the watcher data. + * `block-number`: Block height at which to take snapshot for export. + + * In target watcher, run job-runner: + + ```bash + yarn job-runner + ``` + + * Import watcher state: + + ```bash + yarn import-state --import-file + ``` + + * `import-file`: Path of file from which to import the watcher data. + + * Run server: + + ```bash + yarn server + ``` + + * To inspect a CID: + + ```bash + yarn inspect-cid --cid + ``` + + * `cid`: CID to be inspected. diff --git a/packages/v3-watcher/environments/local.toml b/packages/v3-watcher/environments/local.toml new file mode 100644 index 0000000..bab02fc --- /dev/null +++ b/packages/v3-watcher/environments/local.toml @@ -0,0 +1,109 @@ +[server] + host = "127.0.0.1" + port = 3008 + kind = "active" + + # Checkpointing state. + checkpointing = true + + # Checkpoint interval in number of blocks. + checkpointInterval = 2000 + + # Enable state creation + # CAUTION: Disable only if state creation is not desired or can be filled subsequently + enableState = true + + subgraphPath = "./subgraph-build" + + # Interval to restart wasm instance periodically + wasmRestartBlocksInterval = 20 + + # Interval in number of blocks at which to clear entities cache. + clearEntitiesCacheInterval = 1000 + + # Flag to specify whether RPC endpoint supports block hash as block tag parameter + rpcSupportsBlockHashParam = true + + # Server GQL config + [server.gql] + path = "/graphql" + + # Max block range for which to return events in eventsInRange GQL query. + # Use -1 for skipping check on block range. + maxEventsBlockRange = 1000 + + # Log directory for GQL requests + logDir = "./gql-logs" + + # GQL cache settings + [server.gql.cache] + enabled = true + + # Max in-memory cache size (in bytes) (default 8 MB) + # maxCacheSize + + # GQL cache-control max-age settings (in seconds) + maxAge = 15 + timeTravelMaxAge = 86400 # 1 day + +[metrics] + host = "127.0.0.1" + port = 9000 + [metrics.gql] + port = 9001 + +[database] + type = "postgres" + host = "localhost" + port = 5432 + database = "v3-watcher" + username = "postgres" + password = "postgres" + synchronize = true + logging = false + +[upstream] + [upstream.ethServer] + gqlApiEndpoint = "http://127.0.0.1:8082/graphql" + rpcProviderEndpoints = [ + "http://127.0.0.1:8081" + ] + + # Boolean flag to specify if rpc-eth-client should be used for RPC endpoint instead of ipld-eth-client (ipld-eth-server GQL client) + rpcClient = true + + # Boolean flag to specify if rpcProviderEndpoint is an FEVM RPC endpoint + isFEVM = true + + # Boolean flag to filter event logs by contracts + filterLogsByAddresses = true + # Boolean flag to filter event logs by topics + filterLogsByTopics = true + + [upstream.cache] + name = "requests" + enabled = false + deleteOnStart = false + +[jobQueue] + dbConnectionString = "postgres://postgres:postgres@localhost/v3-watcher-job-queue" + maxCompletionLagInSecs = 300 + jobDelayInMilliSecs = 100 + eventsInBatch = 50 + subgraphEventsOrder = true + blockDelayInMilliSecs = 2000 + + # Boolean to switch between modes of processing events when starting the server. + # Setting to true will fetch filtered events and required blocks in a range of blocks and then process them. + # Setting to false will fetch blocks consecutively with its events and then process them (Behaviour is followed in realtime processing near head). + useBlockRanges = true + + # Block range in which logs are fetched during historical blocks processing + historicalLogsBlockRange = 2000 + + # Max block range of historical processing after which it waits for completion of events processing + # If set to -1 historical processing does not wait for events processing and completes till latest canonical block + historicalMaxFetchAhead = 10000 + + # Max number of retries to fetch new block after which watcher will failover to other RPC endpoints + maxNewBlockRetries = 3 diff --git a/packages/v3-watcher/package.json b/packages/v3-watcher/package.json new file mode 100644 index 0000000..fd464b1 --- /dev/null +++ b/packages/v3-watcher/package.json @@ -0,0 +1,77 @@ +{ + "name": "@cerc-io/v3-watcher", + "version": "0.1.0", + "description": "v3-watcher", + "private": true, + "main": "dist/index.js", + "scripts": { + "lint": "eslint --max-warnings=0 .", + "build": "yarn clean && tsc && yarn copy-assets", + "clean": "rm -rf ./dist", + "prepare": "husky install", + "copy-assets": "copyfiles -u 1 src/**/*.gql dist/", + "server": "DEBUG=vulcanize:* YARN_CHILD_PROCESS=true node --enable-source-maps dist/server.js", + "server:dev": "DEBUG=vulcanize:* YARN_CHILD_PROCESS=true ts-node src/server.ts", + "job-runner": "DEBUG=vulcanize:* YARN_CHILD_PROCESS=true node --enable-source-maps dist/job-runner.js", + "job-runner:dev": "DEBUG=vulcanize:* YARN_CHILD_PROCESS=true ts-node src/job-runner.ts", + "watch:contract": "DEBUG=vulcanize:* ts-node src/cli/watch-contract.ts", + "fill": "DEBUG=vulcanize:* ts-node src/fill.ts", + "fill:state": "DEBUG=vulcanize:* ts-node src/fill.ts --state", + "reset": "DEBUG=vulcanize:* ts-node src/cli/reset.ts", + "checkpoint": "DEBUG=vulcanize:* node --enable-source-maps dist/cli/checkpoint.js", + "checkpoint:dev": "DEBUG=vulcanize:* ts-node src/cli/checkpoint.ts", + "export-state": "DEBUG=vulcanize:* node --enable-source-maps dist/cli/export-state.js", + "export-state:dev": "DEBUG=vulcanize:* ts-node src/cli/export-state.ts", + "import-state": "DEBUG=vulcanize:* node --enable-source-maps dist/cli/import-state.js", + "import-state:dev": "DEBUG=vulcanize:* ts-node src/cli/import-state.ts", + "inspect-cid": "DEBUG=vulcanize:* ts-node src/cli/inspect-cid.ts", + "index-block": "DEBUG=vulcanize:* ts-node src/cli/index-block.ts" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/cerc-io/watcher-ts.git" + }, + "author": "", + "license": "AGPL-3.0", + "bugs": { + "url": "https://github.com/cerc-io/watcher-ts/issues" + }, + "homepage": "https://github.com/cerc-io/watcher-ts#readme", + "dependencies": { + "@apollo/client": "^3.3.19", + "@cerc-io/cli": "^0.2.94", + "@cerc-io/ipld-eth-client": "^0.2.94", + "@cerc-io/solidity-mapper": "^0.2.94", + "@cerc-io/util": "^0.2.94", + "@cerc-io/graph-node": "^0.2.94", + "@ethersproject/providers": "^5.4.4", + "debug": "^4.3.1", + "decimal.js": "^10.3.1", + "ethers": "^5.4.4", + "graphql": "^15.5.0", + "json-bigint": "^1.0.0", + "reflect-metadata": "^0.1.13", + "typeorm": "0.2.37", + "yargs": "^17.0.1" + }, + "devDependencies": { + "@ethersproject/abi": "^5.3.0", + "@types/debug": "^4.1.5", + "@types/json-bigint": "^1.0.0", + "@types/yargs": "^17.0.0", + "@typescript-eslint/eslint-plugin": "^5.47.1", + "@typescript-eslint/parser": "^5.47.1", + "copyfiles": "^2.4.1", + "eslint": "^8.35.0", + "eslint-config-semistandard": "^15.0.1", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-standard": "^5.0.0", + "husky": "^7.0.2", + "ts-node": "^10.2.1", + "typescript": "^5.0.2", + "winston": "^3.13.0" + } +} diff --git a/packages/v3-watcher/src/artifacts/Factory.json b/packages/v3-watcher/src/artifacts/Factory.json new file mode 100644 index 0000000..c712812 --- /dev/null +++ b/packages/v3-watcher/src/artifacts/Factory.json @@ -0,0 +1,200 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickSpacing", + "type": "int24" + } + ], + "name": "FeeAmountEnabled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "indexed": false, + "internalType": "int24", + "name": "tickSpacing", + "type": "int24" + }, + { + "indexed": false, + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + } + ], + "name": "createPool", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickSpacing", + "type": "int24" + } + ], + "name": "enableFeeAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + } + ], + "name": "feeAmountTickSpacing", + "outputs": [ + { + "internalType": "int24", + "name": "", + "type": "int24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + } + ], + "name": "getPool", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/packages/v3-watcher/src/artifacts/NonfungiblePositionManager.json b/packages/v3-watcher/src/artifacts/NonfungiblePositionManager.json new file mode 100644 index 0000000..830b437 --- /dev/null +++ b/packages/v3-watcher/src/artifacts/NonfungiblePositionManager.json @@ -0,0 +1,1195 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_factory", + "type": "address" + }, + { + "internalType": "address", + "name": "_WETH9", + "type": "address" + }, + { + "internalType": "address", + "name": "_tokenDescriptor_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Collect", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "DecreaseLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "IncreaseLiquidity", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WETH9", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amount0Max", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1Max", + "type": "uint128" + } + ], + "name": "collect", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "tokenA", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenB", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + } + ], + "name": "createAndInitializePoolIfNecessary", + "outputs": [ + { + "internalType": "address", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "decreaseLiquidity", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "name": "increaseLiquidity", + "outputs": [ + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint256", + "name": "amount0Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Desired", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount0Min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Min", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + } + ], + "internalType": "struct INonfungiblePositionManager.MintParams", + "name": "params", + "type": "tuple" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes[]", + "name": "data", + "type": "bytes[]" + } + ], + "name": "multicall", + "outputs": [ + { + "internalType": "bytes[]", + "name": "results", + "type": "bytes[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "positions", + "outputs": [ + { + "internalType": "uint96", + "name": "nonce", + "type": "uint96" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "token0", + "type": "address" + }, + { + "internalType": "address", + "name": "token1", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside0LastX128", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside1LastX128", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "tokensOwed0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "tokensOwed1", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "selfPermit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "selfPermitAllowed", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiry", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "selfPermitAllowedIfNecessary", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "selfPermitIfNecessary", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "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": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountMinimum", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "sweepToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount0Owed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1Owed", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "uniswapV3MintCallback", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amountMinimum", + "type": "uint256" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + } + ], + "name": "unwrapWETH9", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] +} \ No newline at end of file diff --git a/packages/v3-watcher/src/artifacts/Pool.json b/packages/v3-watcher/src/artifacts/Pool.json new file mode 100644 index 0000000..cea0ad1 --- /dev/null +++ b/packages/v3-watcher/src/artifacts/Pool.json @@ -0,0 +1,990 @@ +{ + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount0", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount1", + "type": "uint128" + } + ], + "name": "Collect", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount0", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount1", + "type": "uint128" + } + ], + "name": "CollectProtocol", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paid0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paid1", + "type": "uint256" + } + ], + "name": "Flash", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint16", + "name": "observationCardinalityNextOld", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "observationCardinalityNextNew", + "type": "uint16" + } + ], + "name": "IncreaseObservationCardinalityNext", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + }, + { + "indexed": false, + "internalType": "int24", + "name": "tick", + "type": "int24" + } + ], + "name": "Initialize", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "indexed": true, + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "feeProtocol0Old", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "feeProtocol1Old", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "feeProtocol0New", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "feeProtocol1New", + "type": "uint8" + } + ], + "name": "SetFeeProtocol", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount0", + "type": "int256" + }, + { + "indexed": false, + "internalType": "int256", + "name": "amount1", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "liquidity", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "int24", + "name": "tick", + "type": "int24" + } + ], + "name": "Swap", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + } + ], + "name": "burn", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "amount0Requested", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1Requested", + "type": "uint128" + } + ], + "name": "collect", + "outputs": [ + { + "internalType": "uint128", + "name": "amount0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint128", + "name": "amount0Requested", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1Requested", + "type": "uint128" + } + ], + "name": "collectProtocol", + "outputs": [ + { + "internalType": "uint128", + "name": "amount0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "amount1", + "type": "uint128" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "fee", + "outputs": [ + { + "internalType": "uint24", + "name": "", + "type": "uint24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeGrowthGlobal0X128", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeGrowthGlobal1X128", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "flash", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint16", + "name": "observationCardinalityNext", + "type": "uint16" + } + ], + "name": "increaseObservationCardinalityNext", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "liquidity", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxLiquidityPerTick", + "outputs": [ + { + "internalType": "uint128", + "name": "", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + }, + { + "internalType": "uint128", + "name": "amount", + "type": "uint128" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "amount0", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount1", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "observations", + "outputs": [ + { + "internalType": "uint32", + "name": "blockTimestamp", + "type": "uint32" + }, + { + "internalType": "int56", + "name": "tickCumulative", + "type": "int56" + }, + { + "internalType": "uint160", + "name": "secondsPerLiquidityCumulativeX128", + "type": "uint160" + }, + { + "internalType": "bool", + "name": "initialized", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32[]", + "name": "secondsAgos", + "type": "uint32[]" + } + ], + "name": "observe", + "outputs": [ + { + "internalType": "int56[]", + "name": "tickCumulatives", + "type": "int56[]" + }, + { + "internalType": "uint160[]", + "name": "secondsPerLiquidityCumulativeX128s", + "type": "uint160[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "key", + "type": "bytes32" + } + ], + "name": "positions", + "outputs": [ + { + "internalType": "uint128", + "name": "_liquidity", + "type": "uint128" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside0LastX128", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeGrowthInside1LastX128", + "type": "uint256" + }, + { + "internalType": "uint128", + "name": "tokensOwed0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "tokensOwed1", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolFees", + "outputs": [ + { + "internalType": "uint128", + "name": "token0", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "token1", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "feeProtocol0", + "type": "uint8" + }, + { + "internalType": "uint8", + "name": "feeProtocol1", + "type": "uint8" + } + ], + "name": "setFeeProtocol", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slot0", + "outputs": [ + { + "internalType": "uint160", + "name": "sqrtPriceX96", + "type": "uint160" + }, + { + "internalType": "int24", + "name": "tick", + "type": "int24" + }, + { + "internalType": "uint16", + "name": "observationIndex", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinality", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "observationCardinalityNext", + "type": "uint16" + }, + { + "internalType": "uint8", + "name": "feeProtocol", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "unlocked", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int24", + "name": "tickLower", + "type": "int24" + }, + { + "internalType": "int24", + "name": "tickUpper", + "type": "int24" + } + ], + "name": "snapshotCumulativesInside", + "outputs": [ + { + "internalType": "int56", + "name": "tickCumulativeInside", + "type": "int56" + }, + { + "internalType": "uint160", + "name": "secondsPerLiquidityInsideX128", + "type": "uint160" + }, + { + "internalType": "uint32", + "name": "secondsInside", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "bool", + "name": "zeroForOne", + "type": "bool" + }, + { + "internalType": "int256", + "name": "amountSpecified", + "type": "int256" + }, + { + "internalType": "uint160", + "name": "sqrtPriceLimitX96", + "type": "uint160" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "swap", + "outputs": [ + { + "internalType": "int256", + "name": "amount0", + "type": "int256" + }, + { + "internalType": "int256", + "name": "amount1", + "type": "int256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int16", + "name": "wordPosition", + "type": "int16" + } + ], + "name": "tickBitmap", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tickSpacing", + "outputs": [ + { + "internalType": "int24", + "name": "", + "type": "int24" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "int24", + "name": "tick", + "type": "int24" + } + ], + "name": "ticks", + "outputs": [ + { + "internalType": "uint128", + "name": "liquidityGross", + "type": "uint128" + }, + { + "internalType": "int128", + "name": "liquidityNet", + "type": "int128" + }, + { + "internalType": "uint256", + "name": "feeGrowthOutside0X128", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "feeGrowthOutside1X128", + "type": "uint256" + }, + { + "internalType": "int56", + "name": "tickCumulativeOutside", + "type": "int56" + }, + { + "internalType": "uint160", + "name": "secondsPerLiquidityOutsideX128", + "type": "uint160" + }, + { + "internalType": "uint32", + "name": "secondsOutside", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "initialized", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token0", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token1", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ] +} \ No newline at end of file diff --git a/packages/v3-watcher/src/cli/checkpoint-cmds/create.ts b/packages/v3-watcher/src/cli/checkpoint-cmds/create.ts new file mode 100644 index 0000000..e771c70 --- /dev/null +++ b/packages/v3-watcher/src/cli/checkpoint-cmds/create.ts @@ -0,0 +1,44 @@ +// +// Copyright 2022 Vulcanize, Inc. +// + +import { CreateCheckpointCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../../database'; +import { Indexer } from '../../indexer'; + +export const command = 'create'; + +export const desc = 'Create checkpoint'; + +export const builder = { + address: { + type: 'string', + require: true, + demandOption: true, + describe: 'Contract address to create the checkpoint for.' + }, + blockHash: { + type: 'string', + describe: 'Blockhash at which to create the checkpoint.' + } +}; + +export const handler = async (argv: any): Promise => { + const createCheckpointCmd = new CreateCheckpointCmd(); + await createCheckpointCmd.init(argv, Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + createCheckpointCmd.config.server, + createCheckpointCmd.clients.ethClient, + createCheckpointCmd.ethProvider, + createCheckpointCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await createCheckpointCmd.initIndexer(Indexer, graphWatcher); + + await createCheckpointCmd.exec(); +}; diff --git a/packages/v3-watcher/src/cli/checkpoint-cmds/verify.ts b/packages/v3-watcher/src/cli/checkpoint-cmds/verify.ts new file mode 100644 index 0000000..3709f54 --- /dev/null +++ b/packages/v3-watcher/src/cli/checkpoint-cmds/verify.ts @@ -0,0 +1,40 @@ +// +// Copyright 2022 Vulcanize, Inc. +// + +import { VerifyCheckpointCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../../database'; +import { Indexer } from '../../indexer'; + +export const command = 'verify'; + +export const desc = 'Verify checkpoint'; + +export const builder = { + cid: { + type: 'string', + alias: 'c', + demandOption: true, + describe: 'Checkpoint CID to be verified' + } +}; + +export const handler = async (argv: any): Promise => { + const verifyCheckpointCmd = new VerifyCheckpointCmd(); + await verifyCheckpointCmd.init(argv, Database); + + const { graphWatcher, graphDb } = await getGraphDbAndWatcher( + verifyCheckpointCmd.config.server, + verifyCheckpointCmd.clients.ethClient, + verifyCheckpointCmd.ethProvider, + verifyCheckpointCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await verifyCheckpointCmd.initIndexer(Indexer, graphWatcher); + + await verifyCheckpointCmd.exec(graphDb); +}; diff --git a/packages/v3-watcher/src/cli/checkpoint.ts b/packages/v3-watcher/src/cli/checkpoint.ts new file mode 100644 index 0000000..d05ad8a --- /dev/null +++ b/packages/v3-watcher/src/cli/checkpoint.ts @@ -0,0 +1,39 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import yargs from 'yargs'; +import 'reflect-metadata'; +import debug from 'debug'; + +import { DEFAULT_CONFIG_PATH } from '@cerc-io/util'; + +import { hideBin } from 'yargs/helpers'; + +const log = debug('vulcanize:checkpoint'); + +const main = async () => { + return yargs(hideBin(process.argv)) + .parserConfiguration({ + 'parse-numbers': false + }).options({ + configFile: { + alias: 'f', + type: 'string', + require: true, + demandOption: true, + describe: 'configuration file path (toml)', + default: DEFAULT_CONFIG_PATH + } + }) + .commandDir('checkpoint-cmds', { extensions: ['ts', 'js'], exclude: /([a-zA-Z0-9\s_\\.\-:])+(.d.ts)$/ }) + .demandCommand(1) + .help() + .argv; +}; + +main().then(() => { + process.exit(); +}).catch(err => { + log(err); +}); diff --git a/packages/v3-watcher/src/cli/export-state.ts b/packages/v3-watcher/src/cli/export-state.ts new file mode 100644 index 0000000..bcd1c8a --- /dev/null +++ b/packages/v3-watcher/src/cli/export-state.ts @@ -0,0 +1,38 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { ExportStateCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../database'; +import { Indexer } from '../indexer'; + +const log = debug('vulcanize:export-state'); + +const main = async (): Promise => { + const exportStateCmd = new ExportStateCmd(); + await exportStateCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + exportStateCmd.config.server, + exportStateCmd.clients.ethClient, + exportStateCmd.ethProvider, + exportStateCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await exportStateCmd.initIndexer(Indexer, graphWatcher); + + await exportStateCmd.exec(); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(0); +}); diff --git a/packages/v3-watcher/src/cli/import-state.ts b/packages/v3-watcher/src/cli/import-state.ts new file mode 100644 index 0000000..04ce0e8 --- /dev/null +++ b/packages/v3-watcher/src/cli/import-state.ts @@ -0,0 +1,39 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { ImportStateCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../database'; +import { Indexer } from '../indexer'; +import { State } from '../entity/State'; + +const log = debug('vulcanize:import-state'); + +export const main = async (): Promise => { + const importStateCmd = new ImportStateCmd(); + await importStateCmd.init(Database); + + const { graphWatcher, graphDb } = await getGraphDbAndWatcher( + importStateCmd.config.server, + importStateCmd.clients.ethClient, + importStateCmd.ethProvider, + importStateCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await importStateCmd.initIndexer(Indexer, graphWatcher); + + await importStateCmd.exec(State, graphDb); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(0); +}); diff --git a/packages/v3-watcher/src/cli/index-block.ts b/packages/v3-watcher/src/cli/index-block.ts new file mode 100644 index 0000000..19a302a --- /dev/null +++ b/packages/v3-watcher/src/cli/index-block.ts @@ -0,0 +1,38 @@ +// +// Copyright 2022 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { IndexBlockCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../database'; +import { Indexer } from '../indexer'; + +const log = debug('vulcanize:index-block'); + +const main = async (): Promise => { + const indexBlockCmd = new IndexBlockCmd(); + await indexBlockCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + indexBlockCmd.config.server, + indexBlockCmd.clients.ethClient, + indexBlockCmd.ethProvider, + indexBlockCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await indexBlockCmd.initIndexer(Indexer, graphWatcher); + + await indexBlockCmd.exec(); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(0); +}); diff --git a/packages/v3-watcher/src/cli/inspect-cid.ts b/packages/v3-watcher/src/cli/inspect-cid.ts new file mode 100644 index 0000000..4f5955e --- /dev/null +++ b/packages/v3-watcher/src/cli/inspect-cid.ts @@ -0,0 +1,38 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { InspectCIDCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../database'; +import { Indexer } from '../indexer'; + +const log = debug('vulcanize:inspect-cid'); + +const main = async (): Promise => { + const inspectCIDCmd = new InspectCIDCmd(); + await inspectCIDCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + inspectCIDCmd.config.server, + inspectCIDCmd.clients.ethClient, + inspectCIDCmd.ethProvider, + inspectCIDCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await inspectCIDCmd.initIndexer(Indexer, graphWatcher); + + await inspectCIDCmd.exec(); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(0); +}); diff --git a/packages/v3-watcher/src/cli/reset-cmds/job-queue.ts b/packages/v3-watcher/src/cli/reset-cmds/job-queue.ts new file mode 100644 index 0000000..c33cbfd --- /dev/null +++ b/packages/v3-watcher/src/cli/reset-cmds/job-queue.ts @@ -0,0 +1,22 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import debug from 'debug'; + +import { getConfig, resetJobs, Config } from '@cerc-io/util'; + +const log = debug('vulcanize:reset-job-queue'); + +export const command = 'job-queue'; + +export const desc = 'Reset job queue'; + +export const builder = {}; + +export const handler = async (argv: any): Promise => { + const config: Config = await getConfig(argv.configFile); + await resetJobs(config); + + log('Job queue reset successfully'); +}; diff --git a/packages/v3-watcher/src/cli/reset-cmds/state.ts b/packages/v3-watcher/src/cli/reset-cmds/state.ts new file mode 100644 index 0000000..33211d6 --- /dev/null +++ b/packages/v3-watcher/src/cli/reset-cmds/state.ts @@ -0,0 +1,24 @@ +// +// Copyright 2022 Vulcanize, Inc. +// + +import { ResetStateCmd } from '@cerc-io/cli'; + +import { Database } from '../../database'; + +export const command = 'state'; + +export const desc = 'Reset State to a given block number'; + +export const builder = { + blockNumber: { + type: 'number' + } +}; + +export const handler = async (argv: any): Promise => { + const resetStateCmd = new ResetStateCmd(); + await resetStateCmd.init(argv, Database); + + await resetStateCmd.exec(); +}; diff --git a/packages/v3-watcher/src/cli/reset-cmds/watcher.ts b/packages/v3-watcher/src/cli/reset-cmds/watcher.ts new file mode 100644 index 0000000..827fd28 --- /dev/null +++ b/packages/v3-watcher/src/cli/reset-cmds/watcher.ts @@ -0,0 +1,37 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { ResetWatcherCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../../database'; +import { Indexer } from '../../indexer'; + +export const command = 'watcher'; + +export const desc = 'Reset watcher to a block number'; + +export const builder = { + blockNumber: { + type: 'number' + } +}; + +export const handler = async (argv: any): Promise => { + const resetWatcherCmd = new ResetWatcherCmd(); + await resetWatcherCmd.init(argv, Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + resetWatcherCmd.config.server, + resetWatcherCmd.clients.ethClient, + resetWatcherCmd.ethProvider, + resetWatcherCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await resetWatcherCmd.initIndexer(Indexer, graphWatcher); + + await resetWatcherCmd.exec(); +}; diff --git a/packages/v3-watcher/src/cli/reset.ts b/packages/v3-watcher/src/cli/reset.ts new file mode 100644 index 0000000..95648c8 --- /dev/null +++ b/packages/v3-watcher/src/cli/reset.ts @@ -0,0 +1,24 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { getResetYargs } from '@cerc-io/util'; + +const log = debug('vulcanize:reset'); + +const main = async () => { + return getResetYargs() + .commandDir('reset-cmds', { extensions: ['ts', 'js'], exclude: /([a-zA-Z0-9\s_\\.\-:])+(.d.ts)$/ }) + .demandCommand(1) + .help() + .argv; +}; + +main().then(() => { + process.exit(); +}).catch(err => { + log(err); +}); diff --git a/packages/v3-watcher/src/cli/watch-contract.ts b/packages/v3-watcher/src/cli/watch-contract.ts new file mode 100644 index 0000000..7d6ce1a --- /dev/null +++ b/packages/v3-watcher/src/cli/watch-contract.ts @@ -0,0 +1,38 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { WatchContractCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from '../database'; +import { Indexer } from '../indexer'; + +const log = debug('vulcanize:watch-contract'); + +const main = async (): Promise => { + const watchContractCmd = new WatchContractCmd(); + await watchContractCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + watchContractCmd.config.server, + watchContractCmd.clients.ethClient, + watchContractCmd.ethProvider, + watchContractCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await watchContractCmd.initIndexer(Indexer, graphWatcher); + + await watchContractCmd.exec(); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(0); +}); diff --git a/packages/v3-watcher/src/client.ts b/packages/v3-watcher/src/client.ts new file mode 100644 index 0000000..8bb2bb0 --- /dev/null +++ b/packages/v3-watcher/src/client.ts @@ -0,0 +1,55 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { gql } from '@apollo/client/core'; +import { GraphQLClient, GraphQLConfig } from '@cerc-io/ipld-eth-client'; + +import { queries, mutations, subscriptions } from './gql'; + +export class Client { + _config: GraphQLConfig; + _client: GraphQLClient; + + constructor (config: GraphQLConfig) { + this._config = config; + + this._client = new GraphQLClient(config); + } + + async getEvents (blockHash: string, contractAddress: string, name: string): Promise { + const { events } = await this._client.query( + gql(queries.events), + { blockHash, contractAddress, name } + ); + + return events; + } + + async getEventsInRange (fromBlockNumber: number, toBlockNumber: number): Promise { + const { eventsInRange } = await this._client.query( + gql(queries.eventsInRange), + { fromBlockNumber, toBlockNumber } + ); + + return eventsInRange; + } + + async watchContract (contractAddress: string, startingBlock?: number): Promise { + const { watchContract } = await this._client.mutate( + gql(mutations.watchContract), + { contractAddress, startingBlock } + ); + + return watchContract; + } + + async watchEvents (onNext: (value: any) => void): Promise { + return this._client.subscribe( + gql(subscriptions.onEvent), + ({ data }) => { + onNext(data.onEvent); + } + ); + } +} diff --git a/packages/v3-watcher/src/database.ts b/packages/v3-watcher/src/database.ts new file mode 100644 index 0000000..6d893c8 --- /dev/null +++ b/packages/v3-watcher/src/database.ts @@ -0,0 +1,307 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import assert from 'assert'; +import { Connection, ConnectionOptions, DeepPartial, FindConditions, QueryRunner, FindManyOptions, EntityTarget } from 'typeorm'; +import path from 'path'; + +import { + ENTITY_QUERY_TYPE, + Database as BaseDatabase, + DatabaseInterface, + QueryOptions, + StateKind, + Where +} from '@cerc-io/util'; + +import { Contract } from './entity/Contract'; +import { Event } from './entity/Event'; +import { SyncStatus } from './entity/SyncStatus'; +import { StateSyncStatus } from './entity/StateSyncStatus'; +import { BlockProgress } from './entity/BlockProgress'; +import { State } from './entity/State'; +import { Factory } from './entity/Factory'; +import { Bundle } from './entity/Bundle'; +import { Token } from './entity/Token'; +import { Pool } from './entity/Pool'; +import { Tick } from './entity/Tick'; +import { Position } from './entity/Position'; +import { PositionSnapshot } from './entity/PositionSnapshot'; +import { Transaction } from './entity/Transaction'; +import { Mint } from './entity/Mint'; +import { Burn } from './entity/Burn'; +import { Swap } from './entity/Swap'; +import { Collect } from './entity/Collect'; +import { Flash } from './entity/Flash'; +import { UniswapDayData } from './entity/UniswapDayData'; +import { PoolDayData } from './entity/PoolDayData'; +import { PoolHourData } from './entity/PoolHourData'; +import { TickHourData } from './entity/TickHourData'; +import { TickDayData } from './entity/TickDayData'; +import { TokenDayData } from './entity/TokenDayData'; +import { TokenHourData } from './entity/TokenHourData'; +import { IncreaseEvent } from './entity/IncreaseEvent'; +import { DecreaseEvent } from './entity/DecreaseEvent'; +import { SetProtocolFeeEvent } from './entity/SetProtocolFeeEvent'; + +export const SUBGRAPH_ENTITIES = new Set([Factory, Bundle, Token, Pool, Tick, Position, PositionSnapshot, Transaction, Mint, Burn, Swap, Collect, Flash, UniswapDayData, PoolDayData, PoolHourData, TickHourData, TickDayData, TokenDayData, TokenHourData, IncreaseEvent, DecreaseEvent, SetProtocolFeeEvent]); +export const ENTITIES = [...SUBGRAPH_ENTITIES]; +// Map: Entity to suitable query type. +export const ENTITY_QUERY_TYPE_MAP = new Map any, ENTITY_QUERY_TYPE>([]); + +export const ENTITY_TO_LATEST_ENTITY_MAP: Map = new Map(); + +export class Database implements DatabaseInterface { + _config: ConnectionOptions; + _conn!: Connection; + _baseDatabase: BaseDatabase; + _propColMaps: { [key: string]: Map; }; + + constructor (config: ConnectionOptions) { + assert(config); + + this._config = { + ...config, + subscribers: [path.join(__dirname, 'entity/Subscriber.*')], + entities: [path.join(__dirname, 'entity/*')] + }; + + this._baseDatabase = new BaseDatabase(this._config); + this._propColMaps = {}; + } + + get baseDatabase (): BaseDatabase { + return this._baseDatabase; + } + + async init (): Promise { + this._conn = await this._baseDatabase.init(); + } + + async close (): Promise { + return this._baseDatabase.close(); + } + + getNewState (): State { + return new State(); + } + + async getStates (where: FindConditions): Promise { + const repo = this._conn.getRepository(State); + + return this._baseDatabase.getStates(repo, where); + } + + async getLatestState (contractAddress: string, kind: StateKind | null, blockNumber?: number): Promise { + const repo = this._conn.getRepository(State); + + return this._baseDatabase.getLatestState(repo, contractAddress, kind, blockNumber); + } + + async getPrevState (blockHash: string, contractAddress: string, kind?: string): Promise { + const repo = this._conn.getRepository(State); + + return this._baseDatabase.getPrevState(repo, blockHash, contractAddress, kind); + } + + // Fetch all diff States after the specified block number. + async getDiffStatesInRange (contractAddress: string, startblock: number, endBlock: number): Promise { + const repo = this._conn.getRepository(State); + + return this._baseDatabase.getDiffStatesInRange(repo, contractAddress, startblock, endBlock); + } + + async saveOrUpdateState (dbTx: QueryRunner, state: State): Promise { + const repo = dbTx.manager.getRepository(State); + + return this._baseDatabase.saveOrUpdateState(repo, state); + } + + async removeStates (dbTx: QueryRunner, blockNumber: number, kind: string): Promise { + const repo = dbTx.manager.getRepository(State); + + await this._baseDatabase.removeStates(repo, blockNumber, kind); + } + + async removeStatesAfterBlock (dbTx: QueryRunner, blockNumber: number): Promise { + const repo = dbTx.manager.getRepository(State); + + await this._baseDatabase.removeStatesAfterBlock(repo, blockNumber); + } + + async getStateSyncStatus (): Promise { + const repo = this._conn.getRepository(StateSyncStatus); + + return this._baseDatabase.getStateSyncStatus(repo); + } + + async updateStateSyncStatusIndexedBlock (queryRunner: QueryRunner, blockNumber: number, force?: boolean): Promise { + const repo = queryRunner.manager.getRepository(StateSyncStatus); + + return this._baseDatabase.updateStateSyncStatusIndexedBlock(repo, blockNumber, force); + } + + async updateStateSyncStatusCheckpointBlock (queryRunner: QueryRunner, blockNumber: number, force?: boolean): Promise { + const repo = queryRunner.manager.getRepository(StateSyncStatus); + + return this._baseDatabase.updateStateSyncStatusCheckpointBlock(repo, blockNumber, force); + } + + async getContracts (): Promise { + const repo = this._conn.getRepository(Contract); + + return this._baseDatabase.getContracts(repo); + } + + async createTransactionRunner (): Promise { + return this._baseDatabase.createTransactionRunner(); + } + + async getProcessedBlockCountForRange (fromBlockNumber: number, toBlockNumber: number): Promise<{ expected: number, actual: number }> { + const repo = this._conn.getRepository(BlockProgress); + + return this._baseDatabase.getProcessedBlockCountForRange(repo, fromBlockNumber, toBlockNumber); + } + + async getEventsInRange (fromBlockNumber: number, toBlockNumber: number): Promise> { + const repo = this._conn.getRepository(Event); + + return this._baseDatabase.getEventsInRange(repo, fromBlockNumber, toBlockNumber); + } + + async saveEventEntity (queryRunner: QueryRunner, entity: Event): Promise { + const repo = queryRunner.manager.getRepository(Event); + return this._baseDatabase.saveEventEntity(repo, entity); + } + + async getBlockEvents (blockHash: string, where: Where, queryOptions: QueryOptions): Promise { + const repo = this._conn.getRepository(Event); + + return this._baseDatabase.getBlockEvents(repo, blockHash, where, queryOptions); + } + + async saveBlockWithEvents (queryRunner: QueryRunner, block: DeepPartial, events: DeepPartial[]): Promise { + const blockRepo = queryRunner.manager.getRepository(BlockProgress); + const eventRepo = queryRunner.manager.getRepository(Event); + + return this._baseDatabase.saveBlockWithEvents(blockRepo, eventRepo, block, events); + } + + async saveEvents (queryRunner: QueryRunner, events: Event[]): Promise { + const eventRepo = queryRunner.manager.getRepository(Event); + + return this._baseDatabase.saveEvents(eventRepo, events); + } + + async saveBlockProgress (queryRunner: QueryRunner, block: DeepPartial): Promise { + const repo = queryRunner.manager.getRepository(BlockProgress); + + return this._baseDatabase.saveBlockProgress(repo, block); + } + + async saveContract (queryRunner: QueryRunner, address: string, kind: string, checkpoint: boolean, startingBlock: number, context?: any): Promise { + const repo = queryRunner.manager.getRepository(Contract); + + return this._baseDatabase.saveContract(repo, address, kind, checkpoint, startingBlock, context); + } + + async updateSyncStatusIndexedBlock (queryRunner: QueryRunner, blockHash: string, blockNumber: number, force = false): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatusIndexedBlock(repo, blockHash, blockNumber, force); + } + + async updateSyncStatusCanonicalBlock (queryRunner: QueryRunner, blockHash: string, blockNumber: number, force = false): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatusCanonicalBlock(repo, blockHash, blockNumber, force); + } + + async updateSyncStatusChainHead (queryRunner: QueryRunner, blockHash: string, blockNumber: number, force = false): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatusChainHead(repo, blockHash, blockNumber, force); + } + + async updateSyncStatusProcessedBlock (queryRunner: QueryRunner, blockHash: string, blockNumber: number, force = false): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatusProcessedBlock(repo, blockHash, blockNumber, force); + } + + async updateSyncStatusIndexingError (queryRunner: QueryRunner, hasIndexingError: boolean): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatusIndexingError(repo, hasIndexingError); + } + + async updateSyncStatus (queryRunner: QueryRunner, syncStatus: DeepPartial): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.updateSyncStatus(repo, syncStatus); + } + + async getSyncStatus (queryRunner: QueryRunner): Promise { + const repo = queryRunner.manager.getRepository(SyncStatus); + + return this._baseDatabase.getSyncStatus(repo); + } + + async getEvent (id: string): Promise { + const repo = this._conn.getRepository(Event); + + return this._baseDatabase.getEvent(repo, id); + } + + async getBlocksAtHeight (height: number, isPruned: boolean): Promise { + const repo = this._conn.getRepository(BlockProgress); + + return this._baseDatabase.getBlocksAtHeight(repo, height, isPruned); + } + + async markBlocksAsPruned (queryRunner: QueryRunner, blocks: BlockProgress[]): Promise { + const repo = queryRunner.manager.getRepository(BlockProgress); + + return this._baseDatabase.markBlocksAsPruned(repo, blocks); + } + + async getBlockProgress (blockHash: string): Promise { + const repo = this._conn.getRepository(BlockProgress); + return this._baseDatabase.getBlockProgress(repo, blockHash); + } + + async getBlockProgressEntities (where: FindConditions, options: FindManyOptions): Promise { + const repo = this._conn.getRepository(BlockProgress); + + return this._baseDatabase.getBlockProgressEntities(repo, where, options); + } + + async getEntitiesForBlock (blockHash: string, tableName: string): Promise { + return this._baseDatabase.getEntitiesForBlock(blockHash, tableName); + } + + async updateBlockProgress (queryRunner: QueryRunner, block: BlockProgress, lastProcessedEventIndex: number): Promise { + const repo = queryRunner.manager.getRepository(BlockProgress); + + return this._baseDatabase.updateBlockProgress(repo, block, lastProcessedEventIndex); + } + + async removeEntities (queryRunner: QueryRunner, entity: new () => Entity, findConditions?: FindManyOptions | FindConditions): Promise { + return this._baseDatabase.removeEntities(queryRunner, entity, findConditions); + } + + async deleteEntitiesByConditions (queryRunner: QueryRunner, entity: EntityTarget, findConditions: FindConditions): Promise { + await this._baseDatabase.deleteEntitiesByConditions(queryRunner, entity, findConditions); + } + + async getAncestorAtHeight (blockHash: string, height: number): Promise { + return this._baseDatabase.getAncestorAtHeight(blockHash, height); + } + + _getPropertyColumnMapForEntity (entityName: string): Map { + return this._conn.getMetadata(entityName).ownColumns.reduce((acc, curr) => { + return acc.set(curr.propertyName, curr.databaseName); + }, new Map()); + } +} diff --git a/packages/v3-watcher/src/entity/BlockProgress.ts b/packages/v3-watcher/src/entity/BlockProgress.ts new file mode 100644 index 0000000..ded4a86 --- /dev/null +++ b/packages/v3-watcher/src/entity/BlockProgress.ts @@ -0,0 +1,48 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column, Index, CreateDateColumn } from 'typeorm'; +import { BlockProgressInterface } from '@cerc-io/util'; + +@Entity() +@Index(['blockHash'], { unique: true }) +@Index(['blockNumber']) +@Index(['parentHash']) +export class BlockProgress implements BlockProgressInterface { + @PrimaryGeneratedColumn() + id!: number; + + @Column('varchar', { nullable: true }) + cid!: string | null; + + @Column('varchar', { length: 66 }) + blockHash!: string; + + @Column('varchar', { length: 66 }) + parentHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + blockTimestamp!: number; + + @Column('integer') + numEvents!: number; + + @Column('integer') + numProcessedEvents!: number; + + @Column('integer') + lastProcessedEventIndex!: number; + + @Column('boolean') + isComplete!: boolean; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @CreateDateColumn() + createdAt!: Date; +} diff --git a/packages/v3-watcher/src/entity/Bundle.ts b/packages/v3-watcher/src/entity/Bundle.ts new file mode 100644 index 0000000..1d9c3b6 --- /dev/null +++ b/packages/v3-watcher/src/entity/Bundle.ts @@ -0,0 +1,29 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Bundle { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('numeric', { transformer: decimalTransformer }) + ethPriceUSD!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Burn.ts b/packages/v3-watcher/src/entity/Burn.ts new file mode 100644 index 0000000..842a968 --- /dev/null +++ b/packages/v3-watcher/src/entity/Burn.ts @@ -0,0 +1,68 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Burn { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + transaction!: string; + + @Column('varchar') + pool!: string; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('varchar', { nullable: true }) + owner!: string | null; + + @Column('varchar') + origin!: string; + + @Column('numeric', { transformer: bigintTransformer }) + amount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + amount0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1!: Decimal; + + @Column('numeric', { nullable: true, transformer: decimalTransformer }) + amountUSD!: Decimal | null; + + @Column('numeric', { transformer: bigintTransformer }) + tickLower!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + tickUpper!: bigint; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + logIndex!: bigint | null; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Collect.ts b/packages/v3-watcher/src/entity/Collect.ts new file mode 100644 index 0000000..e926d7c --- /dev/null +++ b/packages/v3-watcher/src/entity/Collect.ts @@ -0,0 +1,56 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Collect { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('varchar') + pool!: string; + + @Column('varchar', { nullable: true }) + owner!: string | null; + + @Column('numeric', { transformer: decimalTransformer }) + amount0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1!: Decimal; + + @Column('numeric', { nullable: true, transformer: decimalTransformer }) + amountUSD!: Decimal | null; + + @Column('numeric', { transformer: bigintTransformer }) + tickLower!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + tickUpper!: bigint; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + logIndex!: bigint | null; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Contract.ts b/packages/v3-watcher/src/entity/Contract.ts new file mode 100644 index 0000000..e4defa8 --- /dev/null +++ b/packages/v3-watcher/src/entity/Contract.ts @@ -0,0 +1,27 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column, Index } from 'typeorm'; + +@Entity() +@Index(['address'], { unique: true }) +export class Contract { + @PrimaryGeneratedColumn() + id!: number; + + @Column('varchar', { length: 42 }) + address!: string; + + @Column('varchar') + kind!: string; + + @Column('boolean') + checkpoint!: boolean; + + @Column('integer') + startingBlock!: number; + + @Column('jsonb', { nullable: true }) + context!: Record; +} diff --git a/packages/v3-watcher/src/entity/DecreaseEvent.ts b/packages/v3-watcher/src/entity/DecreaseEvent.ts new file mode 100644 index 0000000..39bbcb3 --- /dev/null +++ b/packages/v3-watcher/src/entity/DecreaseEvent.ts @@ -0,0 +1,52 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { bigintTransformer } from '@cerc-io/util'; + +@Entity() +@Index(['blockNumber']) +export class DecreaseEvent { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + tokenID!: bigint; + + @Column('varchar') + position!: string; + + @Column('numeric', { transformer: bigintTransformer }) + amount0!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + amount1!: bigint; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timeStamp!: bigint; + + @Column('varchar') + transaction!: string; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Event.ts b/packages/v3-watcher/src/entity/Event.ts new file mode 100644 index 0000000..91f1e6d --- /dev/null +++ b/packages/v3-watcher/src/entity/Event.ts @@ -0,0 +1,38 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column, Index, ManyToOne } from 'typeorm'; +import { BlockProgress } from './BlockProgress'; + +@Entity() +@Index(['block', 'contract']) +@Index(['block', 'contract', 'eventName']) +export class Event { + @PrimaryGeneratedColumn() + id!: number; + + @ManyToOne(() => BlockProgress, { onDelete: 'CASCADE' }) + block!: BlockProgress; + + @Column('varchar', { length: 66 }) + txHash!: string; + + @Column('integer') + index!: number; + + @Column('varchar', { length: 42 }) + contract!: string; + + @Column('varchar', { length: 256 }) + eventName!: string; + + @Column('text') + eventInfo!: string; + + @Column('text') + extraInfo!: string; + + @Column('text') + proof!: string; +} diff --git a/packages/v3-watcher/src/entity/Factory.ts b/packages/v3-watcher/src/entity/Factory.ts new file mode 100644 index 0000000..97522b7 --- /dev/null +++ b/packages/v3-watcher/src/entity/Factory.ts @@ -0,0 +1,62 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Factory { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('numeric', { transformer: bigintTransformer }) + poolCount!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + totalVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalVolumeETH!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalFeesUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalFeesETH!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedETH!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSDUntracked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedETHUntracked!: Decimal; + + @Column('varchar') + owner!: string; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Flash.ts b/packages/v3-watcher/src/entity/Flash.ts new file mode 100644 index 0000000..c6b7b49 --- /dev/null +++ b/packages/v3-watcher/src/entity/Flash.ts @@ -0,0 +1,59 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Flash { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('varchar') + pool!: string; + + @Column('varchar') + sender!: string; + + @Column('varchar') + recipient!: string; + + @Column('numeric', { transformer: decimalTransformer }) + amount0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amountUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount0Paid!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1Paid!: Decimal; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + logIndex!: bigint | null; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/FrothyEntity.ts b/packages/v3-watcher/src/entity/FrothyEntity.ts new file mode 100644 index 0000000..9898ce8 --- /dev/null +++ b/packages/v3-watcher/src/entity/FrothyEntity.ts @@ -0,0 +1,21 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; + +@Entity() +@Index(['blockNumber']) +export class FrothyEntity { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar') + name!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; +} diff --git a/packages/v3-watcher/src/entity/IncreaseEvent.ts b/packages/v3-watcher/src/entity/IncreaseEvent.ts new file mode 100644 index 0000000..613a867 --- /dev/null +++ b/packages/v3-watcher/src/entity/IncreaseEvent.ts @@ -0,0 +1,52 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { bigintTransformer } from '@cerc-io/util'; + +@Entity() +@Index(['blockNumber']) +export class IncreaseEvent { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + tokenID!: bigint; + + @Column('varchar') + position!: string; + + @Column('numeric', { transformer: bigintTransformer }) + amount0!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + amount1!: bigint; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timeStamp!: bigint; + + @Column('varchar') + transaction!: string; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Mint.ts b/packages/v3-watcher/src/entity/Mint.ts new file mode 100644 index 0000000..17d8c03 --- /dev/null +++ b/packages/v3-watcher/src/entity/Mint.ts @@ -0,0 +1,71 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Mint { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('varchar') + pool!: string; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('varchar') + owner!: string; + + @Column('varchar', { nullable: true }) + sender!: string | null; + + @Column('varchar') + origin!: string; + + @Column('numeric', { transformer: bigintTransformer }) + amount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + amount0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1!: Decimal; + + @Column('numeric', { nullable: true, transformer: decimalTransformer }) + amountUSD!: Decimal | null; + + @Column('numeric', { transformer: bigintTransformer }) + tickLower!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + tickUpper!: bigint; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + logIndex!: bigint | null; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Pool.ts b/packages/v3-watcher/src/entity/Pool.ts new file mode 100644 index 0000000..9eed0c4 --- /dev/null +++ b/packages/v3-watcher/src/entity/Pool.ts @@ -0,0 +1,113 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Pool { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('numeric', { transformer: bigintTransformer }) + createdAtTimestamp!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + createdAtBlockNumber!: bigint; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('numeric', { transformer: bigintTransformer }) + feeTier!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidity!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + sqrtPrice!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal0X128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal1X128!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + token0Price!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + token1Price!: Decimal; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + tick!: bigint | null; + + @Column('numeric', { transformer: bigintTransformer }) + observationIndex!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedETH!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSDUntracked!: Decimal; + + @Column('boolean') + isProtocolFeeEnabled!: boolean; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityProviderCount!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/PoolDayData.ts b/packages/v3-watcher/src/entity/PoolDayData.ts new file mode 100644 index 0000000..651775c --- /dev/null +++ b/packages/v3-watcher/src/entity/PoolDayData.ts @@ -0,0 +1,83 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class PoolDayData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + date!: number; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidity!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + sqrtPrice!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + token0Price!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + token1Price!: Decimal; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + tick!: bigint | null; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal0X128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal1X128!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + tvlUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + open!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + high!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + low!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + close!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/PoolHourData.ts b/packages/v3-watcher/src/entity/PoolHourData.ts new file mode 100644 index 0000000..9967bdf --- /dev/null +++ b/packages/v3-watcher/src/entity/PoolHourData.ts @@ -0,0 +1,83 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class PoolHourData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + periodStartUnix!: number; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidity!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + sqrtPrice!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + token0Price!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + token1Price!: Decimal; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + tick!: bigint | null; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal0X128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthGlobal1X128!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + tvlUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + open!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + high!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + low!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + close!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Position.ts b/packages/v3-watcher/src/entity/Position.ts new file mode 100644 index 0000000..216ffc1 --- /dev/null +++ b/packages/v3-watcher/src/entity/Position.ts @@ -0,0 +1,89 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Position { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + owner!: string; + + @Column('varchar') + pool!: string; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('varchar') + tickLower!: string; + + @Column('varchar') + tickUpper!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidity!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + depositedToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + depositedToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + withdrawnToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + withdrawnToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amountDepositedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amountWithdrawnUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amountCollectedUSD!: Decimal; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthInside0LastX128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthInside1LastX128!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/PositionSnapshot.ts b/packages/v3-watcher/src/entity/PositionSnapshot.ts new file mode 100644 index 0000000..8fb7a19 --- /dev/null +++ b/packages/v3-watcher/src/entity/PositionSnapshot.ts @@ -0,0 +1,71 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class PositionSnapshot { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + owner!: string; + + @Column('varchar') + pool!: string; + + @Column('varchar') + position!: string; + + @Column('numeric', { transformer: bigintTransformer }) + _blockNumber!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidity!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + depositedToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + depositedToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + withdrawnToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + withdrawnToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken1!: Decimal; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthInside0LastX128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthInside1LastX128!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/SetProtocolFeeEvent.ts b/packages/v3-watcher/src/entity/SetProtocolFeeEvent.ts new file mode 100644 index 0000000..1dbf728 --- /dev/null +++ b/packages/v3-watcher/src/entity/SetProtocolFeeEvent.ts @@ -0,0 +1,46 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { bigintTransformer } from '@cerc-io/util'; + +@Entity() +@Index(['blockNumber']) +export class SetProtocolFeeEvent { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + logIndex!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + new0!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + new1!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + old0!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + old1!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/State.ts b/packages/v3-watcher/src/entity/State.ts new file mode 100644 index 0000000..bc05bca --- /dev/null +++ b/packages/v3-watcher/src/entity/State.ts @@ -0,0 +1,31 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column, Index, ManyToOne } from 'typeorm'; +import { StateKind } from '@cerc-io/util'; +import { BlockProgress } from './BlockProgress'; + +@Entity() +@Index(['cid'], { unique: true }) +@Index(['block', 'contractAddress']) +@Index(['block', 'contractAddress', 'kind'], { unique: true }) +export class State { + @PrimaryGeneratedColumn() + id!: number; + + @ManyToOne(() => BlockProgress, { onDelete: 'CASCADE' }) + block!: BlockProgress; + + @Column('varchar', { length: 42 }) + contractAddress!: string; + + @Column('varchar') + cid!: string; + + @Column({ type: 'enum', enum: StateKind }) + kind!: StateKind; + + @Column('bytea') + data!: Buffer; +} diff --git a/packages/v3-watcher/src/entity/StateSyncStatus.ts b/packages/v3-watcher/src/entity/StateSyncStatus.ts new file mode 100644 index 0000000..1535eb4 --- /dev/null +++ b/packages/v3-watcher/src/entity/StateSyncStatus.ts @@ -0,0 +1,17 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; + +@Entity() +export class StateSyncStatus { + @PrimaryGeneratedColumn() + id!: number; + + @Column('integer') + latestIndexedBlockNumber!: number; + + @Column('integer') + latestCheckpointBlockNumber!: number; +} diff --git a/packages/v3-watcher/src/entity/Subscriber.ts b/packages/v3-watcher/src/entity/Subscriber.ts new file mode 100644 index 0000000..2cccb84 --- /dev/null +++ b/packages/v3-watcher/src/entity/Subscriber.ts @@ -0,0 +1,21 @@ +// +// Copyright 2022 Vulcanize, Inc. +// + +import { EventSubscriber, EntitySubscriberInterface, InsertEvent, UpdateEvent } from 'typeorm'; + +import { afterEntityInsertOrUpdate } from '@cerc-io/util'; + +import { FrothyEntity } from './FrothyEntity'; +import { ENTITY_TO_LATEST_ENTITY_MAP, SUBGRAPH_ENTITIES } from '../database'; + +@EventSubscriber() +export class EntitySubscriber implements EntitySubscriberInterface { + async afterInsert (event: InsertEvent): Promise { + await afterEntityInsertOrUpdate(FrothyEntity, SUBGRAPH_ENTITIES, event, ENTITY_TO_LATEST_ENTITY_MAP); + } + + async afterUpdate (event: UpdateEvent): Promise { + await afterEntityInsertOrUpdate(FrothyEntity, SUBGRAPH_ENTITIES, event, ENTITY_TO_LATEST_ENTITY_MAP); + } +} diff --git a/packages/v3-watcher/src/entity/Swap.ts b/packages/v3-watcher/src/entity/Swap.ts new file mode 100644 index 0000000..3e5a69e --- /dev/null +++ b/packages/v3-watcher/src/entity/Swap.ts @@ -0,0 +1,68 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Swap { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + transaction!: string; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('varchar') + pool!: string; + + @Column('varchar') + token0!: string; + + @Column('varchar') + token1!: string; + + @Column('varchar') + sender!: string; + + @Column('varchar') + recipient!: string; + + @Column('varchar') + origin!: string; + + @Column('numeric', { transformer: decimalTransformer }) + amount0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amount1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + amountUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + sqrtPriceX96!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + tick!: bigint; + + @Column('numeric', { nullable: true, transformer: bigintTransformer }) + logIndex!: bigint | null; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/SyncStatus.ts b/packages/v3-watcher/src/entity/SyncStatus.ts new file mode 100644 index 0000000..cc13c70 --- /dev/null +++ b/packages/v3-watcher/src/entity/SyncStatus.ts @@ -0,0 +1,45 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm'; +import { SyncStatusInterface } from '@cerc-io/util'; + +@Entity() +export class SyncStatus implements SyncStatusInterface { + @PrimaryGeneratedColumn() + id!: number; + + @Column('varchar', { length: 66 }) + chainHeadBlockHash!: string; + + @Column('integer') + chainHeadBlockNumber!: number; + + @Column('varchar', { length: 66 }) + latestIndexedBlockHash!: string; + + @Column('integer') + latestIndexedBlockNumber!: number; + + @Column('varchar', { length: 66 }) + latestProcessedBlockHash!: string; + + @Column('integer') + latestProcessedBlockNumber!: number; + + @Column('varchar', { length: 66 }) + latestCanonicalBlockHash!: string; + + @Column('integer') + latestCanonicalBlockNumber!: number; + + @Column('varchar', { length: 66 }) + initialIndexedBlockHash!: string; + + @Column('integer') + initialIndexedBlockNumber!: number; + + @Column('boolean', { default: false }) + hasIndexingError!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Tick.ts b/packages/v3-watcher/src/entity/Tick.ts new file mode 100644 index 0000000..f7404d6 --- /dev/null +++ b/packages/v3-watcher/src/entity/Tick.ts @@ -0,0 +1,86 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Tick { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar', { nullable: true }) + poolAddress!: string | null; + + @Column('numeric', { transformer: bigintTransformer }) + tickIdx!: bigint; + + @Column('varchar') + pool!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityGross!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityNet!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + price0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + price1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + collectedFeesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + createdAtTimestamp!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + createdAtBlockNumber!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityProviderCount!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthOutside0X128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthOutside1X128!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/TickDayData.ts b/packages/v3-watcher/src/entity/TickDayData.ts new file mode 100644 index 0000000..50b95f5 --- /dev/null +++ b/packages/v3-watcher/src/entity/TickDayData.ts @@ -0,0 +1,59 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class TickDayData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + date!: number; + + @Column('varchar') + pool!: string; + + @Column('varchar') + tick!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityGross!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityNet!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthOutside0X128!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + feeGrowthOutside1X128!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/TickHourData.ts b/packages/v3-watcher/src/entity/TickHourData.ts new file mode 100644 index 0000000..427c98b --- /dev/null +++ b/packages/v3-watcher/src/entity/TickHourData.ts @@ -0,0 +1,53 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class TickHourData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + periodStartUnix!: number; + + @Column('varchar') + pool!: string; + + @Column('varchar') + tick!: string; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityGross!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + liquidityNet!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken0!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeToken1!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Token.ts b/packages/v3-watcher/src/entity/Token.ts new file mode 100644 index 0000000..97db063 --- /dev/null +++ b/packages/v3-watcher/src/entity/Token.ts @@ -0,0 +1,71 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class Token { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('varchar') + symbol!: string; + + @Column('varchar') + name!: string; + + @Column('numeric', { transformer: bigintTransformer }) + decimals!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + totalSupply!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + volume!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + poolCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLocked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSDUntracked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + derivedETH!: Decimal; + + @Column('varchar', { array: true }) + whitelistPools!: string[]; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/TokenDayData.ts b/packages/v3-watcher/src/entity/TokenDayData.ts new file mode 100644 index 0000000..a39398a --- /dev/null +++ b/packages/v3-watcher/src/entity/TokenDayData.ts @@ -0,0 +1,65 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class TokenDayData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + date!: number; + + @Column('varchar') + token!: string; + + @Column('numeric', { transformer: decimalTransformer }) + volume!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLocked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + priceUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + open!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + high!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + low!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + close!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/TokenHourData.ts b/packages/v3-watcher/src/entity/TokenHourData.ts new file mode 100644 index 0000000..d3fe63f --- /dev/null +++ b/packages/v3-watcher/src/entity/TokenHourData.ts @@ -0,0 +1,65 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class TokenHourData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + periodStartUnix!: number; + + @Column('varchar') + token!: string; + + @Column('numeric', { transformer: decimalTransformer }) + volume!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + untrackedVolumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLocked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + totalValueLockedUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + priceUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + open!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + high!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + low!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + close!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/Transaction.ts b/packages/v3-watcher/src/entity/Transaction.ts new file mode 100644 index 0000000..fe9c164 --- /dev/null +++ b/packages/v3-watcher/src/entity/Transaction.ts @@ -0,0 +1,37 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { bigintTransformer } from '@cerc-io/util'; + +@Entity() +@Index(['blockNumber']) +export class Transaction { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('numeric', { transformer: bigintTransformer }) + _blockNumber!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + timestamp!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + gasUsed!: bigint; + + @Column('numeric', { transformer: bigintTransformer }) + gasPrice!: bigint; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/entity/UniswapDayData.ts b/packages/v3-watcher/src/entity/UniswapDayData.ts new file mode 100644 index 0000000..e088a4f --- /dev/null +++ b/packages/v3-watcher/src/entity/UniswapDayData.ts @@ -0,0 +1,47 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import { Entity, PrimaryColumn, Column, Index } from 'typeorm'; +import { decimalTransformer, bigintTransformer } from '@cerc-io/util'; +import { Decimal } from 'decimal.js'; + +@Entity() +@Index(['blockNumber']) +export class UniswapDayData { + @PrimaryColumn('varchar') + id!: string; + + @PrimaryColumn('varchar', { length: 66 }) + blockHash!: string; + + @Column('integer') + blockNumber!: number; + + @Column('integer') + date!: number; + + @Column('numeric', { transformer: decimalTransformer }) + volumeETH!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSD!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + volumeUSDUntracked!: Decimal; + + @Column('numeric', { transformer: decimalTransformer }) + feesUSD!: Decimal; + + @Column('numeric', { transformer: bigintTransformer }) + txCount!: bigint; + + @Column('numeric', { transformer: decimalTransformer }) + tvlUSD!: Decimal; + + @Column('boolean', { default: false }) + isPruned!: boolean; + + @Column('boolean', { default: false }) + isRemoved!: boolean; +} diff --git a/packages/v3-watcher/src/fill.ts b/packages/v3-watcher/src/fill.ts new file mode 100644 index 0000000..210341e --- /dev/null +++ b/packages/v3-watcher/src/fill.ts @@ -0,0 +1,48 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import 'reflect-metadata'; +import debug from 'debug'; + +import { FillCmd } from '@cerc-io/cli'; +import { getContractEntitiesMap } from '@cerc-io/util'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from './database'; +import { Indexer } from './indexer'; + +const log = debug('vulcanize:fill'); + +export const main = async (): Promise => { + const fillCmd = new FillCmd(); + await fillCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + fillCmd.config.server, + fillCmd.clients.ethClient, + fillCmd.ethProvider, + fillCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await fillCmd.initIndexer(Indexer, graphWatcher); + + // Get contractEntitiesMap required for fill-state + // NOTE: Assuming each entity type is only mapped to a single contract + const contractEntitiesMap = getContractEntitiesMap(graphWatcher.dataSources); + + await fillCmd.exec(contractEntitiesMap); +}; + +main().catch(err => { + log(err); +}).finally(() => { + process.exit(); +}); + +process.on('SIGINT', () => { + log(`Exiting process ${process.pid} with code 0`); + process.exit(0); +}); diff --git a/packages/v3-watcher/src/gql/index.ts b/packages/v3-watcher/src/gql/index.ts new file mode 100644 index 0000000..4732f68 --- /dev/null +++ b/packages/v3-watcher/src/gql/index.ts @@ -0,0 +1,3 @@ +export * as mutations from './mutations'; +export * as queries from './queries'; +export * as subscriptions from './subscriptions'; diff --git a/packages/v3-watcher/src/gql/mutations/index.ts b/packages/v3-watcher/src/gql/mutations/index.ts new file mode 100644 index 0000000..0c3bd85 --- /dev/null +++ b/packages/v3-watcher/src/gql/mutations/index.ts @@ -0,0 +1,4 @@ +import fs from 'fs'; +import path from 'path'; + +export const watchContract = fs.readFileSync(path.join(__dirname, 'watchContract.gql'), 'utf8'); diff --git a/packages/v3-watcher/src/gql/mutations/watchContract.gql b/packages/v3-watcher/src/gql/mutations/watchContract.gql new file mode 100644 index 0000000..2ecc74f --- /dev/null +++ b/packages/v3-watcher/src/gql/mutations/watchContract.gql @@ -0,0 +1,3 @@ +mutation watchContract($address: String!, $kind: String!, $checkpoint: Boolean!, $startingBlock: Int){ + watchContract(address: $address, kind: $kind, checkpoint: $checkpoint, startingBlock: $startingBlock) +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/_meta.gql b/packages/v3-watcher/src/gql/queries/_meta.gql new file mode 100644 index 0000000..d686e04 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/_meta.gql @@ -0,0 +1,11 @@ +query _meta($block: Block_height){ + _meta(block: $block){ + block{ + hash + number + timestamp + } + deployment + hasIndexingErrors + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/bundle.gql b/packages/v3-watcher/src/gql/queries/bundle.gql new file mode 100644 index 0000000..d0ac6c5 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/bundle.gql @@ -0,0 +1,6 @@ +query bundle($id: ID!, $block: Block_height){ + bundle(id: $id, block: $block){ + id + ethPriceUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/bundles.gql b/packages/v3-watcher/src/gql/queries/bundles.gql new file mode 100644 index 0000000..8fc597d --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/bundles.gql @@ -0,0 +1,6 @@ +query bundles($block: Block_height, $where: Bundle_filter, $orderBy: Bundle_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + bundles(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + ethPriceUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/burn.gql b/packages/v3-watcher/src/gql/queries/burn.gql new file mode 100644 index 0000000..a19a079 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/burn.gql @@ -0,0 +1,86 @@ +query burn($id: ID!, $block: Block_height){ + burn(id: $id, block: $block){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/burns.gql b/packages/v3-watcher/src/gql/queries/burns.gql new file mode 100644 index 0000000..6aac19a --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/burns.gql @@ -0,0 +1,86 @@ +query burns($block: Block_height, $where: Burn_filter, $orderBy: Burn_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + burns(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/collect.gql b/packages/v3-watcher/src/gql/queries/collect.gql new file mode 100644 index 0000000..c4a38e0 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/collect.gql @@ -0,0 +1,50 @@ +query collect($id: ID!, $block: Block_height){ + collect(id: $id, block: $block){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/collects.gql b/packages/v3-watcher/src/gql/queries/collects.gql new file mode 100644 index 0000000..cd2d362 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/collects.gql @@ -0,0 +1,50 @@ +query collects($block: Block_height, $where: Collect_filter, $orderBy: Collect_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + collects(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/decreaseEvent.gql b/packages/v3-watcher/src/gql/queries/decreaseEvent.gql new file mode 100644 index 0000000..d37a02f --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/decreaseEvent.gql @@ -0,0 +1,98 @@ +query decreaseEvent($id: ID!, $block: Block_height){ + decreaseEvent(id: $id, block: $block){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenID + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + amount0 + amount1 + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timeStamp + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/decreaseEvents.gql b/packages/v3-watcher/src/gql/queries/decreaseEvents.gql new file mode 100644 index 0000000..640d71e --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/decreaseEvents.gql @@ -0,0 +1,98 @@ +query decreaseEvents($block: Block_height, $where: DecreaseEvent_filter, $orderBy: DecreaseEvent_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + decreaseEvents(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenID + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + amount0 + amount1 + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timeStamp + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/events.gql b/packages/v3-watcher/src/gql/queries/events.gql new file mode 100644 index 0000000..bad0d46 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/events.gql @@ -0,0 +1,129 @@ +query events($blockHash: String!, $contractAddress: String!, $name: String){ + events(blockHash: $blockHash, contractAddress: $contractAddress, name: $name){ + block{ + cid + hash + number + timestamp + parentHash + } + tx{ + hash + index + from + to + } + contract + eventIndex + event{ + ... on FeeAmountEnabledEvent { + fee + tickSpacing + } + ... on OwnerChangedEvent { + oldOwner + newOwner + } + ... on PoolCreatedEvent { + token0 + token1 + fee + tickSpacing + pool + } + ... on ApprovalEvent { + owner + approved + tokenId + } + ... on ApprovalForAllEvent { + owner + operator + approved + } + ... on CollectEvent { + tokenId + recipient + amount0 + amount1 + owner + tickLower + tickUpper + } + ... on DecreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on IncreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on TransferEvent { + from + to + tokenId + } + ... on BurnEvent { + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on CollectProtocolEvent { + sender + recipient + amount0 + amount1 + } + ... on FlashEvent { + sender + recipient + amount0 + amount1 + paid0 + paid1 + } + ... on IncreaseObservationCardinalityNextEvent { + observationCardinalityNextOld + observationCardinalityNextNew + } + ... on InitializeEvent { + sqrtPriceX96 + tick + } + ... on MintEvent { + sender + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on SetFeeProtocolEvent { + feeProtocol0Old + feeProtocol1Old + feeProtocol0New + feeProtocol1New + } + ... on SwapEvent { + sender + recipient + amount0 + amount1 + sqrtPriceX96 + liquidity + tick + } + } + proof{ + data + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/eventsInRange.gql b/packages/v3-watcher/src/gql/queries/eventsInRange.gql new file mode 100644 index 0000000..5ddab05 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/eventsInRange.gql @@ -0,0 +1,129 @@ +query eventsInRange($fromBlockNumber: Int!, $toBlockNumber: Int!){ + eventsInRange(fromBlockNumber: $fromBlockNumber, toBlockNumber: $toBlockNumber){ + block{ + cid + hash + number + timestamp + parentHash + } + tx{ + hash + index + from + to + } + contract + eventIndex + event{ + ... on FeeAmountEnabledEvent { + fee + tickSpacing + } + ... on OwnerChangedEvent { + oldOwner + newOwner + } + ... on PoolCreatedEvent { + token0 + token1 + fee + tickSpacing + pool + } + ... on ApprovalEvent { + owner + approved + tokenId + } + ... on ApprovalForAllEvent { + owner + operator + approved + } + ... on CollectEvent { + tokenId + recipient + amount0 + amount1 + owner + tickLower + tickUpper + } + ... on DecreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on IncreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on TransferEvent { + from + to + tokenId + } + ... on BurnEvent { + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on CollectProtocolEvent { + sender + recipient + amount0 + amount1 + } + ... on FlashEvent { + sender + recipient + amount0 + amount1 + paid0 + paid1 + } + ... on IncreaseObservationCardinalityNextEvent { + observationCardinalityNextOld + observationCardinalityNextNew + } + ... on InitializeEvent { + sqrtPriceX96 + tick + } + ... on MintEvent { + sender + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on SetFeeProtocolEvent { + feeProtocol0Old + feeProtocol1Old + feeProtocol0New + feeProtocol1New + } + ... on SwapEvent { + sender + recipient + amount0 + amount1 + sqrtPriceX96 + liquidity + tick + } + } + proof{ + data + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/factories.gql b/packages/v3-watcher/src/gql/queries/factories.gql new file mode 100644 index 0000000..a3c00cb --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/factories.gql @@ -0,0 +1,17 @@ +query factories($block: Block_height, $where: Factory_filter, $orderBy: Factory_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + factories(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + poolCount + txCount + totalVolumeUSD + totalVolumeETH + totalFeesUSD + totalFeesETH + untrackedVolumeUSD + totalValueLockedUSD + totalValueLockedETH + totalValueLockedUSDUntracked + totalValueLockedETHUntracked + owner + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/factory.gql b/packages/v3-watcher/src/gql/queries/factory.gql new file mode 100644 index 0000000..a50af18 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/factory.gql @@ -0,0 +1,17 @@ +query factory($id: ID!, $block: Block_height){ + factory(id: $id, block: $block){ + id + poolCount + txCount + totalVolumeUSD + totalVolumeETH + totalFeesUSD + totalFeesETH + untrackedVolumeUSD + totalValueLockedUSD + totalValueLockedETH + totalValueLockedUSDUntracked + totalValueLockedETHUntracked + owner + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/flash.gql b/packages/v3-watcher/src/gql/queries/flash.gql new file mode 100644 index 0000000..a1bb57d --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/flash.gql @@ -0,0 +1,51 @@ +query flash($id: ID!, $block: Block_height){ + flash(id: $id, block: $block){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + sender + recipient + amount0 + amount1 + amountUSD + amount0Paid + amount1Paid + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/flashes.gql b/packages/v3-watcher/src/gql/queries/flashes.gql new file mode 100644 index 0000000..3d3b494 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/flashes.gql @@ -0,0 +1,51 @@ +query flashes($block: Block_height, $where: Flash_filter, $orderBy: Flash_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + flashes(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + sender + recipient + amount0 + amount1 + amountUSD + amount0Paid + amount1Paid + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/getState.gql b/packages/v3-watcher/src/gql/queries/getState.gql new file mode 100644 index 0000000..3b8f605 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/getState.gql @@ -0,0 +1,15 @@ +query getState($blockHash: String!, $contractAddress: String!, $kind: String){ + getState(blockHash: $blockHash, contractAddress: $contractAddress, kind: $kind){ + block{ + cid + hash + number + timestamp + parentHash + } + contractAddress + cid + kind + data + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/getStateByCID.gql b/packages/v3-watcher/src/gql/queries/getStateByCID.gql new file mode 100644 index 0000000..6c3c4fd --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/getStateByCID.gql @@ -0,0 +1,15 @@ +query getStateByCID($cid: String!){ + getStateByCID(cid: $cid){ + block{ + cid + hash + number + timestamp + parentHash + } + contractAddress + cid + kind + data + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/getSyncStatus.gql b/packages/v3-watcher/src/gql/queries/getSyncStatus.gql new file mode 100644 index 0000000..48175b4 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/getSyncStatus.gql @@ -0,0 +1,12 @@ +query getSyncStatus{ + getSyncStatus{ + latestIndexedBlockHash + latestIndexedBlockNumber + latestCanonicalBlockHash + latestCanonicalBlockNumber + initialIndexedBlockHash + initialIndexedBlockNumber + latestProcessedBlockHash + latestProcessedBlockNumber + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/increaseEvent.gql b/packages/v3-watcher/src/gql/queries/increaseEvent.gql new file mode 100644 index 0000000..fd1d1c7 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/increaseEvent.gql @@ -0,0 +1,98 @@ +query increaseEvent($id: ID!, $block: Block_height){ + increaseEvent(id: $id, block: $block){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenID + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + amount0 + amount1 + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timeStamp + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/increaseEvents.gql b/packages/v3-watcher/src/gql/queries/increaseEvents.gql new file mode 100644 index 0000000..71858f0 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/increaseEvents.gql @@ -0,0 +1,98 @@ +query increaseEvents($block: Block_height, $where: IncreaseEvent_filter, $orderBy: IncreaseEvent_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + increaseEvents(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenID + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + amount0 + amount1 + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + timeStamp + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/index.ts b/packages/v3-watcher/src/gql/queries/index.ts new file mode 100644 index 0000000..54d079b --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/index.ts @@ -0,0 +1,55 @@ +import fs from 'fs'; +import path from 'path'; + +export const events = fs.readFileSync(path.join(__dirname, 'events.gql'), 'utf8'); +export const eventsInRange = fs.readFileSync(path.join(__dirname, 'eventsInRange.gql'), 'utf8'); +export const factory = fs.readFileSync(path.join(__dirname, 'factory.gql'), 'utf8'); +export const factories = fs.readFileSync(path.join(__dirname, 'factories.gql'), 'utf8'); +export const bundle = fs.readFileSync(path.join(__dirname, 'bundle.gql'), 'utf8'); +export const bundles = fs.readFileSync(path.join(__dirname, 'bundles.gql'), 'utf8'); +export const token = fs.readFileSync(path.join(__dirname, 'token.gql'), 'utf8'); +export const tokens = fs.readFileSync(path.join(__dirname, 'tokens.gql'), 'utf8'); +export const pool = fs.readFileSync(path.join(__dirname, 'pool.gql'), 'utf8'); +export const pools = fs.readFileSync(path.join(__dirname, 'pools.gql'), 'utf8'); +export const tick = fs.readFileSync(path.join(__dirname, 'tick.gql'), 'utf8'); +export const ticks = fs.readFileSync(path.join(__dirname, 'ticks.gql'), 'utf8'); +export const position = fs.readFileSync(path.join(__dirname, 'position.gql'), 'utf8'); +export const positions = fs.readFileSync(path.join(__dirname, 'positions.gql'), 'utf8'); +export const positionSnapshot = fs.readFileSync(path.join(__dirname, 'positionSnapshot.gql'), 'utf8'); +export const positionSnapshots = fs.readFileSync(path.join(__dirname, 'positionSnapshots.gql'), 'utf8'); +export const transaction = fs.readFileSync(path.join(__dirname, 'transaction.gql'), 'utf8'); +export const transactions = fs.readFileSync(path.join(__dirname, 'transactions.gql'), 'utf8'); +export const mint = fs.readFileSync(path.join(__dirname, 'mint.gql'), 'utf8'); +export const mints = fs.readFileSync(path.join(__dirname, 'mints.gql'), 'utf8'); +export const burn = fs.readFileSync(path.join(__dirname, 'burn.gql'), 'utf8'); +export const burns = fs.readFileSync(path.join(__dirname, 'burns.gql'), 'utf8'); +export const swap = fs.readFileSync(path.join(__dirname, 'swap.gql'), 'utf8'); +export const swaps = fs.readFileSync(path.join(__dirname, 'swaps.gql'), 'utf8'); +export const collect = fs.readFileSync(path.join(__dirname, 'collect.gql'), 'utf8'); +export const collects = fs.readFileSync(path.join(__dirname, 'collects.gql'), 'utf8'); +export const flash = fs.readFileSync(path.join(__dirname, 'flash.gql'), 'utf8'); +export const flashes = fs.readFileSync(path.join(__dirname, 'flashes.gql'), 'utf8'); +export const uniswapDayData = fs.readFileSync(path.join(__dirname, 'uniswapDayData.gql'), 'utf8'); +export const uniswapDayDatas = fs.readFileSync(path.join(__dirname, 'uniswapDayDatas.gql'), 'utf8'); +export const poolDayData = fs.readFileSync(path.join(__dirname, 'poolDayData.gql'), 'utf8'); +export const poolDayDatas = fs.readFileSync(path.join(__dirname, 'poolDayDatas.gql'), 'utf8'); +export const poolHourData = fs.readFileSync(path.join(__dirname, 'poolHourData.gql'), 'utf8'); +export const poolHourDatas = fs.readFileSync(path.join(__dirname, 'poolHourDatas.gql'), 'utf8'); +export const tickHourData = fs.readFileSync(path.join(__dirname, 'tickHourData.gql'), 'utf8'); +export const tickHourDatas = fs.readFileSync(path.join(__dirname, 'tickHourDatas.gql'), 'utf8'); +export const tickDayData = fs.readFileSync(path.join(__dirname, 'tickDayData.gql'), 'utf8'); +export const tickDayDatas = fs.readFileSync(path.join(__dirname, 'tickDayDatas.gql'), 'utf8'); +export const tokenDayData = fs.readFileSync(path.join(__dirname, 'tokenDayData.gql'), 'utf8'); +export const tokenDayDatas = fs.readFileSync(path.join(__dirname, 'tokenDayDatas.gql'), 'utf8'); +export const tokenHourData = fs.readFileSync(path.join(__dirname, 'tokenHourData.gql'), 'utf8'); +export const tokenHourDatas = fs.readFileSync(path.join(__dirname, 'tokenHourDatas.gql'), 'utf8'); +export const increaseEvent = fs.readFileSync(path.join(__dirname, 'increaseEvent.gql'), 'utf8'); +export const increaseEvents = fs.readFileSync(path.join(__dirname, 'increaseEvents.gql'), 'utf8'); +export const decreaseEvent = fs.readFileSync(path.join(__dirname, 'decreaseEvent.gql'), 'utf8'); +export const decreaseEvents = fs.readFileSync(path.join(__dirname, 'decreaseEvents.gql'), 'utf8'); +export const setProtocolFeeEvent = fs.readFileSync(path.join(__dirname, 'setProtocolFeeEvent.gql'), 'utf8'); +export const setProtocolFeeEvents = fs.readFileSync(path.join(__dirname, 'setProtocolFeeEvents.gql'), 'utf8'); +export const _meta = fs.readFileSync(path.join(__dirname, '_meta.gql'), 'utf8'); +export const getStateByCID = fs.readFileSync(path.join(__dirname, 'getStateByCID.gql'), 'utf8'); +export const getState = fs.readFileSync(path.join(__dirname, 'getState.gql'), 'utf8'); +export const getSyncStatus = fs.readFileSync(path.join(__dirname, 'getSyncStatus.gql'), 'utf8'); diff --git a/packages/v3-watcher/src/gql/queries/mint.gql b/packages/v3-watcher/src/gql/queries/mint.gql new file mode 100644 index 0000000..cb32aea --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/mint.gql @@ -0,0 +1,87 @@ +query mint($id: ID!, $block: Block_height){ + mint(id: $id, block: $block){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/mints.gql b/packages/v3-watcher/src/gql/queries/mints.gql new file mode 100644 index 0000000..430dbd1 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/mints.gql @@ -0,0 +1,87 @@ +query mints($block: Block_height, $where: Mint_filter, $orderBy: Mint_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + mints(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/pool.gql b/packages/v3-watcher/src/gql/queries/pool.gql new file mode 100644 index 0000000..b4e5020 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/pool.gql @@ -0,0 +1,181 @@ +query pool($id: ID!, $block: Block_height){ + pool(id: $id, block: $block){ + id + createdAtTimestamp + createdAtBlockNumber + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + poolHourData{ + id + periodStartUnix + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } + poolDayData{ + id + date + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } + mints{ + id + timestamp + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + burns{ + id + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + swaps{ + id + timestamp + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } + collects{ + id + timestamp + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + ticks{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/poolDayData.gql b/packages/v3-watcher/src/gql/queries/poolDayData.gql new file mode 100644 index 0000000..f0dcecc --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/poolDayData.gql @@ -0,0 +1,53 @@ +query poolDayData($id: ID!, $block: Block_height){ + poolDayData(id: $id, block: $block){ + id + date + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/poolDayDatas.gql b/packages/v3-watcher/src/gql/queries/poolDayDatas.gql new file mode 100644 index 0000000..5a73bc6 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/poolDayDatas.gql @@ -0,0 +1,53 @@ +query poolDayDatas($block: Block_height, $where: PoolDayData_filter, $orderBy: PoolDayData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + poolDayDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + date + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/poolHourData.gql b/packages/v3-watcher/src/gql/queries/poolHourData.gql new file mode 100644 index 0000000..d024398 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/poolHourData.gql @@ -0,0 +1,53 @@ +query poolHourData($id: ID!, $block: Block_height){ + poolHourData(id: $id, block: $block){ + id + periodStartUnix + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/poolHourDatas.gql b/packages/v3-watcher/src/gql/queries/poolHourDatas.gql new file mode 100644 index 0000000..753b97a --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/poolHourDatas.gql @@ -0,0 +1,53 @@ +query poolHourDatas($block: Block_height, $where: PoolHourData_filter, $orderBy: PoolHourData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + poolHourDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + periodStartUnix + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/pools.gql b/packages/v3-watcher/src/gql/queries/pools.gql new file mode 100644 index 0000000..2b14f4c --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/pools.gql @@ -0,0 +1,181 @@ +query pools($block: Block_height, $where: Pool_filter, $orderBy: Pool_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + pools(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + createdAtTimestamp + createdAtBlockNumber + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + poolHourData{ + id + periodStartUnix + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } + poolDayData{ + id + date + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close + } + mints{ + id + timestamp + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + burns{ + id + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + swaps{ + id + timestamp + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } + collects{ + id + timestamp + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + ticks{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/position.gql b/packages/v3-watcher/src/gql/queries/position.gql new file mode 100644 index 0000000..004e058 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/position.gql @@ -0,0 +1,149 @@ +query position($id: ID!, $block: Block_height){ + position(id: $id, block: $block){ + id + owner + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + tickLower{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + tickUpper{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + increaseEvents{ + id + tokenID + amount0 + amount1 + timeStamp + } + decreaseEvents{ + id + tokenID + amount0 + amount1 + timeStamp + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/positionSnapshot.gql b/packages/v3-watcher/src/gql/queries/positionSnapshot.gql new file mode 100644 index 0000000..41fa2fe --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/positionSnapshot.gql @@ -0,0 +1,72 @@ +query positionSnapshot($id: ID!, $block: Block_height){ + positionSnapshot(id: $id, block: $block){ + id + owner + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + blockNumber + timestamp + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedFeesToken0 + collectedFeesToken1 + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/positionSnapshots.gql b/packages/v3-watcher/src/gql/queries/positionSnapshots.gql new file mode 100644 index 0000000..1337e48 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/positionSnapshots.gql @@ -0,0 +1,72 @@ +query positionSnapshots($block: Block_height, $where: PositionSnapshot_filter, $orderBy: PositionSnapshot_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + positionSnapshots(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + owner + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + position{ + id + owner + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } + blockNumber + timestamp + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedFeesToken0 + collectedFeesToken1 + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/positions.gql b/packages/v3-watcher/src/gql/queries/positions.gql new file mode 100644 index 0000000..4091d54 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/positions.gql @@ -0,0 +1,149 @@ +query positions($block: Block_height, $where: Position_filter, $orderBy: Position_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + positions(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + owner + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + tickLower{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + tickUpper{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + increaseEvents{ + id + tokenID + amount0 + amount1 + timeStamp + } + decreaseEvents{ + id + tokenID + amount0 + amount1 + timeStamp + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/setProtocolFeeEvent.gql b/packages/v3-watcher/src/gql/queries/setProtocolFeeEvent.gql new file mode 100644 index 0000000..259706e --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/setProtocolFeeEvent.gql @@ -0,0 +1,41 @@ +query setProtocolFeeEvent($id: ID!, $block: Block_height){ + setProtocolFeeEvent(id: $id, block: $block){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + logIndex + new0 + new1 + old0 + old1 + timestamp + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/setProtocolFeeEvents.gql b/packages/v3-watcher/src/gql/queries/setProtocolFeeEvents.gql new file mode 100644 index 0000000..7d25a07 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/setProtocolFeeEvents.gql @@ -0,0 +1,41 @@ +query setProtocolFeeEvents($block: Block_height, $where: SetProtocolFeeEvent_filter, $orderBy: SetProtocolFeeEvent_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + setProtocolFeeEvents(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + logIndex + new0 + new1 + old0 + old1 + timestamp + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/swap.gql b/packages/v3-watcher/src/gql/queries/swap.gql new file mode 100644 index 0000000..d508c73 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/swap.gql @@ -0,0 +1,86 @@ +query swap($id: ID!, $block: Block_height){ + swap(id: $id, block: $block){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/swaps.gql b/packages/v3-watcher/src/gql/queries/swaps.gql new file mode 100644 index 0000000..883156d --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/swaps.gql @@ -0,0 +1,86 @@ +query swaps($block: Block_height, $where: Swap_filter, $orderBy: Swap_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + swaps(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + transaction{ + id + blockNumber + timestamp + gasUsed + gasPrice + } + timestamp + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + token0{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + token1{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tick.gql b/packages/v3-watcher/src/gql/queries/tick.gql new file mode 100644 index 0000000..2264ca1 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tick.gql @@ -0,0 +1,54 @@ +query tick($id: ID!, $block: Block_height){ + tick(id: $id, block: $block){ + id + poolAddress + tickIdx + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tickDayData.gql b/packages/v3-watcher/src/gql/queries/tickDayData.gql new file mode 100644 index 0000000..cf6d5b6 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tickDayData.gql @@ -0,0 +1,66 @@ +query tickDayData($id: ID!, $block: Block_height){ + tickDayData(id: $id, block: $block){ + id + date + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tick{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tickDayDatas.gql b/packages/v3-watcher/src/gql/queries/tickDayDatas.gql new file mode 100644 index 0000000..686bfd7 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tickDayDatas.gql @@ -0,0 +1,66 @@ +query tickDayDatas($block: Block_height, $where: TickDayData_filter, $orderBy: TickDayData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + tickDayDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + date + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tick{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tickHourData.gql b/packages/v3-watcher/src/gql/queries/tickHourData.gql new file mode 100644 index 0000000..540fe9c --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tickHourData.gql @@ -0,0 +1,64 @@ +query tickHourData($id: ID!, $block: Block_height){ + tickHourData(id: $id, block: $block){ + id + periodStartUnix + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tick{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tickHourDatas.gql b/packages/v3-watcher/src/gql/queries/tickHourDatas.gql new file mode 100644 index 0000000..23be822 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tickHourDatas.gql @@ -0,0 +1,64 @@ +query tickHourDatas($block: Block_height, $where: TickHourData_filter, $orderBy: TickHourData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + tickHourDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + periodStartUnix + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tick{ + id + poolAddress + tickIdx + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/ticks.gql b/packages/v3-watcher/src/gql/queries/ticks.gql new file mode 100644 index 0000000..91d8e5d --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/ticks.gql @@ -0,0 +1,54 @@ +query ticks($block: Block_height, $where: Tick_filter, $orderBy: Tick_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + ticks(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + poolAddress + tickIdx + pool{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/token.gql b/packages/v3-watcher/src/gql/queries/token.gql new file mode 100644 index 0000000..7a4706c --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/token.gql @@ -0,0 +1,64 @@ +query token($id: ID!, $block: Block_height){ + token(id: $id, block: $block){ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + whitelistPools{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenDayData{ + id + date + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tokenDayData.gql b/packages/v3-watcher/src/gql/queries/tokenDayData.gql new file mode 100644 index 0000000..d6fb3ea --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tokenDayData.gql @@ -0,0 +1,34 @@ +query tokenDayData($id: ID!, $block: Block_height){ + tokenDayData(id: $id, block: $block){ + id + date + token{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tokenDayDatas.gql b/packages/v3-watcher/src/gql/queries/tokenDayDatas.gql new file mode 100644 index 0000000..ddb8194 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tokenDayDatas.gql @@ -0,0 +1,34 @@ +query tokenDayDatas($block: Block_height, $where: TokenDayData_filter, $orderBy: TokenDayData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + tokenDayDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + date + token{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tokenHourData.gql b/packages/v3-watcher/src/gql/queries/tokenHourData.gql new file mode 100644 index 0000000..ce527f8 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tokenHourData.gql @@ -0,0 +1,34 @@ +query tokenHourData($id: ID!, $block: Block_height){ + tokenHourData(id: $id, block: $block){ + id + periodStartUnix + token{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tokenHourDatas.gql b/packages/v3-watcher/src/gql/queries/tokenHourDatas.gql new file mode 100644 index 0000000..59e8458 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tokenHourDatas.gql @@ -0,0 +1,34 @@ +query tokenHourDatas($block: Block_height, $where: TokenHourData_filter, $orderBy: TokenHourData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + tokenHourDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + periodStartUnix + token{ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + } + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/tokens.gql b/packages/v3-watcher/src/gql/queries/tokens.gql new file mode 100644 index 0000000..5c42ee8 --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/tokens.gql @@ -0,0 +1,64 @@ +query tokens($block: Block_height, $where: Token_filter, $orderBy: Token_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + tokens(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + whitelistPools{ + id + createdAtTimestamp + createdAtBlockNumber + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + } + tokenDayData{ + id + date + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/transaction.gql b/packages/v3-watcher/src/gql/queries/transaction.gql new file mode 100644 index 0000000..7e9ac5b --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/transaction.gql @@ -0,0 +1,72 @@ +query transaction($id: ID!, $block: Block_height){ + transaction(id: $id, block: $block){ + id + blockNumber + timestamp + gasUsed + gasPrice + mints{ + id + timestamp + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + burns{ + id + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + swaps{ + id + timestamp + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } + flashed{ + id + timestamp + sender + recipient + amount0 + amount1 + amountUSD + amount0Paid + amount1Paid + logIndex + } + collects{ + id + timestamp + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/transactions.gql b/packages/v3-watcher/src/gql/queries/transactions.gql new file mode 100644 index 0000000..b25b8fc --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/transactions.gql @@ -0,0 +1,72 @@ +query transactions($block: Block_height, $where: Transaction_filter, $orderBy: Transaction_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + transactions(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + blockNumber + timestamp + gasUsed + gasPrice + mints{ + id + timestamp + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + burns{ + id + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + swaps{ + id + timestamp + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex + } + flashed{ + id + timestamp + sender + recipient + amount0 + amount1 + amountUSD + amount0Paid + amount1Paid + logIndex + } + collects{ + id + timestamp + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/uniswapDayData.gql b/packages/v3-watcher/src/gql/queries/uniswapDayData.gql new file mode 100644 index 0000000..dda072d --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/uniswapDayData.gql @@ -0,0 +1,12 @@ +query uniswapDayData($id: ID!, $block: Block_height){ + uniswapDayData(id: $id, block: $block){ + id + date + volumeETH + volumeUSD + volumeUSDUntracked + feesUSD + txCount + tvlUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/queries/uniswapDayDatas.gql b/packages/v3-watcher/src/gql/queries/uniswapDayDatas.gql new file mode 100644 index 0000000..9e73dcb --- /dev/null +++ b/packages/v3-watcher/src/gql/queries/uniswapDayDatas.gql @@ -0,0 +1,12 @@ +query uniswapDayDatas($block: Block_height, $where: UniswapDayData_filter, $orderBy: UniswapDayData_orderBy, $orderDirection: OrderDirection, $first: Int, $skip: Int){ + uniswapDayDatas(block: $block, where: $where, orderBy: $orderBy, orderDirection: $orderDirection, first: $first, skip: $skip){ + id + date + volumeETH + volumeUSD + volumeUSDUntracked + feesUSD + txCount + tvlUSD + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/gql/subscriptions/index.ts b/packages/v3-watcher/src/gql/subscriptions/index.ts new file mode 100644 index 0000000..f12910c --- /dev/null +++ b/packages/v3-watcher/src/gql/subscriptions/index.ts @@ -0,0 +1,4 @@ +import fs from 'fs'; +import path from 'path'; + +export const onEvent = fs.readFileSync(path.join(__dirname, 'onEvent.gql'), 'utf8'); diff --git a/packages/v3-watcher/src/gql/subscriptions/onEvent.gql b/packages/v3-watcher/src/gql/subscriptions/onEvent.gql new file mode 100644 index 0000000..fc45f9d --- /dev/null +++ b/packages/v3-watcher/src/gql/subscriptions/onEvent.gql @@ -0,0 +1,129 @@ +subscription onEvent{ + onEvent{ + block{ + cid + hash + number + timestamp + parentHash + } + tx{ + hash + index + from + to + } + contract + eventIndex + event{ + ... on FeeAmountEnabledEvent { + fee + tickSpacing + } + ... on OwnerChangedEvent { + oldOwner + newOwner + } + ... on PoolCreatedEvent { + token0 + token1 + fee + tickSpacing + pool + } + ... on ApprovalEvent { + owner + approved + tokenId + } + ... on ApprovalForAllEvent { + owner + operator + approved + } + ... on CollectEvent { + tokenId + recipient + amount0 + amount1 + owner + tickLower + tickUpper + } + ... on DecreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on IncreaseLiquidityEvent { + tokenId + liquidity + amount0 + amount1 + } + ... on TransferEvent { + from + to + tokenId + } + ... on BurnEvent { + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on CollectProtocolEvent { + sender + recipient + amount0 + amount1 + } + ... on FlashEvent { + sender + recipient + amount0 + amount1 + paid0 + paid1 + } + ... on IncreaseObservationCardinalityNextEvent { + observationCardinalityNextOld + observationCardinalityNextNew + } + ... on InitializeEvent { + sqrtPriceX96 + tick + } + ... on MintEvent { + sender + owner + tickLower + tickUpper + amount + amount0 + amount1 + } + ... on SetFeeProtocolEvent { + feeProtocol0Old + feeProtocol1Old + feeProtocol0New + feeProtocol1New + } + ... on SwapEvent { + sender + recipient + amount0 + amount1 + sqrtPriceX96 + liquidity + tick + } + } + proof{ + data + } + } +} \ No newline at end of file diff --git a/packages/v3-watcher/src/hooks.ts b/packages/v3-watcher/src/hooks.ts new file mode 100644 index 0000000..d45498b --- /dev/null +++ b/packages/v3-watcher/src/hooks.ts @@ -0,0 +1,86 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import assert from 'assert'; + +import { + ResultEvent, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + updateStateForMappingType, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + updateStateForElementaryType +} from '@cerc-io/util'; + +import { Indexer } from './indexer'; + +/** + * Hook function to store an initial state. + * @param indexer Indexer instance. + * @param blockHash Hash of the concerned block. + * @param contractAddress Address of the concerned contract. + * @returns Data block to be stored. + */ +export async function createInitialState (indexer: Indexer, contractAddress: string, blockHash: string): Promise { + assert(indexer); + assert(blockHash); + assert(contractAddress); + + // Store an empty State. + const stateData: any = { + state: {} + }; + + // Use updateStateForElementaryType to update initial state with an elementary property. + // Eg. const stateData = updateStateForElementaryType(stateData, '_totalBalance', result.value.toString()); + + // Use updateStateForMappingType to update initial state with a nested property. + // Eg. const stateData = updateStateForMappingType(stateData, '_allowances', [owner, spender], allowance.value.toString()); + + // Return initial state data to be saved. + return stateData; +} + +/** + * Hook function to create state diff. + * @param indexer Indexer instance that contains methods to fetch the contract variable values. + * @param blockHash Block hash of the concerned block. + */ +export async function createStateDiff (indexer: Indexer, blockHash: string): Promise { + assert(indexer); + assert(blockHash); + + // Use indexer.createDiff() method to save custom state diff(s). +} + +/** + * Hook function to create state checkpoint + * @param indexer Indexer instance. + * @param contractAddress Address of the concerned contract. + * @param blockHash Block hash of the concerned block. + * @returns Whether to disable default checkpoint. If false, the state from this hook is updated with that from default checkpoint. + */ +export async function createStateCheckpoint (indexer: Indexer, contractAddress: string, blockHash: string): Promise { + assert(indexer); + assert(blockHash); + assert(contractAddress); + + // Use indexer.createStateCheckpoint() method to create a custom checkpoint. + + // Return false to update the state created by this hook by auto-generated checkpoint state. + // Return true to disable update of the state created by this hook by auto-generated checkpoint state. + return false; +} + +/** + * Event hook function. + * @param indexer Indexer instance that contains methods to fetch and update the contract values in the database. + * @param eventData ResultEvent object containing event information. + */ +export async function handleEvent (indexer: Indexer, eventData: ResultEvent): Promise { + assert(indexer); + assert(eventData); + + // Use indexer methods to index data. + // Pass `diff` parameter to indexer methods as true to save an auto-generated state from the indexed data. +} diff --git a/packages/v3-watcher/src/indexer.ts b/packages/v3-watcher/src/indexer.ts new file mode 100644 index 0000000..ad49cd2 --- /dev/null +++ b/packages/v3-watcher/src/indexer.ts @@ -0,0 +1,1456 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import assert from 'assert'; +import { DeepPartial, FindConditions, FindManyOptions, ObjectLiteral } from 'typeorm'; +import debug from 'debug'; +import { ethers, constants } from 'ethers'; +import { GraphQLResolveInfo } from 'graphql'; + +import { JsonFragment } from '@ethersproject/abi'; +import { BaseProvider } from '@ethersproject/providers'; +import { MappingKey, StorageLayout } from '@cerc-io/solidity-mapper'; +import { + Indexer as BaseIndexer, + IndexerInterface, + ValueResult, + ServerConfig, + JobQueue, + Where, + QueryOptions, + BlockHeight, + ResultMeta, + updateSubgraphState, + dumpSubgraphState, + GraphWatcherInterface, + StateKind, + StateStatus, + ResultEvent, + getResultEvent, + DatabaseInterface, + Clients, + EthClient, + UpstreamConfig, + EthFullBlock, + EthFullTransaction, + ExtraEventData +} from '@cerc-io/util'; +import { GraphWatcher } from '@cerc-io/graph-node'; + +import FactoryArtifacts from './artifacts/Factory.json'; +import NonfungiblePositionManagerArtifacts from './artifacts/NonfungiblePositionManager.json'; +import PoolArtifacts from './artifacts/Pool.json'; +import { Database, ENTITIES, SUBGRAPH_ENTITIES } from './database'; +import { createInitialState, handleEvent, createStateDiff, createStateCheckpoint } from './hooks'; +import { Contract } from './entity/Contract'; +import { Event } from './entity/Event'; +import { SyncStatus } from './entity/SyncStatus'; +import { StateSyncStatus } from './entity/StateSyncStatus'; +import { BlockProgress } from './entity/BlockProgress'; +import { State } from './entity/State'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Factory } from './entity/Factory'; +import { Bundle } from './entity/Bundle'; +import { Token } from './entity/Token'; +import { Pool } from './entity/Pool'; +import { Tick } from './entity/Tick'; +import { Position } from './entity/Position'; +import { PositionSnapshot } from './entity/PositionSnapshot'; +import { Transaction } from './entity/Transaction'; +import { Mint } from './entity/Mint'; +import { Burn } from './entity/Burn'; +import { Swap } from './entity/Swap'; +import { Collect } from './entity/Collect'; +import { Flash } from './entity/Flash'; +import { UniswapDayData } from './entity/UniswapDayData'; +import { PoolDayData } from './entity/PoolDayData'; +import { PoolHourData } from './entity/PoolHourData'; +import { TickHourData } from './entity/TickHourData'; +import { TickDayData } from './entity/TickDayData'; +import { TokenDayData } from './entity/TokenDayData'; +import { TokenHourData } from './entity/TokenHourData'; +import { IncreaseEvent } from './entity/IncreaseEvent'; +import { DecreaseEvent } from './entity/DecreaseEvent'; +import { SetProtocolFeeEvent } from './entity/SetProtocolFeeEvent'; +/* eslint-enable @typescript-eslint/no-unused-vars */ + +import { FrothyEntity } from './entity/FrothyEntity'; + +// eslint-disable-next-line @typescript-eslint/no-unused-vars +const log = debug('vulcanize:indexer'); + +const KIND_FACTORY = 'Factory'; + +const KIND_NONFUNGIBLEPOSITIONMANAGER = 'NonfungiblePositionManager'; + +const KIND_POOL = 'Pool'; + +export class Indexer implements IndexerInterface { + _db: Database; + _ethClient: EthClient; + _ethProvider: BaseProvider; + _baseIndexer: BaseIndexer; + _serverConfig: ServerConfig; + _upstreamConfig: UpstreamConfig; + _graphWatcher: GraphWatcher; + + _abiMap: Map; + _storageLayoutMap: Map; + _contractMap: Map; + eventSignaturesMap: Map; + + _entityTypesMap: Map; + _relationsMap: Map; + + _subgraphStateMap: Map; + + constructor ( + config: { + server: ServerConfig; + upstream: UpstreamConfig; + }, + db: DatabaseInterface, + clients: Clients, + ethProvider: BaseProvider, + jobQueue: JobQueue, + graphWatcher?: GraphWatcherInterface + ) { + assert(db); + assert(clients.ethClient); + + this._db = db as Database; + this._ethClient = clients.ethClient; + this._ethProvider = ethProvider; + this._serverConfig = config.server; + this._upstreamConfig = config.upstream; + this._baseIndexer = new BaseIndexer(config, this._db, this._ethClient, this._ethProvider, jobQueue); + assert(graphWatcher); + this._graphWatcher = graphWatcher as GraphWatcher; + + this._abiMap = new Map(); + this._storageLayoutMap = new Map(); + this._contractMap = new Map(); + this.eventSignaturesMap = new Map(); + + const { abi: FactoryABI } = FactoryArtifacts; + + const { abi: NonfungiblePositionManagerABI } = NonfungiblePositionManagerArtifacts; + + const { abi: PoolABI } = PoolArtifacts; + + assert(FactoryABI); + this._abiMap.set(KIND_FACTORY, FactoryABI); + + const FactoryContractInterface = new ethers.utils.Interface(FactoryABI); + this._contractMap.set(KIND_FACTORY, FactoryContractInterface); + + const FactoryEventSignatures = Object.values(FactoryContractInterface.events).map(value => { + return FactoryContractInterface.getEventTopic(value); + }); + this.eventSignaturesMap.set(KIND_FACTORY, FactoryEventSignatures); + + assert(NonfungiblePositionManagerABI); + this._abiMap.set(KIND_NONFUNGIBLEPOSITIONMANAGER, NonfungiblePositionManagerABI); + + const NonfungiblePositionManagerContractInterface = new ethers.utils.Interface(NonfungiblePositionManagerABI); + this._contractMap.set(KIND_NONFUNGIBLEPOSITIONMANAGER, NonfungiblePositionManagerContractInterface); + + const NonfungiblePositionManagerEventSignatures = Object.values(NonfungiblePositionManagerContractInterface.events).map(value => { + return NonfungiblePositionManagerContractInterface.getEventTopic(value); + }); + this.eventSignaturesMap.set(KIND_NONFUNGIBLEPOSITIONMANAGER, NonfungiblePositionManagerEventSignatures); + + assert(PoolABI); + this._abiMap.set(KIND_POOL, PoolABI); + + const PoolContractInterface = new ethers.utils.Interface(PoolABI); + this._contractMap.set(KIND_POOL, PoolContractInterface); + + const PoolEventSignatures = Object.values(PoolContractInterface.events).map(value => { + return PoolContractInterface.getEventTopic(value); + }); + this.eventSignaturesMap.set(KIND_POOL, PoolEventSignatures); + + this._entityTypesMap = new Map(); + this._populateEntityTypesMap(); + + this._relationsMap = new Map(); + this._populateRelationsMap(); + + this._subgraphStateMap = new Map(); + } + + get serverConfig (): ServerConfig { + return this._serverConfig; + } + + get upstreamConfig (): UpstreamConfig { + return this._upstreamConfig; + } + + get storageLayoutMap (): Map { + return this._storageLayoutMap; + } + + get graphWatcher (): GraphWatcher { + return this._graphWatcher; + } + + async init (): Promise { + await this._baseIndexer.fetchContracts(); + await this._baseIndexer.fetchStateStatus(); + } + + switchClients ({ ethClient, ethProvider }: { ethClient: EthClient, ethProvider: BaseProvider }): void { + this._ethClient = ethClient; + this._ethProvider = ethProvider; + this._baseIndexer.switchClients({ ethClient, ethProvider }); + this._graphWatcher.switchClients({ ethClient, ethProvider }); + } + + async getMetaData (block: BlockHeight): Promise { + return this._baseIndexer.getMetaData(block); + } + + getResultEvent (event: Event): ResultEvent { + return getResultEvent(event); + } + + async getStorageValue (storageLayout: StorageLayout, blockHash: string, contractAddress: string, variable: string, ...mappingKeys: MappingKey[]): Promise { + return this._baseIndexer.getStorageValue( + storageLayout, + blockHash, + contractAddress, + variable, + ...mappingKeys + ); + } + + async getEntitiesForBlock (blockHash: string, tableName: string): Promise { + return this._db.getEntitiesForBlock(blockHash, tableName); + } + + async processInitialState (contractAddress: string, blockHash: string): Promise { + // Call initial state hook. + return createInitialState(this, contractAddress, blockHash); + } + + async processStateCheckpoint (contractAddress: string, blockHash: string): Promise { + // Call checkpoint hook. + return createStateCheckpoint(this, contractAddress, blockHash); + } + + async processCanonicalBlock (blockHash: string, blockNumber: number): Promise { + console.time('time:indexer#processCanonicalBlock-finalize_auto_diffs'); + // Finalize staged diff blocks if any. + await this._baseIndexer.finalizeDiffStaged(blockHash); + console.timeEnd('time:indexer#processCanonicalBlock-finalize_auto_diffs'); + + // Call custom stateDiff hook. + await createStateDiff(this, blockHash); + + this._graphWatcher.pruneEntityCacheFrothyBlocks(blockHash, blockNumber); + } + + async processCheckpoint (blockHash: string): Promise { + // Return if checkpointInterval is <= 0. + const checkpointInterval = this._serverConfig.checkpointInterval; + if (checkpointInterval <= 0) return; + + console.time('time:indexer#processCheckpoint-checkpoint'); + await this._baseIndexer.processCheckpoint(this, blockHash, checkpointInterval); + console.timeEnd('time:indexer#processCheckpoint-checkpoint'); + } + + async processCLICheckpoint (contractAddress: string, blockHash?: string): Promise { + return this._baseIndexer.processCLICheckpoint(this, contractAddress, blockHash); + } + + async getPrevState (blockHash: string, contractAddress: string, kind?: string): Promise { + return this._db.getPrevState(blockHash, contractAddress, kind); + } + + async getLatestState (contractAddress: string, kind: StateKind | null, blockNumber?: number): Promise { + return this._db.getLatestState(contractAddress, kind, blockNumber); + } + + async getStatesByHash (blockHash: string): Promise { + return this._baseIndexer.getStatesByHash(blockHash); + } + + async getStateByCID (cid: string): Promise { + return this._baseIndexer.getStateByCID(cid); + } + + async getStates (where: FindConditions): Promise { + return this._db.getStates(where); + } + + getStateData (state: State): any { + return this._baseIndexer.getStateData(state); + } + + // Method used to create auto diffs (diff_staged). + async createDiffStaged (contractAddress: string, blockHash: string, data: any): Promise { + console.time('time:indexer#createDiffStaged-auto_diff'); + await this._baseIndexer.createDiffStaged(contractAddress, blockHash, data); + console.timeEnd('time:indexer#createDiffStaged-auto_diff'); + } + + // Method to be used by createStateDiff hook. + async createDiff (contractAddress: string, blockHash: string, data: any): Promise { + const block = await this.getBlockProgress(blockHash); + assert(block); + + await this._baseIndexer.createDiff(contractAddress, block, data); + } + + // Method to be used by createStateCheckpoint hook. + async createStateCheckpoint (contractAddress: string, blockHash: string, data: any): Promise { + const block = await this.getBlockProgress(blockHash); + assert(block); + + return this._baseIndexer.createStateCheckpoint(contractAddress, block, data); + } + + // Method to be used by export-state CLI. + async createCheckpoint (contractAddress: string, blockHash: string): Promise { + const block = await this.getBlockProgress(blockHash); + assert(block); + + return this._baseIndexer.createCheckpoint(this, contractAddress, block); + } + + // Method to be used by fill-state CLI. + async createInit (blockHash: string, blockNumber: number): Promise { + // Create initial state for contracts. + await this._baseIndexer.createInit(this, blockHash, blockNumber); + } + + async saveOrUpdateState (state: State): Promise { + return this._baseIndexer.saveOrUpdateState(state); + } + + async removeStates (blockNumber: number, kind: StateKind): Promise { + await this._baseIndexer.removeStates(blockNumber, kind); + } + + async getSubgraphEntity ( + entity: new () => Entity, + id: string, + block: BlockHeight, + queryInfo: GraphQLResolveInfo + ): Promise { + const data = await this._graphWatcher.getEntity(entity, id, this._relationsMap, block, queryInfo); + + return data; + } + + async getSubgraphEntities ( + entity: new () => Entity, + block: BlockHeight, + where: { [key: string]: any } = {}, + queryOptions: QueryOptions = {}, + queryInfo: GraphQLResolveInfo + ): Promise { + return this._graphWatcher.getEntities(entity, this._relationsMap, block, where, queryOptions, queryInfo); + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async triggerIndexingOnEvent (event: Event, extraData: ExtraEventData): Promise { + const resultEvent = this.getResultEvent(event); + + console.time('time:indexer#processEvent-mapping_code'); + // Call subgraph handler for event. + await this._graphWatcher.handleEvent(resultEvent, extraData); + console.timeEnd('time:indexer#processEvent-mapping_code'); + + // Call custom hook function for indexing on event. + await handleEvent(this, resultEvent); + } + + async processEvent (event: Event, extraData: ExtraEventData): Promise { + // Trigger indexing of data based on the event. + await this.triggerIndexingOnEvent(event, extraData); + } + + async processBlock (blockProgress: BlockProgress): Promise { + console.time('time:indexer#processBlock-init_state'); + // Call a function to create initial state for contracts. + await this._baseIndexer.createInit(this, blockProgress.blockHash, blockProgress.blockNumber); + console.timeEnd('time:indexer#processBlock-init_state'); + + this._graphWatcher.updateEntityCacheFrothyBlocks(blockProgress); + } + + async processBlockAfterEvents (blockHash: string, blockNumber: number, extraData: ExtraEventData): Promise { + console.time('time:indexer#processBlockAfterEvents-mapping_code'); + // Call subgraph handler for block. + await this._graphWatcher.handleBlock(blockHash, blockNumber, extraData); + console.timeEnd('time:indexer#processBlockAfterEvents-mapping_code'); + + console.time('time:indexer#processBlockAfterEvents-dump_subgraph_state'); + // Persist subgraph state to the DB. + await this.dumpSubgraphState(blockHash); + console.timeEnd('time:indexer#processBlockAfterEvents-dump_subgraph_state'); + } + + parseEventNameAndArgs (kind: string, logObj: any): { eventParsed: boolean, eventDetails: any } { + const { topics, data } = logObj; + + const contract = this._contractMap.get(kind); + assert(contract); + + let logDescription: ethers.utils.LogDescription; + try { + logDescription = contract.parseLog({ data, topics }); + } catch (err) { + // Return if no matching event found + if ((err as Error).message.includes('no matching event')) { + log(`WARNING: Skipping event for contract ${kind} as no matching event found in the ABI`); + return { eventParsed: false, eventDetails: {} }; + } + + throw err; + } + + const { eventName, eventInfo, eventSignature } = this._baseIndexer.parseEvent(logDescription); + + return { + eventParsed: true, + eventDetails: { + eventName, + eventInfo, + eventSignature + } + }; + } + + async getStateSyncStatus (): Promise { + return this._db.getStateSyncStatus(); + } + + async updateStateSyncStatusIndexedBlock (blockNumber: number, force?: boolean): Promise { + if (!this._serverConfig.enableState) { + return; + } + + const dbTx = await this._db.createTransactionRunner(); + let res; + + try { + res = await this._db.updateStateSyncStatusIndexedBlock(dbTx, blockNumber, force); + await dbTx.commitTransaction(); + } catch (error) { + await dbTx.rollbackTransaction(); + throw error; + } finally { + await dbTx.release(); + } + + return res; + } + + async updateStateSyncStatusCheckpointBlock (blockNumber: number, force?: boolean): Promise { + const dbTx = await this._db.createTransactionRunner(); + let res; + + try { + res = await this._db.updateStateSyncStatusCheckpointBlock(dbTx, blockNumber, force); + await dbTx.commitTransaction(); + } catch (error) { + await dbTx.rollbackTransaction(); + throw error; + } finally { + await dbTx.release(); + } + + return res; + } + + async getLatestCanonicalBlock (): Promise { + const syncStatus = await this.getSyncStatus(); + assert(syncStatus); + + if (syncStatus.latestCanonicalBlockHash === constants.HashZero) { + return; + } + + const latestCanonicalBlock = await this.getBlockProgress(syncStatus.latestCanonicalBlockHash); + assert(latestCanonicalBlock); + + return latestCanonicalBlock; + } + + async getLatestStateIndexedBlock (): Promise { + return this._baseIndexer.getLatestStateIndexedBlock(); + } + + async addContracts (): Promise { + // Watching all the contracts in the subgraph. + await this._graphWatcher.addContracts(); + } + + async watchContract (address: string, kind: string, checkpoint: boolean, startingBlock: number, context?: any): Promise { + return this._baseIndexer.watchContract(address, kind, checkpoint, startingBlock, context); + } + + updateStateStatusMap (address: string, stateStatus: StateStatus): void { + this._baseIndexer.updateStateStatusMap(address, stateStatus); + } + + cacheContract (contract: Contract): void { + return this._baseIndexer.cacheContract(contract); + } + + async saveEventEntity (dbEvent: Event): Promise { + return this._baseIndexer.saveEventEntity(dbEvent); + } + + async saveEvents (dbEvents: Event[]): Promise { + return this._baseIndexer.saveEvents(dbEvents); + } + + async getEventsByFilter (blockHash: string, contract?: string, name?: string): Promise> { + return this._baseIndexer.getEventsByFilter(blockHash, contract, name); + } + + isWatchedContract (address : string): Contract | undefined { + return this._baseIndexer.isWatchedContract(address); + } + + getWatchedContracts (): Contract[] { + return this._baseIndexer.getWatchedContracts(); + } + + getContractsByKind (kind: string): Contract[] { + return this._baseIndexer.getContractsByKind(kind); + } + + async getProcessedBlockCountForRange (fromBlockNumber: number, toBlockNumber: number): Promise<{ expected: number, actual: number }> { + return this._baseIndexer.getProcessedBlockCountForRange(fromBlockNumber, toBlockNumber); + } + + async getEventsInRange (fromBlockNumber: number, toBlockNumber: number): Promise> { + return this._baseIndexer.getEventsInRange(fromBlockNumber, toBlockNumber, this._serverConfig.gql.maxEventsBlockRange); + } + + async getSyncStatus (): Promise { + return this._baseIndexer.getSyncStatus(); + } + + async getBlocks (blockFilter: { blockHash?: string, blockNumber?: number }): Promise { + return this._baseIndexer.getBlocks(blockFilter); + } + + async updateSyncStatusIndexedBlock (blockHash: string, blockNumber: number, force = false): Promise { + return this._baseIndexer.updateSyncStatusIndexedBlock(blockHash, blockNumber, force); + } + + async updateSyncStatusChainHead (blockHash: string, blockNumber: number, force = false): Promise { + return this._baseIndexer.updateSyncStatusChainHead(blockHash, blockNumber, force); + } + + async updateSyncStatusCanonicalBlock (blockHash: string, blockNumber: number, force = false): Promise { + const syncStatus = this._baseIndexer.updateSyncStatusCanonicalBlock(blockHash, blockNumber, force); + await this.pruneFrothyEntities(blockNumber); + + return syncStatus; + } + + async updateSyncStatusProcessedBlock (blockHash: string, blockNumber: number, force = false): Promise { + return this._baseIndexer.updateSyncStatusProcessedBlock(blockHash, blockNumber, force); + } + + async updateSyncStatusIndexingError (hasIndexingError: boolean): Promise { + return this._baseIndexer.updateSyncStatusIndexingError(hasIndexingError); + } + + async updateSyncStatus (syncStatus: DeepPartial): Promise { + return this._baseIndexer.updateSyncStatus(syncStatus); + } + + async getEvent (id: string): Promise { + return this._baseIndexer.getEvent(id); + } + + async getBlockProgress (blockHash: string): Promise { + return this._baseIndexer.getBlockProgress(blockHash); + } + + async getBlockProgressEntities (where: FindConditions, options: FindManyOptions): Promise { + return this._baseIndexer.getBlockProgressEntities(where, options); + } + + async getBlocksAtHeight (height: number, isPruned: boolean): Promise { + return this._baseIndexer.getBlocksAtHeight(height, isPruned); + } + + async fetchAndSaveFilteredEventsAndBlocks (startBlock: number, endBlock: number): Promise<{ + blockProgress: BlockProgress, + events: DeepPartial[], + ethFullBlock: EthFullBlock; + ethFullTransactions: EthFullTransaction[]; + }[]> { + return this._baseIndexer.fetchAndSaveFilteredEventsAndBlocks(startBlock, endBlock, this.eventSignaturesMap, this.parseEventNameAndArgs.bind(this)); + } + + async fetchEventsForContracts (blockHash: string, blockNumber: number, addresses: string[]): Promise[]> { + return this._baseIndexer.fetchEventsForContracts(blockHash, blockNumber, addresses, this.eventSignaturesMap, this.parseEventNameAndArgs.bind(this)); + } + + async saveBlockAndFetchEvents (block: DeepPartial): Promise<[ + BlockProgress, + DeepPartial[], + EthFullTransaction[] + ]> { + return this._saveBlockAndFetchEvents(block); + } + + async getBlockEvents (blockHash: string, where: Where, queryOptions: QueryOptions): Promise> { + return this._baseIndexer.getBlockEvents(blockHash, where, queryOptions); + } + + async removeUnknownEvents (block: BlockProgress): Promise { + return this._baseIndexer.removeUnknownEvents(Event, block); + } + + async markBlocksAsPruned (blocks: BlockProgress[]): Promise { + await this._baseIndexer.markBlocksAsPruned(blocks); + + await this._graphWatcher.pruneEntities(FrothyEntity, blocks, SUBGRAPH_ENTITIES); + } + + async pruneFrothyEntities (blockNumber: number): Promise { + await this._graphWatcher.pruneFrothyEntities(FrothyEntity, blockNumber); + } + + async resetLatestEntities (blockNumber: number): Promise { + await this._graphWatcher.resetLatestEntities(blockNumber); + } + + async updateBlockProgress (block: BlockProgress, lastProcessedEventIndex: number): Promise { + return this._baseIndexer.updateBlockProgress(block, lastProcessedEventIndex); + } + + async getAncestorAtHeight (blockHash: string, height: number): Promise { + return this._baseIndexer.getAncestorAtHeight(blockHash, height); + } + + async resetWatcherToBlock (blockNumber: number): Promise { + const entities = [...ENTITIES, FrothyEntity]; + await this._baseIndexer.resetWatcherToBlock(blockNumber, entities); + + await this.resetLatestEntities(blockNumber); + } + + async clearProcessedBlockData (block: BlockProgress): Promise { + const entities = [...ENTITIES, FrothyEntity]; + await this._baseIndexer.clearProcessedBlockData(block, entities); + + await this.resetLatestEntities(block.blockNumber); + } + + getEntityTypesMap (): Map { + return this._entityTypesMap; + } + + getRelationsMap (): Map { + return this._relationsMap; + } + + updateSubgraphState (contractAddress: string, data: any): void { + return updateSubgraphState(this._subgraphStateMap, contractAddress, data); + } + + async dumpSubgraphState (blockHash: string, isStateFinalized = false): Promise { + return dumpSubgraphState(this, this._subgraphStateMap, blockHash, isStateFinalized); + } + + _populateEntityTypesMap (): void { + this._entityTypesMap.set('Factory', { + id: 'ID', + poolCount: 'BigInt', + txCount: 'BigInt', + totalVolumeUSD: 'BigDecimal', + totalVolumeETH: 'BigDecimal', + totalFeesUSD: 'BigDecimal', + totalFeesETH: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + totalValueLockedUSD: 'BigDecimal', + totalValueLockedETH: 'BigDecimal', + totalValueLockedUSDUntracked: 'BigDecimal', + totalValueLockedETHUntracked: 'BigDecimal', + owner: 'ID' + }); + this._entityTypesMap.set('Bundle', { + id: 'ID', + ethPriceUSD: 'BigDecimal' + }); + this._entityTypesMap.set('Token', { + id: 'ID', + symbol: 'String', + name: 'String', + decimals: 'BigInt', + totalSupply: 'BigInt', + volume: 'BigDecimal', + volumeUSD: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + txCount: 'BigInt', + poolCount: 'BigInt', + totalValueLocked: 'BigDecimal', + totalValueLockedUSD: 'BigDecimal', + totalValueLockedUSDUntracked: 'BigDecimal', + derivedETH: 'BigDecimal', + whitelistPools: 'Pool' + }); + this._entityTypesMap.set('Pool', { + id: 'ID', + createdAtTimestamp: 'BigInt', + createdAtBlockNumber: 'BigInt', + token0: 'Token', + token1: 'Token', + feeTier: 'BigInt', + liquidity: 'BigInt', + sqrtPrice: 'BigInt', + feeGrowthGlobal0X128: 'BigInt', + feeGrowthGlobal1X128: 'BigInt', + token0Price: 'BigDecimal', + token1Price: 'BigDecimal', + tick: 'BigInt', + observationIndex: 'BigInt', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + txCount: 'BigInt', + collectedFeesToken0: 'BigDecimal', + collectedFeesToken1: 'BigDecimal', + collectedFeesUSD: 'BigDecimal', + totalValueLockedToken0: 'BigDecimal', + totalValueLockedToken1: 'BigDecimal', + totalValueLockedETH: 'BigDecimal', + totalValueLockedUSD: 'BigDecimal', + totalValueLockedUSDUntracked: 'BigDecimal', + isProtocolFeeEnabled: 'Boolean', + liquidityProviderCount: 'BigInt' + }); + this._entityTypesMap.set('Tick', { + id: 'ID', + poolAddress: 'String', + tickIdx: 'BigInt', + pool: 'Pool', + liquidityGross: 'BigInt', + liquidityNet: 'BigInt', + price0: 'BigDecimal', + price1: 'BigDecimal', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + collectedFeesToken0: 'BigDecimal', + collectedFeesToken1: 'BigDecimal', + collectedFeesUSD: 'BigDecimal', + createdAtTimestamp: 'BigInt', + createdAtBlockNumber: 'BigInt', + liquidityProviderCount: 'BigInt', + feeGrowthOutside0X128: 'BigInt', + feeGrowthOutside1X128: 'BigInt' + }); + this._entityTypesMap.set('Position', { + id: 'ID', + owner: 'Bytes', + pool: 'Pool', + token0: 'Token', + token1: 'Token', + tickLower: 'Tick', + tickUpper: 'Tick', + liquidity: 'BigInt', + depositedToken0: 'BigDecimal', + depositedToken1: 'BigDecimal', + withdrawnToken0: 'BigDecimal', + withdrawnToken1: 'BigDecimal', + collectedToken0: 'BigDecimal', + collectedToken1: 'BigDecimal', + collectedFeesToken0: 'BigDecimal', + collectedFeesToken1: 'BigDecimal', + amountDepositedUSD: 'BigDecimal', + amountWithdrawnUSD: 'BigDecimal', + amountCollectedUSD: 'BigDecimal', + transaction: 'Transaction', + feeGrowthInside0LastX128: 'BigInt', + feeGrowthInside1LastX128: 'BigInt' + }); + this._entityTypesMap.set('PositionSnapshot', { + id: 'ID', + owner: 'Bytes', + pool: 'Pool', + position: 'Position', + blockNumber: 'BigInt', + timestamp: 'BigInt', + liquidity: 'BigInt', + depositedToken0: 'BigDecimal', + depositedToken1: 'BigDecimal', + withdrawnToken0: 'BigDecimal', + withdrawnToken1: 'BigDecimal', + collectedFeesToken0: 'BigDecimal', + collectedFeesToken1: 'BigDecimal', + transaction: 'Transaction', + feeGrowthInside0LastX128: 'BigInt', + feeGrowthInside1LastX128: 'BigInt' + }); + this._entityTypesMap.set('Transaction', { + id: 'ID', + blockNumber: 'BigInt', + timestamp: 'BigInt', + gasUsed: 'BigInt', + gasPrice: 'BigInt' + }); + this._entityTypesMap.set('Mint', { + id: 'ID', + transaction: 'Transaction', + timestamp: 'BigInt', + pool: 'Pool', + token0: 'Token', + token1: 'Token', + owner: 'Bytes', + sender: 'Bytes', + origin: 'Bytes', + amount: 'BigInt', + amount0: 'BigDecimal', + amount1: 'BigDecimal', + amountUSD: 'BigDecimal', + tickLower: 'BigInt', + tickUpper: 'BigInt', + logIndex: 'BigInt' + }); + this._entityTypesMap.set('Burn', { + id: 'ID', + transaction: 'Transaction', + pool: 'Pool', + token0: 'Token', + token1: 'Token', + timestamp: 'BigInt', + owner: 'Bytes', + origin: 'Bytes', + amount: 'BigInt', + amount0: 'BigDecimal', + amount1: 'BigDecimal', + amountUSD: 'BigDecimal', + tickLower: 'BigInt', + tickUpper: 'BigInt', + logIndex: 'BigInt' + }); + this._entityTypesMap.set('Swap', { + id: 'ID', + transaction: 'Transaction', + timestamp: 'BigInt', + pool: 'Pool', + token0: 'Token', + token1: 'Token', + sender: 'Bytes', + recipient: 'Bytes', + origin: 'Bytes', + amount0: 'BigDecimal', + amount1: 'BigDecimal', + amountUSD: 'BigDecimal', + sqrtPriceX96: 'BigInt', + tick: 'BigInt', + logIndex: 'BigInt' + }); + this._entityTypesMap.set('Collect', { + id: 'ID', + transaction: 'Transaction', + timestamp: 'BigInt', + pool: 'Pool', + owner: 'Bytes', + amount0: 'BigDecimal', + amount1: 'BigDecimal', + amountUSD: 'BigDecimal', + tickLower: 'BigInt', + tickUpper: 'BigInt', + logIndex: 'BigInt' + }); + this._entityTypesMap.set('Flash', { + id: 'ID', + transaction: 'Transaction', + timestamp: 'BigInt', + pool: 'Pool', + sender: 'Bytes', + recipient: 'Bytes', + amount0: 'BigDecimal', + amount1: 'BigDecimal', + amountUSD: 'BigDecimal', + amount0Paid: 'BigDecimal', + amount1Paid: 'BigDecimal', + logIndex: 'BigInt' + }); + this._entityTypesMap.set('UniswapDayData', { + id: 'ID', + date: 'Int', + volumeETH: 'BigDecimal', + volumeUSD: 'BigDecimal', + volumeUSDUntracked: 'BigDecimal', + feesUSD: 'BigDecimal', + txCount: 'BigInt', + tvlUSD: 'BigDecimal' + }); + this._entityTypesMap.set('PoolDayData', { + id: 'ID', + date: 'Int', + pool: 'Pool', + liquidity: 'BigInt', + sqrtPrice: 'BigInt', + token0Price: 'BigDecimal', + token1Price: 'BigDecimal', + tick: 'BigInt', + feeGrowthGlobal0X128: 'BigInt', + feeGrowthGlobal1X128: 'BigInt', + tvlUSD: 'BigDecimal', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + txCount: 'BigInt', + open: 'BigDecimal', + high: 'BigDecimal', + low: 'BigDecimal', + close: 'BigDecimal' + }); + this._entityTypesMap.set('PoolHourData', { + id: 'ID', + periodStartUnix: 'Int', + pool: 'Pool', + liquidity: 'BigInt', + sqrtPrice: 'BigInt', + token0Price: 'BigDecimal', + token1Price: 'BigDecimal', + tick: 'BigInt', + feeGrowthGlobal0X128: 'BigInt', + feeGrowthGlobal1X128: 'BigInt', + tvlUSD: 'BigDecimal', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + txCount: 'BigInt', + open: 'BigDecimal', + high: 'BigDecimal', + low: 'BigDecimal', + close: 'BigDecimal' + }); + this._entityTypesMap.set('TickHourData', { + id: 'ID', + periodStartUnix: 'Int', + pool: 'Pool', + tick: 'Tick', + liquidityGross: 'BigInt', + liquidityNet: 'BigInt', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal' + }); + this._entityTypesMap.set('TickDayData', { + id: 'ID', + date: 'Int', + pool: 'Pool', + tick: 'Tick', + liquidityGross: 'BigInt', + liquidityNet: 'BigInt', + volumeToken0: 'BigDecimal', + volumeToken1: 'BigDecimal', + volumeUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + feeGrowthOutside0X128: 'BigInt', + feeGrowthOutside1X128: 'BigInt' + }); + this._entityTypesMap.set('TokenDayData', { + id: 'ID', + date: 'Int', + token: 'Token', + volume: 'BigDecimal', + volumeUSD: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + totalValueLocked: 'BigDecimal', + totalValueLockedUSD: 'BigDecimal', + priceUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + open: 'BigDecimal', + high: 'BigDecimal', + low: 'BigDecimal', + close: 'BigDecimal' + }); + this._entityTypesMap.set('TokenHourData', { + id: 'ID', + periodStartUnix: 'Int', + token: 'Token', + volume: 'BigDecimal', + volumeUSD: 'BigDecimal', + untrackedVolumeUSD: 'BigDecimal', + totalValueLocked: 'BigDecimal', + totalValueLockedUSD: 'BigDecimal', + priceUSD: 'BigDecimal', + feesUSD: 'BigDecimal', + open: 'BigDecimal', + high: 'BigDecimal', + low: 'BigDecimal', + close: 'BigDecimal' + }); + this._entityTypesMap.set('IncreaseEvent', { + id: 'ID', + pool: 'Pool', + tokenID: 'BigInt', + position: 'Position', + amount0: 'BigInt', + amount1: 'BigInt', + token0: 'Token', + token1: 'Token', + timeStamp: 'BigInt', + transaction: 'Transaction' + }); + this._entityTypesMap.set('DecreaseEvent', { + id: 'ID', + pool: 'Pool', + tokenID: 'BigInt', + position: 'Position', + amount0: 'BigInt', + amount1: 'BigInt', + token0: 'Token', + token1: 'Token', + timeStamp: 'BigInt', + transaction: 'Transaction' + }); + this._entityTypesMap.set('SetProtocolFeeEvent', { + id: 'ID', + pool: 'Pool', + logIndex: 'BigInt', + new0: 'BigInt', + new1: 'BigInt', + old0: 'BigInt', + old1: 'BigInt', + timestamp: 'BigInt' + }); + } + + _populateRelationsMap (): void { + this._relationsMap.set(Token, { + whitelistPools: { + entity: Pool, + isArray: true, + isDerived: false + }, + tokenDayData: { + entity: TokenDayData, + isArray: true, + isDerived: true, + field: 'token' + } + }); + this._relationsMap.set(Pool, { + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + }, + poolHourData: { + entity: PoolHourData, + isArray: true, + isDerived: true, + field: 'pool' + }, + poolDayData: { + entity: PoolDayData, + isArray: true, + isDerived: true, + field: 'pool' + }, + mints: { + entity: Mint, + isArray: true, + isDerived: true, + field: 'pool' + }, + burns: { + entity: Burn, + isArray: true, + isDerived: true, + field: 'pool' + }, + swaps: { + entity: Swap, + isArray: true, + isDerived: true, + field: 'pool' + }, + collects: { + entity: Collect, + isArray: true, + isDerived: true, + field: 'pool' + }, + ticks: { + entity: Tick, + isArray: true, + isDerived: true, + field: 'pool' + } + }); + this._relationsMap.set(Tick, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Position, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + }, + tickLower: { + entity: Tick, + isArray: false, + isDerived: false + }, + tickUpper: { + entity: Tick, + isArray: false, + isDerived: false + }, + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + increaseEvents: { + entity: IncreaseEvent, + isArray: true, + isDerived: true, + field: 'position' + }, + decreaseEvents: { + entity: IncreaseEvent, + isArray: true, + isDerived: true, + field: 'position' + } + }); + this._relationsMap.set(PositionSnapshot, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + position: { + entity: Position, + isArray: false, + isDerived: false + }, + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Transaction, { + mints: { + entity: Mint, + isArray: true, + isDerived: true, + field: 'transaction' + }, + burns: { + entity: Burn, + isArray: true, + isDerived: true, + field: 'transaction' + }, + swaps: { + entity: Swap, + isArray: true, + isDerived: true, + field: 'transaction' + }, + flashed: { + entity: Flash, + isArray: true, + isDerived: true, + field: 'transaction' + }, + collects: { + entity: Collect, + isArray: true, + isDerived: true, + field: 'transaction' + } + }); + this._relationsMap.set(Mint, { + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Burn, { + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Swap, { + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Collect, { + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(Flash, { + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + }, + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(PoolDayData, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(PoolHourData, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(TickHourData, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + tick: { + entity: Tick, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(TickDayData, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + tick: { + entity: Tick, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(TokenDayData, { + token: { + entity: Token, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(TokenHourData, { + token: { + entity: Token, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(IncreaseEvent, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + position: { + entity: Position, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + }, + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(DecreaseEvent, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + }, + position: { + entity: Position, + isArray: false, + isDerived: false + }, + token0: { + entity: Token, + isArray: false, + isDerived: false + }, + token1: { + entity: Token, + isArray: false, + isDerived: false + }, + transaction: { + entity: Transaction, + isArray: false, + isDerived: false + } + }); + this._relationsMap.set(SetProtocolFeeEvent, { + pool: { + entity: Pool, + isArray: false, + isDerived: false + } + }); + } + + async _saveBlockAndFetchEvents ({ + cid: blockCid, + blockHash, + blockNumber, + blockTimestamp, + parentHash + }: DeepPartial): Promise<[ + BlockProgress, + DeepPartial[], + EthFullTransaction[] + ]> { + assert(blockHash); + assert(blockNumber); + + const { events: dbEvents, transactions } = await this._baseIndexer.fetchEvents(blockHash, blockNumber, this.eventSignaturesMap, this.parseEventNameAndArgs.bind(this)); + + const dbTx = await this._db.createTransactionRunner(); + try { + const block = { + cid: blockCid, + blockHash, + blockNumber, + blockTimestamp, + parentHash + }; + + console.time(`time:indexer#_saveBlockAndFetchEvents-db-save-${blockNumber}`); + const blockProgress = await this._db.saveBlockWithEvents(dbTx, block, dbEvents); + await dbTx.commitTransaction(); + console.timeEnd(`time:indexer#_saveBlockAndFetchEvents-db-save-${blockNumber}`); + + return [blockProgress, [], transactions]; + } catch (error) { + await dbTx.rollbackTransaction(); + throw error; + } finally { + await dbTx.release(); + } + } + + async getFullTransactions (txHashList: string[]): Promise { + return this._baseIndexer.getFullTransactions(txHashList); + } +} diff --git a/packages/v3-watcher/src/job-runner.ts b/packages/v3-watcher/src/job-runner.ts new file mode 100644 index 0000000..93d6820 --- /dev/null +++ b/packages/v3-watcher/src/job-runner.ts @@ -0,0 +1,48 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import debug from 'debug'; + +import { JobRunnerCmd } from '@cerc-io/cli'; +import { JobRunner } from '@cerc-io/util'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { Indexer } from './indexer'; +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from './database'; + +const log = debug('vulcanize:job-runner'); + +export const main = async (): Promise => { + const jobRunnerCmd = new JobRunnerCmd(); + await jobRunnerCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + jobRunnerCmd.config.server, + jobRunnerCmd.clients.ethClient, + jobRunnerCmd.ethProvider, + jobRunnerCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await jobRunnerCmd.initIndexer(Indexer, graphWatcher); + + await jobRunnerCmd.exec(async (jobRunner: JobRunner): Promise => { + await jobRunner.subscribeBlockProcessingQueue(); + await jobRunner.subscribeHistoricalProcessingQueue(); + await jobRunner.subscribeEventProcessingQueue(); + await jobRunner.subscribeBlockCheckpointQueue(); + await jobRunner.subscribeHooksQueue(); + }); +}; + +main().then(() => { + log('Starting job runner...'); +}).catch(err => { + log(err); +}); + +process.on('uncaughtException', err => { + log('uncaughtException', err); +}); diff --git a/packages/v3-watcher/src/resolvers.ts b/packages/v3-watcher/src/resolvers.ts new file mode 100644 index 0000000..0b13ec1 --- /dev/null +++ b/packages/v3-watcher/src/resolvers.ts @@ -0,0 +1,1320 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import assert from 'assert'; +import debug from 'debug'; +import { GraphQLResolveInfo } from 'graphql'; +import { ExpressContext } from 'apollo-server-express'; +import winston from 'winston'; + +import { + gqlTotalQueryCount, + gqlQueryCount, + gqlQueryDuration, + getResultState, + IndexerInterface, + GraphQLBigInt, + GraphQLBigDecimal, + BlockHeight, + OrderDirection, + jsonBigIntStringReplacer, + EventWatcher, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + setGQLCacheHints +} from '@cerc-io/util'; + +import { Indexer } from './indexer'; + +import { Factory } from './entity/Factory'; +import { Bundle } from './entity/Bundle'; +import { Token } from './entity/Token'; +import { Pool } from './entity/Pool'; +import { Tick } from './entity/Tick'; +import { Position } from './entity/Position'; +import { PositionSnapshot } from './entity/PositionSnapshot'; +import { Transaction } from './entity/Transaction'; +import { Mint } from './entity/Mint'; +import { Burn } from './entity/Burn'; +import { Swap } from './entity/Swap'; +import { Collect } from './entity/Collect'; +import { Flash } from './entity/Flash'; +import { UniswapDayData } from './entity/UniswapDayData'; +import { PoolDayData } from './entity/PoolDayData'; +import { PoolHourData } from './entity/PoolHourData'; +import { TickHourData } from './entity/TickHourData'; +import { TickDayData } from './entity/TickDayData'; +import { TokenDayData } from './entity/TokenDayData'; +import { TokenHourData } from './entity/TokenHourData'; +import { IncreaseEvent } from './entity/IncreaseEvent'; +import { DecreaseEvent } from './entity/DecreaseEvent'; +import { SetProtocolFeeEvent } from './entity/SetProtocolFeeEvent'; + +const log = debug('vulcanize:resolver'); + +const executeAndRecordMetrics = async ( + indexer: Indexer, + gqlLogger: winston.Logger, + opName: string, + expressContext: ExpressContext, + operation: () => Promise +) => { + gqlTotalQueryCount.inc(1); + gqlQueryCount.labels(opName).inc(1); + const endTimer = gqlQueryDuration.labels(opName).startTimer(); + + try { + const [result, syncStatus] = await Promise.all([ + operation(), + indexer.getSyncStatus() + ]); + + gqlLogger.info({ + opName, + query: expressContext.req.body.query, + variables: expressContext.req.body.variables, + latestIndexedBlockNumber: syncStatus?.latestIndexedBlockNumber, + urlPath: expressContext.req.path, + apiKey: expressContext.req.header('x-api-key'), + origin: expressContext.req.headers.origin + }); + return result; + } catch (error) { + gqlLogger.error({ + opName, + error, + query: expressContext.req.body.query, + variables: expressContext.req.body.variables, + urlPath: expressContext.req.path, + apiKey: expressContext.req.header('x-api-key'), + origin: expressContext.req.headers.origin + }); + } finally { + endTimer(); + } +}; + +export const createResolvers = async ( + indexerArg: IndexerInterface, + eventWatcher: EventWatcher, + gqlLogger: winston.Logger +): Promise => { + const indexer = indexerArg as Indexer; + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const gqlCacheConfig = indexer.serverConfig.gql.cache; + + return { + BigInt: GraphQLBigInt, + + BigDecimal: GraphQLBigDecimal, + + Event: { + __resolveType: (obj: any) => { + assert(obj.__typename); + + return obj.__typename; + } + }, + + Subscription: { + onEvent: { + subscribe: () => eventWatcher.getEventIterator() + } + }, + + Mutation: { + watchContract: async (_: any, { address, kind, checkpoint, startingBlock = 1 }: { address: string, kind: string, checkpoint: boolean, startingBlock: number }): Promise => { + log('watchContract', address, kind, checkpoint, startingBlock); + await indexer.watchContract(address, kind, checkpoint, startingBlock); + + return true; + } + }, + + Query: { + factory: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('factory', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'factory', + expressContext, + async () => indexer.getSubgraphEntity(Factory, id, block, info) + ); + }, + + factories: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('factories', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'factories', + expressContext, + async () => indexer.getSubgraphEntities( + Factory, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + bundle: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('bundle', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'bundle', + expressContext, + async () => indexer.getSubgraphEntity(Bundle, id, block, info) + ); + }, + + bundles: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('bundles', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'bundles', + expressContext, + async () => indexer.getSubgraphEntities( + Bundle, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + token: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('token', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'token', + expressContext, + async () => indexer.getSubgraphEntity(Token, id, block, info) + ); + }, + + tokens: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tokens', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tokens', + expressContext, + async () => indexer.getSubgraphEntities( + Token, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + pool: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('pool', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'pool', + expressContext, + async () => indexer.getSubgraphEntity(Pool, id, block, info) + ); + }, + + pools: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('pools', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'pools', + expressContext, + async () => indexer.getSubgraphEntities( + Pool, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + tick: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tick', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tick', + expressContext, + async () => indexer.getSubgraphEntity(Tick, id, block, info) + ); + }, + + ticks: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('ticks', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'ticks', + expressContext, + async () => indexer.getSubgraphEntities( + Tick, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + position: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('position', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'position', + expressContext, + async () => indexer.getSubgraphEntity(Position, id, block, info) + ); + }, + + positions: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('positions', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'positions', + expressContext, + async () => indexer.getSubgraphEntities( + Position, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + positionSnapshot: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('positionSnapshot', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'positionSnapshot', + expressContext, + async () => indexer.getSubgraphEntity(PositionSnapshot, id, block, info) + ); + }, + + positionSnapshots: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('positionSnapshots', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'positionSnapshots', + expressContext, + async () => indexer.getSubgraphEntities( + PositionSnapshot, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + transaction: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('transaction', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'transaction', + expressContext, + async () => indexer.getSubgraphEntity(Transaction, id, block, info) + ); + }, + + transactions: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('transactions', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'transactions', + expressContext, + async () => indexer.getSubgraphEntities( + Transaction, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + mint: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('mint', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'mint', + expressContext, + async () => indexer.getSubgraphEntity(Mint, id, block, info) + ); + }, + + mints: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('mints', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'mints', + expressContext, + async () => indexer.getSubgraphEntities( + Mint, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + burn: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('burn', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'burn', + expressContext, + async () => indexer.getSubgraphEntity(Burn, id, block, info) + ); + }, + + burns: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('burns', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'burns', + expressContext, + async () => indexer.getSubgraphEntities( + Burn, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + swap: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('swap', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'swap', + expressContext, + async () => indexer.getSubgraphEntity(Swap, id, block, info) + ); + }, + + swaps: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('swaps', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'swaps', + expressContext, + async () => indexer.getSubgraphEntities( + Swap, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + collect: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('collect', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'collect', + expressContext, + async () => indexer.getSubgraphEntity(Collect, id, block, info) + ); + }, + + collects: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('collects', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'collects', + expressContext, + async () => indexer.getSubgraphEntities( + Collect, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + flash: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('flash', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'flash', + expressContext, + async () => indexer.getSubgraphEntity(Flash, id, block, info) + ); + }, + + flashes: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('flashes', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'flashes', + expressContext, + async () => indexer.getSubgraphEntities( + Flash, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + uniswapDayData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('uniswapDayData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'uniswapDayData', + expressContext, + async () => indexer.getSubgraphEntity(UniswapDayData, id, block, info) + ); + }, + + uniswapDayDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('uniswapDayDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'uniswapDayDatas', + expressContext, + async () => indexer.getSubgraphEntities( + UniswapDayData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + poolDayData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('poolDayData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'poolDayData', + expressContext, + async () => indexer.getSubgraphEntity(PoolDayData, id, block, info) + ); + }, + + poolDayDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('poolDayDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'poolDayDatas', + expressContext, + async () => indexer.getSubgraphEntities( + PoolDayData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + poolHourData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('poolHourData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'poolHourData', + expressContext, + async () => indexer.getSubgraphEntity(PoolHourData, id, block, info) + ); + }, + + poolHourDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('poolHourDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'poolHourDatas', + expressContext, + async () => indexer.getSubgraphEntities( + PoolHourData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + tickHourData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tickHourData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tickHourData', + expressContext, + async () => indexer.getSubgraphEntity(TickHourData, id, block, info) + ); + }, + + tickHourDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tickHourDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tickHourDatas', + expressContext, + async () => indexer.getSubgraphEntities( + TickHourData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + tickDayData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tickDayData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tickDayData', + expressContext, + async () => indexer.getSubgraphEntity(TickDayData, id, block, info) + ); + }, + + tickDayDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tickDayDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tickDayDatas', + expressContext, + async () => indexer.getSubgraphEntities( + TickDayData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + tokenDayData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tokenDayData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tokenDayData', + expressContext, + async () => indexer.getSubgraphEntity(TokenDayData, id, block, info) + ); + }, + + tokenDayDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tokenDayDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tokenDayDatas', + expressContext, + async () => indexer.getSubgraphEntities( + TokenDayData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + tokenHourData: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tokenHourData', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tokenHourData', + expressContext, + async () => indexer.getSubgraphEntity(TokenHourData, id, block, info) + ); + }, + + tokenHourDatas: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('tokenHourDatas', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'tokenHourDatas', + expressContext, + async () => indexer.getSubgraphEntities( + TokenHourData, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + increaseEvent: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('increaseEvent', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'increaseEvent', + expressContext, + async () => indexer.getSubgraphEntity(IncreaseEvent, id, block, info) + ); + }, + + increaseEvents: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('increaseEvents', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'increaseEvents', + expressContext, + async () => indexer.getSubgraphEntities( + IncreaseEvent, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + decreaseEvent: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('decreaseEvent', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'decreaseEvent', + expressContext, + async () => indexer.getSubgraphEntity(DecreaseEvent, id, block, info) + ); + }, + + decreaseEvents: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('decreaseEvents', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'decreaseEvents', + expressContext, + async () => indexer.getSubgraphEntities( + DecreaseEvent, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + setProtocolFeeEvent: async ( + _: any, + { id, block = {} }: { id: string, block: BlockHeight }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('setProtocolFeeEvent', id, JSON.stringify(block, jsonBigIntStringReplacer)); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'setProtocolFeeEvent', + expressContext, + async () => indexer.getSubgraphEntity(SetProtocolFeeEvent, id, block, info) + ); + }, + + setProtocolFeeEvents: async ( + _: any, + { block = {}, where, first, skip, orderBy, orderDirection }: { block: BlockHeight, where: { [key: string]: any }, first: number, skip: number, orderBy: string, orderDirection: OrderDirection }, + expressContext: ExpressContext, + info: GraphQLResolveInfo + ) => { + log('setProtocolFeeEvents', JSON.stringify(block, jsonBigIntStringReplacer), JSON.stringify(where, jsonBigIntStringReplacer), first, skip, orderBy, orderDirection); + + // Set cache-control hints + // setGQLCacheHints(info, block, gqlCacheConfig); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'setProtocolFeeEvents', + expressContext, + async () => indexer.getSubgraphEntities( + SetProtocolFeeEvent, + block, + where, + { limit: first, skip, orderBy, orderDirection }, + info + ) + ); + }, + + events: async ( + _: any, + { blockHash, contractAddress, name }: { blockHash: string, contractAddress: string, name?: string }, + expressContext: ExpressContext + ) => { + log('events', blockHash, contractAddress, name); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'events', + expressContext, + async () => { + const block = await indexer.getBlockProgress(blockHash); + if (!block || !block.isComplete) { + throw new Error(`Block hash ${blockHash} number ${block?.blockNumber} not processed yet`); + } + + const events = await indexer.getEventsByFilter(blockHash, contractAddress, name); + return events.map(event => indexer.getResultEvent(event)); + } + ); + }, + + eventsInRange: async ( + _: any, + { fromBlockNumber, toBlockNumber }: { fromBlockNumber: number, toBlockNumber: number }, + expressContext: ExpressContext + ) => { + log('eventsInRange', fromBlockNumber, toBlockNumber); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'eventsInRange', + expressContext, + async () => { + const syncStatus = await indexer.getSyncStatus(); + + if (!syncStatus) { + throw new Error('No blocks processed yet'); + } + + if ((fromBlockNumber < syncStatus.initialIndexedBlockNumber) || (toBlockNumber > syncStatus.latestProcessedBlockNumber)) { + throw new Error(`Block range should be between ${syncStatus.initialIndexedBlockNumber} and ${syncStatus.latestProcessedBlockNumber}`); + } + + const events = await indexer.getEventsInRange(fromBlockNumber, toBlockNumber); + return events.map(event => indexer.getResultEvent(event)); + } + ); + }, + + getStateByCID: async ( + _: any, + { cid }: { cid: string }, + expressContext: ExpressContext + ) => { + log('getStateByCID', cid); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'getStateByCID', + expressContext, + async () => { + const state = await indexer.getStateByCID(cid); + + return state && state.block.isComplete ? getResultState(state) : undefined; + } + ); + }, + + getState: async ( + _: any, + { blockHash, contractAddress, kind }: { blockHash: string, contractAddress: string, kind: string }, + expressContext: ExpressContext + ) => { + log('getState', blockHash, contractAddress, kind); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'getState', + expressContext, + async () => { + const state = await indexer.getPrevState(blockHash, contractAddress, kind); + + return state && state.block.isComplete ? getResultState(state) : undefined; + } + ); + }, + + _meta: async ( + _: any, + { block = {} }: { block: BlockHeight }, + expressContext: ExpressContext + ) => { + log('_meta'); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + '_meta', + expressContext, + async () => indexer.getMetaData(block) + ); + }, + + getSyncStatus: async ( + _: any, + __: Record, + expressContext: ExpressContext + ) => { + log('getSyncStatus'); + + return executeAndRecordMetrics( + indexer, + gqlLogger, + 'getSyncStatus', + expressContext, + async () => indexer.getSyncStatus() + ); + } + } + }; +}; diff --git a/packages/v3-watcher/src/schema.gql b/packages/v3-watcher/src/schema.gql new file mode 100644 index 0000000..9e2b792 --- /dev/null +++ b/packages/v3-watcher/src/schema.gql @@ -0,0 +1,5298 @@ +directive @cacheControl(maxAge: Int, inheritMaxAge: Boolean, scope: CacheControlScope) on FIELD_DEFINITION | OBJECT | INTERFACE | UNION + +enum CacheControlScope { + PUBLIC + PRIVATE +} + +scalar BigInt + +scalar BigDecimal + +scalar Bytes + +type Proof { + data: String! +} + +type _Block_ { + cid: String + hash: String! + number: Int! + timestamp: Int! + parentHash: String! +} + +type _Transaction_ { + hash: String! + index: Int! + from: String! + to: String! +} + +type ResultEvent { + block: _Block_! + tx: _Transaction_! + contract: String! + eventIndex: Int! + event: Event! + proof: Proof +} + +union Event = FeeAmountEnabledEvent | OwnerChangedEvent | PoolCreatedEvent | ApprovalEvent | ApprovalForAllEvent | CollectEvent | DecreaseLiquidityEvent | IncreaseLiquidityEvent | TransferEvent | BurnEvent | CollectProtocolEvent | FlashEvent | IncreaseObservationCardinalityNextEvent | InitializeEvent | MintEvent | SetFeeProtocolEvent | SwapEvent + +type FeeAmountEnabledEvent { + fee: Int! + tickSpacing: Int! +} + +type OwnerChangedEvent { + oldOwner: String! + newOwner: String! +} + +type PoolCreatedEvent { + token0: String! + token1: String! + fee: Int! + tickSpacing: Int! + pool: String! +} + +type ApprovalEvent { + owner: String! + approved: String! + tokenId: BigInt! +} + +type ApprovalForAllEvent { + owner: String! + operator: String! + approved: Boolean! +} + +type CollectEvent { + tokenId: BigInt + recipient: String! + amount0: BigInt! + amount1: BigInt! + owner: String + tickLower: Int + tickUpper: Int +} + +type DecreaseLiquidityEvent { + tokenId: BigInt! + liquidity: BigInt! + amount0: BigInt! + amount1: BigInt! +} + +type IncreaseLiquidityEvent { + tokenId: BigInt! + liquidity: BigInt! + amount0: BigInt! + amount1: BigInt! +} + +type TransferEvent { + from: String! + to: String! + tokenId: BigInt! +} + +type BurnEvent { + owner: String! + tickLower: Int! + tickUpper: Int! + amount: BigInt! + amount0: BigInt! + amount1: BigInt! +} + +type CollectProtocolEvent { + sender: String! + recipient: String! + amount0: BigInt! + amount1: BigInt! +} + +type FlashEvent { + sender: String! + recipient: String! + amount0: BigInt! + amount1: BigInt! + paid0: BigInt! + paid1: BigInt! +} + +type IncreaseObservationCardinalityNextEvent { + observationCardinalityNextOld: Int! + observationCardinalityNextNew: Int! +} + +type InitializeEvent { + sqrtPriceX96: BigInt! + tick: Int! +} + +type MintEvent { + sender: String! + owner: String! + tickLower: Int! + tickUpper: Int! + amount: BigInt! + amount0: BigInt! + amount1: BigInt! +} + +type SetFeeProtocolEvent { + feeProtocol0Old: Int! + feeProtocol1Old: Int! + feeProtocol0New: Int! + feeProtocol1New: Int! +} + +type SwapEvent { + sender: String! + recipient: String! + amount0: BigInt! + amount1: BigInt! + sqrtPriceX96: BigInt! + liquidity: BigInt! + tick: Int! +} + +input Block_height { + hash: Bytes + number: Int +} + +input BlockChangedFilter { + number_gte: Int! +} + +enum OrderDirection { + asc + desc +} + +enum Factory_orderBy { + id + poolCount + txCount + totalVolumeUSD + totalVolumeETH + totalFeesUSD + totalFeesETH + untrackedVolumeUSD + totalValueLockedUSD + totalValueLockedETH + totalValueLockedUSDUntracked + totalValueLockedETHUntracked + owner +} + +input Factory_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + poolCount: BigInt + poolCount_not: BigInt + poolCount_gt: BigInt + poolCount_lt: BigInt + poolCount_gte: BigInt + poolCount_lte: BigInt + poolCount_in: [BigInt!] + poolCount_not_in: [BigInt!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + totalVolumeUSD: BigDecimal + totalVolumeUSD_not: BigDecimal + totalVolumeUSD_gt: BigDecimal + totalVolumeUSD_lt: BigDecimal + totalVolumeUSD_gte: BigDecimal + totalVolumeUSD_lte: BigDecimal + totalVolumeUSD_in: [BigDecimal!] + totalVolumeUSD_not_in: [BigDecimal!] + totalVolumeETH: BigDecimal + totalVolumeETH_not: BigDecimal + totalVolumeETH_gt: BigDecimal + totalVolumeETH_lt: BigDecimal + totalVolumeETH_gte: BigDecimal + totalVolumeETH_lte: BigDecimal + totalVolumeETH_in: [BigDecimal!] + totalVolumeETH_not_in: [BigDecimal!] + totalFeesUSD: BigDecimal + totalFeesUSD_not: BigDecimal + totalFeesUSD_gt: BigDecimal + totalFeesUSD_lt: BigDecimal + totalFeesUSD_gte: BigDecimal + totalFeesUSD_lte: BigDecimal + totalFeesUSD_in: [BigDecimal!] + totalFeesUSD_not_in: [BigDecimal!] + totalFeesETH: BigDecimal + totalFeesETH_not: BigDecimal + totalFeesETH_gt: BigDecimal + totalFeesETH_lt: BigDecimal + totalFeesETH_gte: BigDecimal + totalFeesETH_lte: BigDecimal + totalFeesETH_in: [BigDecimal!] + totalFeesETH_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + totalValueLockedUSD: BigDecimal + totalValueLockedUSD_not: BigDecimal + totalValueLockedUSD_gt: BigDecimal + totalValueLockedUSD_lt: BigDecimal + totalValueLockedUSD_gte: BigDecimal + totalValueLockedUSD_lte: BigDecimal + totalValueLockedUSD_in: [BigDecimal!] + totalValueLockedUSD_not_in: [BigDecimal!] + totalValueLockedETH: BigDecimal + totalValueLockedETH_not: BigDecimal + totalValueLockedETH_gt: BigDecimal + totalValueLockedETH_lt: BigDecimal + totalValueLockedETH_gte: BigDecimal + totalValueLockedETH_lte: BigDecimal + totalValueLockedETH_in: [BigDecimal!] + totalValueLockedETH_not_in: [BigDecimal!] + totalValueLockedUSDUntracked: BigDecimal + totalValueLockedUSDUntracked_not: BigDecimal + totalValueLockedUSDUntracked_gt: BigDecimal + totalValueLockedUSDUntracked_lt: BigDecimal + totalValueLockedUSDUntracked_gte: BigDecimal + totalValueLockedUSDUntracked_lte: BigDecimal + totalValueLockedUSDUntracked_in: [BigDecimal!] + totalValueLockedUSDUntracked_not_in: [BigDecimal!] + totalValueLockedETHUntracked: BigDecimal + totalValueLockedETHUntracked_not: BigDecimal + totalValueLockedETHUntracked_gt: BigDecimal + totalValueLockedETHUntracked_lt: BigDecimal + totalValueLockedETHUntracked_gte: BigDecimal + totalValueLockedETHUntracked_lte: BigDecimal + totalValueLockedETHUntracked_in: [BigDecimal!] + totalValueLockedETHUntracked_not_in: [BigDecimal!] + owner: ID + owner_not: ID + owner_gt: ID + owner_lt: ID + owner_gte: ID + owner_lte: ID + owner_in: [ID!] + owner_not_in: [ID!] + _change_block: BlockChangedFilter + and: [Factory_filter] + or: [Factory_filter] +} + +enum Bundle_orderBy { + id + ethPriceUSD +} + +input Bundle_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + ethPriceUSD: BigDecimal + ethPriceUSD_not: BigDecimal + ethPriceUSD_gt: BigDecimal + ethPriceUSD_lt: BigDecimal + ethPriceUSD_gte: BigDecimal + ethPriceUSD_lte: BigDecimal + ethPriceUSD_in: [BigDecimal!] + ethPriceUSD_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [Bundle_filter] + or: [Bundle_filter] +} + +enum Token_orderBy { + id + symbol + name + decimals + totalSupply + volume + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + poolCount + totalValueLocked + totalValueLockedUSD + totalValueLockedUSDUntracked + derivedETH + whitelistPools + tokenDayData +} + +input Token_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + symbol: String + symbol_not: String + symbol_gt: String + symbol_lt: String + symbol_gte: String + symbol_lte: String + symbol_in: [String!] + symbol_not_in: [String!] + symbol_starts_with: String + symbol_starts_with_nocase: String + symbol_not_starts_with: String + symbol_not_starts_with_nocase: String + symbol_ends_with: String + symbol_ends_with_nocase: String + symbol_not_ends_with: String + symbol_not_ends_with_nocase: String + symbol_contains: String + symbol_not_contains: String + symbol_contains_nocase: String + symbol_not_contains_nocase: String + name: String + name_not: String + name_gt: String + name_lt: String + name_gte: String + name_lte: String + name_in: [String!] + name_not_in: [String!] + name_starts_with: String + name_starts_with_nocase: String + name_not_starts_with: String + name_not_starts_with_nocase: String + name_ends_with: String + name_ends_with_nocase: String + name_not_ends_with: String + name_not_ends_with_nocase: String + name_contains: String + name_not_contains: String + name_contains_nocase: String + name_not_contains_nocase: String + decimals: BigInt + decimals_not: BigInt + decimals_gt: BigInt + decimals_lt: BigInt + decimals_gte: BigInt + decimals_lte: BigInt + decimals_in: [BigInt!] + decimals_not_in: [BigInt!] + totalSupply: BigInt + totalSupply_not: BigInt + totalSupply_gt: BigInt + totalSupply_lt: BigInt + totalSupply_gte: BigInt + totalSupply_lte: BigInt + totalSupply_in: [BigInt!] + totalSupply_not_in: [BigInt!] + volume: BigDecimal + volume_not: BigDecimal + volume_gt: BigDecimal + volume_lt: BigDecimal + volume_gte: BigDecimal + volume_lte: BigDecimal + volume_in: [BigDecimal!] + volume_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + poolCount: BigInt + poolCount_not: BigInt + poolCount_gt: BigInt + poolCount_lt: BigInt + poolCount_gte: BigInt + poolCount_lte: BigInt + poolCount_in: [BigInt!] + poolCount_not_in: [BigInt!] + totalValueLocked: BigDecimal + totalValueLocked_not: BigDecimal + totalValueLocked_gt: BigDecimal + totalValueLocked_lt: BigDecimal + totalValueLocked_gte: BigDecimal + totalValueLocked_lte: BigDecimal + totalValueLocked_in: [BigDecimal!] + totalValueLocked_not_in: [BigDecimal!] + totalValueLockedUSD: BigDecimal + totalValueLockedUSD_not: BigDecimal + totalValueLockedUSD_gt: BigDecimal + totalValueLockedUSD_lt: BigDecimal + totalValueLockedUSD_gte: BigDecimal + totalValueLockedUSD_lte: BigDecimal + totalValueLockedUSD_in: [BigDecimal!] + totalValueLockedUSD_not_in: [BigDecimal!] + totalValueLockedUSDUntracked: BigDecimal + totalValueLockedUSDUntracked_not: BigDecimal + totalValueLockedUSDUntracked_gt: BigDecimal + totalValueLockedUSDUntracked_lt: BigDecimal + totalValueLockedUSDUntracked_gte: BigDecimal + totalValueLockedUSDUntracked_lte: BigDecimal + totalValueLockedUSDUntracked_in: [BigDecimal!] + totalValueLockedUSDUntracked_not_in: [BigDecimal!] + derivedETH: BigDecimal + derivedETH_not: BigDecimal + derivedETH_gt: BigDecimal + derivedETH_lt: BigDecimal + derivedETH_gte: BigDecimal + derivedETH_lte: BigDecimal + derivedETH_in: [BigDecimal!] + derivedETH_not_in: [BigDecimal!] + whitelistPools: [String!] + whitelistPools_not: [String!] + whitelistPools_contains: [String!] + whitelistPools_not_contains: [String!] + whitelistPools_contains_nocase: [String!] + whitelistPools_not_contains_nocase: [String!] + whitelistPools_: Pool_filter + tokenDayData_: TokenDayData_filter + _change_block: BlockChangedFilter + and: [Token_filter] + or: [Token_filter] +} + +enum Pool_orderBy { + id + createdAtTimestamp + createdAtBlockNumber + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + feeTier + liquidity + sqrtPrice + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + token0Price + token1Price + tick + observationIndex + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + txCount + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + totalValueLockedToken0 + totalValueLockedToken1 + totalValueLockedETH + totalValueLockedUSD + totalValueLockedUSDUntracked + isProtocolFeeEnabled + liquidityProviderCount + poolHourData + poolDayData + mints + burns + swaps + collects + ticks +} + +input Pool_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + createdAtTimestamp: BigInt + createdAtTimestamp_not: BigInt + createdAtTimestamp_gt: BigInt + createdAtTimestamp_lt: BigInt + createdAtTimestamp_gte: BigInt + createdAtTimestamp_lte: BigInt + createdAtTimestamp_in: [BigInt!] + createdAtTimestamp_not_in: [BigInt!] + createdAtBlockNumber: BigInt + createdAtBlockNumber_not: BigInt + createdAtBlockNumber_gt: BigInt + createdAtBlockNumber_lt: BigInt + createdAtBlockNumber_gte: BigInt + createdAtBlockNumber_lte: BigInt + createdAtBlockNumber_in: [BigInt!] + createdAtBlockNumber_not_in: [BigInt!] + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + feeTier: BigInt + feeTier_not: BigInt + feeTier_gt: BigInt + feeTier_lt: BigInt + feeTier_gte: BigInt + feeTier_lte: BigInt + feeTier_in: [BigInt!] + feeTier_not_in: [BigInt!] + liquidity: BigInt + liquidity_not: BigInt + liquidity_gt: BigInt + liquidity_lt: BigInt + liquidity_gte: BigInt + liquidity_lte: BigInt + liquidity_in: [BigInt!] + liquidity_not_in: [BigInt!] + sqrtPrice: BigInt + sqrtPrice_not: BigInt + sqrtPrice_gt: BigInt + sqrtPrice_lt: BigInt + sqrtPrice_gte: BigInt + sqrtPrice_lte: BigInt + sqrtPrice_in: [BigInt!] + sqrtPrice_not_in: [BigInt!] + feeGrowthGlobal0X128: BigInt + feeGrowthGlobal0X128_not: BigInt + feeGrowthGlobal0X128_gt: BigInt + feeGrowthGlobal0X128_lt: BigInt + feeGrowthGlobal0X128_gte: BigInt + feeGrowthGlobal0X128_lte: BigInt + feeGrowthGlobal0X128_in: [BigInt!] + feeGrowthGlobal0X128_not_in: [BigInt!] + feeGrowthGlobal1X128: BigInt + feeGrowthGlobal1X128_not: BigInt + feeGrowthGlobal1X128_gt: BigInt + feeGrowthGlobal1X128_lt: BigInt + feeGrowthGlobal1X128_gte: BigInt + feeGrowthGlobal1X128_lte: BigInt + feeGrowthGlobal1X128_in: [BigInt!] + feeGrowthGlobal1X128_not_in: [BigInt!] + token0Price: BigDecimal + token0Price_not: BigDecimal + token0Price_gt: BigDecimal + token0Price_lt: BigDecimal + token0Price_gte: BigDecimal + token0Price_lte: BigDecimal + token0Price_in: [BigDecimal!] + token0Price_not_in: [BigDecimal!] + token1Price: BigDecimal + token1Price_not: BigDecimal + token1Price_gt: BigDecimal + token1Price_lt: BigDecimal + token1Price_gte: BigDecimal + token1Price_lte: BigDecimal + token1Price_in: [BigDecimal!] + token1Price_not_in: [BigDecimal!] + tick: BigInt + tick_not: BigInt + tick_gt: BigInt + tick_lt: BigInt + tick_gte: BigInt + tick_lte: BigInt + tick_in: [BigInt!] + tick_not_in: [BigInt!] + observationIndex: BigInt + observationIndex_not: BigInt + observationIndex_gt: BigInt + observationIndex_lt: BigInt + observationIndex_gte: BigInt + observationIndex_lte: BigInt + observationIndex_in: [BigInt!] + observationIndex_not_in: [BigInt!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + collectedFeesToken0: BigDecimal + collectedFeesToken0_not: BigDecimal + collectedFeesToken0_gt: BigDecimal + collectedFeesToken0_lt: BigDecimal + collectedFeesToken0_gte: BigDecimal + collectedFeesToken0_lte: BigDecimal + collectedFeesToken0_in: [BigDecimal!] + collectedFeesToken0_not_in: [BigDecimal!] + collectedFeesToken1: BigDecimal + collectedFeesToken1_not: BigDecimal + collectedFeesToken1_gt: BigDecimal + collectedFeesToken1_lt: BigDecimal + collectedFeesToken1_gte: BigDecimal + collectedFeesToken1_lte: BigDecimal + collectedFeesToken1_in: [BigDecimal!] + collectedFeesToken1_not_in: [BigDecimal!] + collectedFeesUSD: BigDecimal + collectedFeesUSD_not: BigDecimal + collectedFeesUSD_gt: BigDecimal + collectedFeesUSD_lt: BigDecimal + collectedFeesUSD_gte: BigDecimal + collectedFeesUSD_lte: BigDecimal + collectedFeesUSD_in: [BigDecimal!] + collectedFeesUSD_not_in: [BigDecimal!] + totalValueLockedToken0: BigDecimal + totalValueLockedToken0_not: BigDecimal + totalValueLockedToken0_gt: BigDecimal + totalValueLockedToken0_lt: BigDecimal + totalValueLockedToken0_gte: BigDecimal + totalValueLockedToken0_lte: BigDecimal + totalValueLockedToken0_in: [BigDecimal!] + totalValueLockedToken0_not_in: [BigDecimal!] + totalValueLockedToken1: BigDecimal + totalValueLockedToken1_not: BigDecimal + totalValueLockedToken1_gt: BigDecimal + totalValueLockedToken1_lt: BigDecimal + totalValueLockedToken1_gte: BigDecimal + totalValueLockedToken1_lte: BigDecimal + totalValueLockedToken1_in: [BigDecimal!] + totalValueLockedToken1_not_in: [BigDecimal!] + totalValueLockedETH: BigDecimal + totalValueLockedETH_not: BigDecimal + totalValueLockedETH_gt: BigDecimal + totalValueLockedETH_lt: BigDecimal + totalValueLockedETH_gte: BigDecimal + totalValueLockedETH_lte: BigDecimal + totalValueLockedETH_in: [BigDecimal!] + totalValueLockedETH_not_in: [BigDecimal!] + totalValueLockedUSD: BigDecimal + totalValueLockedUSD_not: BigDecimal + totalValueLockedUSD_gt: BigDecimal + totalValueLockedUSD_lt: BigDecimal + totalValueLockedUSD_gte: BigDecimal + totalValueLockedUSD_lte: BigDecimal + totalValueLockedUSD_in: [BigDecimal!] + totalValueLockedUSD_not_in: [BigDecimal!] + totalValueLockedUSDUntracked: BigDecimal + totalValueLockedUSDUntracked_not: BigDecimal + totalValueLockedUSDUntracked_gt: BigDecimal + totalValueLockedUSDUntracked_lt: BigDecimal + totalValueLockedUSDUntracked_gte: BigDecimal + totalValueLockedUSDUntracked_lte: BigDecimal + totalValueLockedUSDUntracked_in: [BigDecimal!] + totalValueLockedUSDUntracked_not_in: [BigDecimal!] + isProtocolFeeEnabled: Boolean + isProtocolFeeEnabled_not: Boolean + isProtocolFeeEnabled_gt: Boolean + isProtocolFeeEnabled_lt: Boolean + isProtocolFeeEnabled_gte: Boolean + isProtocolFeeEnabled_lte: Boolean + isProtocolFeeEnabled_in: [Boolean!] + isProtocolFeeEnabled_not_in: [Boolean!] + liquidityProviderCount: BigInt + liquidityProviderCount_not: BigInt + liquidityProviderCount_gt: BigInt + liquidityProviderCount_lt: BigInt + liquidityProviderCount_gte: BigInt + liquidityProviderCount_lte: BigInt + liquidityProviderCount_in: [BigInt!] + liquidityProviderCount_not_in: [BigInt!] + poolHourData_: PoolHourData_filter + poolDayData_: PoolDayData_filter + mints_: Mint_filter + burns_: Burn_filter + swaps_: Swap_filter + collects_: Collect_filter + ticks_: Tick_filter + _change_block: BlockChangedFilter + and: [Pool_filter] + or: [Pool_filter] +} + +enum Tick_orderBy { + id + poolAddress + tickIdx + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + liquidityGross + liquidityNet + price0 + price1 + volumeToken0 + volumeToken1 + volumeUSD + untrackedVolumeUSD + feesUSD + collectedFeesToken0 + collectedFeesToken1 + collectedFeesUSD + createdAtTimestamp + createdAtBlockNumber + liquidityProviderCount + feeGrowthOutside0X128 + feeGrowthOutside1X128 +} + +input Tick_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + poolAddress: String + poolAddress_not: String + poolAddress_gt: String + poolAddress_lt: String + poolAddress_gte: String + poolAddress_lte: String + poolAddress_in: [String!] + poolAddress_not_in: [String!] + poolAddress_starts_with: String + poolAddress_starts_with_nocase: String + poolAddress_not_starts_with: String + poolAddress_not_starts_with_nocase: String + poolAddress_ends_with: String + poolAddress_ends_with_nocase: String + poolAddress_not_ends_with: String + poolAddress_not_ends_with_nocase: String + poolAddress_contains: String + poolAddress_not_contains: String + poolAddress_contains_nocase: String + poolAddress_not_contains_nocase: String + tickIdx: BigInt + tickIdx_not: BigInt + tickIdx_gt: BigInt + tickIdx_lt: BigInt + tickIdx_gte: BigInt + tickIdx_lte: BigInt + tickIdx_in: [BigInt!] + tickIdx_not_in: [BigInt!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + liquidityGross: BigInt + liquidityGross_not: BigInt + liquidityGross_gt: BigInt + liquidityGross_lt: BigInt + liquidityGross_gte: BigInt + liquidityGross_lte: BigInt + liquidityGross_in: [BigInt!] + liquidityGross_not_in: [BigInt!] + liquidityNet: BigInt + liquidityNet_not: BigInt + liquidityNet_gt: BigInt + liquidityNet_lt: BigInt + liquidityNet_gte: BigInt + liquidityNet_lte: BigInt + liquidityNet_in: [BigInt!] + liquidityNet_not_in: [BigInt!] + price0: BigDecimal + price0_not: BigDecimal + price0_gt: BigDecimal + price0_lt: BigDecimal + price0_gte: BigDecimal + price0_lte: BigDecimal + price0_in: [BigDecimal!] + price0_not_in: [BigDecimal!] + price1: BigDecimal + price1_not: BigDecimal + price1_gt: BigDecimal + price1_lt: BigDecimal + price1_gte: BigDecimal + price1_lte: BigDecimal + price1_in: [BigDecimal!] + price1_not_in: [BigDecimal!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + collectedFeesToken0: BigDecimal + collectedFeesToken0_not: BigDecimal + collectedFeesToken0_gt: BigDecimal + collectedFeesToken0_lt: BigDecimal + collectedFeesToken0_gte: BigDecimal + collectedFeesToken0_lte: BigDecimal + collectedFeesToken0_in: [BigDecimal!] + collectedFeesToken0_not_in: [BigDecimal!] + collectedFeesToken1: BigDecimal + collectedFeesToken1_not: BigDecimal + collectedFeesToken1_gt: BigDecimal + collectedFeesToken1_lt: BigDecimal + collectedFeesToken1_gte: BigDecimal + collectedFeesToken1_lte: BigDecimal + collectedFeesToken1_in: [BigDecimal!] + collectedFeesToken1_not_in: [BigDecimal!] + collectedFeesUSD: BigDecimal + collectedFeesUSD_not: BigDecimal + collectedFeesUSD_gt: BigDecimal + collectedFeesUSD_lt: BigDecimal + collectedFeesUSD_gte: BigDecimal + collectedFeesUSD_lte: BigDecimal + collectedFeesUSD_in: [BigDecimal!] + collectedFeesUSD_not_in: [BigDecimal!] + createdAtTimestamp: BigInt + createdAtTimestamp_not: BigInt + createdAtTimestamp_gt: BigInt + createdAtTimestamp_lt: BigInt + createdAtTimestamp_gte: BigInt + createdAtTimestamp_lte: BigInt + createdAtTimestamp_in: [BigInt!] + createdAtTimestamp_not_in: [BigInt!] + createdAtBlockNumber: BigInt + createdAtBlockNumber_not: BigInt + createdAtBlockNumber_gt: BigInt + createdAtBlockNumber_lt: BigInt + createdAtBlockNumber_gte: BigInt + createdAtBlockNumber_lte: BigInt + createdAtBlockNumber_in: [BigInt!] + createdAtBlockNumber_not_in: [BigInt!] + liquidityProviderCount: BigInt + liquidityProviderCount_not: BigInt + liquidityProviderCount_gt: BigInt + liquidityProviderCount_lt: BigInt + liquidityProviderCount_gte: BigInt + liquidityProviderCount_lte: BigInt + liquidityProviderCount_in: [BigInt!] + liquidityProviderCount_not_in: [BigInt!] + feeGrowthOutside0X128: BigInt + feeGrowthOutside0X128_not: BigInt + feeGrowthOutside0X128_gt: BigInt + feeGrowthOutside0X128_lt: BigInt + feeGrowthOutside0X128_gte: BigInt + feeGrowthOutside0X128_lte: BigInt + feeGrowthOutside0X128_in: [BigInt!] + feeGrowthOutside0X128_not_in: [BigInt!] + feeGrowthOutside1X128: BigInt + feeGrowthOutside1X128_not: BigInt + feeGrowthOutside1X128_gt: BigInt + feeGrowthOutside1X128_lt: BigInt + feeGrowthOutside1X128_gte: BigInt + feeGrowthOutside1X128_lte: BigInt + feeGrowthOutside1X128_in: [BigInt!] + feeGrowthOutside1X128_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Tick_filter] + or: [Tick_filter] +} + +enum Position_orderBy { + id + owner + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + tickLower + tickLower__id + tickLower__poolAddress + tickLower__tickIdx + tickLower__liquidityGross + tickLower__liquidityNet + tickLower__price0 + tickLower__price1 + tickLower__volumeToken0 + tickLower__volumeToken1 + tickLower__volumeUSD + tickLower__untrackedVolumeUSD + tickLower__feesUSD + tickLower__collectedFeesToken0 + tickLower__collectedFeesToken1 + tickLower__collectedFeesUSD + tickLower__createdAtTimestamp + tickLower__createdAtBlockNumber + tickLower__liquidityProviderCount + tickLower__feeGrowthOutside0X128 + tickLower__feeGrowthOutside1X128 + tickUpper + tickUpper__id + tickUpper__poolAddress + tickUpper__tickIdx + tickUpper__liquidityGross + tickUpper__liquidityNet + tickUpper__price0 + tickUpper__price1 + tickUpper__volumeToken0 + tickUpper__volumeToken1 + tickUpper__volumeUSD + tickUpper__untrackedVolumeUSD + tickUpper__feesUSD + tickUpper__collectedFeesToken0 + tickUpper__collectedFeesToken1 + tickUpper__collectedFeesUSD + tickUpper__createdAtTimestamp + tickUpper__createdAtBlockNumber + tickUpper__liquidityProviderCount + tickUpper__feeGrowthOutside0X128 + tickUpper__feeGrowthOutside1X128 + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedToken0 + collectedToken1 + collectedFeesToken0 + collectedFeesToken1 + amountDepositedUSD + amountWithdrawnUSD + amountCollectedUSD + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 + increaseEvents + decreaseEvents +} + +input Position_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + owner: Bytes + owner_not: Bytes + owner_gt: Bytes + owner_lt: Bytes + owner_gte: Bytes + owner_lte: Bytes + owner_in: [Bytes!] + owner_not_in: [Bytes!] + owner_contains: Bytes + owner_not_contains: Bytes + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + tickLower: String + tickLower_not: String + tickLower_gt: String + tickLower_lt: String + tickLower_gte: String + tickLower_lte: String + tickLower_in: [String!] + tickLower_not_in: [String!] + tickLower_starts_with: String + tickLower_starts_with_nocase: String + tickLower_not_starts_with: String + tickLower_not_starts_with_nocase: String + tickLower_ends_with: String + tickLower_ends_with_nocase: String + tickLower_not_ends_with: String + tickLower_not_ends_with_nocase: String + tickLower_contains: String + tickLower_not_contains: String + tickLower_contains_nocase: String + tickLower_not_contains_nocase: String + tickLower_: Tick_filter + tickUpper: String + tickUpper_not: String + tickUpper_gt: String + tickUpper_lt: String + tickUpper_gte: String + tickUpper_lte: String + tickUpper_in: [String!] + tickUpper_not_in: [String!] + tickUpper_starts_with: String + tickUpper_starts_with_nocase: String + tickUpper_not_starts_with: String + tickUpper_not_starts_with_nocase: String + tickUpper_ends_with: String + tickUpper_ends_with_nocase: String + tickUpper_not_ends_with: String + tickUpper_not_ends_with_nocase: String + tickUpper_contains: String + tickUpper_not_contains: String + tickUpper_contains_nocase: String + tickUpper_not_contains_nocase: String + tickUpper_: Tick_filter + liquidity: BigInt + liquidity_not: BigInt + liquidity_gt: BigInt + liquidity_lt: BigInt + liquidity_gte: BigInt + liquidity_lte: BigInt + liquidity_in: [BigInt!] + liquidity_not_in: [BigInt!] + depositedToken0: BigDecimal + depositedToken0_not: BigDecimal + depositedToken0_gt: BigDecimal + depositedToken0_lt: BigDecimal + depositedToken0_gte: BigDecimal + depositedToken0_lte: BigDecimal + depositedToken0_in: [BigDecimal!] + depositedToken0_not_in: [BigDecimal!] + depositedToken1: BigDecimal + depositedToken1_not: BigDecimal + depositedToken1_gt: BigDecimal + depositedToken1_lt: BigDecimal + depositedToken1_gte: BigDecimal + depositedToken1_lte: BigDecimal + depositedToken1_in: [BigDecimal!] + depositedToken1_not_in: [BigDecimal!] + withdrawnToken0: BigDecimal + withdrawnToken0_not: BigDecimal + withdrawnToken0_gt: BigDecimal + withdrawnToken0_lt: BigDecimal + withdrawnToken0_gte: BigDecimal + withdrawnToken0_lte: BigDecimal + withdrawnToken0_in: [BigDecimal!] + withdrawnToken0_not_in: [BigDecimal!] + withdrawnToken1: BigDecimal + withdrawnToken1_not: BigDecimal + withdrawnToken1_gt: BigDecimal + withdrawnToken1_lt: BigDecimal + withdrawnToken1_gte: BigDecimal + withdrawnToken1_lte: BigDecimal + withdrawnToken1_in: [BigDecimal!] + withdrawnToken1_not_in: [BigDecimal!] + collectedToken0: BigDecimal + collectedToken0_not: BigDecimal + collectedToken0_gt: BigDecimal + collectedToken0_lt: BigDecimal + collectedToken0_gte: BigDecimal + collectedToken0_lte: BigDecimal + collectedToken0_in: [BigDecimal!] + collectedToken0_not_in: [BigDecimal!] + collectedToken1: BigDecimal + collectedToken1_not: BigDecimal + collectedToken1_gt: BigDecimal + collectedToken1_lt: BigDecimal + collectedToken1_gte: BigDecimal + collectedToken1_lte: BigDecimal + collectedToken1_in: [BigDecimal!] + collectedToken1_not_in: [BigDecimal!] + collectedFeesToken0: BigDecimal + collectedFeesToken0_not: BigDecimal + collectedFeesToken0_gt: BigDecimal + collectedFeesToken0_lt: BigDecimal + collectedFeesToken0_gte: BigDecimal + collectedFeesToken0_lte: BigDecimal + collectedFeesToken0_in: [BigDecimal!] + collectedFeesToken0_not_in: [BigDecimal!] + collectedFeesToken1: BigDecimal + collectedFeesToken1_not: BigDecimal + collectedFeesToken1_gt: BigDecimal + collectedFeesToken1_lt: BigDecimal + collectedFeesToken1_gte: BigDecimal + collectedFeesToken1_lte: BigDecimal + collectedFeesToken1_in: [BigDecimal!] + collectedFeesToken1_not_in: [BigDecimal!] + amountDepositedUSD: BigDecimal + amountDepositedUSD_not: BigDecimal + amountDepositedUSD_gt: BigDecimal + amountDepositedUSD_lt: BigDecimal + amountDepositedUSD_gte: BigDecimal + amountDepositedUSD_lte: BigDecimal + amountDepositedUSD_in: [BigDecimal!] + amountDepositedUSD_not_in: [BigDecimal!] + amountWithdrawnUSD: BigDecimal + amountWithdrawnUSD_not: BigDecimal + amountWithdrawnUSD_gt: BigDecimal + amountWithdrawnUSD_lt: BigDecimal + amountWithdrawnUSD_gte: BigDecimal + amountWithdrawnUSD_lte: BigDecimal + amountWithdrawnUSD_in: [BigDecimal!] + amountWithdrawnUSD_not_in: [BigDecimal!] + amountCollectedUSD: BigDecimal + amountCollectedUSD_not: BigDecimal + amountCollectedUSD_gt: BigDecimal + amountCollectedUSD_lt: BigDecimal + amountCollectedUSD_gte: BigDecimal + amountCollectedUSD_lte: BigDecimal + amountCollectedUSD_in: [BigDecimal!] + amountCollectedUSD_not_in: [BigDecimal!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + feeGrowthInside0LastX128: BigInt + feeGrowthInside0LastX128_not: BigInt + feeGrowthInside0LastX128_gt: BigInt + feeGrowthInside0LastX128_lt: BigInt + feeGrowthInside0LastX128_gte: BigInt + feeGrowthInside0LastX128_lte: BigInt + feeGrowthInside0LastX128_in: [BigInt!] + feeGrowthInside0LastX128_not_in: [BigInt!] + feeGrowthInside1LastX128: BigInt + feeGrowthInside1LastX128_not: BigInt + feeGrowthInside1LastX128_gt: BigInt + feeGrowthInside1LastX128_lt: BigInt + feeGrowthInside1LastX128_gte: BigInt + feeGrowthInside1LastX128_lte: BigInt + feeGrowthInside1LastX128_in: [BigInt!] + feeGrowthInside1LastX128_not_in: [BigInt!] + increaseEvents_: IncreaseEvent_filter + decreaseEvents_: IncreaseEvent_filter + _change_block: BlockChangedFilter + and: [Position_filter] + or: [Position_filter] +} + +enum PositionSnapshot_orderBy { + id + owner + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + position + position__id + position__owner + position__liquidity + position__depositedToken0 + position__depositedToken1 + position__withdrawnToken0 + position__withdrawnToken1 + position__collectedToken0 + position__collectedToken1 + position__collectedFeesToken0 + position__collectedFeesToken1 + position__amountDepositedUSD + position__amountWithdrawnUSD + position__amountCollectedUSD + position__feeGrowthInside0LastX128 + position__feeGrowthInside1LastX128 + blockNumber + timestamp + liquidity + depositedToken0 + depositedToken1 + withdrawnToken0 + withdrawnToken1 + collectedFeesToken0 + collectedFeesToken1 + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + feeGrowthInside0LastX128 + feeGrowthInside1LastX128 +} + +input PositionSnapshot_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + owner: Bytes + owner_not: Bytes + owner_gt: Bytes + owner_lt: Bytes + owner_gte: Bytes + owner_lte: Bytes + owner_in: [Bytes!] + owner_not_in: [Bytes!] + owner_contains: Bytes + owner_not_contains: Bytes + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + position: String + position_not: String + position_gt: String + position_lt: String + position_gte: String + position_lte: String + position_in: [String!] + position_not_in: [String!] + position_starts_with: String + position_starts_with_nocase: String + position_not_starts_with: String + position_not_starts_with_nocase: String + position_ends_with: String + position_ends_with_nocase: String + position_not_ends_with: String + position_not_ends_with_nocase: String + position_contains: String + position_not_contains: String + position_contains_nocase: String + position_not_contains_nocase: String + position_: Position_filter + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + liquidity: BigInt + liquidity_not: BigInt + liquidity_gt: BigInt + liquidity_lt: BigInt + liquidity_gte: BigInt + liquidity_lte: BigInt + liquidity_in: [BigInt!] + liquidity_not_in: [BigInt!] + depositedToken0: BigDecimal + depositedToken0_not: BigDecimal + depositedToken0_gt: BigDecimal + depositedToken0_lt: BigDecimal + depositedToken0_gte: BigDecimal + depositedToken0_lte: BigDecimal + depositedToken0_in: [BigDecimal!] + depositedToken0_not_in: [BigDecimal!] + depositedToken1: BigDecimal + depositedToken1_not: BigDecimal + depositedToken1_gt: BigDecimal + depositedToken1_lt: BigDecimal + depositedToken1_gte: BigDecimal + depositedToken1_lte: BigDecimal + depositedToken1_in: [BigDecimal!] + depositedToken1_not_in: [BigDecimal!] + withdrawnToken0: BigDecimal + withdrawnToken0_not: BigDecimal + withdrawnToken0_gt: BigDecimal + withdrawnToken0_lt: BigDecimal + withdrawnToken0_gte: BigDecimal + withdrawnToken0_lte: BigDecimal + withdrawnToken0_in: [BigDecimal!] + withdrawnToken0_not_in: [BigDecimal!] + withdrawnToken1: BigDecimal + withdrawnToken1_not: BigDecimal + withdrawnToken1_gt: BigDecimal + withdrawnToken1_lt: BigDecimal + withdrawnToken1_gte: BigDecimal + withdrawnToken1_lte: BigDecimal + withdrawnToken1_in: [BigDecimal!] + withdrawnToken1_not_in: [BigDecimal!] + collectedFeesToken0: BigDecimal + collectedFeesToken0_not: BigDecimal + collectedFeesToken0_gt: BigDecimal + collectedFeesToken0_lt: BigDecimal + collectedFeesToken0_gte: BigDecimal + collectedFeesToken0_lte: BigDecimal + collectedFeesToken0_in: [BigDecimal!] + collectedFeesToken0_not_in: [BigDecimal!] + collectedFeesToken1: BigDecimal + collectedFeesToken1_not: BigDecimal + collectedFeesToken1_gt: BigDecimal + collectedFeesToken1_lt: BigDecimal + collectedFeesToken1_gte: BigDecimal + collectedFeesToken1_lte: BigDecimal + collectedFeesToken1_in: [BigDecimal!] + collectedFeesToken1_not_in: [BigDecimal!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + feeGrowthInside0LastX128: BigInt + feeGrowthInside0LastX128_not: BigInt + feeGrowthInside0LastX128_gt: BigInt + feeGrowthInside0LastX128_lt: BigInt + feeGrowthInside0LastX128_gte: BigInt + feeGrowthInside0LastX128_lte: BigInt + feeGrowthInside0LastX128_in: [BigInt!] + feeGrowthInside0LastX128_not_in: [BigInt!] + feeGrowthInside1LastX128: BigInt + feeGrowthInside1LastX128_not: BigInt + feeGrowthInside1LastX128_gt: BigInt + feeGrowthInside1LastX128_lt: BigInt + feeGrowthInside1LastX128_gte: BigInt + feeGrowthInside1LastX128_lte: BigInt + feeGrowthInside1LastX128_in: [BigInt!] + feeGrowthInside1LastX128_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [PositionSnapshot_filter] + or: [PositionSnapshot_filter] +} + +enum Transaction_orderBy { + id + blockNumber + timestamp + gasUsed + gasPrice + mints + burns + swaps + flashed + collects +} + +input Transaction_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + blockNumber: BigInt + blockNumber_not: BigInt + blockNumber_gt: BigInt + blockNumber_lt: BigInt + blockNumber_gte: BigInt + blockNumber_lte: BigInt + blockNumber_in: [BigInt!] + blockNumber_not_in: [BigInt!] + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + gasUsed: BigInt + gasUsed_not: BigInt + gasUsed_gt: BigInt + gasUsed_lt: BigInt + gasUsed_gte: BigInt + gasUsed_lte: BigInt + gasUsed_in: [BigInt!] + gasUsed_not_in: [BigInt!] + gasPrice: BigInt + gasPrice_not: BigInt + gasPrice_gt: BigInt + gasPrice_lt: BigInt + gasPrice_gte: BigInt + gasPrice_lte: BigInt + gasPrice_in: [BigInt!] + gasPrice_not_in: [BigInt!] + mints_: Mint_filter + burns_: Burn_filter + swaps_: Swap_filter + flashed_: Flash_filter + collects_: Collect_filter + _change_block: BlockChangedFilter + and: [Transaction_filter] + or: [Transaction_filter] +} + +enum Mint_orderBy { + id + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + timestamp + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + owner + sender + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex +} + +input Mint_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + owner: Bytes + owner_not: Bytes + owner_gt: Bytes + owner_lt: Bytes + owner_gte: Bytes + owner_lte: Bytes + owner_in: [Bytes!] + owner_not_in: [Bytes!] + owner_contains: Bytes + owner_not_contains: Bytes + sender: Bytes + sender_not: Bytes + sender_gt: Bytes + sender_lt: Bytes + sender_gte: Bytes + sender_lte: Bytes + sender_in: [Bytes!] + sender_not_in: [Bytes!] + sender_contains: Bytes + sender_not_contains: Bytes + origin: Bytes + origin_not: Bytes + origin_gt: Bytes + origin_lt: Bytes + origin_gte: Bytes + origin_lte: Bytes + origin_in: [Bytes!] + origin_not_in: [Bytes!] + origin_contains: Bytes + origin_not_contains: Bytes + amount: BigInt + amount_not: BigInt + amount_gt: BigInt + amount_lt: BigInt + amount_gte: BigInt + amount_lte: BigInt + amount_in: [BigInt!] + amount_not_in: [BigInt!] + amount0: BigDecimal + amount0_not: BigDecimal + amount0_gt: BigDecimal + amount0_lt: BigDecimal + amount0_gte: BigDecimal + amount0_lte: BigDecimal + amount0_in: [BigDecimal!] + amount0_not_in: [BigDecimal!] + amount1: BigDecimal + amount1_not: BigDecimal + amount1_gt: BigDecimal + amount1_lt: BigDecimal + amount1_gte: BigDecimal + amount1_lte: BigDecimal + amount1_in: [BigDecimal!] + amount1_not_in: [BigDecimal!] + amountUSD: BigDecimal + amountUSD_not: BigDecimal + amountUSD_gt: BigDecimal + amountUSD_lt: BigDecimal + amountUSD_gte: BigDecimal + amountUSD_lte: BigDecimal + amountUSD_in: [BigDecimal!] + amountUSD_not_in: [BigDecimal!] + tickLower: BigInt + tickLower_not: BigInt + tickLower_gt: BigInt + tickLower_lt: BigInt + tickLower_gte: BigInt + tickLower_lte: BigInt + tickLower_in: [BigInt!] + tickLower_not_in: [BigInt!] + tickUpper: BigInt + tickUpper_not: BigInt + tickUpper_gt: BigInt + tickUpper_lt: BigInt + tickUpper_gte: BigInt + tickUpper_lte: BigInt + tickUpper_in: [BigInt!] + tickUpper_not_in: [BigInt!] + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Mint_filter] + or: [Mint_filter] +} + +enum Burn_orderBy { + id + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + timestamp + owner + origin + amount + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex +} + +input Burn_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + owner: Bytes + owner_not: Bytes + owner_gt: Bytes + owner_lt: Bytes + owner_gte: Bytes + owner_lte: Bytes + owner_in: [Bytes!] + owner_not_in: [Bytes!] + owner_contains: Bytes + owner_not_contains: Bytes + origin: Bytes + origin_not: Bytes + origin_gt: Bytes + origin_lt: Bytes + origin_gte: Bytes + origin_lte: Bytes + origin_in: [Bytes!] + origin_not_in: [Bytes!] + origin_contains: Bytes + origin_not_contains: Bytes + amount: BigInt + amount_not: BigInt + amount_gt: BigInt + amount_lt: BigInt + amount_gte: BigInt + amount_lte: BigInt + amount_in: [BigInt!] + amount_not_in: [BigInt!] + amount0: BigDecimal + amount0_not: BigDecimal + amount0_gt: BigDecimal + amount0_lt: BigDecimal + amount0_gte: BigDecimal + amount0_lte: BigDecimal + amount0_in: [BigDecimal!] + amount0_not_in: [BigDecimal!] + amount1: BigDecimal + amount1_not: BigDecimal + amount1_gt: BigDecimal + amount1_lt: BigDecimal + amount1_gte: BigDecimal + amount1_lte: BigDecimal + amount1_in: [BigDecimal!] + amount1_not_in: [BigDecimal!] + amountUSD: BigDecimal + amountUSD_not: BigDecimal + amountUSD_gt: BigDecimal + amountUSD_lt: BigDecimal + amountUSD_gte: BigDecimal + amountUSD_lte: BigDecimal + amountUSD_in: [BigDecimal!] + amountUSD_not_in: [BigDecimal!] + tickLower: BigInt + tickLower_not: BigInt + tickLower_gt: BigInt + tickLower_lt: BigInt + tickLower_gte: BigInt + tickLower_lte: BigInt + tickLower_in: [BigInt!] + tickLower_not_in: [BigInt!] + tickUpper: BigInt + tickUpper_not: BigInt + tickUpper_gt: BigInt + tickUpper_lt: BigInt + tickUpper_gte: BigInt + tickUpper_lte: BigInt + tickUpper_in: [BigInt!] + tickUpper_not_in: [BigInt!] + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Burn_filter] + or: [Burn_filter] +} + +enum Swap_orderBy { + id + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + timestamp + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + sender + recipient + origin + amount0 + amount1 + amountUSD + sqrtPriceX96 + tick + logIndex +} + +input Swap_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + sender: Bytes + sender_not: Bytes + sender_gt: Bytes + sender_lt: Bytes + sender_gte: Bytes + sender_lte: Bytes + sender_in: [Bytes!] + sender_not_in: [Bytes!] + sender_contains: Bytes + sender_not_contains: Bytes + recipient: Bytes + recipient_not: Bytes + recipient_gt: Bytes + recipient_lt: Bytes + recipient_gte: Bytes + recipient_lte: Bytes + recipient_in: [Bytes!] + recipient_not_in: [Bytes!] + recipient_contains: Bytes + recipient_not_contains: Bytes + origin: Bytes + origin_not: Bytes + origin_gt: Bytes + origin_lt: Bytes + origin_gte: Bytes + origin_lte: Bytes + origin_in: [Bytes!] + origin_not_in: [Bytes!] + origin_contains: Bytes + origin_not_contains: Bytes + amount0: BigDecimal + amount0_not: BigDecimal + amount0_gt: BigDecimal + amount0_lt: BigDecimal + amount0_gte: BigDecimal + amount0_lte: BigDecimal + amount0_in: [BigDecimal!] + amount0_not_in: [BigDecimal!] + amount1: BigDecimal + amount1_not: BigDecimal + amount1_gt: BigDecimal + amount1_lt: BigDecimal + amount1_gte: BigDecimal + amount1_lte: BigDecimal + amount1_in: [BigDecimal!] + amount1_not_in: [BigDecimal!] + amountUSD: BigDecimal + amountUSD_not: BigDecimal + amountUSD_gt: BigDecimal + amountUSD_lt: BigDecimal + amountUSD_gte: BigDecimal + amountUSD_lte: BigDecimal + amountUSD_in: [BigDecimal!] + amountUSD_not_in: [BigDecimal!] + sqrtPriceX96: BigInt + sqrtPriceX96_not: BigInt + sqrtPriceX96_gt: BigInt + sqrtPriceX96_lt: BigInt + sqrtPriceX96_gte: BigInt + sqrtPriceX96_lte: BigInt + sqrtPriceX96_in: [BigInt!] + sqrtPriceX96_not_in: [BigInt!] + tick: BigInt + tick_not: BigInt + tick_gt: BigInt + tick_lt: BigInt + tick_gte: BigInt + tick_lte: BigInt + tick_in: [BigInt!] + tick_not_in: [BigInt!] + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Swap_filter] + or: [Swap_filter] +} + +enum Collect_orderBy { + id + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + timestamp + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + owner + amount0 + amount1 + amountUSD + tickLower + tickUpper + logIndex +} + +input Collect_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + owner: Bytes + owner_not: Bytes + owner_gt: Bytes + owner_lt: Bytes + owner_gte: Bytes + owner_lte: Bytes + owner_in: [Bytes!] + owner_not_in: [Bytes!] + owner_contains: Bytes + owner_not_contains: Bytes + amount0: BigDecimal + amount0_not: BigDecimal + amount0_gt: BigDecimal + amount0_lt: BigDecimal + amount0_gte: BigDecimal + amount0_lte: BigDecimal + amount0_in: [BigDecimal!] + amount0_not_in: [BigDecimal!] + amount1: BigDecimal + amount1_not: BigDecimal + amount1_gt: BigDecimal + amount1_lt: BigDecimal + amount1_gte: BigDecimal + amount1_lte: BigDecimal + amount1_in: [BigDecimal!] + amount1_not_in: [BigDecimal!] + amountUSD: BigDecimal + amountUSD_not: BigDecimal + amountUSD_gt: BigDecimal + amountUSD_lt: BigDecimal + amountUSD_gte: BigDecimal + amountUSD_lte: BigDecimal + amountUSD_in: [BigDecimal!] + amountUSD_not_in: [BigDecimal!] + tickLower: BigInt + tickLower_not: BigInt + tickLower_gt: BigInt + tickLower_lt: BigInt + tickLower_gte: BigInt + tickLower_lte: BigInt + tickLower_in: [BigInt!] + tickLower_not_in: [BigInt!] + tickUpper: BigInt + tickUpper_not: BigInt + tickUpper_gt: BigInt + tickUpper_lt: BigInt + tickUpper_gte: BigInt + tickUpper_lte: BigInt + tickUpper_in: [BigInt!] + tickUpper_not_in: [BigInt!] + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Collect_filter] + or: [Collect_filter] +} + +enum Flash_orderBy { + id + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice + timestamp + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + sender + recipient + amount0 + amount1 + amountUSD + amount0Paid + amount1Paid + logIndex +} + +input Flash_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + sender: Bytes + sender_not: Bytes + sender_gt: Bytes + sender_lt: Bytes + sender_gte: Bytes + sender_lte: Bytes + sender_in: [Bytes!] + sender_not_in: [Bytes!] + sender_contains: Bytes + sender_not_contains: Bytes + recipient: Bytes + recipient_not: Bytes + recipient_gt: Bytes + recipient_lt: Bytes + recipient_gte: Bytes + recipient_lte: Bytes + recipient_in: [Bytes!] + recipient_not_in: [Bytes!] + recipient_contains: Bytes + recipient_not_contains: Bytes + amount0: BigDecimal + amount0_not: BigDecimal + amount0_gt: BigDecimal + amount0_lt: BigDecimal + amount0_gte: BigDecimal + amount0_lte: BigDecimal + amount0_in: [BigDecimal!] + amount0_not_in: [BigDecimal!] + amount1: BigDecimal + amount1_not: BigDecimal + amount1_gt: BigDecimal + amount1_lt: BigDecimal + amount1_gte: BigDecimal + amount1_lte: BigDecimal + amount1_in: [BigDecimal!] + amount1_not_in: [BigDecimal!] + amountUSD: BigDecimal + amountUSD_not: BigDecimal + amountUSD_gt: BigDecimal + amountUSD_lt: BigDecimal + amountUSD_gte: BigDecimal + amountUSD_lte: BigDecimal + amountUSD_in: [BigDecimal!] + amountUSD_not_in: [BigDecimal!] + amount0Paid: BigDecimal + amount0Paid_not: BigDecimal + amount0Paid_gt: BigDecimal + amount0Paid_lt: BigDecimal + amount0Paid_gte: BigDecimal + amount0Paid_lte: BigDecimal + amount0Paid_in: [BigDecimal!] + amount0Paid_not_in: [BigDecimal!] + amount1Paid: BigDecimal + amount1Paid_not: BigDecimal + amount1Paid_gt: BigDecimal + amount1Paid_lt: BigDecimal + amount1Paid_gte: BigDecimal + amount1Paid_lte: BigDecimal + amount1Paid_in: [BigDecimal!] + amount1Paid_not_in: [BigDecimal!] + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [Flash_filter] + or: [Flash_filter] +} + +enum UniswapDayData_orderBy { + id + date + volumeETH + volumeUSD + volumeUSDUntracked + feesUSD + txCount + tvlUSD +} + +input UniswapDayData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + date: Int + date_not: Int + date_gt: Int + date_lt: Int + date_gte: Int + date_lte: Int + date_in: [Int!] + date_not_in: [Int!] + volumeETH: BigDecimal + volumeETH_not: BigDecimal + volumeETH_gt: BigDecimal + volumeETH_lt: BigDecimal + volumeETH_gte: BigDecimal + volumeETH_lte: BigDecimal + volumeETH_in: [BigDecimal!] + volumeETH_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + volumeUSDUntracked: BigDecimal + volumeUSDUntracked_not: BigDecimal + volumeUSDUntracked_gt: BigDecimal + volumeUSDUntracked_lt: BigDecimal + volumeUSDUntracked_gte: BigDecimal + volumeUSDUntracked_lte: BigDecimal + volumeUSDUntracked_in: [BigDecimal!] + volumeUSDUntracked_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + tvlUSD: BigDecimal + tvlUSD_not: BigDecimal + tvlUSD_gt: BigDecimal + tvlUSD_lt: BigDecimal + tvlUSD_gte: BigDecimal + tvlUSD_lte: BigDecimal + tvlUSD_in: [BigDecimal!] + tvlUSD_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [UniswapDayData_filter] + or: [UniswapDayData_filter] +} + +enum PoolDayData_orderBy { + id + date + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close +} + +input PoolDayData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + date: Int + date_not: Int + date_gt: Int + date_lt: Int + date_gte: Int + date_lte: Int + date_in: [Int!] + date_not_in: [Int!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + liquidity: BigInt + liquidity_not: BigInt + liquidity_gt: BigInt + liquidity_lt: BigInt + liquidity_gte: BigInt + liquidity_lte: BigInt + liquidity_in: [BigInt!] + liquidity_not_in: [BigInt!] + sqrtPrice: BigInt + sqrtPrice_not: BigInt + sqrtPrice_gt: BigInt + sqrtPrice_lt: BigInt + sqrtPrice_gte: BigInt + sqrtPrice_lte: BigInt + sqrtPrice_in: [BigInt!] + sqrtPrice_not_in: [BigInt!] + token0Price: BigDecimal + token0Price_not: BigDecimal + token0Price_gt: BigDecimal + token0Price_lt: BigDecimal + token0Price_gte: BigDecimal + token0Price_lte: BigDecimal + token0Price_in: [BigDecimal!] + token0Price_not_in: [BigDecimal!] + token1Price: BigDecimal + token1Price_not: BigDecimal + token1Price_gt: BigDecimal + token1Price_lt: BigDecimal + token1Price_gte: BigDecimal + token1Price_lte: BigDecimal + token1Price_in: [BigDecimal!] + token1Price_not_in: [BigDecimal!] + tick: BigInt + tick_not: BigInt + tick_gt: BigInt + tick_lt: BigInt + tick_gte: BigInt + tick_lte: BigInt + tick_in: [BigInt!] + tick_not_in: [BigInt!] + feeGrowthGlobal0X128: BigInt + feeGrowthGlobal0X128_not: BigInt + feeGrowthGlobal0X128_gt: BigInt + feeGrowthGlobal0X128_lt: BigInt + feeGrowthGlobal0X128_gte: BigInt + feeGrowthGlobal0X128_lte: BigInt + feeGrowthGlobal0X128_in: [BigInt!] + feeGrowthGlobal0X128_not_in: [BigInt!] + feeGrowthGlobal1X128: BigInt + feeGrowthGlobal1X128_not: BigInt + feeGrowthGlobal1X128_gt: BigInt + feeGrowthGlobal1X128_lt: BigInt + feeGrowthGlobal1X128_gte: BigInt + feeGrowthGlobal1X128_lte: BigInt + feeGrowthGlobal1X128_in: [BigInt!] + feeGrowthGlobal1X128_not_in: [BigInt!] + tvlUSD: BigDecimal + tvlUSD_not: BigDecimal + tvlUSD_gt: BigDecimal + tvlUSD_lt: BigDecimal + tvlUSD_gte: BigDecimal + tvlUSD_lte: BigDecimal + tvlUSD_in: [BigDecimal!] + tvlUSD_not_in: [BigDecimal!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + open: BigDecimal + open_not: BigDecimal + open_gt: BigDecimal + open_lt: BigDecimal + open_gte: BigDecimal + open_lte: BigDecimal + open_in: [BigDecimal!] + open_not_in: [BigDecimal!] + high: BigDecimal + high_not: BigDecimal + high_gt: BigDecimal + high_lt: BigDecimal + high_gte: BigDecimal + high_lte: BigDecimal + high_in: [BigDecimal!] + high_not_in: [BigDecimal!] + low: BigDecimal + low_not: BigDecimal + low_gt: BigDecimal + low_lt: BigDecimal + low_gte: BigDecimal + low_lte: BigDecimal + low_in: [BigDecimal!] + low_not_in: [BigDecimal!] + close: BigDecimal + close_not: BigDecimal + close_gt: BigDecimal + close_lt: BigDecimal + close_gte: BigDecimal + close_lte: BigDecimal + close_in: [BigDecimal!] + close_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [PoolDayData_filter] + or: [PoolDayData_filter] +} + +enum PoolHourData_orderBy { + id + periodStartUnix + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + liquidity + sqrtPrice + token0Price + token1Price + tick + feeGrowthGlobal0X128 + feeGrowthGlobal1X128 + tvlUSD + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + txCount + open + high + low + close +} + +input PoolHourData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + periodStartUnix: Int + periodStartUnix_not: Int + periodStartUnix_gt: Int + periodStartUnix_lt: Int + periodStartUnix_gte: Int + periodStartUnix_lte: Int + periodStartUnix_in: [Int!] + periodStartUnix_not_in: [Int!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + liquidity: BigInt + liquidity_not: BigInt + liquidity_gt: BigInt + liquidity_lt: BigInt + liquidity_gte: BigInt + liquidity_lte: BigInt + liquidity_in: [BigInt!] + liquidity_not_in: [BigInt!] + sqrtPrice: BigInt + sqrtPrice_not: BigInt + sqrtPrice_gt: BigInt + sqrtPrice_lt: BigInt + sqrtPrice_gte: BigInt + sqrtPrice_lte: BigInt + sqrtPrice_in: [BigInt!] + sqrtPrice_not_in: [BigInt!] + token0Price: BigDecimal + token0Price_not: BigDecimal + token0Price_gt: BigDecimal + token0Price_lt: BigDecimal + token0Price_gte: BigDecimal + token0Price_lte: BigDecimal + token0Price_in: [BigDecimal!] + token0Price_not_in: [BigDecimal!] + token1Price: BigDecimal + token1Price_not: BigDecimal + token1Price_gt: BigDecimal + token1Price_lt: BigDecimal + token1Price_gte: BigDecimal + token1Price_lte: BigDecimal + token1Price_in: [BigDecimal!] + token1Price_not_in: [BigDecimal!] + tick: BigInt + tick_not: BigInt + tick_gt: BigInt + tick_lt: BigInt + tick_gte: BigInt + tick_lte: BigInt + tick_in: [BigInt!] + tick_not_in: [BigInt!] + feeGrowthGlobal0X128: BigInt + feeGrowthGlobal0X128_not: BigInt + feeGrowthGlobal0X128_gt: BigInt + feeGrowthGlobal0X128_lt: BigInt + feeGrowthGlobal0X128_gte: BigInt + feeGrowthGlobal0X128_lte: BigInt + feeGrowthGlobal0X128_in: [BigInt!] + feeGrowthGlobal0X128_not_in: [BigInt!] + feeGrowthGlobal1X128: BigInt + feeGrowthGlobal1X128_not: BigInt + feeGrowthGlobal1X128_gt: BigInt + feeGrowthGlobal1X128_lt: BigInt + feeGrowthGlobal1X128_gte: BigInt + feeGrowthGlobal1X128_lte: BigInt + feeGrowthGlobal1X128_in: [BigInt!] + feeGrowthGlobal1X128_not_in: [BigInt!] + tvlUSD: BigDecimal + tvlUSD_not: BigDecimal + tvlUSD_gt: BigDecimal + tvlUSD_lt: BigDecimal + tvlUSD_gte: BigDecimal + tvlUSD_lte: BigDecimal + tvlUSD_in: [BigDecimal!] + tvlUSD_not_in: [BigDecimal!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + txCount: BigInt + txCount_not: BigInt + txCount_gt: BigInt + txCount_lt: BigInt + txCount_gte: BigInt + txCount_lte: BigInt + txCount_in: [BigInt!] + txCount_not_in: [BigInt!] + open: BigDecimal + open_not: BigDecimal + open_gt: BigDecimal + open_lt: BigDecimal + open_gte: BigDecimal + open_lte: BigDecimal + open_in: [BigDecimal!] + open_not_in: [BigDecimal!] + high: BigDecimal + high_not: BigDecimal + high_gt: BigDecimal + high_lt: BigDecimal + high_gte: BigDecimal + high_lte: BigDecimal + high_in: [BigDecimal!] + high_not_in: [BigDecimal!] + low: BigDecimal + low_not: BigDecimal + low_gt: BigDecimal + low_lt: BigDecimal + low_gte: BigDecimal + low_lte: BigDecimal + low_in: [BigDecimal!] + low_not_in: [BigDecimal!] + close: BigDecimal + close_not: BigDecimal + close_gt: BigDecimal + close_lt: BigDecimal + close_gte: BigDecimal + close_lte: BigDecimal + close_in: [BigDecimal!] + close_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [PoolHourData_filter] + or: [PoolHourData_filter] +} + +enum TickHourData_orderBy { + id + periodStartUnix + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + tick + tick__id + tick__poolAddress + tick__tickIdx + tick__liquidityGross + tick__liquidityNet + tick__price0 + tick__price1 + tick__volumeToken0 + tick__volumeToken1 + tick__volumeUSD + tick__untrackedVolumeUSD + tick__feesUSD + tick__collectedFeesToken0 + tick__collectedFeesToken1 + tick__collectedFeesUSD + tick__createdAtTimestamp + tick__createdAtBlockNumber + tick__liquidityProviderCount + tick__feeGrowthOutside0X128 + tick__feeGrowthOutside1X128 + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD +} + +input TickHourData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + periodStartUnix: Int + periodStartUnix_not: Int + periodStartUnix_gt: Int + periodStartUnix_lt: Int + periodStartUnix_gte: Int + periodStartUnix_lte: Int + periodStartUnix_in: [Int!] + periodStartUnix_not_in: [Int!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + tick: String + tick_not: String + tick_gt: String + tick_lt: String + tick_gte: String + tick_lte: String + tick_in: [String!] + tick_not_in: [String!] + tick_starts_with: String + tick_starts_with_nocase: String + tick_not_starts_with: String + tick_not_starts_with_nocase: String + tick_ends_with: String + tick_ends_with_nocase: String + tick_not_ends_with: String + tick_not_ends_with_nocase: String + tick_contains: String + tick_not_contains: String + tick_contains_nocase: String + tick_not_contains_nocase: String + tick_: Tick_filter + liquidityGross: BigInt + liquidityGross_not: BigInt + liquidityGross_gt: BigInt + liquidityGross_lt: BigInt + liquidityGross_gte: BigInt + liquidityGross_lte: BigInt + liquidityGross_in: [BigInt!] + liquidityGross_not_in: [BigInt!] + liquidityNet: BigInt + liquidityNet_not: BigInt + liquidityNet_gt: BigInt + liquidityNet_lt: BigInt + liquidityNet_gte: BigInt + liquidityNet_lte: BigInt + liquidityNet_in: [BigInt!] + liquidityNet_not_in: [BigInt!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [TickHourData_filter] + or: [TickHourData_filter] +} + +enum TickDayData_orderBy { + id + date + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + tick + tick__id + tick__poolAddress + tick__tickIdx + tick__liquidityGross + tick__liquidityNet + tick__price0 + tick__price1 + tick__volumeToken0 + tick__volumeToken1 + tick__volumeUSD + tick__untrackedVolumeUSD + tick__feesUSD + tick__collectedFeesToken0 + tick__collectedFeesToken1 + tick__collectedFeesUSD + tick__createdAtTimestamp + tick__createdAtBlockNumber + tick__liquidityProviderCount + tick__feeGrowthOutside0X128 + tick__feeGrowthOutside1X128 + liquidityGross + liquidityNet + volumeToken0 + volumeToken1 + volumeUSD + feesUSD + feeGrowthOutside0X128 + feeGrowthOutside1X128 +} + +input TickDayData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + date: Int + date_not: Int + date_gt: Int + date_lt: Int + date_gte: Int + date_lte: Int + date_in: [Int!] + date_not_in: [Int!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + tick: String + tick_not: String + tick_gt: String + tick_lt: String + tick_gte: String + tick_lte: String + tick_in: [String!] + tick_not_in: [String!] + tick_starts_with: String + tick_starts_with_nocase: String + tick_not_starts_with: String + tick_not_starts_with_nocase: String + tick_ends_with: String + tick_ends_with_nocase: String + tick_not_ends_with: String + tick_not_ends_with_nocase: String + tick_contains: String + tick_not_contains: String + tick_contains_nocase: String + tick_not_contains_nocase: String + tick_: Tick_filter + liquidityGross: BigInt + liquidityGross_not: BigInt + liquidityGross_gt: BigInt + liquidityGross_lt: BigInt + liquidityGross_gte: BigInt + liquidityGross_lte: BigInt + liquidityGross_in: [BigInt!] + liquidityGross_not_in: [BigInt!] + liquidityNet: BigInt + liquidityNet_not: BigInt + liquidityNet_gt: BigInt + liquidityNet_lt: BigInt + liquidityNet_gte: BigInt + liquidityNet_lte: BigInt + liquidityNet_in: [BigInt!] + liquidityNet_not_in: [BigInt!] + volumeToken0: BigDecimal + volumeToken0_not: BigDecimal + volumeToken0_gt: BigDecimal + volumeToken0_lt: BigDecimal + volumeToken0_gte: BigDecimal + volumeToken0_lte: BigDecimal + volumeToken0_in: [BigDecimal!] + volumeToken0_not_in: [BigDecimal!] + volumeToken1: BigDecimal + volumeToken1_not: BigDecimal + volumeToken1_gt: BigDecimal + volumeToken1_lt: BigDecimal + volumeToken1_gte: BigDecimal + volumeToken1_lte: BigDecimal + volumeToken1_in: [BigDecimal!] + volumeToken1_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + feeGrowthOutside0X128: BigInt + feeGrowthOutside0X128_not: BigInt + feeGrowthOutside0X128_gt: BigInt + feeGrowthOutside0X128_lt: BigInt + feeGrowthOutside0X128_gte: BigInt + feeGrowthOutside0X128_lte: BigInt + feeGrowthOutside0X128_in: [BigInt!] + feeGrowthOutside0X128_not_in: [BigInt!] + feeGrowthOutside1X128: BigInt + feeGrowthOutside1X128_not: BigInt + feeGrowthOutside1X128_gt: BigInt + feeGrowthOutside1X128_lt: BigInt + feeGrowthOutside1X128_gte: BigInt + feeGrowthOutside1X128_lte: BigInt + feeGrowthOutside1X128_in: [BigInt!] + feeGrowthOutside1X128_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [TickDayData_filter] + or: [TickDayData_filter] +} + +enum TokenDayData_orderBy { + id + date + token + token__id + token__symbol + token__name + token__decimals + token__totalSupply + token__volume + token__volumeUSD + token__untrackedVolumeUSD + token__feesUSD + token__txCount + token__poolCount + token__totalValueLocked + token__totalValueLockedUSD + token__totalValueLockedUSDUntracked + token__derivedETH + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close +} + +input TokenDayData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + date: Int + date_not: Int + date_gt: Int + date_lt: Int + date_gte: Int + date_lte: Int + date_in: [Int!] + date_not_in: [Int!] + token: String + token_not: String + token_gt: String + token_lt: String + token_gte: String + token_lte: String + token_in: [String!] + token_not_in: [String!] + token_starts_with: String + token_starts_with_nocase: String + token_not_starts_with: String + token_not_starts_with_nocase: String + token_ends_with: String + token_ends_with_nocase: String + token_not_ends_with: String + token_not_ends_with_nocase: String + token_contains: String + token_not_contains: String + token_contains_nocase: String + token_not_contains_nocase: String + token_: Token_filter + volume: BigDecimal + volume_not: BigDecimal + volume_gt: BigDecimal + volume_lt: BigDecimal + volume_gte: BigDecimal + volume_lte: BigDecimal + volume_in: [BigDecimal!] + volume_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + totalValueLocked: BigDecimal + totalValueLocked_not: BigDecimal + totalValueLocked_gt: BigDecimal + totalValueLocked_lt: BigDecimal + totalValueLocked_gte: BigDecimal + totalValueLocked_lte: BigDecimal + totalValueLocked_in: [BigDecimal!] + totalValueLocked_not_in: [BigDecimal!] + totalValueLockedUSD: BigDecimal + totalValueLockedUSD_not: BigDecimal + totalValueLockedUSD_gt: BigDecimal + totalValueLockedUSD_lt: BigDecimal + totalValueLockedUSD_gte: BigDecimal + totalValueLockedUSD_lte: BigDecimal + totalValueLockedUSD_in: [BigDecimal!] + totalValueLockedUSD_not_in: [BigDecimal!] + priceUSD: BigDecimal + priceUSD_not: BigDecimal + priceUSD_gt: BigDecimal + priceUSD_lt: BigDecimal + priceUSD_gte: BigDecimal + priceUSD_lte: BigDecimal + priceUSD_in: [BigDecimal!] + priceUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + open: BigDecimal + open_not: BigDecimal + open_gt: BigDecimal + open_lt: BigDecimal + open_gte: BigDecimal + open_lte: BigDecimal + open_in: [BigDecimal!] + open_not_in: [BigDecimal!] + high: BigDecimal + high_not: BigDecimal + high_gt: BigDecimal + high_lt: BigDecimal + high_gte: BigDecimal + high_lte: BigDecimal + high_in: [BigDecimal!] + high_not_in: [BigDecimal!] + low: BigDecimal + low_not: BigDecimal + low_gt: BigDecimal + low_lt: BigDecimal + low_gte: BigDecimal + low_lte: BigDecimal + low_in: [BigDecimal!] + low_not_in: [BigDecimal!] + close: BigDecimal + close_not: BigDecimal + close_gt: BigDecimal + close_lt: BigDecimal + close_gte: BigDecimal + close_lte: BigDecimal + close_in: [BigDecimal!] + close_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [TokenDayData_filter] + or: [TokenDayData_filter] +} + +enum TokenHourData_orderBy { + id + periodStartUnix + token + token__id + token__symbol + token__name + token__decimals + token__totalSupply + token__volume + token__volumeUSD + token__untrackedVolumeUSD + token__feesUSD + token__txCount + token__poolCount + token__totalValueLocked + token__totalValueLockedUSD + token__totalValueLockedUSDUntracked + token__derivedETH + volume + volumeUSD + untrackedVolumeUSD + totalValueLocked + totalValueLockedUSD + priceUSD + feesUSD + open + high + low + close +} + +input TokenHourData_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + periodStartUnix: Int + periodStartUnix_not: Int + periodStartUnix_gt: Int + periodStartUnix_lt: Int + periodStartUnix_gte: Int + periodStartUnix_lte: Int + periodStartUnix_in: [Int!] + periodStartUnix_not_in: [Int!] + token: String + token_not: String + token_gt: String + token_lt: String + token_gte: String + token_lte: String + token_in: [String!] + token_not_in: [String!] + token_starts_with: String + token_starts_with_nocase: String + token_not_starts_with: String + token_not_starts_with_nocase: String + token_ends_with: String + token_ends_with_nocase: String + token_not_ends_with: String + token_not_ends_with_nocase: String + token_contains: String + token_not_contains: String + token_contains_nocase: String + token_not_contains_nocase: String + token_: Token_filter + volume: BigDecimal + volume_not: BigDecimal + volume_gt: BigDecimal + volume_lt: BigDecimal + volume_gte: BigDecimal + volume_lte: BigDecimal + volume_in: [BigDecimal!] + volume_not_in: [BigDecimal!] + volumeUSD: BigDecimal + volumeUSD_not: BigDecimal + volumeUSD_gt: BigDecimal + volumeUSD_lt: BigDecimal + volumeUSD_gte: BigDecimal + volumeUSD_lte: BigDecimal + volumeUSD_in: [BigDecimal!] + volumeUSD_not_in: [BigDecimal!] + untrackedVolumeUSD: BigDecimal + untrackedVolumeUSD_not: BigDecimal + untrackedVolumeUSD_gt: BigDecimal + untrackedVolumeUSD_lt: BigDecimal + untrackedVolumeUSD_gte: BigDecimal + untrackedVolumeUSD_lte: BigDecimal + untrackedVolumeUSD_in: [BigDecimal!] + untrackedVolumeUSD_not_in: [BigDecimal!] + totalValueLocked: BigDecimal + totalValueLocked_not: BigDecimal + totalValueLocked_gt: BigDecimal + totalValueLocked_lt: BigDecimal + totalValueLocked_gte: BigDecimal + totalValueLocked_lte: BigDecimal + totalValueLocked_in: [BigDecimal!] + totalValueLocked_not_in: [BigDecimal!] + totalValueLockedUSD: BigDecimal + totalValueLockedUSD_not: BigDecimal + totalValueLockedUSD_gt: BigDecimal + totalValueLockedUSD_lt: BigDecimal + totalValueLockedUSD_gte: BigDecimal + totalValueLockedUSD_lte: BigDecimal + totalValueLockedUSD_in: [BigDecimal!] + totalValueLockedUSD_not_in: [BigDecimal!] + priceUSD: BigDecimal + priceUSD_not: BigDecimal + priceUSD_gt: BigDecimal + priceUSD_lt: BigDecimal + priceUSD_gte: BigDecimal + priceUSD_lte: BigDecimal + priceUSD_in: [BigDecimal!] + priceUSD_not_in: [BigDecimal!] + feesUSD: BigDecimal + feesUSD_not: BigDecimal + feesUSD_gt: BigDecimal + feesUSD_lt: BigDecimal + feesUSD_gte: BigDecimal + feesUSD_lte: BigDecimal + feesUSD_in: [BigDecimal!] + feesUSD_not_in: [BigDecimal!] + open: BigDecimal + open_not: BigDecimal + open_gt: BigDecimal + open_lt: BigDecimal + open_gte: BigDecimal + open_lte: BigDecimal + open_in: [BigDecimal!] + open_not_in: [BigDecimal!] + high: BigDecimal + high_not: BigDecimal + high_gt: BigDecimal + high_lt: BigDecimal + high_gte: BigDecimal + high_lte: BigDecimal + high_in: [BigDecimal!] + high_not_in: [BigDecimal!] + low: BigDecimal + low_not: BigDecimal + low_gt: BigDecimal + low_lt: BigDecimal + low_gte: BigDecimal + low_lte: BigDecimal + low_in: [BigDecimal!] + low_not_in: [BigDecimal!] + close: BigDecimal + close_not: BigDecimal + close_gt: BigDecimal + close_lt: BigDecimal + close_gte: BigDecimal + close_lte: BigDecimal + close_in: [BigDecimal!] + close_not_in: [BigDecimal!] + _change_block: BlockChangedFilter + and: [TokenHourData_filter] + or: [TokenHourData_filter] +} + +enum IncreaseEvent_orderBy { + id + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + tokenID + position + position__id + position__owner + position__liquidity + position__depositedToken0 + position__depositedToken1 + position__withdrawnToken0 + position__withdrawnToken1 + position__collectedToken0 + position__collectedToken1 + position__collectedFeesToken0 + position__collectedFeesToken1 + position__amountDepositedUSD + position__amountWithdrawnUSD + position__amountCollectedUSD + position__feeGrowthInside0LastX128 + position__feeGrowthInside1LastX128 + amount0 + amount1 + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + timeStamp + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice +} + +input IncreaseEvent_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + tokenID: BigInt + tokenID_not: BigInt + tokenID_gt: BigInt + tokenID_lt: BigInt + tokenID_gte: BigInt + tokenID_lte: BigInt + tokenID_in: [BigInt!] + tokenID_not_in: [BigInt!] + position: String + position_not: String + position_gt: String + position_lt: String + position_gte: String + position_lte: String + position_in: [String!] + position_not_in: [String!] + position_starts_with: String + position_starts_with_nocase: String + position_not_starts_with: String + position_not_starts_with_nocase: String + position_ends_with: String + position_ends_with_nocase: String + position_not_ends_with: String + position_not_ends_with_nocase: String + position_contains: String + position_not_contains: String + position_contains_nocase: String + position_not_contains_nocase: String + position_: Position_filter + amount0: BigInt + amount0_not: BigInt + amount0_gt: BigInt + amount0_lt: BigInt + amount0_gte: BigInt + amount0_lte: BigInt + amount0_in: [BigInt!] + amount0_not_in: [BigInt!] + amount1: BigInt + amount1_not: BigInt + amount1_gt: BigInt + amount1_lt: BigInt + amount1_gte: BigInt + amount1_lte: BigInt + amount1_in: [BigInt!] + amount1_not_in: [BigInt!] + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + timeStamp: BigInt + timeStamp_not: BigInt + timeStamp_gt: BigInt + timeStamp_lt: BigInt + timeStamp_gte: BigInt + timeStamp_lte: BigInt + timeStamp_in: [BigInt!] + timeStamp_not_in: [BigInt!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + _change_block: BlockChangedFilter + and: [IncreaseEvent_filter] + or: [IncreaseEvent_filter] +} + +enum DecreaseEvent_orderBy { + id + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + tokenID + position + position__id + position__owner + position__liquidity + position__depositedToken0 + position__depositedToken1 + position__withdrawnToken0 + position__withdrawnToken1 + position__collectedToken0 + position__collectedToken1 + position__collectedFeesToken0 + position__collectedFeesToken1 + position__amountDepositedUSD + position__amountWithdrawnUSD + position__amountCollectedUSD + position__feeGrowthInside0LastX128 + position__feeGrowthInside1LastX128 + amount0 + amount1 + token0 + token0__id + token0__symbol + token0__name + token0__decimals + token0__totalSupply + token0__volume + token0__volumeUSD + token0__untrackedVolumeUSD + token0__feesUSD + token0__txCount + token0__poolCount + token0__totalValueLocked + token0__totalValueLockedUSD + token0__totalValueLockedUSDUntracked + token0__derivedETH + token1 + token1__id + token1__symbol + token1__name + token1__decimals + token1__totalSupply + token1__volume + token1__volumeUSD + token1__untrackedVolumeUSD + token1__feesUSD + token1__txCount + token1__poolCount + token1__totalValueLocked + token1__totalValueLockedUSD + token1__totalValueLockedUSDUntracked + token1__derivedETH + timeStamp + transaction + transaction__id + transaction__blockNumber + transaction__timestamp + transaction__gasUsed + transaction__gasPrice +} + +input DecreaseEvent_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + tokenID: BigInt + tokenID_not: BigInt + tokenID_gt: BigInt + tokenID_lt: BigInt + tokenID_gte: BigInt + tokenID_lte: BigInt + tokenID_in: [BigInt!] + tokenID_not_in: [BigInt!] + position: String + position_not: String + position_gt: String + position_lt: String + position_gte: String + position_lte: String + position_in: [String!] + position_not_in: [String!] + position_starts_with: String + position_starts_with_nocase: String + position_not_starts_with: String + position_not_starts_with_nocase: String + position_ends_with: String + position_ends_with_nocase: String + position_not_ends_with: String + position_not_ends_with_nocase: String + position_contains: String + position_not_contains: String + position_contains_nocase: String + position_not_contains_nocase: String + position_: Position_filter + amount0: BigInt + amount0_not: BigInt + amount0_gt: BigInt + amount0_lt: BigInt + amount0_gte: BigInt + amount0_lte: BigInt + amount0_in: [BigInt!] + amount0_not_in: [BigInt!] + amount1: BigInt + amount1_not: BigInt + amount1_gt: BigInt + amount1_lt: BigInt + amount1_gte: BigInt + amount1_lte: BigInt + amount1_in: [BigInt!] + amount1_not_in: [BigInt!] + token0: String + token0_not: String + token0_gt: String + token0_lt: String + token0_gte: String + token0_lte: String + token0_in: [String!] + token0_not_in: [String!] + token0_starts_with: String + token0_starts_with_nocase: String + token0_not_starts_with: String + token0_not_starts_with_nocase: String + token0_ends_with: String + token0_ends_with_nocase: String + token0_not_ends_with: String + token0_not_ends_with_nocase: String + token0_contains: String + token0_not_contains: String + token0_contains_nocase: String + token0_not_contains_nocase: String + token0_: Token_filter + token1: String + token1_not: String + token1_gt: String + token1_lt: String + token1_gte: String + token1_lte: String + token1_in: [String!] + token1_not_in: [String!] + token1_starts_with: String + token1_starts_with_nocase: String + token1_not_starts_with: String + token1_not_starts_with_nocase: String + token1_ends_with: String + token1_ends_with_nocase: String + token1_not_ends_with: String + token1_not_ends_with_nocase: String + token1_contains: String + token1_not_contains: String + token1_contains_nocase: String + token1_not_contains_nocase: String + token1_: Token_filter + timeStamp: BigInt + timeStamp_not: BigInt + timeStamp_gt: BigInt + timeStamp_lt: BigInt + timeStamp_gte: BigInt + timeStamp_lte: BigInt + timeStamp_in: [BigInt!] + timeStamp_not_in: [BigInt!] + transaction: String + transaction_not: String + transaction_gt: String + transaction_lt: String + transaction_gte: String + transaction_lte: String + transaction_in: [String!] + transaction_not_in: [String!] + transaction_starts_with: String + transaction_starts_with_nocase: String + transaction_not_starts_with: String + transaction_not_starts_with_nocase: String + transaction_ends_with: String + transaction_ends_with_nocase: String + transaction_not_ends_with: String + transaction_not_ends_with_nocase: String + transaction_contains: String + transaction_not_contains: String + transaction_contains_nocase: String + transaction_not_contains_nocase: String + transaction_: Transaction_filter + _change_block: BlockChangedFilter + and: [DecreaseEvent_filter] + or: [DecreaseEvent_filter] +} + +enum SetProtocolFeeEvent_orderBy { + id + pool + pool__id + pool__createdAtTimestamp + pool__createdAtBlockNumber + pool__feeTier + pool__liquidity + pool__sqrtPrice + pool__feeGrowthGlobal0X128 + pool__feeGrowthGlobal1X128 + pool__token0Price + pool__token1Price + pool__tick + pool__observationIndex + pool__volumeToken0 + pool__volumeToken1 + pool__volumeUSD + pool__untrackedVolumeUSD + pool__feesUSD + pool__txCount + pool__collectedFeesToken0 + pool__collectedFeesToken1 + pool__collectedFeesUSD + pool__totalValueLockedToken0 + pool__totalValueLockedToken1 + pool__totalValueLockedETH + pool__totalValueLockedUSD + pool__totalValueLockedUSDUntracked + pool__isProtocolFeeEnabled + pool__liquidityProviderCount + logIndex + new0 + new1 + old0 + old1 + timestamp +} + +input SetProtocolFeeEvent_filter { + id: ID + id_not: ID + id_gt: ID + id_lt: ID + id_gte: ID + id_lte: ID + id_in: [ID!] + id_not_in: [ID!] + pool: String + pool_not: String + pool_gt: String + pool_lt: String + pool_gte: String + pool_lte: String + pool_in: [String!] + pool_not_in: [String!] + pool_starts_with: String + pool_starts_with_nocase: String + pool_not_starts_with: String + pool_not_starts_with_nocase: String + pool_ends_with: String + pool_ends_with_nocase: String + pool_not_ends_with: String + pool_not_ends_with_nocase: String + pool_contains: String + pool_not_contains: String + pool_contains_nocase: String + pool_not_contains_nocase: String + pool_: Pool_filter + logIndex: BigInt + logIndex_not: BigInt + logIndex_gt: BigInt + logIndex_lt: BigInt + logIndex_gte: BigInt + logIndex_lte: BigInt + logIndex_in: [BigInt!] + logIndex_not_in: [BigInt!] + new0: BigInt + new0_not: BigInt + new0_gt: BigInt + new0_lt: BigInt + new0_gte: BigInt + new0_lte: BigInt + new0_in: [BigInt!] + new0_not_in: [BigInt!] + new1: BigInt + new1_not: BigInt + new1_gt: BigInt + new1_lt: BigInt + new1_gte: BigInt + new1_lte: BigInt + new1_in: [BigInt!] + new1_not_in: [BigInt!] + old0: BigInt + old0_not: BigInt + old0_gt: BigInt + old0_lt: BigInt + old0_gte: BigInt + old0_lte: BigInt + old0_in: [BigInt!] + old0_not_in: [BigInt!] + old1: BigInt + old1_not: BigInt + old1_gt: BigInt + old1_lt: BigInt + old1_gte: BigInt + old1_lte: BigInt + old1_in: [BigInt!] + old1_not_in: [BigInt!] + timestamp: BigInt + timestamp_not: BigInt + timestamp_gt: BigInt + timestamp_lt: BigInt + timestamp_gte: BigInt + timestamp_lte: BigInt + timestamp_in: [BigInt!] + timestamp_not_in: [BigInt!] + _change_block: BlockChangedFilter + and: [SetProtocolFeeEvent_filter] + or: [SetProtocolFeeEvent_filter] +} + +type _MetaBlock_ { + hash: Bytes + number: Int! + timestamp: Int +} + +type _Meta_ { + block: _MetaBlock_! + deployment: String! + hasIndexingErrors: Boolean! +} + +type ResultState { + block: _Block_! + contractAddress: String! + cid: String! + kind: String! + data: String! +} + +type SyncStatus { + latestIndexedBlockHash: String! + latestIndexedBlockNumber: Int! + latestCanonicalBlockHash: String! + latestCanonicalBlockNumber: Int! + initialIndexedBlockHash: String! + initialIndexedBlockNumber: Int! + latestProcessedBlockHash: String! + latestProcessedBlockNumber: Int! +} + +type Query { + events(blockHash: String!, contractAddress: String!, name: String): [ResultEvent!] + eventsInRange(fromBlockNumber: Int!, toBlockNumber: Int!): [ResultEvent!] + factory(id: ID!, block: Block_height): Factory + factories(block: Block_height, where: Factory_filter, orderBy: Factory_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Factory!]! + bundle(id: ID!, block: Block_height): Bundle + bundles(block: Block_height, where: Bundle_filter, orderBy: Bundle_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Bundle!]! + token(id: ID!, block: Block_height): Token + tokens(block: Block_height, where: Token_filter, orderBy: Token_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Token!]! + pool(id: ID!, block: Block_height): Pool + pools(block: Block_height, where: Pool_filter, orderBy: Pool_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Pool!]! + tick(id: ID!, block: Block_height): Tick + ticks(block: Block_height, where: Tick_filter, orderBy: Tick_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Tick!]! + position(id: ID!, block: Block_height): Position + positions(block: Block_height, where: Position_filter, orderBy: Position_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Position!]! + positionSnapshot(id: ID!, block: Block_height): PositionSnapshot + positionSnapshots(block: Block_height, where: PositionSnapshot_filter, orderBy: PositionSnapshot_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [PositionSnapshot!]! + transaction(id: ID!, block: Block_height): Transaction + transactions(block: Block_height, where: Transaction_filter, orderBy: Transaction_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Transaction!]! + mint(id: ID!, block: Block_height): Mint + mints(block: Block_height, where: Mint_filter, orderBy: Mint_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Mint!]! + burn(id: ID!, block: Block_height): Burn + burns(block: Block_height, where: Burn_filter, orderBy: Burn_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Burn!]! + swap(id: ID!, block: Block_height): Swap + swaps(block: Block_height, where: Swap_filter, orderBy: Swap_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Swap!]! + collect(id: ID!, block: Block_height): Collect + collects(block: Block_height, where: Collect_filter, orderBy: Collect_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Collect!]! + flash(id: ID!, block: Block_height): Flash + flashes(block: Block_height, where: Flash_filter, orderBy: Flash_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [Flash!]! + uniswapDayData(id: ID!, block: Block_height): UniswapDayData + uniswapDayDatas(block: Block_height, where: UniswapDayData_filter, orderBy: UniswapDayData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [UniswapDayData!]! + poolDayData(id: ID!, block: Block_height): PoolDayData + poolDayDatas(block: Block_height, where: PoolDayData_filter, orderBy: PoolDayData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [PoolDayData!]! + poolHourData(id: ID!, block: Block_height): PoolHourData + poolHourDatas(block: Block_height, where: PoolHourData_filter, orderBy: PoolHourData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [PoolHourData!]! + tickHourData(id: ID!, block: Block_height): TickHourData + tickHourDatas(block: Block_height, where: TickHourData_filter, orderBy: TickHourData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [TickHourData!]! + tickDayData(id: ID!, block: Block_height): TickDayData + tickDayDatas(block: Block_height, where: TickDayData_filter, orderBy: TickDayData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [TickDayData!]! + tokenDayData(id: ID!, block: Block_height): TokenDayData + tokenDayDatas(block: Block_height, where: TokenDayData_filter, orderBy: TokenDayData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [TokenDayData!]! + tokenHourData(id: ID!, block: Block_height): TokenHourData + tokenHourDatas(block: Block_height, where: TokenHourData_filter, orderBy: TokenHourData_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [TokenHourData!]! + increaseEvent(id: ID!, block: Block_height): IncreaseEvent + increaseEvents(block: Block_height, where: IncreaseEvent_filter, orderBy: IncreaseEvent_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [IncreaseEvent!]! + decreaseEvent(id: ID!, block: Block_height): DecreaseEvent + decreaseEvents(block: Block_height, where: DecreaseEvent_filter, orderBy: DecreaseEvent_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [DecreaseEvent!]! + setProtocolFeeEvent(id: ID!, block: Block_height): SetProtocolFeeEvent + setProtocolFeeEvents(block: Block_height, where: SetProtocolFeeEvent_filter, orderBy: SetProtocolFeeEvent_orderBy, orderDirection: OrderDirection, first: Int = 100, skip: Int = 0): [SetProtocolFeeEvent!]! + _meta(block: Block_height): _Meta_ + getStateByCID(cid: String!): ResultState + getState(blockHash: String!, contractAddress: String!, kind: String): ResultState + getSyncStatus: SyncStatus +} + +type Factory { + id: ID! + poolCount: BigInt! + txCount: BigInt! + totalVolumeUSD: BigDecimal! + totalVolumeETH: BigDecimal! + totalFeesUSD: BigDecimal! + totalFeesETH: BigDecimal! + untrackedVolumeUSD: BigDecimal! + totalValueLockedUSD: BigDecimal! + totalValueLockedETH: BigDecimal! + totalValueLockedUSDUntracked: BigDecimal! + totalValueLockedETHUntracked: BigDecimal! + owner: ID! +} + +type Bundle { + id: ID! + ethPriceUSD: BigDecimal! +} + +type Token { + id: ID! + symbol: String! + name: String! + decimals: BigInt! + totalSupply: BigInt! + volume: BigDecimal! + volumeUSD: BigDecimal! + untrackedVolumeUSD: BigDecimal! + feesUSD: BigDecimal! + txCount: BigInt! + poolCount: BigInt! + totalValueLocked: BigDecimal! + totalValueLockedUSD: BigDecimal! + totalValueLockedUSDUntracked: BigDecimal! + derivedETH: BigDecimal! + whitelistPools: [Pool!]! + tokenDayData: [TokenDayData!]! +} + +type Pool { + id: ID! + createdAtTimestamp: BigInt! + createdAtBlockNumber: BigInt! + token0: Token! + token1: Token! + feeTier: BigInt! + liquidity: BigInt! + sqrtPrice: BigInt! + feeGrowthGlobal0X128: BigInt! + feeGrowthGlobal1X128: BigInt! + token0Price: BigDecimal! + token1Price: BigDecimal! + tick: BigInt + observationIndex: BigInt! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + untrackedVolumeUSD: BigDecimal! + feesUSD: BigDecimal! + txCount: BigInt! + collectedFeesToken0: BigDecimal! + collectedFeesToken1: BigDecimal! + collectedFeesUSD: BigDecimal! + totalValueLockedToken0: BigDecimal! + totalValueLockedToken1: BigDecimal! + totalValueLockedETH: BigDecimal! + totalValueLockedUSD: BigDecimal! + totalValueLockedUSDUntracked: BigDecimal! + isProtocolFeeEnabled: Boolean! + liquidityProviderCount: BigInt! + poolHourData: [PoolHourData!]! + poolDayData: [PoolDayData!]! + mints: [Mint!]! + burns: [Burn!]! + swaps: [Swap!]! + collects: [Collect!]! + ticks: [Tick!]! +} + +type PoolHourData { + id: ID! + periodStartUnix: Int! + pool: Pool! + liquidity: BigInt! + sqrtPrice: BigInt! + token0Price: BigDecimal! + token1Price: BigDecimal! + tick: BigInt + feeGrowthGlobal0X128: BigInt! + feeGrowthGlobal1X128: BigInt! + tvlUSD: BigDecimal! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + feesUSD: BigDecimal! + txCount: BigInt! + open: BigDecimal! + high: BigDecimal! + low: BigDecimal! + close: BigDecimal! +} + +type PoolDayData { + id: ID! + date: Int! + pool: Pool! + liquidity: BigInt! + sqrtPrice: BigInt! + token0Price: BigDecimal! + token1Price: BigDecimal! + tick: BigInt + feeGrowthGlobal0X128: BigInt! + feeGrowthGlobal1X128: BigInt! + tvlUSD: BigDecimal! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + feesUSD: BigDecimal! + txCount: BigInt! + open: BigDecimal! + high: BigDecimal! + low: BigDecimal! + close: BigDecimal! +} + +type Mint { + id: ID! + transaction: Transaction! + timestamp: BigInt! + pool: Pool! + token0: Token! + token1: Token! + owner: Bytes! + sender: Bytes + origin: Bytes! + amount: BigInt! + amount0: BigDecimal! + amount1: BigDecimal! + amountUSD: BigDecimal + tickLower: BigInt! + tickUpper: BigInt! + logIndex: BigInt +} + +type Transaction { + id: ID! + blockNumber: BigInt! + timestamp: BigInt! + gasUsed: BigInt! + gasPrice: BigInt! + mints: [Mint!]! + burns: [Burn!]! + swaps: [Swap!]! + flashed: [Flash!]! + collects: [Collect!]! +} + +type Burn { + id: ID! + transaction: Transaction! + pool: Pool! + token0: Token! + token1: Token! + timestamp: BigInt! + owner: Bytes + origin: Bytes! + amount: BigInt! + amount0: BigDecimal! + amount1: BigDecimal! + amountUSD: BigDecimal + tickLower: BigInt! + tickUpper: BigInt! + logIndex: BigInt +} + +type Swap { + id: ID! + transaction: Transaction! + timestamp: BigInt! + pool: Pool! + token0: Token! + token1: Token! + sender: Bytes! + recipient: Bytes! + origin: Bytes! + amount0: BigDecimal! + amount1: BigDecimal! + amountUSD: BigDecimal! + sqrtPriceX96: BigInt! + tick: BigInt! + logIndex: BigInt +} + +type Flash { + id: ID! + transaction: Transaction! + timestamp: BigInt! + pool: Pool! + sender: Bytes! + recipient: Bytes! + amount0: BigDecimal! + amount1: BigDecimal! + amountUSD: BigDecimal! + amount0Paid: BigDecimal! + amount1Paid: BigDecimal! + logIndex: BigInt +} + +type Collect { + id: ID! + transaction: Transaction! + timestamp: BigInt! + pool: Pool! + owner: Bytes + amount0: BigDecimal! + amount1: BigDecimal! + amountUSD: BigDecimal + tickLower: BigInt! + tickUpper: BigInt! + logIndex: BigInt +} + +type Tick { + id: ID! + poolAddress: String + tickIdx: BigInt! + pool: Pool! + liquidityGross: BigInt! + liquidityNet: BigInt! + price0: BigDecimal! + price1: BigDecimal! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + untrackedVolumeUSD: BigDecimal! + feesUSD: BigDecimal! + collectedFeesToken0: BigDecimal! + collectedFeesToken1: BigDecimal! + collectedFeesUSD: BigDecimal! + createdAtTimestamp: BigInt! + createdAtBlockNumber: BigInt! + liquidityProviderCount: BigInt! + feeGrowthOutside0X128: BigInt! + feeGrowthOutside1X128: BigInt! +} + +type TokenDayData { + id: ID! + date: Int! + token: Token! + volume: BigDecimal! + volumeUSD: BigDecimal! + untrackedVolumeUSD: BigDecimal! + totalValueLocked: BigDecimal! + totalValueLockedUSD: BigDecimal! + priceUSD: BigDecimal! + feesUSD: BigDecimal! + open: BigDecimal! + high: BigDecimal! + low: BigDecimal! + close: BigDecimal! +} + +type Position { + id: ID! + owner: Bytes! + pool: Pool! + token0: Token! + token1: Token! + tickLower: Tick! + tickUpper: Tick! + liquidity: BigInt! + depositedToken0: BigDecimal! + depositedToken1: BigDecimal! + withdrawnToken0: BigDecimal! + withdrawnToken1: BigDecimal! + collectedToken0: BigDecimal! + collectedToken1: BigDecimal! + collectedFeesToken0: BigDecimal! + collectedFeesToken1: BigDecimal! + amountDepositedUSD: BigDecimal! + amountWithdrawnUSD: BigDecimal! + amountCollectedUSD: BigDecimal! + transaction: Transaction! + feeGrowthInside0LastX128: BigInt! + feeGrowthInside1LastX128: BigInt! + increaseEvents: [IncreaseEvent!]! + decreaseEvents: [IncreaseEvent!]! +} + +type IncreaseEvent { + id: ID! + pool: Pool! + tokenID: BigInt! + position: Position! + amount0: BigInt! + amount1: BigInt! + token0: Token! + token1: Token! + timeStamp: BigInt! + transaction: Transaction! +} + +type PositionSnapshot { + id: ID! + owner: Bytes! + pool: Pool! + position: Position! + blockNumber: BigInt! + timestamp: BigInt! + liquidity: BigInt! + depositedToken0: BigDecimal! + depositedToken1: BigDecimal! + withdrawnToken0: BigDecimal! + withdrawnToken1: BigDecimal! + collectedFeesToken0: BigDecimal! + collectedFeesToken1: BigDecimal! + transaction: Transaction! + feeGrowthInside0LastX128: BigInt! + feeGrowthInside1LastX128: BigInt! +} + +type UniswapDayData { + id: ID! + date: Int! + volumeETH: BigDecimal! + volumeUSD: BigDecimal! + volumeUSDUntracked: BigDecimal! + feesUSD: BigDecimal! + txCount: BigInt! + tvlUSD: BigDecimal! +} + +type TickHourData { + id: ID! + periodStartUnix: Int! + pool: Pool! + tick: Tick! + liquidityGross: BigInt! + liquidityNet: BigInt! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + feesUSD: BigDecimal! +} + +type TickDayData { + id: ID! + date: Int! + pool: Pool! + tick: Tick! + liquidityGross: BigInt! + liquidityNet: BigInt! + volumeToken0: BigDecimal! + volumeToken1: BigDecimal! + volumeUSD: BigDecimal! + feesUSD: BigDecimal! + feeGrowthOutside0X128: BigInt! + feeGrowthOutside1X128: BigInt! +} + +type TokenHourData { + id: ID! + periodStartUnix: Int! + token: Token! + volume: BigDecimal! + volumeUSD: BigDecimal! + untrackedVolumeUSD: BigDecimal! + totalValueLocked: BigDecimal! + totalValueLockedUSD: BigDecimal! + priceUSD: BigDecimal! + feesUSD: BigDecimal! + open: BigDecimal! + high: BigDecimal! + low: BigDecimal! + close: BigDecimal! +} + +type DecreaseEvent { + id: ID! + pool: Pool! + tokenID: BigInt! + position: Position! + amount0: BigInt! + amount1: BigInt! + token0: Token! + token1: Token! + timeStamp: BigInt! + transaction: Transaction! +} + +type SetProtocolFeeEvent { + id: ID! + pool: Pool! + logIndex: BigInt! + new0: BigInt! + new1: BigInt! + old0: BigInt! + old1: BigInt! + timestamp: BigInt! +} + +type Mutation { + watchContract(address: String!, kind: String!, checkpoint: Boolean!, startingBlock: Int): Boolean! +} + +type Subscription { + onEvent: ResultEvent! +} diff --git a/packages/v3-watcher/src/server.ts b/packages/v3-watcher/src/server.ts new file mode 100644 index 0000000..679134f --- /dev/null +++ b/packages/v3-watcher/src/server.ts @@ -0,0 +1,43 @@ +// +// Copyright 2021 Vulcanize, Inc. +// + +import fs from 'fs'; +import path from 'path'; +import 'reflect-metadata'; +import debug from 'debug'; + +import { ServerCmd } from '@cerc-io/cli'; +import { getGraphDbAndWatcher } from '@cerc-io/graph-node'; + +import { createResolvers } from './resolvers'; +import { Indexer } from './indexer'; +import { Database, ENTITY_QUERY_TYPE_MAP, ENTITY_TO_LATEST_ENTITY_MAP } from './database'; + +const log = debug('vulcanize:server'); + +export const main = async (): Promise => { + const serverCmd = new ServerCmd(); + await serverCmd.init(Database); + + const { graphWatcher } = await getGraphDbAndWatcher( + serverCmd.config.server, + serverCmd.clients.ethClient, + serverCmd.ethProvider, + serverCmd.database.baseDatabase, + ENTITY_QUERY_TYPE_MAP, + ENTITY_TO_LATEST_ENTITY_MAP + ); + + await serverCmd.initIndexer(Indexer, graphWatcher); + + const typeDefs = fs.readFileSync(path.join(__dirname, 'schema.gql')).toString(); + + return serverCmd.exec(createResolvers, typeDefs); +}; + +main().then(() => { + log('Starting server...'); +}).catch(err => { + log(err); +}); diff --git a/packages/v3-watcher/src/types.ts b/packages/v3-watcher/src/types.ts new file mode 100644 index 0000000..c456217 --- /dev/null +++ b/packages/v3-watcher/src/types.ts @@ -0,0 +1,3 @@ +// +// Copyright 2021 Vulcanize, Inc. +// diff --git a/packages/v3-watcher/subgraph-build/Factory/Factory.wasm b/packages/v3-watcher/subgraph-build/Factory/Factory.wasm new file mode 100644 index 0000000000000000000000000000000000000000..88049417246186039f2dd376f47569e17f36db0b GIT binary patch literal 228235 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�+mS{p`Qp7;=Ct;j{zhxMH62o|WBQqeYo{am7 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 + id: ID! + # pool address + poolAddress: String + # tick index + tickIdx: BigInt! + # pointer to pool + pool: Pool! + # total liquidity pool has as tick lower or upper + liquidityGross: BigInt! + # how much liquidity changes when tick crossed + liquidityNet: BigInt! + # calculated price of token0 of tick within this pool - constant + price0: BigDecimal! + # calculated price of token1 of tick within this pool - constant + price1: BigDecimal! + # lifetime volume of token0 with this tick in range + volumeToken0: BigDecimal! + # lifetime volume of token1 with this tick in range + volumeToken1: BigDecimal! + # lifetime volume in derived USD with this tick in range + volumeUSD: BigDecimal! + # lifetime volume in untracked USD with this tick in range + untrackedVolumeUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # all time collected fees in token0 + collectedFeesToken0: BigDecimal! + # all time collected fees in token1 + collectedFeesToken1: BigDecimal! + # all time collected fees in USD + collectedFeesUSD: BigDecimal! + # created time + createdAtTimestamp: BigInt! + # created block + createdAtBlockNumber: BigInt! + # Fields used to help derived relationship + liquidityProviderCount: BigInt! # used to detect new exchanges + # derived fields + # swaps: [Swap!]! @derivedFrom(field: "tick") + # vars needed for fee computation + feeGrowthOutside0X128: BigInt! + feeGrowthOutside1X128: BigInt! +} + +type Position @entity { + # Positions created through NonfungiblePositionManager + # NFT token id + id: ID! + # owner of the NFT + owner: Bytes! + # pool position is within + pool: Pool! + # allow indexing by tokens + token0: Token! + # allow indexing by tokens + token1: Token! + # lower tick of the position + tickLower: Tick! + # upper tick of the position + tickUpper: Tick! + # total position liquidity + liquidity: BigInt! + # amount of token 0 ever deposited to position + depositedToken0: BigDecimal! + # amount of token 1 ever deposited to position + depositedToken1: BigDecimal! + # amount of token 0 ever withdrawn from position (without fees) + withdrawnToken0: BigDecimal! + # amount of token 1 ever withdrawn from position (without fees) + withdrawnToken1: BigDecimal! + # all time collect (inclusive of burn amounts) + collectedToken0: BigDecimal! + # all time collect (inclusive of burn amounts) + collectedToken1: BigDecimal! + # all time collected fees in token0 + collectedFeesToken0: BigDecimal! + # all time collected fees in token1 + collectedFeesToken1: BigDecimal! + # Total amount deposited in terms of USD + amountDepositedUSD: BigDecimal! + # Total amount withdrawn in terms of USD + amountWithdrawnUSD: BigDecimal! + # Total amount collected in terms of USD + amountCollectedUSD: BigDecimal! + # tx in which the position was initialized + transaction: Transaction! + # vars needed for fee computation + feeGrowthInside0LastX128: BigInt! + feeGrowthInside1LastX128: BigInt! + + # derived fields + increaseEvents: [IncreaseEvent!]! @derivedFrom(field: "position") + decreaseEvents: [IncreaseEvent!]! @derivedFrom(field: "position") +} + +type PositionSnapshot @entity { + # # + id: ID! + # owner of the NFT + owner: Bytes! + # pool the position is within + pool: Pool! + # position of which the snap was taken of + position: Position! + # block in which the snap was created + blockNumber: BigInt! + # timestamp of block in which the snap was created + timestamp: BigInt! + # total position liquidity + liquidity: BigInt! + # amount of token 0 ever deposited to position + depositedToken0: BigDecimal! + # amount of token 1 ever deposited to position + depositedToken1: BigDecimal! + # amount of token 0 ever withdrawn from position (without fees) + withdrawnToken0: BigDecimal! + # amount of token 1 ever withdrawn from position (without fees) + withdrawnToken1: BigDecimal! + # all time collected fees in token0 + collectedFeesToken0: BigDecimal! + # all time collected fees in token1 + collectedFeesToken1: BigDecimal! + # tx in which the snapshot was initialized + transaction: Transaction! + # internal vars needed for fee computation + feeGrowthInside0LastX128: BigInt! + feeGrowthInside1LastX128: BigInt! +} + +type Transaction @entity { + # txn hash + id: ID! + # block txn was included in + blockNumber: BigInt! + # timestamp txn was confirmed + timestamp: BigInt! + # gas used during txn execution + gasUsed: BigInt! + gasPrice: BigInt! + # derived values + mints: [Mint!]! @derivedFrom(field: "transaction") + burns: [Burn!]! @derivedFrom(field: "transaction") + swaps: [Swap!]! @derivedFrom(field: "transaction") + flashed: [Flash!]! @derivedFrom(field: "transaction") + collects: [Collect!]! @derivedFrom(field: "transaction") +} + +type Mint @entity { + # transaction hash + "#" + index in mints Transaction array + id: ID! + # which txn the mint was included in + transaction: Transaction! + # time of txn + timestamp: BigInt! + # pool position is within + pool: Pool! + # allow indexing by tokens + token0: Token! + # allow indexing by tokens + token1: Token! + # owner of position where liquidity minted to + owner: Bytes! + # the address that minted the liquidity + sender: Bytes + # txn origin + origin: Bytes! # the EOA that initiated the txn + # amount of liquidity minted + amount: BigInt! + # amount of token 0 minted + amount0: BigDecimal! + # amount of token 1 minted + amount1: BigDecimal! + # derived amount based on available prices of tokens + amountUSD: BigDecimal + # lower tick of the position + tickLower: BigInt! + # upper tick of the position + tickUpper: BigInt! + # order within the txn + logIndex: BigInt +} + +type Burn @entity { + # transaction hash + "#" + index in mints Transaction array + id: ID! + # txn burn was included in + transaction: Transaction! + # pool position is within + pool: Pool! + # allow indexing by tokens + token0: Token! + # allow indexing by tokens + token1: Token! + # need this to pull recent txns for specific token or pool + timestamp: BigInt! + # owner of position where liquidity was burned + owner: Bytes + # txn origin + origin: Bytes! # the EOA that initiated the txn + # amouny of liquidity burned + amount: BigInt! + # amount of token 0 burned + amount0: BigDecimal! + # amount of token 1 burned + amount1: BigDecimal! + # derived amount based on available prices of tokens + amountUSD: BigDecimal + # lower tick of position + tickLower: BigInt! + # upper tick of position + tickUpper: BigInt! + # position within the transactions + logIndex: BigInt +} + +type Swap @entity { + # transaction hash + "#" + index in swaps Transaction array + id: ID! + # pointer to transaction + transaction: Transaction! + # timestamp of transaction + timestamp: BigInt! + # pool swap occured within + pool: Pool! + # allow indexing by tokens + token0: Token! + # allow indexing by tokens + token1: Token! + # sender of the swap + sender: Bytes! + # recipient of the swap + recipient: Bytes! + # txn origin + origin: Bytes! # the EOA that initiated the txn + # delta of token0 swapped + amount0: BigDecimal! + # delta of token1 swapped + amount1: BigDecimal! + # derived info + amountUSD: BigDecimal! + # The sqrt(price) of the pool after the swap, as a Q64.96 + sqrtPriceX96: BigInt! + # the tick after the swap + tick: BigInt! + # index within the txn + logIndex: BigInt +} + +type Collect @entity { + # transaction hash + "#" + index in collect Transaction array + id: ID! + # pointer to txn + transaction: Transaction! + # timestamp of event + timestamp: BigInt! + # pool collect occured within + pool: Pool! + # owner of position collect was performed on + owner: Bytes + # amount of token0 collected + amount0: BigDecimal! + # amount of token1 collected + amount1: BigDecimal! + # derived amount based on available prices of tokens + amountUSD: BigDecimal + # lower tick of position + tickLower: BigInt! + # uppper tick of position + tickUpper: BigInt! + # index within the txn + logIndex: BigInt +} + +type Flash @entity { + # transaction hash + "-" + index in collect Transaction array + id: ID! + # pointer to txn + transaction: Transaction! + # timestamp of event + timestamp: BigInt! + # pool collect occured within + pool: Pool! + # sender of the flash + sender: Bytes! + # recipient of the flash + recipient: Bytes! + # amount of token0 flashed + amount0: BigDecimal! + # amount of token1 flashed + amount1: BigDecimal! + # derived amount based on available prices of tokens + amountUSD: BigDecimal! + # amount token0 paid for flash + amount0Paid: BigDecimal! + # amount token1 paid for flash + amount1Paid: BigDecimal! + # index within the txn + logIndex: BigInt +} + +# Data accumulated and condensed into day stats for all of Uniswap +type UniswapDayData @entity { + # timestamp rounded to current day by dividing by 86400 + id: ID! + # timestamp rounded to current day by dividing by 86400 + date: Int! + # total daily volume in Uniswap derived in terms of ETH + volumeETH: BigDecimal! + # total daily volume in Uniswap derived in terms of USD + volumeUSD: BigDecimal! + # total daily volume in Uniswap derived in terms of USD untracked + volumeUSDUntracked: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # number of daily transactions + txCount: BigInt! + # tvl in terms of USD + tvlUSD: BigDecimal! +} + +# Data accumulated and condensed into day stats for each pool +type PoolDayData @entity { + # timestamp rounded to current day by dividing by 86400 + id: ID! + # timestamp rounded to current day by dividing by 86400 + date: Int! + # pointer to pool + pool: Pool! + # in range liquidity at end of period + liquidity: BigInt! + # current price tracker at end of period + sqrtPrice: BigInt! + # price of token0 - derived from sqrtPrice + token0Price: BigDecimal! + # price of token1 - derived from sqrtPrice + token1Price: BigDecimal! + # current tick at end of period + tick: BigInt + # tracker for global fee growth + feeGrowthGlobal0X128: BigInt! + # tracker for global fee growth + feeGrowthGlobal1X128: BigInt! + # tvl derived in USD at end of period + tvlUSD: BigDecimal! + # volume in token0 + volumeToken0: BigDecimal! + # volume in token1 + volumeToken1: BigDecimal! + # volume in USD + volumeUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # numebr of transactions during period + txCount: BigInt! + # opening price of token0 + open: BigDecimal! + # high price of token0 + high: BigDecimal! + # low price of token0 + low: BigDecimal! + # close price of token0 + close: BigDecimal! +} + +# hourly stats tracker for pool +type PoolHourData @entity { + # format: - + id: ID! + # unix timestamp for start of hour + periodStartUnix: Int! + # pointer to pool + pool: Pool! + # in range liquidity at end of period + liquidity: BigInt! + # current price tracker at end of period + sqrtPrice: BigInt! + # price of token0 - derived from sqrtPrice + token0Price: BigDecimal! + # price of token1 - derived from sqrtPrice + token1Price: BigDecimal! + # current tick at end of period + tick: BigInt + # tracker for global fee growth + feeGrowthGlobal0X128: BigInt! + # tracker for global fee growth + feeGrowthGlobal1X128: BigInt! + # tvl derived in USD at end of period + tvlUSD: BigDecimal! + # volume in token0 + volumeToken0: BigDecimal! + # volume in token1 + volumeToken1: BigDecimal! + # volume in USD + volumeUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # numebr of transactions during period + txCount: BigInt! + # opening price of token0 + open: BigDecimal! + # high price of token0 + high: BigDecimal! + # low price of token0 + low: BigDecimal! + # close price of token0 + close: BigDecimal! +} + +type TickHourData @entity { + # format: -- + id: ID! + # unix timestamp for start of hour + periodStartUnix: Int! + # pointer to pool + pool: Pool! + # pointer to tick + tick: Tick! + # total liquidity pool has as tick lower or upper at end of period + liquidityGross: BigInt! + # how much liquidity changes when tick crossed at end of period + liquidityNet: BigInt! + # hourly volume of token0 with this tick in range + volumeToken0: BigDecimal! + # hourly volume of token1 with this tick in range + volumeToken1: BigDecimal! + # hourly volume in derived USD with this tick in range + volumeUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! +} + +# Data accumulated and condensed into day stats for each exchange +# Note: this entity gets saved only if there is a change during the day +type TickDayData @entity { + # format: -- + id: ID! + # timestamp rounded to current day by dividing by 86400 + date: Int! + # pointer to pool + pool: Pool! + # pointer to tick + tick: Tick! + # total liquidity pool has as tick lower or upper at end of period + liquidityGross: BigInt! + # how much liquidity changes when tick crossed at end of period + liquidityNet: BigInt! + # hourly volume of token0 with this tick in range + volumeToken0: BigDecimal! + # hourly volume of token1 with this tick in range + volumeToken1: BigDecimal! + # hourly volume in derived USD with this tick in range + volumeUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # vars needed for fee computation + feeGrowthOutside0X128: BigInt! + feeGrowthOutside1X128: BigInt! +} + +type TokenDayData @entity { + # token address concatendated with date + id: ID! + # timestamp rounded to current day by dividing by 86400 + date: Int! + # pointer to token + token: Token! + # volume in token units + volume: BigDecimal! + # volume in derived USD + volumeUSD: BigDecimal! + # volume in USD even on pools with less reliable USD values + untrackedVolumeUSD: BigDecimal! + # liquidity across all pools in token units + totalValueLocked: BigDecimal! + # liquidity across all pools in derived USD + totalValueLockedUSD: BigDecimal! + # price at end of period in USD + priceUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # opening price USD + open: BigDecimal! + # high price USD + high: BigDecimal! + # low price USD + low: BigDecimal! + # close price USD + close: BigDecimal! +} + +type TokenHourData @entity { + # token address concatendated with date + id: ID! + # unix timestamp for start of hour + periodStartUnix: Int! + # pointer to token + token: Token! + # volume in token units + volume: BigDecimal! + # volume in derived USD + volumeUSD: BigDecimal! + # volume in USD even on pools with less reliable USD values + untrackedVolumeUSD: BigDecimal! + # liquidity across all pools in token units + totalValueLocked: BigDecimal! + # liquidity across all pools in derived USD + totalValueLockedUSD: BigDecimal! + # price at end of period in USD + priceUSD: BigDecimal! + # fees in USD + feesUSD: BigDecimal! + # opening price USD + open: BigDecimal! + # high price USD + high: BigDecimal! + # low price USD + low: BigDecimal! + # close price USD + close: BigDecimal! +} + type IncreaseEvent @entity { + id: ID! + pool: Pool! + tokenID: BigInt! + # amount of liquidity added + position: Position! + amount0: BigInt! + amount1: BigInt! +# amountUSD: BigDecimal! + token0: Token! + token1: Token! + timeStamp: BigInt! + transaction: Transaction! +} +type DecreaseEvent @entity { + id: ID! + pool: Pool! + tokenID: BigInt! + # amount of liquidity added + position: Position! + amount0: BigInt! + amount1: BigInt! + token0: Token! + token1: Token! + timeStamp: BigInt! + transaction: Transaction! +} + +type SetProtocolFeeEvent @entity { + id: ID! + pool: Pool! + logIndex: BigInt! + new0: BigInt! + new1: BigInt! + old0: BigInt! + old1: BigInt! + timestamp: BigInt! +} \ No newline at end of file diff --git a/packages/v3-watcher/subgraph-build/subgraph.yaml b/packages/v3-watcher/subgraph-build/subgraph.yaml new file mode 100644 index 0000000..371ac0e --- /dev/null +++ b/packages/v3-watcher/subgraph-build/subgraph.yaml @@ -0,0 +1,100 @@ +specVersion: 0.0.4 +schema: + file: schema.graphql +features: + - nonFatalErrors +dataSources: + - kind: ethereum/contract + name: Factory + network: mainnet + source: + address: "0xc35dadb65012ec5796536bd9864ed8773abc74c4" + startBlock: 2867560 + abi: Factory + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + file: Factory/Factory.wasm + entities: [] + abis: + - name: Factory + file: Factory/abis/factory.json + - name: ERC20 + file: Factory/abis/ERC20.json + - name: ERC20SymbolBytes + file: Factory/abis/ERC20SymbolBytes.json + - name: ERC20NameBytes + file: Factory/abis/ERC20NameBytes.json + - name: Pool + file: Factory/abis/pool.json + eventHandlers: + - event: PoolCreated(indexed address,indexed address,indexed uint24,int24,address) + handler: handlePoolCreated + - kind: ethereum/contract + name: NonfungiblePositionManager + network: mainnet + source: + address: "0xf4d73326c13a4fc5fd7a064217e12780e9bd62c3" + startBlock: 2868037 + abi: NonfungiblePositionManager + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + file: NonfungiblePositionManager/NonfungiblePositionManager.wasm + entities: [] + abis: + - name: NonfungiblePositionManager + file: NonfungiblePositionManager/abis/NonfungiblePositionManager.json + - name: Pool + file: NonfungiblePositionManager/abis/pool.json + - name: Factory + file: NonfungiblePositionManager/abis/factory.json + - name: ERC20 + file: NonfungiblePositionManager/abis/ERC20.json + eventHandlers: + - event: IncreaseLiquidity(indexed uint256,uint128,uint256,uint256) + handler: handleIncreaseLiquidity + - event: DecreaseLiquidity(indexed uint256,uint128,uint256,uint256) + handler: handleDecreaseLiquidity + - event: Collect(indexed uint256,address,uint256,uint256) + handler: handleCollect + - event: Transfer(indexed address,indexed address,indexed uint256) + handler: handleTransfer +templates: + - kind: ethereum/contract + name: Pool + network: mainnet + source: + abi: Pool + mapping: + kind: ethereum/events + apiVersion: 0.0.5 + language: wasm/assemblyscript + file: templates/Pool/Pool.wasm + entities: [] + abis: + - name: Pool + file: Pool/abis/pool.json + - name: Factory + file: Pool/abis/factory.json + - name: ERC20 + file: Pool/abis/ERC20.json + eventHandlers: + - event: Initialize(uint160,int24) + handler: handleInitialize + - event: Swap(indexed address,indexed address,int256,int256,uint160,uint128,int24) + handler: handleSwap + - event: Mint(address,indexed address,indexed int24,indexed int24,uint128,uint256,uint256) + handler: handleMint + - event: Burn(indexed address,indexed int24,indexed int24,uint128,uint256,uint256) + handler: handleBurn + - event: Flash(indexed address,indexed address,uint256,uint256,uint256,uint256) + handler: handleFlash + - event: Collect(indexed address,address,indexed int24,indexed int24,uint128,uint128) + handler: handlePoolCollect + - event: CollectProtocol(indexed address,indexed address,uint128,uint128) + handler: handleProtocolCollect + - event: SetFeeProtocol(uint8,uint8,uint8,uint8) + handler: handleSetProtocolFee diff --git a/packages/v3-watcher/subgraph-build/templates/Pool/Pool.wasm b/packages/v3-watcher/subgraph-build/templates/Pool/Pool.wasm new file mode 100644 index 0000000000000000000000000000000000000000..46a279ce156725cdd8e51005694155e241c0e2c5 GIT binary patch literal 326224 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 z z&-Sa6EY#o}o1x>BdMtGP}N;#B(m`g0IQG=OG%q`-&bkd=pa7_yRglkf;^amn= zg*X_A=q?`7U7WsPy}~rxO~=YR0gXL>73)fe5m>FPE7_Z!HTrYSc*-=}a39xC(Ax@) zmj?M;J(#*#GLDf}hk%%zl~m5S^)C(9y)|+Y%ExDY3)tUA+TTXo-^SVBitKMw>~GV3 zH+4(7XRuiDo(!OQsRfY0vSmV}83|`uNI1(v!dVs)zHkc3Q1~>E1Tfh`G7=^^-gU3Bqp+8NS3E?!fp=uZ6#yO zGzK7`Sl*BZT)+1K{78QM68avt7zG$AiTWM`B=tRvDe8Mo z%vg~??TP^Yw&S zfw5-V*G&CpI?zl9o9R$94VdXjGaYTFhuHi`y3859i|yc7*FIS(MAXgCZXO{oLJ zA5G1OBB!5?@JU7>AtR8G5lF}gBxD2B zBx!t@c)2}IMD&kNhDQrk?naS|vgZ9ve6b6nrLReGlyNNgLhPBa+HHELPDPdl5WF2=oVRM9J+v<<#EJY z-r`N30EwxzGu=kp-;r&%Cfs70WV>)ZvgsfkMH(Iukz_}Klso7;GWv_&l;KQjJRsIy zNf9K}B}k}CkkAW*gkBgVu#d9Q9*#epP_0-~v6M>llLA2%2?ju3y#BB1@V+Z^NW`Tg zCKetSgn(HdiDLLupx1;0)$ArBo0x4TypuiQ02|HU0MEbe#SqK7+;!c9LJE1MC9EEn zCm9N_1|P#~V->(p;nNXpal29ojl`8gXr$z@LPPWI@urMoRizi6FY*eB8MG8Ramn5#&7ed*TfnllxXq}EO_|Y*{p?191G<1 zKH<%@L#eU8$|w;Ho?HbgVn;CBx+rNS0#KbU2*v6ZaIM}a+_1I}99kTKE=lW*RuQWk ziXyfa7qMz$-7mq}i?vXHiQVnGiv=1gN$7(O30r00;l&-f&>}U7Il|}OBVpm?7|Pq= zN%NjMb)S+THU?ig`g!>(3b8;g8PC--`CgGcURtYRsO#>Zr&xGmJyIMrr7%r{p7Vg5 z7SrJ1b+e+=9d9IY>;SQ?2>T2r> z|D%^?d?$N)UGYD9X~vV;)9dp8(MvO)&7NMX{zos(crJT-tvu26dOr2|n2!rtI7ID} z1QK74Zp|7wKZ74h&Y8s|TJx_^{I8~0S!Oq0{u{tMjE#9U$cch$#qW2}h6v4&7}sI^ec&T%X7a)wW_hsV%--%Gu5TXp`ak;7uU8$8%~ zxvu*fJ+SbA>8aUj*aI3Po)bdF5QgSI2bnC=n3=rAbW|GyQ=EUTkPI_g_*2idEe`we zYutxJz@wa|!5uuE2QqoCcKO-!e@eZKrxG}w6E{nLt?l3>Sw>)e7709; z3F}l+OFF$;%$ndnO<0=3o*HP$q)sj1DB2K54M7{;gEbIa;o5!29M{y9DDWOb6Z2aO z8+Obm4gY`Cr3%lcRvKC8%^%f4ctA|(2XR3{6q z!{5{u3fYZ1tb52Uc+zCUdDRyv=;%gv0E$ih;xYyxB8Ml7je z3jvnhetEPVtBu!t*V+&8Nm+C>aPF|>ep2uB|%7G4)&%OKX^ zy&Fe(c%~y5fD;`-4Hj6e5EHu%L2kLCD2ORt$}~YiOa``?+<^X<#DocoqhSOoU4=3@ zLS>C1pJAX0#yN}aBRsGc#PN_C$ftpe!!<9r&1*)z9yRvp3-Aq_+`27^^49p0e%cvW zCBoO@4Mv|O_~j|~6pKd-`e{h_9?;~MhpjJPvA(=veW^cU=4pS=i_F-IZ17+YOs_z4 z82KQ%K!mdpb0fRK2o%;kmI#esFa)jOQyYI{yLgNzWQ7HT+e(b01%h9mi&zMdJw_mE z9M=|rFRTy_S5$&BIA%nrqQtEcFs^u0BSOFhzl$~+eM$uFiZ%kQ@uarVIDLt@ah|yG znzk`O3j9($7~=DxkbfBfcuf*R0fNEZ*jt1+;p7OpN10+)<@>)Ldao2+S6vf_Y6pLW zJ%{B_{K65VOc+my#C-L`V1zv5myDRoLKoO8;*MD0&=QDcKo~;i-b=47#l|tt$+3|L za!&BdgdFngj1Zc!>+js@({bLOBFyB6TG}uZxw9+KGZmg5ILv`3d(e;(V#}ut8G=!! zBBJ>p@B$CZP&41nib514EFK$s{QiY7*a%9t6P>xIHH{oHf`mxeMg~5r@O24a+4iIZ zm;(PLP@+Qx&gL>v0cN+1c1n2DgJ#ILSoHLNfeq*mkP5vm#bGfH;XXpfdf2#8@-dxt zUIPJ*L)0MV&i*c|xV~u-j*YSRS+a9r@z3y7v-OZP>~OLHL)7s^Vr6Z$g$aOeY9ZCl z|Dg8(0~x&PzFI^S!*Dp)aJJN1`2jBReA>KUO@_Eq9#eoQF1~+T1e?k?PT&`JfjMf? z3hCY3J>^NM>Bd?SkAg6~Y(^NH9vbzDRJ_yxx)-V?AWuG`hUpH4OZ|c_w4pm_Tkn^@ zJop6_g{fQ#n2Gzxz1JA^`@B$rP*l`r^3HxQ&sl+7Qn`4C% zf+&lcD3S6VcVM~jcc7pn9&&VI01ih9sIBhYFzzM#x`{rt6W()%GHeBIidNvJ(PNWw zK#$_fY@m;!rB^&kg8>3AGafUW1%Qa`z}<_{TmabbEn!Phi3dk=s%_Pc_MX=med0!a zJ!ZN%uCwPgQQ%?19~_sJnm_$<*4=lL^%&JdX(FBycTe7g*UUtt4C~ZLIL#zu-yY(y zDOv7_Kpw3~!XHoNo%1#FR}h;3Kx{8h*~ndrF$n}#B4pZ;RLgO;FZHBbl~m|{4Q)V@ z5IalN(W(E;l2k(^uV)(^VIFQJxR~7~}&nYkm4)&Uq zvrnr>8NFa~Ymnvc3t&vre3DN*#Q`r&C~l{PO@vLj=UIrUBvX+I%Jz8o~d;9 zxgH#!fhndYLvw_|3ZVAc!QHT+nVy-e!&Q-FUojCJzIi-i1qZEqCwAcSghfbCdiz_@`9bcuEq*lB6n?1_- zB#c;RNYrs?XsjHm=aH5Kd;8$B011FX-|Vn;d?T8;iSP*wm9*oTY($B3RtR zvkkON7(Kg*H@sSdr#S;e*f57gPHvL;+v7iwzlz}q#&*izH~tIx`;^*^Z3Z``VK4~v zAJ>6%VDSI<9T>ZJ|Hof@Civf{py5dRAAkRg`K$eR^S4D$xuHFuxIA$rmvm$^_RQ$9 zkV78a0rVzIw+-!OS>v8+MPM-V7<2&lx_Agq4uyI^)C|@&RL7XP z=xB|JLNC~_#KNX}xG_fs#F2+w9Kt~yT&oj~E3s76H*o=*gupQwi2(}<=aO<0s{v_q zhSva>!GV=>n6<~h5?QP@c59sOmT-PGx0=JFC(a^H7^dNFN?N{lvy27*4OX$~pA%=1 z$mMIt6KlO`XeX^mE+JtNX^^3B?C;TWrY~Y%#5$Zd-0RtHAeKi)&w3UcaQ6*C%nqIN z3~%Dwrx2xr@Fp%@g0e$M69iG=f(-gb+1kZJ1erh*g(7Gs>6V@%R=m=7pYK5( z(Q6V1i#=Z53B@ z3=Cynytoo3zZ0*9)dZ2(%e*?-iHQ|f%W+fN=pV(w;&gN|GIfN>+!6Z4$fTES^xc*@ z{?1uCW&9m}nJ3=#1(EGVk77r1lO{OUX&Rnl{uKt!jPar-E=8wU-Ml{au|MiEvN*W|E4Tt#Cgu@Mav7P1 zeW&a1mLpu!LQq4I7sSVLC9S6rUe+KY5)+xuU$g0}m{*Oyq;mrXU39r6=+M>P2=^!3WVv8Fh%;34GwJ4S)I~p^Kg6E^J?7Aca?D zfEQiFw7x}K#mFwcq08X3Lb3#!8z-qE9!gB;bMF-5d_)Z2DLcgx9kCTw-$fjy-F>B~ zLbaKvi*fgc_adk`PISA|9-ydZ`LcWO`%Ku{c2 zZ7uiynqz6l)~F;%F$(0R{xSI4RG8QiKURYijt6;-W4d6v4 za;qsCZ`z@V_HO9R2K5wE?eM+o!WQ--u+Z2pOjxN_1bkCh06l?%Io?_pv8bMvL&1uO zBbdU-X<YGKFh!v=mU+W`V^ zpmse#P$Y60BSik}hY4Y5i-AI01lvLkMgep{PIARqaUk_6p6XsN$3(Qv6G*u986ZI* ze>NkBo4XE3u871e)Dy8jEdwIGOA6Ndn?7X8sKrnr=#esy<<(Oo!}Wb z2xz%-(DHRyV?R2LJ@DCPKBt*NUkPqW6REp7zY|uI(4-(9DAiqTVtO$?ECa*G{2E0oAKKVl?@x8TV6W+>7#RpMmh1{jH5S&8vl6=g&8^v=d z6>4ahoj7sco!Ke4g~p`h);%;#vN{x)I@xiG8vFhP>F1xa4hCa_y36r%9r&Y@$r)Wu zdz)LPIzJ8pn~Ofc>GMm;(`TXUC99R`^P3P5nja^A`kcmybY)+4Za|A+*b;WyNq7^E z+T4K0rNQi|56e!%Ddqn%OIew0rLmNU4NvOYNpYb0%>|uSTk`|2hHZ1WdSKp)odbX9 znKIr!9j9}eDiyq-kHDV10X{df z`uy;D7$UwQA&c@>KFxm~vh+>Euu}@e8`AJ*KBwYdhEFV+^i#{gci}Pm+nEAhW8beJ z;Qko^-e1iq1aN?z5u4&D0s}f^@jF=#NHOuNc|?6D*?HhZn*}f@b;xqElSM-&n32ZG zY9>Y82C@mK*!kHx&M;1~GxI=@9D@j)&M#D+?@SFH@kJfo#tITg4wwuu;c&3dV2rSM zDsE}&0~GV*QLH=rwa@qU*Y)3a*NmOLeELky*xk#A{b!ms8keC};V+_r^82;Dc_XMOd)YjXl4@GUg zeW$QQUtBBkB#JUMfN3_xFuw{!zFb;iL#lwyyoW#?wICO7JEG3J1ZRNq9zX1aW^7?p5M{k!U$PdJ#&HME@BqM?+Scl&BUAkDK%@6PDjpZ$U|u-B#A5A#9Anmd`29nA#V_6 zry*B4{@4OyMcPydyv{=%K|Gy`{KR}ZQgW%%gvvXU0Ew7Q$6d-dAu<0n2yz~xAN2U%}ARcNmLrzUEYu9jY-@id>_jB_+j^I>x$ zQ2HV+c9Z`Mfi_wO3&OV!cE&-957a^%oVM6sB=c2J7(;-@e>M*CQh0>W$Lu^rq4M4f|(c2nq3@RTV4^W zT(>^FVPjQwO{DgkXe?g0Y4et?AHH(URUaz5I{ou&ulvZh?HCu%@YQ!a*`HLa-#^0d z_nTGw$Be}f>jO0Wh1QRMQCft0Ci-R5ySU2fe*cW~{UD}Xgwhv}uz~?#c)r@Zhd?T-y1>a|Z zC%!Iz__f(u`)T~DA8&8Rf6e$^z~?{kMEixfSI^-ZnR{wR{czvl1MOzz$7jQCIMCic zn+3K0n(^Rp-{%QHZ}RHOgzE(MU8sfPeU$B$ESAUMQbi`HPE0d5u;jK7-Brtoi|Hjb{9Kgs{uI4|OIlD&sy4|981Npu@(zmp} zH*afN@%G;iJAN;})r0gFw+HZs_R?t-0qytz(aM<@@CQoVZ?^f^i}HpBrW!Y&?Hl!O z`+LLv^5HST9I}!iC9CAEe`?0lXZuF)@gC9mceQq0^X|G%LVBa!Qx6FkCVw$M1mvG* z`*bMlTSxgk^^mO3jPiNwfvmB2l&=r7h|KtXXp|3OgZRvx1+)H*Q9gZ}X1q1Z*R56) zWIV^`olW=ZH_!3)tbg|jWIU!BKfn(!Wv(5de|CE#97o3D4CiaN}s-LU0?o zP%%CSW`kJB&reVB|KMaGgr=CEZIxOt+T9xXCO&sR32q0pqRTYnwb4HBamsM(XrMb> zJTBIZ>(BKKYBOQ7re3)CY$W)9u5WmKeL{Bxl0bw1_yL-L_tv>SJ%GV%jIbm=JI3cZ zfQB@U@%5@XCbHe483)JsdS5Mmh{o?2>(enKzH_Y4%f4nbjrE;xie>wDnGF=@XUiy{ zFFtH={hx=)AE;VBhlt;!8Giww`k$aRw~X@*tUr#d@~JkM2py*!QGBUy@1Yq#!IR6t z;opt-opG!$A-^xUaC~dMwynQFtZh5EdB+4STmiy86MWs<+S}WzHRG`fKJT{2aqqhm zeER*G@rMb%K7-AskN{sS^!co&ZP!rgD}`u?nW5ekHT)cc=(Iwg=W68GUF7Ri?>*lB zCc6ygNRJl@YvWLn?^H@vd;4}N{KEpAiXDHy9V2m(ugCWG_J6z%{@gLq=Yd``o}1{? zA&$R8vRyOY!QEp3{-sGi{W$nCi9@#-xgBLb*zZ5x`gO*TlVC*n{lm-~f#KGZe|0*d z05y*6;#$uJyitUCjtO|QnKC(7`QCM3$8;U2P9V|L>+smJxr!2>K*3G(eME>N-SO$4c}r(U9;O*DpXa+MAYi`OT>M&l`#L5Djq-Pf02p9t`O`y0NWr*7ENRd;7>-2_1Uz zzVm%W2V_Y!UwqlF{FhI}|6yDDisw&20l#y;Y!a;%JVXO_UErIYK#MK1Xq({9)sjaN z{<~&FMFy)e+c88M$1d>ovYBe^oGHgX2?(f~zX$LJ6i4$+pZH1%ka?hMj?DD+l0Try zjCT@#?Yt1N($+&z%KG|7#V^|55+Z;*PrUgCA6#43_MY`TV>%l-ko#RExZXg5YdaEN z1jC2Y+%Pc}4R~ypprRKU#0BY}1tlowPd)5UzaBmMTR%9b>T!zot4EK4gPiaG+Ha?x zhWZAdfI3en%ri{DLzD`JD&M>A>zQ2#DpyEnr7oZu-+o&24IDYv{ODTgYV!j-0*~(X zay&Pm_8dF*O7rPOt5uF_GtXSf68$8cAuC5NpXgb0t@Sr>tN1p4Y>9V~cgvb<2Wp@0qmLckqlY%8$Cxo= zdw%*{P&F9!OtLEpo8|!;3?bxwxkhaaMHmv8^kz?<&Z%CR7 z3e-~!W_-I7D%+*R7hQ;r^Y1xZfaI5#`k}*k9)I%5*Iq;4$nf{tYb&2z_%bB2yIM(4 z9aBc*+2=Liup~+ACz#>D#ia8E&8KoubiieHhqO8-((z-*ZXL*U>zFm?$omgyeIDnx zW!^2*RRqQ^LuR1xE`aNcFcW!E^9|{QLU`L1atyRU^wbtvGKNWa!%HY^Jrb$xsb&_; z+nz#>Gi-&1EIl==JX3)9k>)!`%^<)Ct3k~uzT@S{$bG7Ut&;_H-TUKC9v;EN(-c${ zL{apcKS6)MOmj6RTr)6}#LwoQdH^gr0&C)lGd1l^sEn=fG>pW&m$Nbq-T1HRoKe0H zYi|aA4@Pj$`gh>M;{x9=#P|8gyATD2 z;oeYOXW^QFGLvvk!!;GxvM*@b#keNo`)H)|a24YFcwFzEt7!&)zlU@zeviTRCce+b zy)n4Hjo;_s`X;WkaSg(~lfM93EtYr&kbsUhzF39SxG?9`VEAhLa8XirBHuIkz6a?)K%X;eZQAGoJZIg@Q3nmN zzaSqz@VUSPg!>9FwF5p)zgmtJ`b&3dqHfgX>3$oF0MB>YwR_%d*Pgmn(_Tk<2d+=z zYQ%Lnt_N`OGadQ6;rd;F8xL{+S=49zs@-$u?ZT}gorHL@8nD@(i}1YyS3Ry;T-$K< z#y38pH^}FE z)W*eXyC~QD)pq@izqIS8zuK<7@=CjQ_?343H@LjG|4XF5!u2HX^RwsIl6EG|JbjzR zZHtC_^A+v-9z-U!)wSz~uV{zIL(?C{y|3YV0@t5#y^8BCT%`SXkRGg)u#48WYge~P z_yK?g&j?%}jem#D@5T6j!2BM-cPo$jeFX0R0(p#^Ue|oxdz^DgWHWp~_s-Q&hLG~X_7QQwLEw)EdVpx(dZq?=E^^_1IA`S`%w2kkoblc(Hy+NTD8 z`t-Zb`0S9z)9)U7&zbk0_296Fhkbe2qk+c)-x&VHh-V897W}Z_=Of=P`1{%KjtY!F zf5L@@vx;U(2bhncFYB`SOM< zZoT5RD|TM_@in)vX}ao>4}JMVU-{5eWrwbQKKMfL#kDV$|ES`X(5scNtvj~rQT%&+t#xAt5G$_%EG(<{#2-kdpeKm41bceK)u@3>js}mtX0kJmjV8NArwwM%V zRE4u{%sVmMSua``B7a+chdS4wPNbLUsE-v z?HXVf*Oudd7~DXFNelCV`>jZA?o&p}wT*B(nNJ&jkEk(1>4uAuF-9ZqkYan0+7z2B z=wQ(#hF|Op0n{g@DS%(3P#D)%+}|v|kq@JG#8MhKVTawDOt{@G+> zVshvxY9YSIk=h!fGkj(5qNW6{O@Bh^>mb`mZCy!ysIp9E<^x!9NUsV&n(IrPwlJO^jF@Au$*K7>2~)DFzR*^=uijCPu7{ z!9~o)KL+|S@Q)N?>)A45O^jq<7;{V)e+&YXRFuI}vSq}Y7_l}&VlJcYZCG|gyFv2* zs`+l|r9_GM0pu;!;m`}NS6&?8H_av zgBE9?{0x+52qdM7l0oj0L!>e(#nuvI*2Cr+B6^DwxR)IrU5%uY&r(RLx4a?hmlStqzM@zS<&mHT@44+ z#`geYDB6ltF#@B)crcpHrw5VRQSPK$6^sa)kbI88ycKCy#s`O1#~f$<@0;}_wF8!~ zgjr+WKgj!>u+zx{pJa=9zZI!%mW~5dqs@HM(5^tb3N_$2sk9eqmh@f=PSMCr!u2R2 zp|!`6X4Tq&xvQWAw2lk&rCt{h_9LB0j*Y>!3Qso*iP?<*0mu_g+#tS<#(kRlv>`9V zWgKOBaO*fyn_A~$nz=*X-;MO-0ATjTRa}gJ_|zA}dSQlfu$z$DbAsfGM}xd3pjH*o zfnoti0BSQcG+eJc`x9t@Z3Mk)&`XR)JP{Iw)Rvi2JBQJ1K0lZm0>aW;%p9$1jyaG> zQi2mZqm4PxoQ4~8-8bM;sd-z>ysc_pIn8n=POD&SVw$q^ zM!>B?{0q`m#9=9}bkiUe`&_0%tfLX_yh-g7FY%~-2`$nO@mraCsskX z%3i|RoHg~kMWS;MsVx)Mylx))(^haz_AKKl^RgcywY8oF(b(A_pYBF#KdprX3%5uU zpF;NbBOOMpx!$@-Jd+a)N7m6BTFl(7nR7$(cit*t??!5OQx&!;d(CFPgGg<+62~vn z!_0Hk%yV4L6UQht7r3%7VINfEZK!W1bR*J2wuP=#31=awP1hD@vJ27cA{gta_lqz+ zm^d>;OdOj?k-Iq zM~xI?q_(JW@6$EFikM1IjnTq<5Rq1-_Pm$$;Sg1&cp4Vt9z91i#Y_=wyd7oH&GsTa zg{|VS6h~*NvT`&t$8~5o(in48;Y!B~`r*{Aa9uLdq+-t-C7 z)&!~}y-Nt+E;Kl^LQhxm2~zDXcK}TYM=MfWwI84vjE}0?cYac4+>O*$h8D7mAQ5%w zJ+|6yW^TyRL8NDs+h^foho?_60=c0Vhvs2i7)A8m7;P*A{xsaF`+_WU1+Gl|Nv=5u z4jn~3blK^y)W>R6!D9&;DGm_T3k=i?ki8Y%~A8`dFq!jZ+qnSAy(Riet zk1iC8DxeWY52zA8@e@XXmd{E8v?9%e05s}92MBAR$&s!k2^Zr^*9#re<&BfCN%b&~F zdB)C%CA{58?LNewyH1?IKuW>tYi2G;!9k?<VBu5(Y6HT~FPilr zwdJK2^@vG)B4?YK7uxP1(y`>+NL=ND^VVv!0ZqaBle9*gS+e0vilx-C~x?AC}j`ILeaOVeCN~B7GQtl+McS4A&gS@1tKuofyB5BfVSLy`M&&3uGzd~# z3#lA6nwf)|6sbL`IC{$Le@B_C3baNVB!4^eC8WbP2i~@P1NDKotw?k6C8V$V1o3s} zHzoOYBenT@>`G7wAC<4oX2yd^hm(Q~V{*_EYx;^KY3n zNBTL@pYBAJnfp^`m7gf8H=9&PYE!-TDxix`0@axjR6L0EQc`g_u5?tSKIdFX#;@i; zxu)-+mPY7Jq_+#oHK3ZzluNGg1X1hIcO|tBBekh@fEpSfm0E4gxCYwf2|aUs;u4HE z90zisQw!jdPOV6Di7|AlIzbd_J0L04@T5YaV`UvF)PxMwr~8rG*0qJ6amajn7^ywa zv8-#%gO2h!wAyi`pAvHNaa7@C7;Tc2QDo<8=VMLD3Wt^JM&r!q)-UTRqsgYhH<$cd zGAQvGqsoeuyo_xdhh-RP-eX0)@o6C045Jh2!ve|sfF%12qoElc7!r;<`kHAWGK7HR zg^mv>f_r^Y;P25n2;zF8$Q0>IC)EmV-cS92$<))?_c0qxJZxnr!EDGUINf_8iti zFUf{#W?qgFNVD)dNopp-$bq&^KR|8J0sE2W=5I6|}=L?cTyOG)ys;}%wp=M?r3i(26 zj~NzvMvM8h6{(MXnLh3D@M;@v=97jO6@MOfy)@!CJHcM0whu?ng(=~}r*z27b6Cwo zPr37Fw3&GtUQ*_f)OObTH2po&XJE|_k&`v=&s@TsH?)`~T9Mkb8K(}*yI{iK`6H90 zNIS`G`2?7IC+Lc_(>XZ>Ak}(NiIBmrnUnumVtyE@?JMU<#`O#C+mZ5aw3+!DexkIn z;|`O{5F*LQdE{c>+K<#8lRA1mQU{qZmR~g?q>;dox0eAG^4P?b(2-^d-SLQ|hyIEQ zohhLs&8QbvntqEM^yto40lyJ?2Wc*P!Kvy5>4m1(fEYUoQd=(sHg?ntEzAf$v?8_j zf`y*Z#-}r3iyzi~=Ta|>z?EtxnOc( zjV)>Nr~xA#4LTY^IR)yp{1k|xyS5_T$_7PorNS%K+IAOq)uTTH9#t4nkY=0`GUChG z1ek+(w!ALc(26vdDPeMjCrC)!T7VvewBhH9kRGcBNAOV%sU~C)(u~v|Y!Z<)T9^l- z+KSXRylEaw_c*1AW_Xq9Oy<1U+GvQS!Ny;pG`hiFq;@yp!q8?6Rz|b=^kB!Q7$RHD zr>*K!*2GA9qs@HU@P-0eKBaRVcj>a+i!?%cT#qZA5xo-l$Sr^z9+TU{IEEaj!i`5z zdoyZB`jD7q?LqYyaus>QXdJ4Uo$ORRPywa;q5`Wj8+MF71Z zNM@dcNDIhrt{6#ra|X!yq@0V=bIRYwQI=Q?MS=7}mY9Z%LFN(Upw(dQ+2p#Lj0Cb~ zt)+m#Rl5pp2}HdXwf_dNAmj&;+F|A|0Xy;GA|Nx6ut;t6)XjYz(A)W2334}58)Pk& zDn9_(#0lY#R!WYkPYBEeTZmfb1N{b0?(0NN&1(H zi_#{sw+347(3Sh46S-1}b}|~3n<)sNmObxqpR`U7l1b39d^FgiG1g3x$W!r6;71ssv*5c8~o03)@H zTLazQ33^aB*>m)xVwc;`$;d7EPBD?z7x$x*2KJjQn*Ip*5S{%nJO7FjGr?=5wryB~7O)M}3UnzuM-*@>Lur%4 zr*Vj-hoYY$wZ}Mh*gR@xIId<;2f>~1nDrw)hZqNNIq!^Ni+RumvEhJ1Imgg{h^0W; z!$@t_O((Qe#MZ!1C%5IArVZ%yGC6}v?AN5Fsv)Rcjpo0}79K=uw=lr4Uwp2{rpFdD zLn~5y1()MTEkuEx+-PGCkhtORN^H3FSkp@3#Ey(qn`ks6udqju+OcAY{b}KSz-mQm zM*wiaycWoZ(LgB_R4j5VvJ|_~_%2F9H1;Ab(1AQf!#N8fanu$w)k7??7(_;T9!uav zBV|{FB}^8vCFv7Mh)&RWT()E{(%$a^LN8o6J+0Zie~|Z&oA+_F^AY^+_YeFI;NpiA z#J%wzL;hw0yAon8Uwp)r=U_4Qm?=&~ef%G~&*SNhb7=8J@2eRvG3}4TQIYluAR|8j zYTWsMV66o`Aa2VC`|zM2mx1{qxq!;cxaVQ1-{4E1Zmbj^-l+d4906ADbZLK?AB)Sz ze&nB+E?>I)XvaG!CopJe1LdrYXxN^l-;d+B$anx>PI59z6j0zuQi0?6O$s%7Z%@jYx@6*i`K)~u2z?(x#kxg@O@dJ{HPe3Nw{5G22 zH(S(feL09PI<~^LAnjv;BsbpS1Mq8SJFEm&MaM7Gb!G|?c^S_V3bo;epjczQ$9Iv1 z>GdeVk4HCCHW8mWlw^FaH&YL&!jA{77pX~dferwkY2g=;&+R7j{w?S!JMb2BW`5lI z@{IN6W$Vjt@TIo{$7thk3m%&L^7S6k>>F<|Vcltcc>rG$#QquHut2fe#v5hXXOJd5 zXfYqWgH#}R<4xw5XRI$TTVHOxSpvD!Odl}Q7Nnx=JJy$mTRgt*zXK_N_5=8y&;@^s z`^4!09_UBWE~IA=*-7#N{yQSXj5`}VzJAQW4-=2J^Hoo`nqYNE|K~6D*S*>)+p5BA z3)j|#tK#9BSYdE&BpTN*5;u$2MT52LYon2Pq&!kpD1MEP#|q0M)zy(2BsH5t(O4K? z<6CP(bM2oKV)1CWW?gAy(Zp#*9wQrAHFec%0jqFrc-_2EdAK@QHK8&Zsa`1nc^72^ zB0V~5x5h&;U=!NXZCW;v6l6+j;uC5ko4b$ev|PBRBDAG27LP|J!W^B+a#Y- zi`C?KL^inR;%oqP(%|qqAYN)h>ypPz5x$mRjlb1X}W30nJSbY60OFkDj@ zimwkvLv_{mmkH&;s;ZOnsZ`ME(R?q}C~$E$l<$Oza&VIa$MCKJHYXShO`Sesn7}L=w+8$As?R<-32IGf^QhCrz3NbP zB)YXwCKD>dRaNJV5)Wv9R0N~Z;MT%b;hOk#gI^0kG*}{a<)HTH`Pm=^E2k<{9*0E} zE1Uzmb^vp3pp)v#%0QYi86?6ool;aJXizeF(%77aLa9kaSsUeXIgLjO1k^r0s|Hx? zLs@GecJ$H&$*sD0xXR=elk(cFg{jzB9;w}0Wb?eN4D1$kpEy*|T0j9CVNg;IYlG2H zNp)@2q-5EPhEQ7tC3giuYaE*hE}tPPfj<6Ebkt2`1FNX21-mi=c|L2X@Z{nWuC zYr>O)SZ!4}J}oQDF0~lNX@H)0RtnJZ$l}Q6P;@SO-SlPRd0NXmjY3&j9gN23Mrz{G zV0m2h(6XTHSTmM(0YIfAoqx7~m%78j_C3EURI@I={({as3Np@=tV$#@Dk=}gFU(2= zlc^k2`}-_cj6ye(gXvoZ#h4unCy0CNoEQbAcMyNZD3Dhu;Bg=*r< zgVA91tb(#KP=u|17UiO~s7l5Lxt6+Jd_L@SgfIZjjrvoJ%>dED6@mN7ve#LSb}1wK8XV3VO3<6*!$_p;U(nU0_04S?HQY zH%ZLXvOYbcU4bJ}6b&w^|6uWe2wjw6Fw7vl=#LlYD!D?0mey5OEtbU0feWA-hMI!9 z8eqQUtaTWYqQQ8mqA*szK2#knTpo#33GEyYmv3D90TUNYUY09qpbq3fxqNEp!-^D8 zMewC=yhNImVoaABu&^#32~M6=RuL*MtE!8yP)r9iLs(>3nH4V*D|C#L(yWF9MJJm^ zjosc=Sxr!qst312!J5_Qztd!u^dC}1hk=ADHiaaDp4k%YC~(aCvBLrffwbTlt7sv>aV5Too&unqHTE{)x=LDUFRG zG!ATx&EwP8ACJU?RjX;RFOHON3{^lCY{{y#DC`nb7dXJT4o_LnJUJE#MeyOVjw%Y* z#6wYNlvTBuAcSItbs}Z=GD}=LA|<>la;hOTQx{6Tjdi|UZtu=Kr zB?D^$LOQ|m8?wVpVY$`Aq)NF_&sCLK<>5TONiXVvrmbU>#Zz!=;>~);fzRP%MJO8H z6snkCy66@?Uj;2zIT~`ttmsyKxFe6&SX&8;frD)*Dv-QQAJU=05_=AnAJxTZT^+2g z#W>An)@Z13eUL+GNliE&4pxOf9NMXO)H^Bx#M)`>V|rG@ZVI+4!|uoRT&-qlqB&;w z?Rq}LMpb;5KGLD3TwD!psg2ZxxTxuX|Ac;aayFokHEHBR*Dj5ivUZ1_mBp8W8eH7_ zWC~eW05=;v(L#A73o4}VPCW;`i~OI`M|O~lgetbojnvh|KdpCEiw^JOGSgl9*bcCi zOi4~sagUyr`JiZQX%%x$bZ?4QEy0i{X8u7;$!g-zyn9kG)6P{D z!2&*F3O=8=dWA#rKK*ou{`5E$mPbPvZ%gs@etmRDn&Q47xozXXK8eL1&_`vFb!jO6 z1wE_Dpwi8#FN8t-V2Tc~swN!U9IRDsh==qEPK#0-5s9Vt>KzTL^qm1*c{l}EL;)3z zFX|ah54FsfQpkgNZrLWnoN3a>XKGtQp-1$N7LBDdIGTJ}U*Mu6D8s;4GL0pj^(bpL zwNJk^FKiMPHs)e|QFNlpx*DNBmLiPlQGLw`fV?uit|l1A^3h}ZoSs;}rG z*b2KI*E6_{(y%Lm(gh3>`IG-B-2^XgLS5`)q5?c|9)m2H=CY0gSujf;0+BaOP z?K#rdwqNf!Yp1$1N0M)Lrph)&s_LpkqK_4QOV2o4Ay`u>d|MyGuA6AM$vF*kEeK(y zKN>@0@Q1>GQf? zkgm$ivy5lPU zuk@WC(CV;_mRwASS0EY=#eS{d_`&0Yb>H9UAN%0(sIH5}7n-a1zttQ5Z4mmMe)9*9 zOE`v(_hxq9E!nAUiBmg3tE$?}9y1qok5t>)#q>wGaDT5F5uIdSwsr#|5dV;6?xkYe z#9QhZ-wABfNIse+aJhi?N7dNq1ULgG{*)OJm4JWF&Pkih0vb0P;T1fVe{seo{Utl! zN^S;CS4g4*B7w=81Y|CVoAgt-4bKVneqHYq3;;CC4pqMSdk=&{QhPYIY~y?SbstdO^V#(G^$&j_)eDxie?XNBrq_G&ShJn*VJzwI@Z`BF zB1&KH$#rqaTKGdmK7)KiH{=bWCK8{|fQB1ASvlzyhqHx4Rp_R?%dQLE?8!B(fsSrP zPu$|kchwYA(}wJJRFdCN5A{CWFIkZ3)u8F}l%Kdg&>9{TDcGzGh zPx`3ac3?EznKuF`{4uu(U`YLV-Uy)Z?VhZ{0#a~6j*7cHg+l9zsD-t4m6f4rp&0Py zi0`Yzq0PcuwidivR#}O;$tOH#iV~^A_k-~}JZh*Qr-0ZKjP+Ek)vd&@nRU}=ebO^r zfRNFI%o5rX57ktxsH<7QeNoJFr)OwVp6XC^T?koXeEcbo+;ohx=EkAQXejh)&uK}8 zRxVpn%KUeE8%+r%k#2J90;xXEWcBRgq27wW}|+h;waGh|yFjKxLP&v|4t zYwB8Kk?K&RNzT+cLRhKZdbejpXZ1y*^MmE<@98vClz?KPd(BL0a4lnJ%cNw4DoDyb z9=U%bITjTCGPEuf71G0epZDammM6Bj+?SnRPpO|^<3c;#pJ(ML`hdI2p%uQ6XXPmR zpu5VU5gy93aunU0SJ7|`p^gvdV?z`$$nA^yXs`l!JI#UkOF7#h97(P5zbUUKiw&ob z`~W%Oozf_nXHL4OOC7Q zS`-)wYvQY(4Evcgf>{vWVp=ATdot{V%?OJtzyKz85`E3HL@4QW9@+AY&{kPylYsYi zPloNN8R1C-;2W+9FBJZMPkx&O9sUWzuS9rSg#h?X*LaoI)mDYR<+)6dJt#Kz%CRYb zJ|skMe%rOI2@C~J&8D@ZqABO*V*A~9T#KUF%|vD2b&a^_YXa62UBh<=-~rc7HN&q2 zdQW;X97B_3FA>0=@(k%9OX10r%q@~nd-4mKaC!iSQBlt`p5^(AsL+L~;t?R9_2d^O z;vko(eFV_&Wg3M#BW^)e{QIuTuZth_WQb7hw0^i1Isbgl<8EuK)S^FdiHe}-4_yKg z>g14V!Uq+FCpC%UJb1nnb%QD13vLty>~B@syy#ikq0@9O-5njAf>8;&_a!%-jTn;k zg6KbT*;ZBC{MeJ>l&K5?DP>8Z^%HYCsoPJufoqfS9CdG z+Yj-&M;;o{Rip^UTXOFAoznqw50CH9a~9Rkq1Hxff8iG%4LIZJRHl8HV`L7u#3ZnJ*tk-@(X=pW4O)B6-^z2O zo`bWnHi{8Tj}B6P^(0hwXq1gR#H5 zk_W|+Hn>m#N&CoDIAE=Pb-9C1ED17haGu>Q}$P?F$dRsvtsfTO6lpz`Q*0(H75I`-VZ8RU9f4Eh0IQGR%@B+V!e4jkC?4|%$wnO zwvHqG*MPRzWZ+FaQX6!ESehf^=2w@@5swmKp`&jr@ey=zNCN868ZI>m8X? zX{Rvkb67u_H$5-{NtWE1H%kBlEcuih6eLSNoi|H>f?&yAd9#ENLQO}pB>fF>0<$%TzS|uTc^>sW zUg?cV9Zdyokh3bY5uJ5!?jma!Cbi(++>^U16@qFO|9p0wQk9Te9Nq3dH*Ju|`P}b@ zPgYpY1K!hxGE5jQ3lJj_HR4}L`7Bnq7MUOP4i)93>q?HbxE+sF%?x9u_91VEHQG)D zQS>Dozby6JUayQNOh9nLs?r71CxmLsu?6p87i17s5!M&I85Soy!Pk@tF!f9ML6HZl z+bwSLW)-pALAdP3JmQrRFxgvnvUQuB1A!Ba&M$kj3f)$U3si(w`AT+jo?KR4*xZ*L zJvxA}R~{eDuCpft07FF+9?Pz?Cl^;%*1npZT%>?thTaK09?uUC*^LB*ujR~0EMA%; z)Yo(7Lel#5H*)4e!t(KcZ&qRW3JsNo*KcMws3#Uy82GL1?2``VRrY<`J634S)FYyG z8eH)v90nd;7i;#)BkR)T#(6`_Dy_`l@lNOjG}?FiMxLVC=DabnSsop~et?Zb5z0+gadttO|#wT3Mg!lx!G`f;3*N+)sPu z;d`mc#O3{Sp}+O9Q0l#2+~!slY78(-ZfneKcUb3z^bU1x;3# zt|(c$uvdPbW(SO9ld)ojae43j)C97{DrB2Ub?8HbpGO! zm8B5)(q$LVUuq#Zf8|Nyh_z%CSC$%c7SB)4d$KriCpqtulBFd}RxK&Rd8=i7k=gut zr-{nGpiZHWM)9im&M95~IKvARnE+butTg?qTkxL$BcSHZN= zoLSaYAT25Kex6NpoDo zm^NjuTXK|4pXU~hl8MviyM{4&(gN2orcGJs7RG|flNPy#F>OkTTWicQ$uC-#zqBq5 zA%=i!Gkgh@h(^W9Hy69;kT$@%(XF*Oy#^8Ri%Tu-ls8Sae3_;BcV}Amn zt#S!ydEHv9ub{1~T>`SXd1j{`Gc0a!+^_N7(OJ}0-We-2);TnFL&8w2@kZp z!iBvqxT)y6D_yF9x#9&tK#eaUl1gfgOWMr~)mBBe&NbgXFJWG_yz96uA%4iEP7yOs zoR24=mAUMzLU&3~SG(jcLSY~y5?0XVNH#B26^e&!aBE!(iv*V-Eafiz5ss2G_mNb% z1h%qHbXhPXUKb0w6cA^aEs2M!D_ssc^S6Y`v0xCXSymUvds{>6T*6BpV%NJAVBs;5 z<6+n(;p|~wbcziw5mN^0jV_!4lr_=DDwmqb6jes}n5?XJK`+JcWdg3r=amnfonplZ zd#EBVXe12jMU$pZt93g;03z48KxA$tRvp3Xk+w!%n93#)P7VMm=0YngkVJqr0^M?d zD~HJ<1=d^ye$}~90|}t2v3VOd)uyg#rto%cb}n==p1y0Gl9lC1?5g3)s!@HK&&BrdA>vb1KkAj7Q zy(W^gnmgV1PYGyQP1RPR!#}0FHntY?e0%}y)B5FZJG%fjwPjk*iZn(VPK z1M$}TSZGdYUARUF&fU5Tr%obJxOc)>J}KRDkM3fUoCtG%O@%=7UiaFHRyCPTt7%Wy zfD2VfE`Q!V5rxfPu_U&R6Fs7MpL_M-%p>l1FNUSz>QF2mtgd~)y<#p6*M7mhK2@9_ z9A_WYUAP^j)Rk^|$o+Uxx@AtJV(VV_O4FLPJ?x%&_6+Nb?#XV$lH>H3+;=4#BGhJ+ z?%Hjjf|E1K*dtxoYzgwq?gxt1c*zQkU`fWWxDh-fx;cc`)Cx_x&&`l%0>V3FBbCc4 z<%-jzZsvq0z|!El$J|J<14c}|zUoHiELhGNZjZZB-yOjT6u+js2>a^@lm24C-sSP= z*VQ+fE3XfP+&eGU{e~WJ-n*UpEt~uGAsw1h!^t6svTNHWan^|a_Sffi`z>>2Wzl#%T*l)SU(kEWEvKQ1USbF6{{uuK#`XXJ literal 0 HcmV?d00001 diff --git a/packages/v3-watcher/tsconfig.json b/packages/v3-watcher/tsconfig.json new file mode 100644 index 0000000..f4b8852 --- /dev/null +++ b/packages/v3-watcher/tsconfig.json @@ -0,0 +1,74 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Basic Options */ + // "incremental": true, /* Enable incremental compilation */ + "target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */ + "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */ + "lib": ["es2019"], /* Specify library files to be included in the compilation. */ + // "allowJs": true, /* Allow javascript files to be compiled. */ + // "checkJs": true, /* Report errors in .js files. */ + // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */ + // "declaration": true, /* Generates corresponding '.d.ts' file. */ + // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */ + "sourceMap": true, /* Generates corresponding '.map' file. */ + // "outFile": "./", /* Concatenate and emit output to single file. */ + "outDir": "dist", /* Redirect output structure to the directory. */ + // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ + // "composite": true, /* Enable project compilation */ + // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */ + // "removeComments": true, /* Do not emit comments to output. */ + // "noEmit": true, /* Do not emit outputs. */ + // "importHelpers": true, /* Import emit helpers from 'tslib'. */ + "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ + // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ + + /* Strict Type-Checking Options */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* Enable strict null checks. */ + // "strictFunctionTypes": true, /* Enable strict checking of function types. */ + // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */ + // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */ + // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */ + // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */ + + /* Additional Checks */ + // "noUnusedLocals": true, /* Report errors on unused locals. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */ + + /* Module Resolution Options */ + // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */ + // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */ + // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ + // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ + // "typeRoots": [], /* List of folders to include type definitions from. */ + // "types": [], /* Type declaration files to be included in compilation. */ + // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */ + "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */ + // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + + /* Source Map Options */ + // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ + // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ + + /* Experimental Options */ + "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */ + // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */ + + /* Advanced Options */ + "skipLibCheck": true, /* Skip type checking of declaration files. */ + "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ + "resolveJsonModule": true /* Enabling the option allows importing JSON, and validating the types in that JSON file. */ + }, + "include": ["src/**/*"] +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..0e00ac0 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,11292 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@achingbrain/ip-address@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@achingbrain/ip-address/-/ip-address-8.1.0.tgz#24f2e9cd7289e33f433d771b23bea56cfd0242c9" + integrity sha512-Zus4vMKVRDm+R1o0QJNhD0PD/8qRGO3Zx8YPsFG5lANt5utVtGg3iHVGBSAF80TfQmhi8rP+Kg/OigdxY0BXHw== + dependencies: + jsbn "1.1.0" + sprintf-js "1.1.2" + +"@achingbrain/nat-port-mapper@^1.0.3": + version "1.0.13" + resolved "https://registry.yarnpkg.com/@achingbrain/nat-port-mapper/-/nat-port-mapper-1.0.13.tgz#22519833c2d70d48addd551b5cccbf84010ccda5" + integrity sha512-B5GL6ILDek72OjoEyFGEuuNYaEOYxO06Ulhcaf/5iQ4EO8uaZWS+OkolYST7L+ecJrkjfaSNmSAsWRRuh+1Z5A== + dependencies: + "@achingbrain/ssdp" "^4.0.1" + "@libp2p/logger" "^4.0.1" + default-gateway "^7.2.2" + err-code "^3.0.1" + it-first "^3.0.1" + p-defer "^4.0.0" + p-timeout "^6.1.1" + xml2js "^0.6.0" + +"@achingbrain/ssdp@^4.0.1": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@achingbrain/ssdp/-/ssdp-4.0.6.tgz#eca66ac260dcfcfcb237d7a58e63c3c8e87591b4" + integrity sha512-Y4JE2L9150i50V6lg/Y8+ilhxRpUZKKv+PKo68Aj7MjPfaUAar6ZHilF9h4/Zb3q0fqGMXNc9o11cQLNI8J8bA== + dependencies: + event-iterator "^2.0.0" + freeport-promise "^2.0.0" + merge-options "^3.0.4" + xml2js "^0.6.2" + +"@apollo/client@^3.3.19", "@apollo/client@^3.7.1": + version "3.10.4" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.10.4.tgz#1abc488c79cf37dc63edf041aee6f9dc5aabc692" + integrity sha512-51gk0xOwN6Ls1EbTG5svFva1kdm2APHYTzmFhaAdvUQoJFDxfc0UwQgDxGptzH84vkPlo1qunY1FuboyF9LI3Q== + dependencies: + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/caches" "^1.0.0" + "@wry/equality" "^0.5.6" + "@wry/trie" "^0.5.0" + graphql-tag "^2.12.6" + hoist-non-react-statics "^3.3.2" + optimism "^0.18.0" + prop-types "^15.7.2" + rehackt "^0.1.0" + response-iterator "^0.2.6" + symbol-observable "^4.0.0" + ts-invariant "^0.10.3" + tslib "^2.3.0" + zen-observable-ts "^1.2.5" + +"@apollo/protobufjs@1.2.6": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.6.tgz#d601e65211e06ae1432bf5993a1a0105f2862f27" + integrity sha512-Wqo1oSHNUj/jxmsVp4iR3I480p6qdqHikn38lKrFhfzcDJ7lwd7Ck7cHRl4JE81tWNArl77xhnG/OkZhxKBYOw== + 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.0" + "@types/node" "^10.1.0" + long "^4.0.0" + +"@apollo/protobufjs@1.2.7": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.2.7.tgz#3a8675512817e4a046a897e5f4f16415f16a7d8a" + integrity sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg== + 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.0" + long "^4.0.0" + +"@apollo/usage-reporting-protobuf@^4.0.0": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.1.1.tgz#407c3d18c7fbed7a264f3b9a3812620b93499de1" + integrity sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA== + dependencies: + "@apollo/protobufjs" "1.2.7" + +"@apollo/utils.dropunuseddefinitions@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz#02b04006442eaf037f4c4624146b12775d70d929" + integrity sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg== + +"@apollo/utils.keyvaluecache@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@apollo/utils.keyvaluecache/-/utils.keyvaluecache-1.0.2.tgz#2bfe358c4d82f3a0950518451996758c52613f57" + integrity sha512-p7PVdLPMnPzmXSQVEsy27cYEjVON+SH/Wb7COyW3rQN8+wJgT1nv9jZouYtztWW8ZgTkii5T6tC9qfoDREd4mg== + dependencies: + "@apollo/utils.logger" "^1.0.0" + lru-cache "7.10.1 - 7.13.1" + +"@apollo/utils.logger@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.logger/-/utils.logger-1.0.1.tgz#aea0d1bb7ceb237f506c6bbf38f10a555b99a695" + integrity sha512-XdlzoY7fYNK4OIcvMD2G94RoFZbzTQaNP0jozmqqMudmaGo2I/2Jx71xlDJ801mWA/mbYRihyaw6KJii7k5RVA== + +"@apollo/utils.printwithreducedwhitespace@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz#c466299a4766eef8577a2a64c8f27712e8bd7e30" + integrity sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q== + +"@apollo/utils.removealiases@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz#75f6d83098af1fcae2d3beb4f515ad4a8452a8c1" + integrity sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A== + +"@apollo/utils.sortast@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz#93218c7008daf3e2a0725196085a33f5aab5ad07" + integrity sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA== + dependencies: + lodash.sortby "^4.7.0" + +"@apollo/utils.stripsensitiveliterals@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz#4920651f36beee8e260e12031a0c5863ad0c7b28" + integrity sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w== + +"@apollo/utils.usagereporting@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.1.tgz#3c70b49e554771659576fe35381c7a4b321d27fd" + integrity sha512-6dk+0hZlnDbahDBB2mP/PZ5ybrtCJdLMbeNJD+TJpKyZmSY6bA3SjI8Cr2EM9QA+AdziywuWg+SgbWUF3/zQqQ== + dependencies: + "@apollo/usage-reporting-protobuf" "^4.0.0" + "@apollo/utils.dropunuseddefinitions" "^1.1.0" + "@apollo/utils.printwithreducedwhitespace" "^1.1.0" + "@apollo/utils.removealiases" "1.0.0" + "@apollo/utils.sortast" "^1.1.0" + "@apollo/utils.stripsensitiveliterals" "^1.2.0" + +"@apollographql/apollo-tools@^0.5.3": + version "0.5.4" + resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.5.4.tgz#cb3998c6cf12e494b90c733f44dd9935e2d8196c" + integrity sha512-shM3q7rUbNyXVVRkQJQseXv6bnYM3BUma/eZhwXR4xsuM+bqWnJKvW7SAfRjP7LuSCocrexa5AXhjjawNHrIlw== + +"@apollographql/graphql-playground-html@1.6.29": + version "1.6.29" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#a7a646614a255f62e10dcf64a7f68ead41dec453" + integrity sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA== + dependencies: + xss "^1.0.8" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== + dependencies: + "@babel/highlight" "^7.24.7" + picocolors "^1.0.0" + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@cerc-io/assemblyscript@0.19.10-watcher-ts-0.1.2": + version "0.19.10-watcher-ts-0.1.2" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fassemblyscript/-/0.19.10-watcher-ts-0.1.2/assemblyscript-0.19.10-watcher-ts-0.1.2.tgz#c6a20eeddca44ddb08994831845c0b172433566b" + integrity sha512-iovY7xoH5ZMGQZgsK/Wy8175AN2z6I0WUnzEWaxykkAFQUvnErgiw/Y4crkcOb/fDp8gslRfTeEFtR90m1AyPA== + dependencies: + asyncify-wasm "^1.2.1" + binaryen "101.0.0-nightly.20210723" + long "^4.0.0" + +"@cerc-io/cache@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcache/-/0.2.94/cache-0.2.94.tgz#e1557bfc3c85ebe3b83f24c79b55c7324797e7ed" + integrity sha512-9NBMd+19aBs3lgiie0X6TJizcn7yBCfEXXlbvMvac9SgYDPcloU+ghauQephAxayRjaWkrgjjfEWR/I0x6FwqA== + dependencies: + canonical-json "^0.0.4" + debug "^4.3.1" + ethers "^5.4.4" + fs-extra "^10.0.0" + level "^7.0.0" + +"@cerc-io/cli@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fcli/-/0.2.94/cli-0.2.94.tgz#f193165a4b85174c48150051ea4b0e3df57fdf9e" + integrity sha512-aJGzH630bhYca74efVEU37sCjxRLmERDObzNpKIjbmYjKPg6urMbYI8gs33R2HIS/FUOMS39F5B9NMwgCQd/Vw== + dependencies: + "@apollo/client" "^3.7.1" + "@cerc-io/cache" "^0.2.94" + "@cerc-io/ipld-eth-client" "^0.2.94" + "@cerc-io/libp2p" "^0.42.2-laconic-0.1.4" + "@cerc-io/nitro-node" "^0.1.15" + "@cerc-io/peer" "^0.2.94" + "@cerc-io/rpc-eth-client" "^0.2.94" + "@cerc-io/util" "^0.2.94" + "@ethersproject/providers" "^5.4.4" + "@graphql-tools/utils" "^9.1.1" + "@ipld/dag-cbor" "^8.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + apollo-server-express "^3.11.1" + debug "^4.3.1" + ethers "^5.4.4" + express "^4.18.2" + graphql "^15.5.0" + graphql-request "^6.1.0" + graphql-subscriptions "^2.0.0" + http-proxy-middleware "^2.0.6" + js-yaml "^4.0.0" + json-diff "^0.5.4" + lodash "^4.17.21" + pluralize "^8.0.0" + reflect-metadata "^0.1.13" + typeorm "0.2.37" + yargs "^17.0.1" + +"@cerc-io/graph-node@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fgraph-node/-/0.2.94/graph-node-0.2.94.tgz#e8d346daa9e7733098d039d27e7d575e0f978b20" + integrity sha512-bGqv/5dq2saBcekA/YqDcepvRaZVIMPXt/lDEcP+8lXmavImXO1sdnut7JyMDQCy3DNKXT6IGADPM/olUwnDPQ== + dependencies: + "@apollo/client" "^3.3.19" + "@cerc-io/assemblyscript" "0.19.10-watcher-ts-0.1.2" + "@cerc-io/cache" "^0.2.94" + "@cerc-io/ipld-eth-client" "^0.2.94" + "@cerc-io/util" "^0.2.94" + "@types/json-diff" "^0.5.2" + "@types/yargs" "^17.0.0" + bn.js "^4.11.9" + debug "^4.3.1" + fs-extra "^10.0.0" + graphql "^15.5.0" + json-diff "^0.5.4" + lodash "^4.17.21" + omit-deep "^0.3.0" + pluralize "^8.0.0" + reflect-metadata "^0.1.13" + toml "^3.0.0" + typeorm "0.2.37" + typeorm-naming-strategies "^2.0.0" + yargs "^17.0.1" + +"@cerc-io/ipld-eth-client@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fipld-eth-client/-/0.2.94/ipld-eth-client-0.2.94.tgz#22f79eaf82da60a25d8f89f23cf45581c012d6ff" + integrity sha512-IOOZrryZ3M7ndhk8N9NeRaXvzC8eU2OS0z7fVL0xZ/h3Ei4D+dz8fVJbCvgGRB6mJadrMXYyhahOtEAJYxjNHg== + dependencies: + "@apollo/client" "^3.7.1" + "@cerc-io/cache" "^0.2.94" + "@cerc-io/util" "^0.2.94" + cross-fetch "^3.1.4" + debug "^4.3.1" + ethers "^5.4.4" + graphql "^15.5.0" + graphql-ws "^5.11.2" + left-pad "^1.3.0" + ws "^8.11.0" + zen-observable-ts "^1.1.0" + +"@cerc-io/libp2p@0.42.2-laconic-0.1.4", "@cerc-io/libp2p@^0.42.2-laconic-0.1.4": + version "0.42.2-laconic-0.1.4" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Flibp2p/-/0.42.2-laconic-0.1.4/libp2p-0.42.2-laconic-0.1.4.tgz#ac9347e70d6d3cee040ad02074cae3070b91a8fb" + integrity sha512-gTC62YvkK3P7cWlaH8gQ6lDbqusNiaYI1q7y/+vQ/1s35uStwRn7fvXHC0aY9s36L4S3p1S0sxDzGXM8rtg6+w== + dependencies: + "@achingbrain/nat-port-mapper" "^1.0.3" + "@libp2p/crypto" "^1.0.4" + "@libp2p/interface-address-manager" "^2.0.0" + "@libp2p/interface-connection" "^3.0.2" + "@libp2p/interface-connection-encrypter" "^3.0.1" + "@libp2p/interface-connection-manager" "^1.1.1" + "@libp2p/interface-content-routing" "^2.0.0" + "@libp2p/interface-dht" "^2.0.0" + "@libp2p/interface-keychain" "^2.0.4" + "@libp2p/interface-libp2p" "^1.0.0" + "@libp2p/interface-metrics" "^4.0.0" + "@libp2p/interface-peer-discovery" "^1.0.1" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.3" + "@libp2p/interface-peer-routing" "^1.0.1" + "@libp2p/interface-peer-store" "^1.2.2" + "@libp2p/interface-pubsub" "^3.0.0" + "@libp2p/interface-registrar" "^2.0.3" + "@libp2p/interface-stream-muxer" "^3.0.0" + "@libp2p/interface-transport" "^2.1.0" + "@libp2p/interfaces" "^3.0.3" + "@libp2p/keychain" "^1.0.0" + "@libp2p/logger" "^2.0.1" + "@libp2p/multistream-select" "^3.0.0" + "@libp2p/peer-collections" "^3.0.0" + "@libp2p/peer-id" "^2.0.0" + "@libp2p/peer-id-factory" "^2.0.0" + "@libp2p/peer-record" "^5.0.0" + "@libp2p/peer-store" "^6.0.0" + "@libp2p/tracked-map" "^3.0.0" + "@libp2p/utils" "^3.0.2" + "@libp2p/webrtc-peer" "^2.0.2" + "@multiformats/mafmt" "^11.0.2" + "@multiformats/multiaddr" "^11.0.0" + abortable-iterator "^4.0.2" + any-signal "^3.0.0" + datastore-core "^8.0.1" + err-code "^3.0.1" + interface-datastore "^7.0.0" + it-all "^2.0.0" + it-drain "^2.0.0" + it-filter "^2.0.0" + it-first "^2.0.0" + it-handshake "^4.1.2" + it-length-prefixed "^8.0.2" + it-map "^2.0.0" + it-merge "^2.0.0" + it-pair "^2.0.2" + it-pipe "^2.0.3" + it-pushable "^3.1.2" + it-sort "^2.0.1" + it-stream-types "^1.0.4" + merge-options "^3.0.4" + multiformats "^11.0.0" + p-fifo "^1.0.0" + p-settle "^5.0.0" + private-ip "^3.0.0" + protons-runtime "^4.0.1" + rate-limiter-flexible "^2.3.11" + retimer "^3.0.0" + set-delayed-interval "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arraylist "^2.3.2" + uint8arrays "^4.0.2" + wherearewe "^2.0.0" + xsalsa20 "^1.1.0" + +"@cerc-io/nitro-node@^0.1.15": + version "0.1.16" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fnitro-node/-/0.1.16/nitro-node-0.1.16.tgz#7b90a120f85968d0d6642bd6de376256b1a257cc" + integrity sha512-rSjk5bSlhxFtY+gqLrDmjJrCCaB5sl3e/OpBL03hzQ/CjZ00Ggnubf56C1mjUsqI5fRpnyroLrSmdJLXF1ABew== + dependencies: + "@cerc-io/libp2p" "0.42.2-laconic-0.1.4" + "@cerc-io/nitro-util" "^0.1.16" + "@cerc-io/peer" "^0.2.65" + "@cerc-io/ts-channel" "1.0.3-ts-nitro-0.1.1" + "@jpwilliams/waitgroup" "^2.1.0" + "@libp2p/crypto" "^1.0.4" + "@libp2p/tcp" "^6.0.0" + "@multiformats/multiaddr" "^11.1.4" + "@statechannels/nitro-protocol" "^2.0.1-alpha.6" + assert "^2.0.0" + async-mutex "^0.4.0" + debug "^4.3.4" + ethers "^5.7.2" + heap "^0.2.7" + it-pipe "^2.0.5" + level "^8.0.0" + lodash "^4.17.21" + path-browserify "^1.0.1" + promjs "^0.4.2" + uint8arrays "^4.0.3" + +"@cerc-io/nitro-util@^0.1.16": + version "0.1.16" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fnitro-util/-/0.1.16/nitro-util-0.1.16.tgz#def62c68d90d4dd521ff6faef8d42b0bf6f049a0" + integrity sha512-1JnpnTooQNZfexD7PlpWnYovHjgR/N3cqbb2lLXTNpzfAuqfgibQ8R0zWpsJEmRp7qoX7OspsUfwklB72tZz5w== + dependencies: + "@cerc-io/ts-channel" "1.0.3-ts-nitro-0.1.1" + "@statechannels/nitro-protocol" "^2.0.1-alpha.6" + assert "^2.0.0" + debug "^4.3.4" + ethers "^5.7.2" + it-pipe "^3.0.1" + json-bigint "^1.0.0" + lodash "^4.17.21" + uint8arrays "^4.0.3" + +"@cerc-io/peer@^0.2.65": + version "0.2.93" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.93/peer-0.2.93.tgz#4290d8e279f4e36d6e6673f493395a78230b5567" + integrity sha512-LA2x973cp4QtuBhILgX/2HYH5hQFB4su7w/gTQEzgKsnm8Zwv+dKriciJP0vxycMlZFRIDsSheYJkRPBz2vVEQ== + dependencies: + "@cerc-io/libp2p" "^0.42.2-laconic-0.1.4" + "@cerc-io/prometheus-metrics" "1.1.4" + "@chainsafe/libp2p-gossipsub" "^6.0.0" + "@chainsafe/libp2p-noise" "^11.0.0" + "@chainsafe/libp2p-yamux" "3.0.7" + "@libp2p/floodsub" "^6.0.0" + "@libp2p/mplex" "^7.1.1" + "@libp2p/peer-id-factory" "^2.0.0" + "@libp2p/pubsub-peer-discovery" "^8.0.0" + "@libp2p/websockets" "^5.0.5" + "@multiformats/multiaddr" "^11.1.4" + assert "^2.0.0" + buffer "^6.0.3" + chai "^4.3.4" + debug "^4.3.1" + it-length-prefixed "^8.0.4" + it-map "^2.0.0" + it-pipe "^2.0.5" + it-pushable "^3.1.2" + mocha "^8.4.0" + p-event "^5.0.1" + uint8arrays "^4.0.3" + unique-names-generator "^4.7.1" + yargs "^17.0.1" + +"@cerc-io/peer@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fpeer/-/0.2.94/peer-0.2.94.tgz#c8776a9968b32d96fb91ed2a2c6d4b62b365e4a0" + integrity sha512-QQANziPnT08guAD/Nwy/HoqgIIX+w1+GS2bOUE4hfS+LJmTiZ+Zquiqcj69qGQeMQxfiUHmsBPttioF+B9rp/A== + dependencies: + "@cerc-io/libp2p" "^0.42.2-laconic-0.1.4" + "@cerc-io/prometheus-metrics" "1.1.4" + "@chainsafe/libp2p-gossipsub" "^6.0.0" + "@chainsafe/libp2p-noise" "^11.0.0" + "@chainsafe/libp2p-yamux" "3.0.7" + "@libp2p/floodsub" "^6.0.0" + "@libp2p/mplex" "^7.1.1" + "@libp2p/peer-id-factory" "^2.0.0" + "@libp2p/pubsub-peer-discovery" "^8.0.0" + "@libp2p/websockets" "^5.0.5" + "@multiformats/multiaddr" "^11.1.4" + assert "^2.0.0" + buffer "^6.0.3" + chai "^4.3.4" + debug "^4.3.1" + it-length-prefixed "^8.0.4" + it-map "^2.0.0" + it-pipe "^2.0.5" + it-pushable "^3.1.2" + mocha "^8.4.0" + p-event "^5.0.1" + uint8arrays "^4.0.3" + unique-names-generator "^4.7.1" + yargs "^17.0.1" + +"@cerc-io/prometheus-metrics@1.1.4": + version "1.1.4" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fprometheus-metrics/-/1.1.4/prometheus-metrics-1.1.4.tgz#51006b0b5bf6168394390c78072a1c0bb2b02f28" + integrity sha512-Mqg7o1Wer8zKv3/0NWB1sCMmW8hyYI0Fw58d/MR62+5EDZ2yPhwMUrLZUhyqdo3qXJzxMylAPSVx8URDcthmKA== + dependencies: + "@libp2p/interface-connection" "^3.0.2" + "@libp2p/interface-metrics" "^4.0.2" + "@libp2p/logger" "^2.0.2" + it-foreach "^1.0.0" + it-stream-types "^1.0.4" + promjs "^0.4.2" + +"@cerc-io/rpc-eth-client@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Frpc-eth-client/-/0.2.94/rpc-eth-client-0.2.94.tgz#0c4f679abacf0aed831cbd295d21780f2a3dd17a" + integrity sha512-S3UvHO7Qb4Z43+fArMbrs78CP8l81D5Ootd225MQ2//TGmu9QsIK9+oqdI1CIVAQCbxI7QAStzdz76Y0px2iFA== + dependencies: + "@cerc-io/cache" "^0.2.94" + "@cerc-io/ipld-eth-client" "^0.2.94" + "@cerc-io/util" "^0.2.94" + chai "^4.3.4" + ethers "^5.4.4" + left-pad "^1.3.0" + mocha "^8.4.0" + +"@cerc-io/solidity-mapper@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fsolidity-mapper/-/0.2.94/solidity-mapper-0.2.94.tgz#a414653bf20fcbedd91d4a544c6a019c8a02d958" + integrity sha512-kO2xqyAeq2+bbxBcItsT6i8qK1F0BhaYPzV1tTNXgGbkp3j1do86mc6IeTEeV6J/8e9EaeRBsOSQOdGOHUjcDA== + dependencies: + dotenv "^10.0.0" + +"@cerc-io/ts-channel@1.0.3-ts-nitro-0.1.1": + version "1.0.3-ts-nitro-0.1.1" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fts-channel/-/1.0.3-ts-nitro-0.1.1/ts-channel-1.0.3-ts-nitro-0.1.1.tgz#0768781313a167295c0bf21307f47e02dc17e936" + integrity sha512-2jFICUSyffuZ+8+qRhXuLSJq4GJ6Y02wxiXoubH0Kzv2lIKkJtWICY1ZQQhtXAvP0ncAQB85WJHqtqwH8l7J3Q== + +"@cerc-io/util@^0.2.94": + version "0.2.94" + resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Futil/-/0.2.94/util-0.2.94.tgz#5d4c8046cf44641eac39a6f6ee11f2eb8b298c1f" + integrity sha512-4B1RkUKZoRMVVxWK5u+5d3GEmn0IN1FoAbkfCsBXMTH+OGI+VVGg6bRozaluy7pegpwDh1KtiH0A7NFjUup4OQ== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@cerc-io/nitro-node" "^0.1.15" + "@cerc-io/peer" "^0.2.94" + "@cerc-io/solidity-mapper" "^0.2.94" + "@cerc-io/ts-channel" "1.0.3-ts-nitro-0.1.1" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/providers" "^5.4.4" + "@ethersproject/web" "^5.7.1" + "@graphql-tools/schema" "^9.0.10" + "@graphql-tools/utils" "^9.1.1" + "@ipld/dag-cbor" "^6.0.12" + "@libp2p/interface-connection" "^3.0.2" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/peer-id" "^2.0.0" + apollo-server-core "^3.11.1" + apollo-server-express "^3.11.1" + apollo-server-plugin-response-cache "^3.8.1" + apollo-type-bigint "^0.1.3" + bunyan "^1.8.15" + debug "^4.3.1" + decimal.js "^10.3.1" + ethers "^5.4.4" + express "^4.18.2" + express-queue "^0.0.13" + fs-extra "^10.0.0" + graphql "^15.5.0" + graphql-subscriptions "^2.0.0" + graphql-ws "^5.11.2" + ipfs-http-client "^56.0.3" + it-length-prefixed "^8.0.4" + it-pipe "^2.0.5" + it-pushable "^3.1.2" + js-yaml "^4.1.0" + json-bigint "^1.0.0" + lodash "^4.17.21" + lru-cache "^10.0.0" + mokka "^1.4.2" + multiformats "^9.4.8" + pg "^8.5.1" + pg-boss "^6.1.0" + prom-client "^14.0.1" + read-pkg "^9.0.1" + toml "^3.0.0" + typeorm "0.2.37" + typeorm-naming-strategies "^2.0.0" + winston "^3.13.0" + ws "^8.11.0" + yargs "^17.0.1" + +"@chainsafe/is-ip@^2.0.1": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@chainsafe/is-ip/-/is-ip-2.0.2.tgz#7311e7403f11d8c5cfa48111f56fcecaac37c9f6" + integrity sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA== + +"@chainsafe/libp2p-gossipsub@^6.0.0": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-6.3.0.tgz#0ef8b8548a4c8307233b01dfb23bfa605df6b0e2" + integrity sha512-yRgMB5JpyPROjmhOeOmzJUAKci19qBEnpH80201f8JkkviUJo7+X8i3MUkammlbFg0VhaTKBT98Osbko9+rT1w== + dependencies: + "@libp2p/crypto" "^1.0.3" + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-connection-manager" "^1.3.0" + "@libp2p/interface-keys" "^1.0.3" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-store" "^1.2.2" + "@libp2p/interface-pubsub" "^3.0.0" + "@libp2p/interface-registrar" "^2.0.3" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + "@libp2p/peer-id" "^2.0.0" + "@libp2p/peer-record" "^5.0.0" + "@libp2p/pubsub" "^6.0.0" + "@libp2p/topology" "^4.0.0" + "@multiformats/multiaddr" "^12.0.0" + abortable-iterator "^4.0.2" + denque "^1.5.0" + it-length-prefixed "^8.0.2" + it-pipe "^2.0.4" + it-pushable "^3.1.0" + multiformats "^11.0.0" + protobufjs "^6.11.2" + uint8arraylist "^2.3.2" + uint8arrays "^4.0.2" + +"@chainsafe/libp2p-noise@^11.0.0": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@chainsafe/libp2p-noise/-/libp2p-noise-11.0.4.tgz#b4806e7605e44fa279130c60a95faad13ed01d93" + integrity sha512-X7kA6a3/QPFxNFwgUJ8vubDu5qBDcDT0nhD+jL7g60IFKZu//HFH7oqsNCZa12yx0oR1fEYOR62iHDt2GHyWBQ== + dependencies: + "@libp2p/crypto" "^1.0.11" + "@libp2p/interface-connection-encrypter" "^3.0.5" + "@libp2p/interface-keys" "^1.0.6" + "@libp2p/interface-metrics" "^4.0.4" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.0" + "@stablelib/chacha20poly1305" "^1.0.1" + "@stablelib/hkdf" "^1.0.1" + "@stablelib/sha256" "^1.0.1" + "@stablelib/x25519" "^1.0.3" + it-length-prefixed "^8.0.2" + it-pair "^2.0.2" + it-pb-stream "^3.2.0" + it-pipe "^2.0.3" + it-stream-types "^1.0.4" + protons-runtime "^5.0.0" + uint8arraylist "^2.3.2" + uint8arrays "^4.0.2" + +"@chainsafe/libp2p-yamux@3.0.7": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@chainsafe/libp2p-yamux/-/libp2p-yamux-3.0.7.tgz#345d620097c6ac07fcbeb5910da18b3ed974337c" + integrity sha512-fp59/7Xzws+4Nz4TUS+5Z/lkwk+9IW6GsU6wPJVaGInxf5tl4qQ5S8TLql23CEGbuvbToqMEdNLVAtE+M2Lvng== + dependencies: + "@libp2p/interface-connection" "^3.0.1" + "@libp2p/interface-stream-muxer" "^3.0.0" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.1" + abortable-iterator "^4.0.2" + any-signal "^3.0.1" + it-pipe "^2.0.4" + it-pushable "^3.1.0" + uint8arraylist "^2.3.2" + +"@chainsafe/netmask@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@chainsafe/netmask/-/netmask-2.0.0.tgz#0d4a75f47919f65011da4327a3845c9661f1038a" + integrity sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + +"@colors/colors@1.6.0", "@colors/colors@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" + integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== + +"@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" + +"@dabh/diagnostics@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" + integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== + dependencies: + colorspace "1.1.x" + enabled "2.0.x" + kuler "^2.0.0" + +"@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", "@eslint-community/regexpp@^4.6.1": + version "4.10.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" + integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.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.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.3.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", "@ethersproject/providers@^5.4.4": + 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", "@ethersproject/web@^5.7.1": + 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" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@graphql-tools/merge@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-8.3.1.tgz#06121942ad28982a14635dbc87b5d488a041d722" + integrity sha512-BMm99mqdNZbEYeTPK3it9r9S6rsZsQKtlqJsSBknAclXq2pGEfOxjcIZi+kBSkHZKPKCRrYDd5vY0+rUmIHVLg== + dependencies: + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + +"@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/mock@^8.1.2": + version "8.7.20" + resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-8.7.20.tgz#c83ae0f1940d194a3982120c9c85f3ac6b4f7f20" + integrity sha512-ljcHSJWjC/ZyzpXd5cfNhPI7YljRVvabKHPzKjEs5ElxWu2cdlLGvyNYepApXDsM/OJG/2xuhGM+9GWu5gEAPQ== + dependencies: + "@graphql-tools/schema" "^9.0.18" + "@graphql-tools/utils" "^9.2.1" + fast-json-stable-stringify "^2.1.0" + tslib "^2.4.0" + +"@graphql-tools/schema@^8.0.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-8.5.1.tgz#c2f2ff1448380919a330312399c9471db2580b58" + integrity sha512-0Esilsh0P/qYcB5DKQpiKeQs/jevzIadNTaT0jeWklPMwNbT7yMX4EqZany7mbeRRlSRwMzNzL5olyFdffHBZg== + dependencies: + "@graphql-tools/merge" "8.3.1" + "@graphql-tools/utils" "8.9.0" + tslib "^2.4.0" + value-or-promise "1.0.11" + +"@graphql-tools/schema@^9.0.10", "@graphql-tools/schema@^9.0.18": + 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/utils@8.9.0": + version "8.9.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-8.9.0.tgz#c6aa5f651c9c99e1aca55510af21b56ec296cdb7" + integrity sha512-pjJIWH0XOVnYGXCqej8g/u/tsfV4LvLlj0eATKQu5zwnxd/TiTHq7Cg313qUPTFFHZ3PP5wJ15chYVtLDwaymg== + dependencies: + tslib "^2.4.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-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.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.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@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@hutson/parse-repository-url@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" + integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== + +"@ipld/dag-cbor@^6.0.12", "@ipld/dag-cbor@^6.0.3": + version "6.0.15" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" + integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^7.0.0": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" + integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== + dependencies: + cborg "^1.6.0" + multiformats "^9.5.4" + +"@ipld/dag-cbor@^8.0.0": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-8.0.1.tgz#3042c219dd85a71d66ca6946fb6c7b6f0d519369" + integrity sha512-mHRuzgGXNk0Y5W7nNQdN37qJiig1Kdgf92icBVFRUNtBc9Ezl5DIdWfiGWBucHBrhqPBncxoH3As9cHPIRozxA== + dependencies: + cborg "^1.6.0" + multiformats "^11.0.0" + +"@ipld/dag-json@^8.0.1": + version "8.0.11" + resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" + integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== + dependencies: + cborg "^1.5.4" + multiformats "^9.5.4" + +"@ipld/dag-pb@^2.1.3": + version "2.1.18" + resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" + integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== + dependencies: + multiformats "^9.5.4" + +"@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" + +"@isaacs/string-locale-compare@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@isaacs/string-locale-compare/-/string-locale-compare-1.1.0.tgz#291c227e93fd407a96ecd59879a35809120e432b" + integrity sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ== + +"@jest/schemas@^29.4.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" + +"@josephg/resolvable@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@josephg/resolvable/-/resolvable-1.0.1.tgz#69bc4db754d79e1a2f17a650d3466e038d94a5eb" + integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== + +"@jpwilliams/waitgroup@^2.1.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@jpwilliams/waitgroup/-/waitgroup-2.1.1.tgz#06e639add32d11d5909ca904233a8f77248f76c2" + integrity sha512-0CxRhNfkvFCTLZBKGvKxY2FYtYW1yWhO2McLqBL0X5UWvYjIf9suH8anKW/DNutl369A75Ewyoh2iJMwBZ2tRg== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + 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" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@lerna/child-process@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.6.2.tgz#5d803c8dee81a4e013dc428292e77b365cba876c" + integrity sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag== + dependencies: + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" + +"@lerna/create@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-6.6.2.tgz#39a36d80cddb355340c297ed785aa76f4498177f" + integrity sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ== + dependencies: + "@lerna/child-process" "6.6.2" + dedent "^0.7.0" + fs-extra "^9.1.0" + init-package-json "^3.0.2" + npm-package-arg "8.1.1" + p-reduce "^2.1.0" + pacote "15.1.1" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + yargs-parser "20.2.4" + +"@lerna/legacy-package-management@6.6.2": + version "6.6.2" + resolved "https://registry.yarnpkg.com/@lerna/legacy-package-management/-/legacy-package-management-6.6.2.tgz#411c395e72e563ab98f255df77e4068627a85bb0" + integrity sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg== + dependencies: + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + execa "5.0.0" + file-url "3.0.0" + find-up "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + inquirer "8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "14.0.3" + npmlog "6.0.2" + p-map "4.0.0" + p-map-series "2.1.0" + p-queue "6.6.2" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + pretty-format "29.4.3" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + semver "7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + tempy "1.0.0" + upath "2.0.1" + uuid "8.3.2" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + +"@libp2p/crypto@^1.0.0", "@libp2p/crypto@^1.0.11", "@libp2p/crypto@^1.0.3", "@libp2p/crypto@^1.0.4": + version "1.0.17" + resolved "https://registry.yarnpkg.com/@libp2p/crypto/-/crypto-1.0.17.tgz#e64043328c0c866bf7f4cc8560b4f483e9c745dc" + integrity sha512-Oeg0Eb/EvAho0gVkOgemXEgrVxWaT3x/DpFgkBdZ9qGxwq75w/E/oPc7souqBz+l1swfz37GWnwV7bIb4Xv5Ag== + dependencies: + "@libp2p/interface-keys" "^1.0.2" + "@libp2p/interfaces" "^3.2.0" + "@noble/ed25519" "^1.6.0" + "@noble/secp256k1" "^1.5.4" + multiformats "^11.0.0" + node-forge "^1.1.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + uint8arrays "^4.0.2" + +"@libp2p/floodsub@^6.0.0": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@libp2p/floodsub/-/floodsub-6.0.3.tgz#38a5440449ea87bb9be90933a4bca0dbdddfb69c" + integrity sha512-ajbgcX5lgtILRWgXLvjbO6TRB3Dxo/JTGvzSpqmFOfcZ4PGubNkbDkOwz1TXVqFqtD/CI0rYrKiwBxlXmH/6tg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-pubsub" "^3.0.0" + "@libp2p/logger" "^2.0.0" + "@libp2p/pubsub" "^6.0.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.1.1" + uint8arrays "^4.0.3" + +"@libp2p/interface-address-manager@^2.0.0": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@libp2p/interface-address-manager/-/interface-address-manager-2.0.5.tgz#913fceed38b7cfe12a1e546764e3428a1fbaffda" + integrity sha512-e2vLstKkYlAG2PZe6SEBpnnP2Y/ej6URue+zAiyjJPuXoOGNzHyLaqcv7MKye171OEf9dg5wv1gFphWcUJJbSA== + dependencies: + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-connection-encrypter@^3.0.1", "@libp2p/interface-connection-encrypter@^3.0.5": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection-encrypter/-/interface-connection-encrypter-3.0.6.tgz#1f7c7428d5905b390cfc5390e72bd02829213d31" + integrity sha512-LwyYBN/aSa3IPCe7gBxffx/vaC0rFxAXlCbx4QGaWGtg6qK80Ouj89LEDWb3HkMbecNVWaV4TEqJIM5WnAAx1Q== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + it-stream-types "^1.0.4" + uint8arraylist "^2.1.2" + +"@libp2p/interface-connection-manager@^1.1.1", "@libp2p/interface-connection-manager@^1.3.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection-manager/-/interface-connection-manager-1.5.0.tgz#959dedb26c3859677f0c889406d1814978e60386" + integrity sha512-luqYVMH3yip12JlSwVmBdo5/qG4YnXQXp2AV4lvxWK0sUhCnI2r3YL4e9ne8o3LAA5CkH3lPqTQ2HSRpmOruFg== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-connection@^3.0.1", "@libp2p/interface-connection@^3.0.2": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-3.1.1.tgz#f43180e64de118c29f311ee7111f8bbe50e252bf" + integrity sha512-+hxfYLv4jf+MruQEJiJeIyo/wI33/53wRL0XJTkxwQQPAkLHfZWCUY4kY9sXALd3+ASjXAENvJj9VvzZTlkRDQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^1.0.4" + uint8arraylist "^2.1.2" + +"@libp2p/interface-connection@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-4.0.0.tgz#fcc830ca891820fac89a4c6bd4fcc2df4874f49b" + integrity sha512-6xx/NmEc84HX7QmsjSC3hHredQYjHv4Dkf4G27adAPf+qN+vnPxmQ7gaTnk243a0++DOFTbZ2gKX/15G2B6SRg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^1.0.4" + uint8arraylist "^2.1.2" + +"@libp2p/interface-connection@^5.0.0", "@libp2p/interface-connection@^5.0.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-connection/-/interface-connection-5.1.1.tgz#da0572c76da43629d52b8bec6cd092143fae421d" + integrity sha512-ytknMbuuNW72LYMmTP7wFGP5ZTaUSGBCmV9f+uQ55XPcFHtKXLtKWVU/HE8IqPmwtyU8AO7veGoJ/qStMHNRVA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^2.0.1" + uint8arraylist "^2.4.3" + +"@libp2p/interface-content-routing@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-content-routing/-/interface-content-routing-2.1.1.tgz#7c56acad48f59feb9f0c6dd637e73d0e4eebd510" + integrity sha512-nRPOUWgq1K1fDr3FKW93Tip7aH8AFefCw3nJygL4crepxWTSGw95s1GyDpC7t0RJkWTRNHsqZvsFsJ9FkHExKw== + dependencies: + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interfaces" "^3.0.0" + multiformats "^11.0.0" + +"@libp2p/interface-dht@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@libp2p/interface-dht/-/interface-dht-2.0.3.tgz#da2c11998da9141c85eeaf8402c412174a0b4cbd" + integrity sha512-JAKbHvw3egaSeB7CHOf6PF/dLNim4kzAiXX+0IEz2lln8L32/Xf1T7KNOF/RSbSYqO9b7Xxc/b2fuSfyaMwwMQ== + dependencies: + "@libp2p/interface-peer-discovery" "^2.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interfaces" "^3.0.0" + multiformats "^11.0.0" + +"@libp2p/interface-keychain@^2.0.0", "@libp2p/interface-keychain@^2.0.3", "@libp2p/interface-keychain@^2.0.4": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keychain/-/interface-keychain-2.0.5.tgz#6ce104f38cf07ad72c9dfbe471a689f4ea4b4687" + integrity sha512-mb7QNgn9fIvC7CaJCi06GJ+a6DN6RVT9TmEi0NmedZGATeCArPeWWG7r7IfxNVXb9cVOOE1RzV1swK0ZxEJF9Q== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + multiformats "^11.0.0" + +"@libp2p/interface-keys@^1.0.2", "@libp2p/interface-keys@^1.0.3", "@libp2p/interface-keys@^1.0.6": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@libp2p/interface-keys/-/interface-keys-1.0.8.tgz#2c6b55136113ae7cf78133d3c459cdf0455b29ae" + integrity sha512-CJ1SlrwuoHMquhEEWS77E+4vv7hwB7XORkqzGQrPQmA9MRdIEZRS64bA4JqCLUDa4ltH0l+U1vp0oZHLT67NEA== + +"@libp2p/interface-libp2p@^1.0.0": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@libp2p/interface-libp2p/-/interface-libp2p-1.3.3.tgz#d3f8e2900f4605a8d60267fc436b95a882688cf1" + integrity sha512-7kEoIlAGTIiUNJ/4vIFWx+j+iN4aco7O2PqH6ES3dTvX6sgvYxYFi83p1G/RDj8tHKO7jLfG3UmiwJc/Ab0VyA== + dependencies: + "@libp2p/interface-connection" "^5.0.0" + "@libp2p/interface-content-routing" "^2.0.0" + "@libp2p/interface-dht" "^2.0.0" + "@libp2p/interface-keychain" "^2.0.0" + "@libp2p/interface-metrics" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interface-peer-routing" "^1.0.0" + "@libp2p/interface-peer-store" "^1.0.0" + "@libp2p/interface-pubsub" "^4.0.0" + "@libp2p/interface-registrar" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-metrics@^4.0.0", "@libp2p/interface-metrics@^4.0.2", "@libp2p/interface-metrics@^4.0.4": + version "4.0.8" + resolved "https://registry.yarnpkg.com/@libp2p/interface-metrics/-/interface-metrics-4.0.8.tgz#06eb45588737d72f074c70df8d1ef067a2d7cf71" + integrity sha512-1b9HjYyJH0m35kvPHipuoz2EtYCxyq34NUhuV8VK1VNtrouMpA3uCKp5FI7yHCA6V6+ux1R3UriKgNFOSGbIXQ== + dependencies: + "@libp2p/interface-connection" "^5.0.0" + +"@libp2p/interface-peer-discovery@^1.0.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-discovery/-/interface-peer-discovery-1.1.1.tgz#5de48cbf30d1899de7138afbf4bb7491f91759e8" + integrity sha512-tjbt5DquTyP/JDskasPbIB3lk+zPVL8J9UPfrELZqlslJo9ufsMKyEXcTMMABclTvUsh6uSDgC0JUpUHTeCn8A== + dependencies: + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interfaces" "^3.0.0" + +"@libp2p/interface-peer-discovery@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-discovery/-/interface-peer-discovery-2.0.0.tgz#90f176cfd202f5a362912386199e64f8b1e0fc53" + integrity sha512-Mien5t3Tc+ntP5p50acKUYJN90ouMnq1lOTQDKQNvGcXoajG8A1AEYLocnzVia/MXiexuj6S/Q28WBBacoOlBg== + dependencies: + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interfaces" "^3.0.0" + +"@libp2p/interface-peer-id@^2.0.0", "@libp2p/interface-peer-id@^2.0.1", "@libp2p/interface-peer-id@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-id/-/interface-peer-id-2.0.2.tgz#6302e70b6fc17c451bc3daa11447d059357bcc32" + integrity sha512-9pZp9zhTDoVwzRmp0Wtxw0Yfa//Yc0GqBCJi3EznBDE6HGIAVvppR91wSh2knt/0eYg0AQj7Y35VSesUTzMCUg== + dependencies: + multiformats "^11.0.0" + +"@libp2p/interface-peer-info@^1.0.0", "@libp2p/interface-peer-info@^1.0.2", "@libp2p/interface-peer-info@^1.0.3": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-info/-/interface-peer-info-1.0.10.tgz#566026de95a0817b9e853c982b313541b7960c0b" + integrity sha512-HQlo8NwQjMyamCHJrnILEZz+YwEOXCB2sIIw3slIrhVUYeYlTaia1R6d9umaAeLHa255Zmdm4qGH8rJLRqhCcg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-peer-routing@^1.0.0", "@libp2p/interface-peer-routing@^1.0.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-routing/-/interface-peer-routing-1.1.1.tgz#b4d3f51d996ce0ea19773db45aff4684e247e6fb" + integrity sha512-/XEhwob9qXjdmI8PBcc+qFin32xmtyoC58nRpq8RliqHY5uOVWiHfZoNtdOXIsNvzVvq5FqlHOWt71ofxXTtlg== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interfaces" "^3.0.0" + +"@libp2p/interface-peer-store@^1.0.0", "@libp2p/interface-peer-store@^1.2.2": + version "1.2.9" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-store/-/interface-peer-store-1.2.9.tgz#85173892e52ac230abfd45798bfab03dce20ae84" + integrity sha512-jAAlbP1NXpEJOG6Dbr0QdP71TBYjHBc/65Ulwdn4J4f04PW1bI4JIMQeq6+/sLfaGVryvvUT/a52io8UUtB21Q== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.0" + "@libp2p/interface-record" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-peer-store@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/interface-peer-store/-/interface-peer-store-2.0.4.tgz#5e9961b37094341216301285edf6fd73f3e796aa" + integrity sha512-jNvBK3O1JPJqSiDN2vkb+PV8bTPnYdP54nxsLtut1BWukNm610lwzwleV7CetFI4bJCn6g+BgBvvq8fdADy0tA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@multiformats/multiaddr" "^12.0.0" + +"@libp2p/interface-pubsub@^3.0.0": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-3.0.7.tgz#cc1c7c47c883daddd2b84d83d719b3826943be3b" + integrity sha512-+c74EVUBTfw2sx1GE/z/IjsYO6dhur+ukF0knAppeZsRQ1Kgg6K5R3eECtT28fC6dBWLjFpAvW/7QGfiDAL4RA== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + it-pushable "^3.0.0" + uint8arraylist "^2.1.2" + +"@libp2p/interface-pubsub@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@libp2p/interface-pubsub/-/interface-pubsub-4.0.1.tgz#27f85b43ced13cf3382629a38f309f7fc7b45bec" + integrity sha512-PIc5V/J98Yr1ZTHh8lQshP7GdVUh+pKNIqj6wGaDmXs8oQLB40qKCjcpHQNlAnv2e1Bh9mEH2GXv5sGZOA651A== + dependencies: + "@libp2p/interface-connection" "^5.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.0.0" + it-pushable "^3.1.3" + uint8arraylist "^2.4.3" + +"@libp2p/interface-record@^2.0.0", "@libp2p/interface-record@^2.0.1": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@libp2p/interface-record/-/interface-record-2.0.7.tgz#d083776e465cfa66d10e1d3c8e015677a9fc7635" + integrity sha512-AFPytZWI+p8FJWP0xuK5zbSjalLAOIMzEed2lBKdRWvdGBQUHt9ENLTkfkI9G7p/Pp3hlhVzzBXdIErKd+0GxQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface-registrar@^2.0.0", "@libp2p/interface-registrar@^2.0.3": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@libp2p/interface-registrar/-/interface-registrar-2.0.12.tgz#a74b59df7b6c345d8bb45d310469b2d5f923e9bf" + integrity sha512-EyCi2bycC2rn3oPB4Swr7EqBsvcaWd6RcqR6zsImNIG9BKc4/R1gl6iaF861JaELYgYmzBMS31x1rQpVz5UekQ== + dependencies: + "@libp2p/interface-connection" "^5.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + +"@libp2p/interface-stream-muxer@^3.0.0": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@libp2p/interface-stream-muxer/-/interface-stream-muxer-3.0.6.tgz#f84fae484290b667a1b4ffa51af7d6138765a698" + integrity sha512-wbLrH/bdF8qe0CpPd3BFMSmUs085vc3/8zx5uhXJySD672enAc8Jw9gmAYd1pIqELdqJqBDg9EI0y1XMRxvVkw== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interfaces" "^3.0.0" + it-stream-types "^1.0.4" + +"@libp2p/interface-transport@^2.0.0", "@libp2p/interface-transport@^2.1.0": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@libp2p/interface-transport/-/interface-transport-2.1.3.tgz#3fbc8457013a1552d281a3d94ee7ae0725cc16e0" + integrity sha512-ez+0X+w2Wyw3nJY6mP0DHFgrRnln/miAH4TJLcRfUSJHjGXH5ZfpuK1TnRxXpEUiqOezSbwke06/znI27KpRiQ== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-stream-muxer" "^3.0.0" + "@libp2p/interfaces" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + it-stream-types "^1.0.4" + +"@libp2p/interface@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-0.1.6.tgz#1328cf6086f02c499183489ccb143fe9c159e871" + integrity sha512-Lzc5cS/hXuoXhuAbVIxJIHLCYmfPcbU0vVgrpMoiP1Qb2Q3ETU4A46GB8s8mWXgSU6tr9RcqerUqzFYD6+OAag== + dependencies: + "@multiformats/multiaddr" "^12.1.5" + abortable-iterator "^5.0.1" + it-pushable "^3.2.0" + it-stream-types "^2.0.1" + multiformats "^12.0.1" + p-defer "^4.0.0" + race-signal "^1.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/interface@^1.0.0", "@libp2p/interface@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@libp2p/interface/-/interface-1.4.0.tgz#19066f29c21e6ad0d7237997f13f785e3a4fd056" + integrity sha512-XkbZ0NfLVnxvWgo1nVyMwCUYDQbFYFvYPA6KUPLV7/XgcxBapVZT5sJ9hgQ4kTsqSBbjQl6YDXDxCclAPZDNTQ== + dependencies: + "@multiformats/multiaddr" "^12.2.3" + it-pushable "^3.2.3" + it-stream-types "^2.0.1" + multiformats "^13.1.0" + progress-events "^1.0.0" + uint8arraylist "^2.4.8" + +"@libp2p/interfaces@^3.0.0", "@libp2p/interfaces@^3.0.2", "@libp2p/interfaces@^3.0.3", "@libp2p/interfaces@^3.2.0", "@libp2p/interfaces@^3.3.1": + version "3.3.2" + resolved "https://registry.yarnpkg.com/@libp2p/interfaces/-/interfaces-3.3.2.tgz#5d8079be845b0960939b5b18880e785a4714465a" + integrity sha512-p/M7plbrxLzuQchvNwww1Was7ZeGE2NaOFulMaZBYIihU8z3fhaV+a033OqnC/0NTX/yhfdNOG7znhYq3XoR/g== + +"@libp2p/keychain@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@libp2p/keychain/-/keychain-1.0.1.tgz#f34d611ece45bd871f597bd14ce61e60459c6d5d" + integrity sha512-IvvBNcN6juPldpENiDrQFVx12573HP+jRoECGuyUBaMDy2uewFbEPWQbHFmF/kMD1IvEmAiihxrTLk7kEWllfg== + dependencies: + "@libp2p/crypto" "^1.0.11" + "@libp2p/interface-keychain" "^2.0.3" + "@libp2p/interface-peer-id" "^2.0.1" + "@libp2p/interfaces" "^3.3.1" + "@libp2p/logger" "^2.0.5" + "@libp2p/peer-id" "^2.0.1" + interface-datastore "^7.0.3" + merge-options "^3.0.4" + sanitize-filename "^1.6.3" + uint8arrays "^4.0.3" + +"@libp2p/logger@^2.0.0", "@libp2p/logger@^2.0.1", "@libp2p/logger@^2.0.2", "@libp2p/logger@^2.0.5": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-2.1.1.tgz#e12e6c320ea64252af954bcec996895098d1cd36" + integrity sha512-2UbzDPctg3cPupF6jrv6abQnAUTrbLybNOj0rmmrdGm1cN2HJ1o/hBu0sXuq4KF9P1h/eVRn1HIRbVIEKnEJrA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.2" + "@multiformats/multiaddr" "^12.1.3" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^11.0.2" + +"@libp2p/logger@^3.0.2": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-3.1.0.tgz#ac9adb08f344934e191d7049ce876ac0111449ce" + integrity sha512-qJbJBAhxHVsRBtQSOIkSLi0lskUSFjzE+zm0QvoyxzZKSz+mX41mZLbnofPIVOVauoDQ40dXpe7WDUOq8AbiQQ== + dependencies: + "@libp2p/interface" "^0.1.6" + "@multiformats/multiaddr" "^12.1.5" + debug "^4.3.4" + interface-datastore "^8.2.0" + multiformats "^12.0.1" + +"@libp2p/logger@^4.0.1": + version "4.0.13" + resolved "https://registry.yarnpkg.com/@libp2p/logger/-/logger-4.0.13.tgz#9a32d933c79be8854726a1d3c69d95ed69e1f677" + integrity sha512-z1i4Ksdr4cl96Y+VwJdhdNUkwP7189oTn0AQrAQc9WnLKqRUGXWwDf2OgdpJbPU71KteZT3UXLRQGWzXKCt2Wg== + dependencies: + "@libp2p/interface" "^1.4.0" + "@multiformats/multiaddr" "^12.2.3" + debug "^4.3.4" + interface-datastore "^8.2.11" + multiformats "^13.1.0" + +"@libp2p/mplex@^7.1.1": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@libp2p/mplex/-/mplex-7.1.7.tgz#ee14192f5e82aa3710ae4a102875278aea0bb127" + integrity sha512-8eJ6HUL3bM8ck0rb/NJ04+phBUVBMocxH/kuc2Nypn8RX9ezihV7srGGhG5N7muaMwJrRbYkFhIV4GH+8WTZUg== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-stream-muxer" "^3.0.0" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + abortable-iterator "^4.0.2" + any-signal "^4.0.1" + benchmark "^2.1.4" + it-batched-bytes "^1.0.0" + it-pushable "^3.1.0" + it-stream-types "^1.0.4" + rate-limiter-flexible "^2.3.9" + uint8arraylist "^2.1.1" + uint8arrays "^4.0.2" + varint "^6.0.0" + +"@libp2p/multistream-select@^3.0.0": + version "3.1.9" + resolved "https://registry.yarnpkg.com/@libp2p/multistream-select/-/multistream-select-3.1.9.tgz#60b12503bab879a2ebb97d69f4670a10e67c35c8" + integrity sha512-iSNqr8jXvOrkNTyA43h/ARs4wd0Rd55/D6oFRndLcV4yQSUMmfjl7dUcbC5MAw+5/sgskfDx9TMawSwNq47Qwg== + dependencies: + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + abortable-iterator "^5.0.0" + it-first "^3.0.1" + it-handshake "^4.1.3" + it-length-prefixed "^9.0.0" + it-merge "^3.0.0" + it-pipe "^3.0.0" + it-pushable "^3.1.0" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8arraylist "^2.3.1" + uint8arrays "^4.0.2" + +"@libp2p/peer-collections@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@libp2p/peer-collections/-/peer-collections-3.0.2.tgz#a5441108fcf137e822be378e2e3abdd3f22c68d9" + integrity sha512-3vRVMWVRCF6dVs/1/CHbw4YSv83bcqjZuAt9ZQHW85vn6OfHNFQesOHWT1TbRBuL8TSb//IwJkOfTAVLd6Mymw== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/peer-id" "^2.0.0" + +"@libp2p/peer-id-factory@^2.0.0": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id-factory/-/peer-id-factory-2.0.4.tgz#ccf74ece34d16a069602e7cae28b1cb739803e0c" + integrity sha512-+0D+oklFzHpjRI3v7uw3PMMx00P36DV7YvAgL0+gpos0VzR/BI9tRiM6dpObZTrQ1hxp78F03p+qR1Zy9Qnmuw== + dependencies: + "@libp2p/crypto" "^1.0.0" + "@libp2p/interface-keys" "^1.0.2" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/peer-id" "^2.0.0" + multiformats "^11.0.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.0.0" + uint8arrays "^4.0.2" + +"@libp2p/peer-id@^2.0.0", "@libp2p/peer-id@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-2.0.4.tgz#d50d2ae4663ef79f6e31ce4eaf25e1f44e1667ab" + integrity sha512-gcOsN8Fbhj6izIK+ejiWsqiqKeJ2yWPapi/m55VjOvDa52/ptQzZszxQP8jUk93u36de92ATFXDfZR/Bi6eeUQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + multiformats "^11.0.0" + uint8arrays "^4.0.2" + +"@libp2p/peer-id@^3.0.2": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@libp2p/peer-id/-/peer-id-3.0.6.tgz#93b3f240488c0af3d76f64716e2ee032cd2fd2da" + integrity sha512-iN1Ia5gH2U1V/GOVRmLHmVY6fblxzrOPUoZrMYjHl/K4s+AiI7ym/527WDeQvhQpD7j3TfDwcAYforD2dLGpLw== + dependencies: + "@libp2p/interface" "^0.1.6" + multiformats "^12.0.1" + uint8arrays "^4.0.6" + +"@libp2p/peer-record@^5.0.0": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-record/-/peer-record-5.0.4.tgz#b8f337a2864ffe2ffbb34596cb03d7c339ed18ae" + integrity sha512-e+AArf7pwMLqF24mehTe1OYjr1v0SOKshVrI1E9YH/Cb1F3ZZuK3smyGmnLaS4JlqsarRCMSe3V50tRkqMFY7g== + dependencies: + "@libp2p/crypto" "^1.0.11" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-record" "^2.0.1" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/peer-id" "^2.0.0" + "@libp2p/utils" "^3.0.0" + "@multiformats/multiaddr" "^12.0.0" + protons-runtime "^5.0.0" + uint8-varint "^1.0.2" + uint8arraylist "^2.1.0" + uint8arrays "^4.0.2" + +"@libp2p/peer-store@^6.0.0": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/peer-store/-/peer-store-6.0.4.tgz#3ec42dc8f1863a06bd487ba0701719356a0da51f" + integrity sha512-yw7XbeJ5k880PpkDV/HcSZtj0vQ0ShPbnCzVHc1hW0JS/g1vhpSooAZOf3w65obUoFhUwccnSZ4HSLBSpQqOaA== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.3" + "@libp2p/interface-peer-store" "^1.2.2" + "@libp2p/interface-record" "^2.0.1" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + "@libp2p/peer-id" "^2.0.0" + "@libp2p/peer-record" "^5.0.0" + "@multiformats/multiaddr" "^11.0.0" + interface-datastore "^7.0.0" + it-all "^2.0.0" + it-filter "^2.0.0" + it-foreach "^1.0.0" + it-map "^2.0.0" + mortice "^3.0.0" + multiformats "^11.0.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.1.1" + uint8arrays "^4.0.2" + +"@libp2p/pubsub-peer-discovery@^8.0.0": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-8.0.6.tgz#fb48a4c6e7c1d79f819997ee6076f15a6fe87f62" + integrity sha512-M1HoB+AohAaup0fP0Hm8reLctFgKvyRw+R/SlHnHj/jHinHKCtQhNZ9MSiV4vNnSomJZ+viFMw+3Yl2bgvbfgw== + dependencies: + "@libp2p/interface-peer-discovery" "^2.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-peer-info" "^1.0.2" + "@libp2p/interface-pubsub" "^4.0.0" + "@libp2p/interfaces" "^3.0.3" + "@libp2p/logger" "^3.0.2" + "@libp2p/peer-id" "^3.0.2" + "@multiformats/multiaddr" "^12.0.0" + protons-runtime "^5.0.0" + uint8arraylist "^2.4.3" + +"@libp2p/pubsub@^6.0.0": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@libp2p/pubsub/-/pubsub-6.0.6.tgz#7acf5a1de8fa5d982afc109ddd31e240111e7fe8" + integrity sha512-/JU4xvtZIYDxOyiHIk4MlpnAJuqfZsabDP+4f59QlXNsppOmiIujaDhN3eFBFIKG29XDSgHZBzKMLK+XsB8O5g== + dependencies: + "@libp2p/crypto" "^1.0.0" + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-pubsub" "^3.0.0" + "@libp2p/interface-registrar" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + "@libp2p/peer-collections" "^3.0.0" + "@libp2p/peer-id" "^2.0.0" + "@libp2p/topology" "^4.0.0" + abortable-iterator "^4.0.2" + it-length-prefixed "^9.0.0" + it-pipe "^3.0.0" + it-pushable "^3.0.0" + multiformats "^11.0.0" + p-queue "^7.2.0" + uint8arraylist "^2.0.0" + uint8arrays "^4.0.2" + +"@libp2p/tcp@^6.0.0": + version "6.2.2" + resolved "https://registry.yarnpkg.com/@libp2p/tcp/-/tcp-6.2.2.tgz#9262e284037f0951aca22f0fb3d488e3515ff6fd" + integrity sha512-5pLQDSUI+6qtAvh7pYgjqXFuFqzZ/AGL3BSX4C2oa+vWGIbooTZK3Mizp+iO0yHomVJ1y3V8AXXH8ddWdFqDpQ== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-metrics" "^4.0.0" + "@libp2p/interface-transport" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + "@libp2p/utils" "^3.0.2" + "@multiformats/mafmt" "^12.0.0" + "@multiformats/multiaddr" "^12.0.0" + stream-to-it "^0.2.2" + +"@libp2p/topology@^4.0.0": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@libp2p/topology/-/topology-4.0.3.tgz#d86e013bd065b2a61ce82d416e1962c8556a46eb" + integrity sha512-uXd9ZYpmgb+onMTypsAPUlvKKeY20HMtxwsjAMEfDa29yqshK8DiEunHZNjLmtXaMIIO9CBl2w5ykjt5TtFsBQ== + dependencies: + "@libp2p/interface-peer-id" "^2.0.0" + "@libp2p/interface-registrar" "^2.0.3" + +"@libp2p/tracked-map@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@libp2p/tracked-map/-/tracked-map-3.0.4.tgz#77bf9ca8fb85cb4593d02086671648cbb1f671d9" + integrity sha512-G5ElrjFoubP10TwQo3dnRVaxhshU9wtu86qq0cIXNv12XCFpvTvx12Vbf8sV1SU5imrWgd6XQgfRKsQtjmu3Ew== + dependencies: + "@libp2p/interface-metrics" "^4.0.0" + +"@libp2p/utils@^3.0.0", "@libp2p/utils@^3.0.2": + version "3.0.13" + resolved "https://registry.yarnpkg.com/@libp2p/utils/-/utils-3.0.13.tgz#a0bf648df4cc0bbb7542a9d88651cc92039a50c9" + integrity sha512-SNwIcQq/FvLpqVsjHHzbxSq7VgbbUK9EB7/865Re4NoLfqgE/6oTUpyPEDlrcJb4aTPFWbVPQzE85cA3raHIIw== + dependencies: + "@achingbrain/ip-address" "^8.1.0" + "@libp2p/interface-connection" "^5.0.1" + "@libp2p/interface-peer-store" "^2.0.0" + "@libp2p/interfaces" "^3.2.0" + "@libp2p/logger" "^2.0.0" + "@multiformats/multiaddr" "^12.0.0" + abortable-iterator "^5.0.0" + is-loopback-addr "^2.0.1" + it-stream-types "^2.0.1" + private-ip "^3.0.0" + uint8arraylist "^2.3.2" + +"@libp2p/webrtc-peer@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@libp2p/webrtc-peer/-/webrtc-peer-2.0.2.tgz#71c240e34905c6c97e20fdf703cec025c745c155" + integrity sha512-FozliUqHO1CIzrL8hPc5uT+5AGUWf5Dw3HncL9tte/CoDNVpj6O59ITIRWefssp3oIGEAIjpcebNu1d+mYfVug== + dependencies: + "@libp2p/interfaces" "^3.0.2" + "@libp2p/logger" "^2.0.0" + delay "^5.0.0" + err-code "^3.0.1" + iso-random-stream "^2.0.2" + it-pushable "^3.0.0" + it-stream-types "^1.0.4" + p-defer "^4.0.0" + p-event "^5.0.1" + uint8arrays "^4.0.2" + +"@libp2p/websockets@^5.0.5": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@libp2p/websockets/-/websockets-5.0.10.tgz#87689c083a7b7e0fa98ab30f0791094c2545f83c" + integrity sha512-q8aKm0rhDxZjc4TzDpB0quog4pViFnz+Ok+UbGEk3xXxHwT3QCxaDVPKMemMqN/1N3OahVvcodpcvFSuWmus+A== + dependencies: + "@libp2p/interface-connection" "^4.0.0" + "@libp2p/interface-transport" "^2.0.0" + "@libp2p/interfaces" "^3.0.3" + "@libp2p/logger" "^2.0.0" + "@libp2p/utils" "^3.0.2" + "@multiformats/mafmt" "^12.0.0" + "@multiformats/multiaddr" "^12.0.0" + "@multiformats/multiaddr-to-uri" "^9.0.2" + abortable-iterator "^4.0.2" + it-ws "^5.0.6" + p-defer "^4.0.0" + p-timeout "^6.0.0" + wherearewe "^2.0.1" + ws "^8.12.1" + +"@multiformats/dns@^1.0.3": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@multiformats/dns/-/dns-1.0.6.tgz#b8c7de11459a02a5f4e609d35d3cdb95cb6ad152" + integrity sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw== + dependencies: + "@types/dns-packet" "^5.6.5" + buffer "^6.0.3" + dns-packet "^5.6.1" + hashlru "^2.3.0" + p-queue "^8.0.1" + progress-events "^1.0.0" + uint8arrays "^5.0.2" + +"@multiformats/mafmt@^11.0.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@multiformats/mafmt/-/mafmt-11.1.2.tgz#c03ef4022c795b7f230b136f2f974fc263eac4f1" + integrity sha512-3n1o5eLU7WzTAPLuz3AodV7Iql6NWf7Ws8fqVaGT7o5nDDabUPYGBm2cZuh3OrqmwyCY61LrNUIsjzivU6UdpQ== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/mafmt@^12.0.0": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@multiformats/mafmt/-/mafmt-12.1.6.tgz#e7c1831c1e94c94932621826049afc89f3ad43b7" + integrity sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr-to-uri@^9.0.2": + version "9.0.8" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-9.0.8.tgz#c0b1491b26a4d52273ddc16024c59ba47ef8583f" + integrity sha512-4eiN5iEiQfy2A98BxekUfW410L/ivg0sgjYSgSqmklnrBhK+QyMz4yqgfkub8xDTXOc7O5jp4+LVyM3ZqMeWNw== + dependencies: + "@multiformats/multiaddr" "^12.0.0" + +"@multiformats/multiaddr@^11.0.0", "@multiformats/multiaddr@^11.1.4": + version "11.6.1" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-11.6.1.tgz#ec46984a298e715e27a398434c087856db5f3185" + integrity sha512-doST0+aB7/3dGK9+U5y3mtF3jq85KGbke1QiH0KE1F5mGQ9y56mFebTeu2D9FNOm+OT6UHb8Ss8vbSnpGjeLNw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + dns-over-http-resolver "^2.1.0" + err-code "^3.0.1" + multiformats "^11.0.0" + uint8arrays "^4.0.2" + varint "^6.0.0" + +"@multiformats/multiaddr@^12.0.0", "@multiformats/multiaddr@^12.1.3", "@multiformats/multiaddr@^12.1.5", "@multiformats/multiaddr@^12.2.3": + version "12.3.0" + resolved "https://registry.yarnpkg.com/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz#b1422813446e5cdec4b0f6cba51f93239f390884" + integrity sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + "@chainsafe/netmask" "^2.0.0" + "@libp2p/interface" "^1.0.0" + "@multiformats/dns" "^1.0.3" + multiformats "^13.0.0" + uint8-varint "^2.0.1" + uint8arrays "^5.0.0" + +"@noble/ed25519@^1.6.0": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" + integrity sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ== + +"@noble/secp256k1@^1.5.4": + 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" + +"@npmcli/arborist@6.2.3": + version "6.2.3" + resolved "https://registry.yarnpkg.com/@npmcli/arborist/-/arborist-6.2.3.tgz#31f8aed2588341864d3811151d929c01308f8e71" + integrity sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA== + dependencies: + "@isaacs/string-locale-compare" "^1.1.0" + "@npmcli/fs" "^3.1.0" + "@npmcli/installed-package-contents" "^2.0.0" + "@npmcli/map-workspaces" "^3.0.2" + "@npmcli/metavuln-calculator" "^5.0.0" + "@npmcli/name-from-folder" "^2.0.0" + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/package-json" "^3.0.0" + "@npmcli/query" "^3.0.0" + "@npmcli/run-script" "^6.0.0" + bin-links "^4.0.1" + cacache "^17.0.4" + common-ancestor-path "^1.0.1" + hosted-git-info "^6.1.1" + json-parse-even-better-errors "^3.0.0" + json-stringify-nice "^1.1.4" + minimatch "^6.1.6" + nopt "^7.0.0" + npm-install-checks "^6.0.0" + npm-package-arg "^10.1.0" + npm-pick-manifest "^8.0.1" + npm-registry-fetch "^14.0.3" + npmlog "^7.0.1" + pacote "^15.0.8" + parse-conflict-json "^3.0.0" + proc-log "^3.0.0" + promise-all-reject-late "^1.0.0" + promise-call-limit "^1.0.1" + read-package-json-fast "^3.0.2" + semver "^7.3.7" + ssri "^10.0.1" + treeverse "^3.0.0" + walk-up-path "^1.0.0" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/fs@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-3.1.1.tgz#59cdaa5adca95d135fc00f2bb53f5771575ce726" + integrity sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg== + dependencies: + semver "^7.3.5" + +"@npmcli/git@^4.0.0", "@npmcli/git@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-4.1.0.tgz#ab0ad3fd82bc4d8c1351b6c62f0fa56e8fe6afa6" + integrity sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ== + dependencies: + "@npmcli/promise-spawn" "^6.0.0" + lru-cache "^7.4.4" + npm-pick-manifest "^8.0.0" + proc-log "^3.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^3.0.0" + +"@npmcli/installed-package-contents@^2.0.0", "@npmcli/installed-package-contents@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz#63048e5f6e40947a3a88dcbcb4fd9b76fdd37c17" + integrity sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w== + dependencies: + npm-bundled "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +"@npmcli/map-workspaces@^3.0.2": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@npmcli/map-workspaces/-/map-workspaces-3.0.6.tgz#27dc06c20c35ef01e45a08909cab9cb3da08cea6" + integrity sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA== + dependencies: + "@npmcli/name-from-folder" "^2.0.0" + glob "^10.2.2" + minimatch "^9.0.0" + read-package-json-fast "^3.0.0" + +"@npmcli/metavuln-calculator@^5.0.0": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/metavuln-calculator/-/metavuln-calculator-5.0.1.tgz#426b3e524c2008bcc82dbc2ef390aefedd643d76" + integrity sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q== + dependencies: + cacache "^17.0.0" + json-parse-even-better-errors "^3.0.0" + pacote "^15.0.0" + semver "^7.3.5" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/name-from-folder@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/name-from-folder/-/name-from-folder-2.0.0.tgz#c44d3a7c6d5c184bb6036f4d5995eee298945815" + integrity sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg== + +"@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + +"@npmcli/node-gyp@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz#101b2d0490ef1aa20ed460e4c0813f0db560545a" + integrity sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA== + +"@npmcli/package-json@^3.0.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@npmcli/package-json/-/package-json-3.1.1.tgz#5628332aac90fa1b4d6f98e03988c5958b35e0c5" + integrity sha512-+UW0UWOYFKCkvszLoTwrYGrjNrT8tI5Ckeb/h+Z1y1fsNJEctl7HmerA5j2FgmoqFaLI2gsA1X9KgMFqx/bRmA== + dependencies: + "@npmcli/git" "^4.1.0" + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.1" + proc-log "^3.0.0" + +"@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/promise-spawn@^6.0.0", "@npmcli/promise-spawn@^6.0.1": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz#c8bc4fa2bd0f01cb979d8798ba038f314cfa70f2" + integrity sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg== + dependencies: + which "^3.0.0" + +"@npmcli/query@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@npmcli/query/-/query-3.1.0.tgz#bc202c59e122a06cf8acab91c795edda2cdad42c" + integrity sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ== + dependencies: + postcss-selector-parser "^6.0.10" + +"@npmcli/run-script@4.1.7": + version "4.1.7" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.1.7.tgz#b1a2f57568eb738e45e9ea3123fb054b400a86f7" + integrity sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + +"@npmcli/run-script@^6.0.0": + version "6.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-6.0.2.tgz#a25452d45ee7f7fb8c16dfaf9624423c0c0eb885" + integrity sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA== + dependencies: + "@npmcli/node-gyp" "^3.0.0" + "@npmcli/promise-spawn" "^6.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^3.0.0" + which "^3.0.0" + +"@nrwl/cli@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/cli/-/cli-15.9.7.tgz#1db113f5cb1cfe63213097be1ece041eef33da1f" + integrity sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA== + dependencies: + nx "15.9.7" + +"@nrwl/devkit@>=15.5.2 < 16": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-15.9.7.tgz#14d19ec82ff4209c12147a97f1cdea05d8f6c087" + integrity sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg== + dependencies: + ejs "^3.1.7" + ignore "^5.0.4" + semver "7.5.4" + tmp "~0.2.1" + tslib "^2.3.0" + +"@nrwl/nx-darwin-arm64@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-arm64/-/nx-darwin-arm64-15.9.7.tgz#a2cb7390c782b8acf3bb8806a3002620226a933d" + integrity sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw== + +"@nrwl/nx-darwin-x64@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-darwin-x64/-/nx-darwin-x64-15.9.7.tgz#af0437e726aeb97eb660646bfd9a7da5ba7a0a6f" + integrity sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg== + +"@nrwl/nx-linux-arm-gnueabihf@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-15.9.7.tgz#e29f4d31afa903bfb4d0fd7421e19be1086eae87" + integrity sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg== + +"@nrwl/nx-linux-arm64-gnu@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-15.9.7.tgz#eb2880a24d3268dd93583d21a6a0b9ff96bb23b4" + integrity sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA== + +"@nrwl/nx-linux-arm64-musl@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-arm64-musl/-/nx-linux-arm64-musl-15.9.7.tgz#5d04913c4672a96cefa78491824620d8a8bcfd7f" + integrity sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA== + +"@nrwl/nx-linux-x64-gnu@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-gnu/-/nx-linux-x64-gnu-15.9.7.tgz#cf7f61fd87f35a793e6824952a6eb12242fe43fd" + integrity sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg== + +"@nrwl/nx-linux-x64-musl@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-linux-x64-musl/-/nx-linux-x64-musl-15.9.7.tgz#2bec23c3696780540eb47fa1358dda780c84697f" + integrity sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q== + +"@nrwl/nx-win32-arm64-msvc@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-15.9.7.tgz#21b56ef3ab4190370effea71bd83fdc3e47ec69c" + integrity sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A== + +"@nrwl/nx-win32-x64-msvc@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/nx-win32-x64-msvc/-/nx-win32-x64-msvc-15.9.7.tgz#1677ab1dcce921706b5677dc2844e3e0027f8bd5" + integrity sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw== + +"@nrwl/tao@15.9.7": + version "15.9.7" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-15.9.7.tgz#c0e78c99caa6742762f7558f20d8524bc9015e97" + integrity sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw== + dependencies: + nx "15.9.7" + +"@octokit/auth-token@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-3.0.4.tgz#70e941ba742bdd2b49bdb7393e821dea8520a3db" + integrity sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ== + +"@octokit/core@^4.0.0": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@octokit/core/-/core-4.2.4.tgz#d8769ec2b43ff37cc3ea89ec4681a20ba58ef907" + integrity sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ== + dependencies: + "@octokit/auth-token" "^3.0.0" + "@octokit/graphql" "^5.0.0" + "@octokit/request" "^6.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" + +"@octokit/endpoint@^7.0.0": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-7.0.6.tgz#791f65d3937555141fb6c08f91d618a7d645f1e2" + integrity sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg== + dependencies: + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" + +"@octokit/graphql@^5.0.0": + version "5.0.6" + resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-5.0.6.tgz#9eac411ac4353ccc5d3fca7d76736e6888c5d248" + integrity sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw== + dependencies: + "@octokit/request" "^6.0.0" + "@octokit/types" "^9.0.0" + universal-user-agent "^6.0.0" + +"@octokit/openapi-types@^12.11.0": + version "12.11.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" + integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== + +"@octokit/openapi-types@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-14.0.0.tgz#949c5019028c93f189abbc2fb42f333290f7134a" + integrity sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw== + +"@octokit/openapi-types@^18.0.0": + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== + +"@octokit/plugin-enterprise-rest@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + +"@octokit/plugin-paginate-rest@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-3.1.0.tgz#86f8be759ce2d6d7c879a31490fd2f7410b731f0" + integrity sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA== + dependencies: + "@octokit/types" "^6.41.0" + +"@octokit/plugin-request-log@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + +"@octokit/plugin-rest-endpoint-methods@^6.0.0": + version "6.8.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-6.8.1.tgz#97391fda88949eb15f68dc291957ccbe1d3e8ad1" + integrity sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg== + dependencies: + "@octokit/types" "^8.1.1" + deprecation "^2.3.1" + +"@octokit/request-error@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-3.0.3.tgz#ef3dd08b8e964e53e55d471acfe00baa892b9c69" + integrity sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ== + dependencies: + "@octokit/types" "^9.0.0" + deprecation "^2.0.0" + once "^1.4.0" + +"@octokit/request@^6.0.0": + version "6.2.8" + resolved "https://registry.yarnpkg.com/@octokit/request/-/request-6.2.8.tgz#aaf480b32ab2b210e9dadd8271d187c93171d8eb" + integrity sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw== + dependencies: + "@octokit/endpoint" "^7.0.0" + "@octokit/request-error" "^3.0.0" + "@octokit/types" "^9.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.7" + universal-user-agent "^6.0.0" + +"@octokit/rest@19.0.3": + version "19.0.3" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-19.0.3.tgz#b9a4e8dc8d53e030d611c053153ee6045f080f02" + integrity sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ== + dependencies: + "@octokit/core" "^4.0.0" + "@octokit/plugin-paginate-rest" "^3.0.0" + "@octokit/plugin-request-log" "^1.0.4" + "@octokit/plugin-rest-endpoint-methods" "^6.0.0" + +"@octokit/types@^6.41.0": + version "6.41.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" + integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== + dependencies: + "@octokit/openapi-types" "^12.11.0" + +"@octokit/types@^8.1.1": + version "8.2.1" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-8.2.1.tgz#a6de091ae68b5541f8d4fcf9a12e32836d4648aa" + integrity sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw== + dependencies: + "@octokit/openapi-types" "^14.0.0" + +"@octokit/types@^9.0.0": + version "9.3.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-9.3.2.tgz#3f5f89903b69f6a2d196d78ec35f888c0013cac5" + integrity sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA== + dependencies: + "@octokit/openapi-types" "^18.0.0" + +"@openzeppelin/contracts@4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" + integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== + +"@openzeppelin/contracts@^4.7.3": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.9.6.tgz#2a880a24eb19b4f8b25adc2a5095f2aa27f39677" + integrity sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA== + +"@parcel/watcher@2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" + integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== + dependencies: + node-addon-api "^3.2.1" + node-gyp-build "^4.3.0" + +"@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== + +"@sigstore/bundle@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" + integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/sign@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" + integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + make-fetch-happen "^11.0.1" + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" + tuf-js "^1.1.7" + +"@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== + +"@sqltools/formatter@^1.2.2": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@sqltools/formatter/-/formatter-1.2.5.tgz#3abc203c79b8c3e90fd6c156a0c62d5403520e12" + integrity sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw== + +"@stablelib/aead@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" + integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== + +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/chacha20poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" + integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== + dependencies: + "@stablelib/aead" "^1.0.1" + "@stablelib/binary" "^1.0.1" + "@stablelib/chacha" "^1.0.1" + "@stablelib/constant-time" "^1.0.1" + "@stablelib/poly1305" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/chacha@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" + integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/constant-time@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" + integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== + +"@stablelib/hash@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" + integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== + +"@stablelib/hkdf@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" + integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== + dependencies: + "@stablelib/hash" "^1.0.1" + "@stablelib/hmac" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/hmac@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" + integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/poly1305@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" + integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== + dependencies: + "@stablelib/constant-time" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/random@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" + integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/sha256@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" + integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/hash" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" + integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.2" + "@stablelib/wipe" "^1.0.1" + +"@statechannels/exit-format@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@statechannels/exit-format/-/exit-format-0.2.0.tgz#b9362816c2a23d59e429b86b310021de1031a387" + integrity sha512-i+HIPy2P6ddwT/uP0O6AiTmBRTQ9+vLmLnfJtvXmtpTsB8OT1R9Jjj5iVKowGcWk+cg8koEtQuQDMxfrHq7LaQ== + dependencies: + "@openzeppelin/contracts" "4.6.0" + ethers "^5.1.4" + lodash "^4.17.21" + +"@statechannels/nitro-protocol@^2.0.1-alpha.6": + version "2.0.1-alpha.6" + resolved "https://registry.yarnpkg.com/@statechannels/nitro-protocol/-/nitro-protocol-2.0.1-alpha.6.tgz#1bb59365eb78489eef2dfa73733bc1cad9890685" + integrity sha512-VehCgq3AOVTGCvGGIoF23YyQX+x1IbLzByFWbqPovucsm9vW0udR7r8Okw9hC0ZHanHOjQH5KxJL6aKUnrXinw== + dependencies: + "@openzeppelin/contracts" "^4.7.3" + "@statechannels/exit-format" "^0.2.0" + "@typechain/ethers-v5" "^9.0.0" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@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== + +"@tufjs/canonical-json@1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz#eade9fd1f537993bc1f0949f3aea276ecc4fab31" + integrity sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ== + +"@tufjs/models@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tufjs/models/-/models-1.0.4.tgz#5a689630f6b9dbda338d4b208019336562f176ef" + integrity sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A== + dependencies: + "@tufjs/canonical-json" "1.0.0" + minimatch "^9.0.0" + +"@typechain/ethers-v5@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-9.0.0.tgz#6aa93bea7425c0463bd8a61eea3643540ef851bd" + integrity sha512-bAanuPl1L2itaUdMvor/QvwnIH+TM/CmG00q17Ilv3ZZMeJ2j8HcarhgJUZ9pBY1teBb85P8cC03dz3mSSx+tQ== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@types/accepts@^1.3.5": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.7.tgz#3b98b1889d2b2386604c2bbbe62e4fb51e95b265" + integrity sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ== + dependencies: + "@types/node" "*" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/body-parser@1.19.2": + 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/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cors@2.8.12": + version "2.8.12" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.12.tgz#6b2c510a7ad7039e98e7b8d3d6598f4359e5c080" + integrity sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw== + +"@types/debug@^4.1.5": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/dns-packet@^5.6.5": + version "5.6.5" + resolved "https://registry.yarnpkg.com/@types/dns-packet/-/dns-packet-5.6.5.tgz#49fc29a40f5d30227ed028fa1ee82601d3745e15" + integrity sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q== + dependencies: + "@types/node" "*" + +"@types/express-serve-static-core@4.17.31": + version "4.17.31" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f" + integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express-serve-static-core@^4.17.18": + version "4.19.3" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz#e469a13e4186c9e1c0418fb17be8bc8ff1b19a7a" + integrity sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@4.17.14": + version "4.17.14" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c" + integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.18" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/json-bigint@^1.0.0": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/json-bigint/-/json-bigint-1.0.4.tgz#250d29e593375499d8ba6efaab22d094c3199ef3" + integrity sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag== + +"@types/json-diff@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/json-diff/-/json-diff-0.5.2.tgz#83689a504b3c7759f046d125d5521d6760ab9d0d" + integrity sha512-2oqXStJYYLDHCciNAClY277Ti3kXT+JLvPD7lLm/490i+B7g0GR6M4qiW+bd2V5vpB+yMKY8IelbsHMAYX1D0A== + +"@types/json-schema@^7.0.9": + 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/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/long@^4.0.0", "@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@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@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/ms@*": + version "0.7.34" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" + integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + +"@types/node@*", "@types/node@>=13.7.0": + version "20.14.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" + integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + dependencies: + undici-types "~5.26.4" + +"@types/node@^10.1.0": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/normalize-package-data@^2.4.0", "@types/normalize-package-data@^2.4.3": + 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.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/qs@*": + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/triple-beam@^1.3.2": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" + integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.0": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@types/zen-observable@0.8.3": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.3.tgz#781d360c282436494b32fe7d9f7f8e64b3118aa3" + integrity sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw== + +"@typescript-eslint/eslint-plugin@^5.47.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.47.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.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.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@wry/caches@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@wry/caches/-/caches-1.0.1.tgz#8641fd3b6e09230b86ce8b93558d44cf1ece7e52" + integrity sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA== + dependencies: + tslib "^2.3.0" + +"@wry/context@^0.7.0": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.4.tgz#e32d750fa075955c4ab2cfb8c48095e1d42d5990" + integrity sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ== + dependencies: + tslib "^2.3.0" + +"@wry/equality@^0.5.6": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.7.tgz#72ec1a73760943d439d56b7b1e9985aec5d497bb" + integrity sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.4.3.tgz#077d52c22365871bf3ffcbab8e95cb8bc5689af4" + integrity sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w== + dependencies: + tslib "^2.3.0" + +"@wry/trie@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@wry/trie/-/trie-0.5.0.tgz#11e783f3a53f6e4cd1d42d2d1323f5bc3fa99c94" + integrity sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA== + dependencies: + tslib "^2.3.0" + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +"@yarnpkg/parsers@3.0.0-rc.46": + version "3.0.0-rc.46" + resolved "https://registry.yarnpkg.com/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz#03f8363111efc0ea670e53b0282cd3ef62de4e01" + integrity sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q== + dependencies: + js-yaml "^3.10.0" + tslib "^2.4.0" + +"@zkochan/js-yaml@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" + integrity sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg== + dependencies: + argparse "^2.0.1" + +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf" + integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ== + +abortable-iterator@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/abortable-iterator/-/abortable-iterator-4.0.3.tgz#432570d8256dbad2cef4f129312b651c5ffcdd0f" + integrity sha512-GJ5fyS9O0hK/TMf+weR+WMEwSEBWVuStHqHmUYWbfHPULyVf7QdUnAvh41+1cUWtHVf0Z/qtQynidxz4ZFDPOg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^1.0.3" + +abortable-iterator@^5.0.0, abortable-iterator@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/abortable-iterator/-/abortable-iterator-5.0.1.tgz#5d93eba6fa8287a973a9ea090c64ca08b3777780" + integrity sha512-hlZ5Z8UwqrKsJcelVPEqDduZowJPBQJ9ZhBC2FXpja3lXy8X6MoI5uMzIgmrA8+3jcVnp8TF/tx+IBBqYJNUrg== + dependencies: + get-iterator "^2.0.0" + it-stream-types "^2.0.1" + +abstract-level@^1.0.2, abstract-level@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/abstract-level/-/abstract-level-1.0.4.tgz#3ad8d684c51cc9cbc9cf9612a7100b716c414b57" + integrity sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg== + dependencies: + buffer "^6.0.3" + catering "^2.1.0" + is-buffer "^2.0.5" + level-supports "^4.0.0" + level-transcoder "^1.0.1" + module-error "^1.0.1" + queue-microtask "^1.2.3" + +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +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-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.3.2" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.4.1, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== + +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, agent-base@^6.0.2: + 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" + +agentkeepalive@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +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.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" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +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.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +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@^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== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +any-signal@^3.0.0, any-signal@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" + integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== + +any-signal@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-4.1.1.tgz#928416c355c66899e6b2a91cad4488f0324bae03" + integrity sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA== + +anymatch@~3.1.1: + 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" + +apollo-datasource@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-3.3.2.tgz#5711f8b38d4b7b53fb788cb4dbd4a6a526ea74c8" + integrity sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + apollo-server-env "^4.2.1" + +apollo-reporting-protobuf@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-3.4.0.tgz#6edd31f09d4a3704d9e808d1db30eca2229ded26" + integrity sha512-h0u3EbC/9RpihWOmcSsvTW2O6RXVaD/mPEjfrPkxRPTEPWqncsgOoRJw+wih4OqfH3PvTJvoEIf4LwKrUaqWog== + dependencies: + "@apollo/protobufjs" "1.2.6" + +apollo-server-core@^3.11.1, apollo-server-core@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.13.0.tgz#ad6601fbb34cc97eedca27a9fb0b5738d11cd27d" + integrity sha512-v/g6DR6KuHn9DYSdtQijz8dLOkP78I5JSVJzPkARhDbhpH74QNwrQ2PP2URAPPEDJ2EeZNQDX8PvbYkAKqg+kg== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + "@apollo/utils.usagereporting" "^1.0.0" + "@apollographql/apollo-tools" "^0.5.3" + "@apollographql/graphql-playground-html" "1.6.29" + "@graphql-tools/mock" "^8.1.2" + "@graphql-tools/schema" "^8.0.0" + "@josephg/resolvable" "^1.0.0" + apollo-datasource "^3.3.2" + apollo-reporting-protobuf "^3.4.0" + apollo-server-env "^4.2.1" + apollo-server-errors "^3.3.1" + apollo-server-plugin-base "^3.7.2" + apollo-server-types "^3.8.0" + async-retry "^1.2.1" + fast-json-stable-stringify "^2.1.0" + graphql-tag "^2.11.0" + loglevel "^1.6.8" + lru-cache "^6.0.0" + node-abort-controller "^3.0.1" + sha.js "^2.4.11" + uuid "^9.0.0" + whatwg-mimetype "^3.0.0" + +apollo-server-env@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-4.2.1.tgz#ea5b1944accdbdba311f179e4dfaeca482c20185" + integrity sha512-vm/7c7ld+zFMxibzqZ7SSa5tBENc4B0uye9LTfjJwGoQFY5xsUPH5FpO5j0bMUDZ8YYNbrF9SNtzc5Cngcr90g== + dependencies: + node-fetch "^2.6.7" + +apollo-server-errors@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz#ba5c00cdaa33d4cbd09779f8cb6f47475d1cd655" + integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== + +apollo-server-express@^3.11.1: + version "3.13.0" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-3.13.0.tgz#0d8d9bbba3b8b8264912d215f63fd44e74d5f42a" + integrity sha512-iSxICNbDUyebOuM8EKb3xOrpIwOQgKxGbR2diSr4HP3IW8T3njKFOoMce50vr+moOCe1ev8BnLcw9SNbuUtf7g== + dependencies: + "@types/accepts" "^1.3.5" + "@types/body-parser" "1.19.2" + "@types/cors" "2.8.12" + "@types/express" "4.17.14" + "@types/express-serve-static-core" "4.17.31" + accepts "^1.3.5" + apollo-server-core "^3.13.0" + apollo-server-types "^3.8.0" + body-parser "^1.19.0" + cors "^2.8.5" + parseurl "^1.3.3" + +apollo-server-plugin-base@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-3.7.2.tgz#c19cd137bc4c993ba2490ba2b571b0f3ce60a0cd" + integrity sha512-wE8dwGDvBOGehSsPTRZ8P/33Jan6/PmL0y0aN/1Z5a5GcbFhDaaJCjK5cav6npbbGL2DPKK0r6MPXi3k3N45aw== + dependencies: + apollo-server-types "^3.8.0" + +apollo-server-plugin-response-cache@^3.8.1: + version "3.8.2" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-response-cache/-/apollo-server-plugin-response-cache-3.8.2.tgz#131ce372c3e83d5eaf8c826283c8432fa74b90dd" + integrity sha512-1k9iGgE7QIUvjC9B0A1elGrV5YcZZQFl5wEVOS7URUfEuTr3GsIHBZSFCLAEFNKTQewzS5Spqhv13AmFsOaFmg== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + apollo-server-plugin-base "^3.7.2" + apollo-server-types "^3.8.0" + +apollo-server-types@^3.8.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-3.8.0.tgz#d976b6967878681f715fe2b9e4dad9ba86b1346f" + integrity sha512-ZI/8rTE4ww8BHktsVpb91Sdq7Cb71rdSkXELSwdSR0eXu600/sY+1UXhTWdiJvk+Eq5ljqoHLwLbY2+Clq2b9A== + dependencies: + "@apollo/utils.keyvaluecache" "^1.0.1" + "@apollo/utils.logger" "^1.0.0" + apollo-reporting-protobuf "^3.4.0" + apollo-server-env "^4.2.1" + +apollo-type-bigint@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/apollo-type-bigint/-/apollo-type-bigint-0.1.3.tgz#9242115ca909b9467ba5c4bc6493a56a06984c0b" + integrity sha512-nyfwEWRZ+kon3Nnot20DufGm2EHZrkJoryYzw3soD+USdxhkcW434w1c/n+mjMLQDl86Z6EvlkvMX5Lordf2Wg== + +app-root-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + +"aproba@^1.0.3 || ^2.0.0", aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +are-we-there-yet@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-4.0.2.tgz#aed25dd0eae514660d49ac2b2366b175c614785a" + integrity sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg== + +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== + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + +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-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng== + +array-includes@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + 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.findlastindex@^1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +assert@^2.0.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" + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +async-mutex@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" + integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== + dependencies: + tslib "^2.4.0" + +async-retry@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +asyncify-wasm@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/asyncify-wasm/-/asyncify-wasm-1.2.1.tgz#a15c0480e858619a4f971e44e6fc05c49015d9e8" + integrity sha512-ZS7tZ8H8EVbUxAZnkKHvMt9UkYoALue2jwrVl7cnLByjq+1MRrbq7rL5TS+EHQduwkfXD/cNZNa+I0ZyLEBBRQ== + +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== + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@^1.0.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" + integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.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== + +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== + +before-after-hook@^2.2.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" + integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== + +benchmark@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-2.1.4.tgz#09f3de31c916425d498cc2ee565a0ebf3c2a5629" + integrity sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ== + dependencies: + lodash "^4.17.4" + platform "^1.3.3" + +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== + +bin-links@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/bin-links/-/bin-links-4.0.4.tgz#c3565832b8e287c85f109a02a17027d152a58a63" + integrity sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA== + dependencies: + cmd-shim "^6.0.0" + npm-normalize-package-bin "^3.0.0" + read-cmd-shim "^4.0.0" + write-file-atomic "^5.0.0" + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +binaryen@101.0.0-nightly.20210723: + version "101.0.0-nightly.20210723" + resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-101.0.0-nightly.20210723.tgz#b6bb7f3501341727681a03866c0856500eec3740" + integrity sha512-eioJNqhHlkguVSbblHOtLqlhtC882SOEPKmNFZaDuz1hzQjolxZ+eu3/kaS10n3sGPONsIZsO7R9fR00UyhEUA== + +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + +bl@^4.0.3, 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" + +blob-to-it@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" + integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== + dependencies: + browser-readablestream-to-it "^1.0.3" + +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.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.2, body-parser@^1.19.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" + +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.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.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-level@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browser-level/-/browser-level-1.0.1.tgz#36e8c3183d0fe1c405239792faaab5f315871011" + integrity sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.1" + module-error "^1.0.2" + run-parallel-limit "^1.1.0" + +browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" + integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +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.1, 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" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ== + +builtins@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" + integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== + dependencies: + semver "^7.0.0" + +bunyan@^1.8.15: + version "1.8.15" + resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.15.tgz#8ce34ca908a17d0776576ca1b2f6cbd916e93b46" + integrity sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig== + optionalDependencies: + dtrace-provider "~0.8" + moment "^2.19.3" + mv "~2" + safe-json-stringify "~1" + +byte-access@^1.0.0, byte-access@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/byte-access/-/byte-access-1.0.1.tgz#84badd99be3671c03f0dd6a039a9c963983724af" + integrity sha512-GKYa+lvxnzhgHWj9X+LCsQ4s2/C5uvib573eAOiQKywXMkzFFErY2+yQdzmdE5iWVpmqecsRx3bOtOY4/1eINw== + dependencies: + uint8arraylist "^2.0.0" + +byte-size@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.0.tgz#36528cd1ca87d39bd9abd51f5715dc93b6ceb032" + integrity sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + +cacache@^17.0.0, cacache@^17.0.4: + version "17.1.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== + dependencies: + "@npmcli/fs" "^3.1.0" + fs-minipass "^3.0.0" + glob "^10.2.2" + lru-cache "^7.7.1" + minipass "^7.0.3" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + p-map "^4.0.0" + ssri "^10.0.0" + tar "^6.1.11" + unique-filename "^3.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.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== + +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.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +canonical-json@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/canonical-json/-/canonical-json-0.0.4.tgz#6579c072c3db5c477ec41dc978fbf2b8f41074a3" + integrity sha512-2sW7x0m/P7dqEnO0O87U7RTVQAaa7MELcd+Jd9FA6CYgYtwJ1TlDWIYMD8nuMkH1KoThsJogqgLyklrt9d/Azw== + +catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +cborg@^1.5.4, cborg@^1.6.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.2.tgz#83cd581b55b3574c816f82696307c7512db759a1" + integrity sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug== + +chai@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + +chalk@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^1.1.1: + 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.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" + +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== + +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.6.1: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +classic-level@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/classic-level/-/classic-level-1.4.1.tgz#169ecf9f9c6200ad42a98c8576af449c1badbaee" + integrity sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ== + dependencies: + abstract-level "^1.0.2" + catering "^2.1.0" + module-error "^1.0.1" + napi-macros "^2.2.2" + node-gyp-build "^4.3.0" + +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-color@~0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-0.1.7.tgz#adc3200fa471cc211b0da7f566b71e98b9d67347" + integrity sha512-xNaQxWYgI6DD4xIJLn8GY2zDZVbrN0vsU1fEbDNAHZRyceWhpj7A08mYcG1AY92q1Aw0geYkVfiAcEYIZtuTSg== + dependencies: + es5-ext "0.8.x" + +cli-cursor@3.1.0, 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-highlight@^2.1.11: + version "2.1.11" + resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf" + integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg== + dependencies: + chalk "^4.0.0" + highlight.js "^10.7.1" + mz "^2.4.0" + parse5 "^5.1.1" + parse5-htmlparser2-tree-adapter "^6.0.0" + yargs "^16.0.0" + +cli-spinners@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +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@^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" + +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-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" + +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== + +cmd-shim@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-5.0.0.tgz#8d0aaa1a6b0708630694c4dbde070ed94c707724" + integrity sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw== + dependencies: + mkdirp-infer-owner "^2.0.0" + +cmd-shim@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-6.0.3.tgz#c491e9656594ba17ac83c4bd931590a9d6e26033" + integrity sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA== + +color-convert@^1.9.0, color-convert@^1.9.3: + 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.0.0, 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== + +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +color@^3.1.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + +colorspace@1.1.x: + version "1.1.4" + resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" + integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== + dependencies: + color "^3.1.3" + text-hex "1.0.x" + +columnify@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + +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" + +commander@^2.20.3: + 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== + +common-ancestor-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" + integrity sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w== + +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + +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-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +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, 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== + +conventional-changelog-angular@5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-core@4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz#e50d047e8ebacf63fac3dc67bf918177001e1e9f" + integrity sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^5.0.0" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^4.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + through2 "^4.0.0" + +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz#e0757072f045fe03d91da6343c843029e702f359" + integrity sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ== + dependencies: + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.7" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz#a7d3b77758a202a9b2293d2112a8d8052c740972" + integrity sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +conventional-recommended-bump@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + +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.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +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.5: + 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@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + 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.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cron-parser@^4.0.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== + dependencies: + luxon "^3.2.1" + +cross-fetch@^3.1.4, cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +cross-spawn@^7.0.0, 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== + +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== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +dag-jose@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" + integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== + dependencies: + "@ipld/dag-cbor" "^6.0.3" + multiformats "^9.0.2" + +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +datastore-core@^8.0.1: + version "8.0.4" + resolved "https://registry.yarnpkg.com/datastore-core/-/datastore-core-8.0.4.tgz#a5951c8e530f0ba11ca44f6bb3ce5d7070a3d44e" + integrity sha512-oBA6a024NFXJOTu+w9nLAimfy4wCYUhdE/5XQGtdKt1BmCVtPYW10GORvVT3pdZBcse6k/mVcBl+hjkXIlm65A== + dependencies: + "@libp2p/logger" "^2.0.0" + err-code "^3.0.1" + interface-datastore "^7.0.0" + it-all "^2.0.0" + it-drain "^2.0.0" + it-filter "^2.0.0" + it-map "^2.0.0" + it-merge "^2.0.0" + it-pipe "^2.0.3" + it-pushable "^3.0.0" + it-take "^2.0.0" + uint8arrays "^4.0.2" + +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug@2.6.9, debug@^2.2.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.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" + +debug@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@^3.1.0, 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" + +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: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js@^10.3.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +dedent@0.7.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-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +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== + +default-gateway@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-7.2.2.tgz#85e6d88fde0f58703bab7744ed9d5330fa6b3f6c" + integrity sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg== + dependencies: + execa "^7.1.1" + +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" + +deferred-leveldown@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-7.0.0.tgz#39802715fda6ec06d0159a8b28bd1c7e2b1cf0bf" + integrity sha512-QKN8NtuS3BC6m0B8vAnBls44tX1WXAFATUsJlruyAYbZpysWV3siH6o/i3g9DCHauzodksO60bdj5NazNbjCmg== + dependencies: + abstract-leveldown "^7.2.0" + inherits "^2.0.3" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +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.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +del@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" + integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== + dependencies: + globby "^11.0.1" + graceful-fs "^4.2.4" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.2" + p-map "^4.0.0" + rimraf "^3.0.2" + slash "^3.0.0" + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +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== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +denque@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== + +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== + +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== + +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-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +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== + +difflib@~0.2.1: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.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" + +dns-over-http-resolver@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" + integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== + dependencies: + debug "^4.3.1" + native-fetch "^3.0.0" + receptacle "^1.3.2" + +dns-over-http-resolver@^2.1.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz#bb7f2e10cc18d960339a6e30e21b8c1d99be7b38" + integrity sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA== + dependencies: + debug "^4.3.1" + native-fetch "^4.0.2" + receptacle "^1.3.2" + undici "^5.12.0" + +dns-packet@^5.6.1: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + 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" + +dot-prop@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + +dot-prop@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv@^10.0.0, dotenv@~10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +dreamopt@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/dreamopt/-/dreamopt-0.6.0.tgz#d813ccdac8d39d8ad526775514a13dda664d6b4b" + integrity sha512-KRJa47iBEK0y6ZtgCgy2ykuvMT8c9gj3ua9Dv7vCkclFJJeH2FjhGY2xO5qBoWGahsjCGMlk4Cq9wJYeWxuYhQ== + dependencies: + wordwrap ">=0.0.2" + +dtrace-provider@~0.8: + version "0.8.8" + resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" + integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== + dependencies: + nan "^2.14.0" + +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== + +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.7: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-fetch@^1.7.2: + version "1.9.1" + resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" + integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== + dependencies: + encoding "^0.1.13" + +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" + +elliptic@^6.5.4: + version "6.5.5" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" + integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== + 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" + +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== + +enabled@2.0.x: + version "2.0.0" + resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" + integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== + +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== + +encoding-down@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-7.1.0.tgz#8d55b5a20d50eb6f0edaf7233f6aee0ff562386a" + integrity sha512-ky47X5jP84ryk5EQmvedQzELwVJPjCgXDQZGeb9F6r4PdChByCGHTBrVcF3h8ynKVJ1wVbkxTsDC8zBROPypgQ== + dependencies: + abstract-leveldown "^7.2.0" + inherits "^2.0.3" + level-codec "^10.0.0" + level-errors "^3.0.0" + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.4.1: + 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" + +enquirer@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.4: + version "7.13.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" + integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +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.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.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" + +es5-ext@0.8.x: + version "0.8.2" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.8.2.tgz#aba8d9e1943a895ac96837a62a39b3f55ecd94ab" + integrity sha512-H19ompyhnKiBdjHR1DPHvf5RHgHPmJaY9JNzFGbMbPgdsUkvnUCN1Ke8J4Y0IMyTwFM2M9l4h2GoHwzwpSmXbA== + +escalade@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +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@4.0.0, 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== + +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== + +eslint-config-semistandard@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-15.0.1.tgz#a868397af8fb26d1bb6b907aa9d575d385581099" + integrity sha512-sfV+qNBWKOmF0kZJll1VH5XqOAdTmLlhbOl9WKI11d2eMEe+Kicxnpm24PQWHOqAfk5pAWU2An0LjNCXKa4Usg== + +eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.27.5: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-plugin-standard@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4" + integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== + +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.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.35.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + 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.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + 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" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + 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.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +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.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: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +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== + +ethers@^5.1.4, ethers@^5.4.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" + +event-iterator@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/event-iterator/-/event-iterator-2.0.0.tgz#10f06740cc1e9fd6bc575f334c2bc1ae9d2dbf62" + integrity sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ== + +eventemitter3@^4.0.0, eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +events@^3.3.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.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" + integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== + 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" + +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" + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.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-end@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/express-end/-/express-end-0.0.8.tgz#0c8fd95428932158f2b4cf91f4045346bf2c5323" + integrity sha512-PPntzICAq006LBpXKBVJtmRUiCRqTMZ+OB8L2RFXgx+OmkMWU66IL4DTEPF/DOcxmsuC7Y0NdbT2R71lb+pBpg== + dependencies: + debug "^2.2.0" + +express-queue@^0.0.13: + version "0.0.13" + resolved "https://registry.yarnpkg.com/express-queue/-/express-queue-0.0.13.tgz#e9800d67749d4dfab7c34223f00595af933ce5df" + integrity sha512-C4OEDasGDqpXLrZICSUxbY47p5c0bKqf/3/3hwauSCmI+jVVxKBWU2w39BuKLP6nF65z87uDFBbJMPAn2ZrG3g== + dependencies: + debug "^4.3.4" + express-end "0.0.8" + mini-queue "0.0.14" + +express@^4.18.2: + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.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" + +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" + +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-fifo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" + integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== + +fast-glob@3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + 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-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fecha@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +figlet@^1.1.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.7.0.tgz#46903a04603fd19c3e380358418bb2703587a72e" + integrity sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg== + +figures@3.2.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-url@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/file-url/-/file-url-3.0.0.tgz#247a586a746ce9f7a8ed05560290968afc262a77" + integrity sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA== + +filelist@^1.0.4: + 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" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + 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@5.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" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.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" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +fn.name@1.x.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" + integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== + +follow-redirects@^1.0.0, follow-redirects@^1.15.6: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +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" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + 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== + +freeport-promise@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/freeport-promise/-/freeport-promise-2.0.0.tgz#11e4f81e24d680b88a20c15b2103551f4b6663d8" + integrity sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg== + +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-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@9.1.0, fs-extra@^9.1.0: + 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-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@^11.1.0: + version "11.2.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" + integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-minipass@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== + dependencies: + minipass "^7.0.3" + +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.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +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.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + 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== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gauge@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-5.0.2.tgz#7ab44c11181da9766333f10db8cd1e4b17fd6c46" + integrity sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^4.0.1" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +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-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-iterator@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" + integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== + +get-iterator@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-2.0.1.tgz#a904829f61bace789e0d64bd1a504c511a015c3f" + integrity sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg== + +get-pkg-repo@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" + integrity sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA== + dependencies: + "@hutson/parse-repository-url" "^3.0.0" + hosted-git-info "^4.0.0" + through2 "^2.0.0" + yargs "^16.2.0" + +get-port@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" + integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== + +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.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +get-value@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +git-raw-commits@^2.0.8: + version "2.0.11" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.11.tgz#bc3576638071d18655e1cc60d7f524920008d723" + integrity sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw== + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + +git-up@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-7.0.0.tgz#bace30786e36f56ea341b6f69adfd83286337467" + integrity sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ== + dependencies: + is-ssh "^1.4.0" + parse-url "^8.1.0" + +git-url-parse@13.1.0: + version "13.1.0" + resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-13.1.0.tgz#07e136b5baa08d59fabdf0e33170de425adf07b4" + integrity sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA== + dependencies: + git-up "^7.0.0" + +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ== + dependencies: + ini "^1.3.2" + +glob-parent@5.1.2, glob-parent@^5.1.2, glob-parent@~5.1.0: + 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@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + 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@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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.2.2: + version "10.4.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" + integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + path-scurry "^1.11.1" + +glob@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" + integrity sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5, 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" + +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^9.2.0: + version "9.3.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" + integrity sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q== + dependencies: + fs.realpath "^1.0.0" + minimatch "^8.0.2" + minipass "^4.2.4" + path-scurry "^1.6.1" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@11.1.0, globby@^11.0.1, 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" + +graceful-fs@4.2.10: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, 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: + 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== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +graphql-request@^6.1.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-subscriptions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-2.0.0.tgz#11ec181d475852d8aec879183e8e1eb94f2eb79a" + integrity sha512-s6k2b8mmt9gF9pEfkxsaO1lTxaySfKoEJzEfmwguBbQ//Oq23hIXCfR1hm4kdh5hnR20RdwB+s3BCb+0duHSZA== + dependencies: + iterall "^1.3.0" + +graphql-tag@^2.11.0, graphql-tag@^2.12.6: + 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.11.2: + version "5.16.0" + resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-5.16.0.tgz#849efe02f384b4332109329be01d74c345842729" + integrity sha512-Ju2RCU2dQMgSKtArPbEtsK5gNLnsQyTNIo/T7cZNp96niC1x0KdJNZV0TIoilceBPQwfb5itrGl8pkFeOUMl4A== + +graphql@^15.5.0: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +handlebars@^4.7.7: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +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, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +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, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +has-unicode@2.0.1, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +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-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== + +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" + +hashlru@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/hashlru/-/hashlru-2.3.0.tgz#5dc15928b3f6961a2056416bb3a4910216fdfb51" + integrity sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A== + +hasown@^2.0.0, hasown@^2.0.1, 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== + +"heap@>= 0.2.0", heap@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +highlight.js@^10.7.1: + version "10.7.3" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" + integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A== + +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" + +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +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@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.8.tgz#6e35d4cc87af2c5f816e4cb9ce350ba87a3f370d" + integrity sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw== + dependencies: + lru-cache "^6.0.0" + +hosted-git-info@^4.0.0, 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" + +hosted-git-info@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^6.0.0, hosted-git-info@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-6.1.1.tgz#629442c7889a69c05de604d52996b74fe6f26d58" + integrity sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w== + dependencies: + lru-cache "^7.5.1" + +hosted-git-info@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.2.tgz#9b751acac097757667f30114607ef7b661ff4f17" + integrity sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w== + dependencies: + lru-cache "^10.0.1" + +http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: + 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-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-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.6: + 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" + +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" + +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== + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +husky@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + +iconv-lite@0.4.24, 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.2: + 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" + +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-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + +ignore-walk@^6.0.0: + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== + dependencies: + minimatch "^9.0.0" + +ignore@^5.0.4, ignore@^5.1.1, ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +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== + +index-to-position@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/index-to-position/-/index-to-position-0.1.2.tgz#e11bfe995ca4d8eddb1ec43274488f3c201a7f09" + integrity sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +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.1, 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== + +ini@^1.3.2, ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +init-package-json@3.0.2, init-package-json@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-3.0.2.tgz#f5bc9bac93f2bdc005778bc2271be642fecfcd69" + integrity sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A== + dependencies: + npm-package-arg "^9.0.1" + promzard "^0.3.0" + read "^1.0.7" + read-package-json "^5.0.0" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^4.0.0" + +inquirer@8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + 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 "^7.0.0" + +inquirer@^8.2.4: + 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-datastore@^6.0.2: + version "6.1.1" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" + integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== + dependencies: + interface-store "^2.0.2" + nanoid "^3.0.2" + uint8arrays "^3.0.0" + +interface-datastore@^7.0.0, interface-datastore@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-7.0.4.tgz#f09ae4e2896f57f876d5d742a59e982fb3f42891" + integrity sha512-Q8LZS/jfFFHz6XyZazLTAc078SSCoa27ZPBOfobWdpDiFO7FqPA2yskitUJIhaCgxNK8C+/lMBUTBNfVIDvLiw== + dependencies: + interface-store "^3.0.0" + nanoid "^4.0.0" + uint8arrays "^4.0.2" + +interface-datastore@^8.2.0, interface-datastore@^8.2.11: + version "8.2.11" + resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-8.2.11.tgz#1d555ce6218ab6cba6291fc361debe9713590207" + integrity sha512-9E0iXehfp/j0UbZ2mvlYB4K9pP7uQBCppfuy8WHs1EHF6wLQrM9+zwyX+8Qt6HnH4GKZRyXX/CNXm6oD4+QYgA== + dependencies: + interface-store "^5.0.0" + uint8arrays "^5.0.2" + +interface-store@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" + integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== + +interface-store@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" + integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== + +interface-store@^5.0.0: + version "5.1.8" + resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-5.1.8.tgz#94bf867d165b5c904cccf09adeba215a5b0f459e" + integrity sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w== + +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ip-regex@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" + integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== + +ip-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-5.0.0.tgz#cd313b2ae9c80c07bd3851e12bf4fa4dc5480632" + integrity sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw== + +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.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +ipfs-core-types@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" + integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== + dependencies: + "@ipld/dag-pb" "^2.1.3" + interface-datastore "^6.0.2" + ipfs-unixfs "^6.0.3" + multiaddr "^10.0.0" + multiformats "^9.5.1" + +ipfs-core-utils@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" + integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== + dependencies: + any-signal "^3.0.0" + blob-to-it "^1.0.1" + browser-readablestream-to-it "^1.0.1" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.3" + ipfs-unixfs "^6.0.3" + ipfs-utils "^9.0.6" + it-all "^1.0.4" + it-map "^1.0.4" + it-peekable "^1.0.2" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiaddr-to-uri "^8.0.0" + multiformats "^9.5.1" + nanoid "^3.1.23" + parse-duration "^1.0.0" + timeout-abort-controller "^3.0.0" + uint8arrays "^3.0.0" + +ipfs-http-client@^56.0.3: + version "56.0.3" + resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.3.tgz#45bbea55347ef13524769d5919cbed84d9d022d6" + integrity sha512-E3L5ylVl6BjyRUsNehvfuRBYp1hj8vQ8in4zskVPMNzXs6JiCFUbif5a6BtcAlSK4xPQyJCeLNNAWLUeFQTLNA== + dependencies: + "@ipld/dag-cbor" "^7.0.0" + "@ipld/dag-json" "^8.0.1" + "@ipld/dag-pb" "^2.1.3" + any-signal "^3.0.0" + dag-jose "^1.0.0" + debug "^4.1.1" + err-code "^3.0.1" + ipfs-core-types "^0.10.3" + ipfs-core-utils "^0.14.3" + ipfs-utils "^9.0.6" + it-first "^1.0.6" + it-last "^1.0.4" + merge-options "^3.0.4" + multiaddr "^10.0.0" + multiformats "^9.5.1" + parse-duration "^1.0.0" + stream-to-it "^0.2.2" + uint8arrays "^3.0.0" + +ipfs-unixfs@^6.0.3: + version "6.0.9" + resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" + integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== + dependencies: + err-code "^3.0.1" + protobufjs "^6.10.2" + +ipfs-utils@^9.0.6: + version "9.0.14" + resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" + integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== + dependencies: + any-signal "^3.0.0" + browser-readablestream-to-it "^1.0.0" + buffer "^6.0.1" + electron-fetch "^1.7.2" + err-code "^3.0.1" + is-electron "^2.2.0" + iso-url "^1.1.5" + it-all "^1.0.4" + it-glob "^1.0.1" + it-to-stream "^1.0.0" + merge-options "^3.0.4" + nanoid "^3.1.20" + native-fetch "^3.0.0" + node-fetch "^2.6.8" + react-native-fetch-api "^3.0.0" + stream-to-it "^0.2.2" + +is-arguments@^1.0.4: + 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.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +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-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +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-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +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-ci@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.13.0, is-core-module@^2.13.1, is-core-module@^2.5.0, is-core-module@^2.8.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +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-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-electron@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" + integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +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-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-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-ip@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" + integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== + dependencies: + ip-regex "^4.0.0" + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-loopback-addr@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz#70a6668fa3555d47caebdcee045745ab80adf5e4" + integrity sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg== + +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.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.2, 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.0.0, 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-plain-object@^2.0.1, 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-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +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-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== + dependencies: + protocols "^2.0.1" + +is-stream@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +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-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +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-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w== + dependencies: + text-extensions "^1.0.0" + +is-typed-array@^1.1.13, is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +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-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-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@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +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== + +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== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iso-random-stream@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/iso-random-stream/-/iso-random-stream-2.0.2.tgz#a24f77c34cfdad9d398707d522a6a0cc640ff27d" + integrity sha512-yJvs+Nnelic1L2vH2JzWvvPQFA4r7kSTnpST/+LkAQjSz0hos2oqLD+qIVi9Qk38Hoe7mNDt3j0S27R58MVjLQ== + dependencies: + events "^3.3.0" + readable-stream "^3.4.0" + +iso-url@^1.1.2, iso-url@^1.1.5: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" + integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== + +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== + +it-all@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" + integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== + +it-all@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" + integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== + +it-batched-bytes@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/it-batched-bytes/-/it-batched-bytes-1.0.1.tgz#a3b12a10db24308c76a1126032af9184afc2dc63" + integrity sha512-ptBiZ0Mh3kJYySpG0pCS7JgvWhaAW1fGfKDVFtNIuNTA+bpSlXINvD5H3b14ZlJbnJFzFzRSCSZ10E1nH4z/WQ== + dependencies: + it-stream-types "^1.0.4" + p-defer "^4.0.0" + uint8arraylist "^2.4.1" + +it-drain@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" + integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== + +it-filter@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" + integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== + +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-first@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" + integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== + +it-first@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/it-first/-/it-first-3.0.6.tgz#f532f0f36fe9bf0c291e0162b9d3375d59fe8f05" + integrity sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ== + +it-foreach@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/it-foreach/-/it-foreach-1.0.1.tgz#a4dab99c111457d1480bef6c4f9382076d9a6b81" + integrity sha512-eaVFhKxU+uwPs7+DKYxjuL6pj6c50/MBlAH+XPMgPWRRVIChVoyEIsdUQkkC0Ad6oTUmJbKRTnJxEY6o2aIs7A== + +it-glob@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" + integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== + dependencies: + "@types/minimatch" "^3.0.4" + minimatch "^3.0.4" + +it-handshake@^4.1.2, it-handshake@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/it-handshake/-/it-handshake-4.1.3.tgz#4e6650f8eff5cb3686c6861958645289fb3dc32a" + integrity sha512-V6Lt9A9usox9iduOX+edU1Vo94E6v9Lt9dOvg3ubFaw1qf5NCxXLi93Ao4fyCHWDYd8Y+DUhadwNtWVyn7qqLg== + dependencies: + it-pushable "^3.1.0" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + p-defer "^4.0.0" + uint8arraylist "^2.0.0" + +it-last@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" + integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== + +it-length-prefixed@^8.0.2, it-length-prefixed@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/it-length-prefixed/-/it-length-prefixed-8.0.4.tgz#80bd356d93d77a8989a71200f8ca0860db040404" + integrity sha512-5OJ1lxH+IaqJB7lxe8IAIwt9UfSfsmjKJoAI/RO9djYoBDt1Jfy9PeVHUmOfqhqyu/4kJvWBFAJUaG1HhLQ12A== + dependencies: + err-code "^3.0.1" + it-stream-types "^1.0.4" + uint8-varint "^1.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^4.0.2" + +it-length-prefixed@^9.0.0: + version "9.0.4" + resolved "https://registry.yarnpkg.com/it-length-prefixed/-/it-length-prefixed-9.0.4.tgz#8096c3270420fe8abaa920c7b4d5e5895144008e" + integrity sha512-lz28fykbG0jq7s5XtvlzGxO5BeSOw6ikymkRllxjL21V5VKLcvB4pHr9wPvEnsAJ2et1xpOk3BRTMq9XrhgKsg== + dependencies: + err-code "^3.0.1" + it-reader "^6.0.1" + it-stream-types "^2.0.1" + uint8-varint "^2.0.1" + uint8arraylist "^2.0.0" + uint8arrays "^5.0.1" + +it-map@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" + integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== + +it-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-map/-/it-map-2.0.1.tgz#d5251fd6b222d6ee39293d406a3f8fce54fb9220" + integrity sha512-a2GcYDHiAh/eSU628xlvB56LA98luXZnniH2GlD0IdBzf15shEq9rBeb0Rg3o1SWtNILUAwqmQxEXcewGCdvmQ== + +it-merge@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-2.0.1.tgz#6137c63f0dbdcb3b8b74ec67549f2b3351c84da8" + integrity sha512-ItoBy3dPlNKnhjHR8e7nfabfZzH4Jy2OMPvayYH3XHy4YNqSVKmWTIxhz7KX4UMBsLChlIJZ+5j6csJgrYGQtw== + dependencies: + it-pushable "^3.1.0" + +it-merge@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/it-merge/-/it-merge-3.0.5.tgz#2b0d1d07c825b9d20c4c2889aab8e07322fd803e" + integrity sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA== + dependencies: + it-pushable "^3.2.3" + +it-pair@^2.0.2: + version "2.0.6" + resolved "https://registry.yarnpkg.com/it-pair/-/it-pair-2.0.6.tgz#072defa6b96f611af34e0b0c84573107ddb9f28f" + integrity sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g== + dependencies: + it-stream-types "^2.0.1" + p-defer "^4.0.0" + +it-pb-stream@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/it-pb-stream/-/it-pb-stream-3.2.1.tgz#58ad0b1268894d6eb05c17110e22326a33884a46" + integrity sha512-vKE04Zv5MUcwxPNE9bIEfYK3rd/Klj5ORGD1D8Bn5f0mbCLGfouSrqZP1Jntg2osqQg4BN5dKKS2BbfwyGUI3Q== + dependencies: + err-code "^3.0.1" + it-length-prefixed "^9.0.0" + it-pushable "^3.1.2" + it-stream-types "^1.0.4" + protons-runtime "^5.0.0" + uint8-varint "^1.0.6" + uint8arraylist "^2.0.0" + +it-peekable@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" + integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== + +it-pipe@^2.0.3, it-pipe@^2.0.4, it-pipe@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-2.0.5.tgz#9caf7993dcbbc3824bc6ef64ee8b94574f65afa7" + integrity sha512-y85nW1N6zoiTnkidr2EAyC+ZVzc7Mwt2p+xt2a2ooG1ThFakSpNw1Kxm+7F13Aivru96brJhjQVRQNU+w0yozw== + dependencies: + it-merge "^2.0.0" + it-pushable "^3.1.0" + it-stream-types "^1.0.3" + +it-pipe@^3.0.0, it-pipe@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/it-pipe/-/it-pipe-3.0.1.tgz#b25720df82f4c558a8532602b5fbc37bbe4e7ba5" + integrity sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA== + dependencies: + it-merge "^3.0.0" + it-pushable "^3.1.2" + it-stream-types "^2.0.1" + +it-pushable@^3.0.0, it-pushable@^3.1.0, it-pushable@^3.1.2, it-pushable@^3.1.3, it-pushable@^3.2.0, it-pushable@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/it-pushable/-/it-pushable-3.2.3.tgz#e2b80aed90cfbcd54b620c0a0785e546d4e5f334" + integrity sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg== + dependencies: + p-defer "^4.0.0" + +it-reader@^6.0.1: + version "6.0.4" + resolved "https://registry.yarnpkg.com/it-reader/-/it-reader-6.0.4.tgz#439cb88225dcd15116be0ffde9e846a928c3871a" + integrity sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg== + dependencies: + it-stream-types "^2.0.1" + uint8arraylist "^2.0.0" + +it-sort@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-sort/-/it-sort-2.0.1.tgz#37af025862f7adb30d7fc1f8520b3cd7ef219ef6" + integrity sha512-9f4jKOTHfxc/FJpg/wwuQ+j+88i+sfNGKsu2HukAKymm71/XDnBFtOAOzaimko3YIhmn/ERwnfEKrsYLykxw9A== + dependencies: + it-all "^2.0.0" + +it-stream-types@^1.0.2, it-stream-types@^1.0.3, it-stream-types@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-1.0.5.tgz#9c72e6adefdea9dac69d0a28fbea783deebd508d" + integrity sha512-I88Ka1nHgfX62e5mi5LLL+oueqz7Ltg0bUdtsUKDe9SoUqbQPf2Mp5kxDTe9pNhHQGs4pvYPAINwuZ1HAt42TA== + +it-stream-types@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-stream-types/-/it-stream-types-2.0.1.tgz#69cb4d7e79e707b8257a8997e02751ccb6c3af32" + integrity sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg== + +it-take@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" + integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== + +it-to-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" + integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== + dependencies: + buffer "^6.0.3" + fast-fifo "^1.0.0" + get-iterator "^1.0.2" + p-defer "^3.0.0" + p-fifo "^1.0.0" + readable-stream "^3.6.0" + +it-ws@^5.0.6: + version "5.0.6" + resolved "https://registry.yarnpkg.com/it-ws/-/it-ws-5.0.6.tgz#9b69ff2ef9d08fda18ef2db604acf972d0fedded" + integrity sha512-TEEJQaGtkxgP/nGVq8dq48nPT85Afu8kwwvtDFLj4rQLWRhZcb26RWdXLdn9qhXkWPiWbK5H7JWBW1Bebj/SuQ== + dependencies: + event-iterator "^2.0.0" + iso-url "^1.1.2" + it-stream-types "^1.0.2" + uint8arrays "^4.0.2" + ws "^8.4.0" + +iterall@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +jackspeak@^3.1.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.0.tgz#a75763ff36ad778ede6a156d8ee8b124de445b4a" + integrity sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.1" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" + integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +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@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + +js-yaml@4.1.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" + +js-yaml@^3.10.0: + 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" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + +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-diff@^0.5.4: + version "0.5.5" + resolved "https://registry.yarnpkg.com/json-diff/-/json-diff-0.5.5.tgz#24658ad200dbdd64ae8a56baf4d87b2b33d7196e" + integrity sha512-B2RSfPv8Y5iqm6/9aKC3cOhXPzjYupKDpGuqT5py9NRulL8J0UoB/zKXUo70xBsuxPcIFgtsGgEdXLrNp0GL7w== + dependencies: + cli-color "~0.1.6" + difflib "~0.2.1" + dreamopt "~0.6.0" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +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-parse-even-better-errors@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== + +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-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-nice@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz#2c937962b80181d3f317dd39aa323e14f5a60a67" + integrity sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw== + +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.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +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" + +jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +just-diff-apply@^5.2.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/just-diff-apply/-/just-diff-apply-5.5.0.tgz#771c2ca9fa69f3d2b54e7c3f5c1dfcbcc47f9f0f" + integrity sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw== + +just-diff@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/just-diff/-/just-diff-6.0.2.tgz#03b65908543ac0521caf6d8eb85035f7d27ea285" + integrity sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA== + +keyv@^4.5.3: + 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== + +kuler@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" + integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== + +left-pad@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA== + +lerna@^6.6.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-6.6.2.tgz#ad921f913aca4e7307123a598768b6f15ca5804f" + integrity sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg== + dependencies: + "@lerna/child-process" "6.6.2" + "@lerna/create" "6.6.2" + "@lerna/legacy-package-management" "6.6.2" + "@npmcli/arborist" "6.2.3" + "@npmcli/run-script" "4.1.7" + "@nrwl/devkit" ">=15.5.2 < 16" + "@octokit/plugin-enterprise-rest" "6.0.1" + "@octokit/rest" "19.0.3" + byte-size "7.0.0" + chalk "4.1.0" + clone-deep "4.0.1" + cmd-shim "5.0.0" + columnify "1.6.0" + config-chain "1.1.12" + conventional-changelog-angular "5.0.12" + conventional-changelog-core "4.2.4" + conventional-recommended-bump "6.1.0" + cosmiconfig "7.0.0" + dedent "0.7.0" + dot-prop "6.0.1" + envinfo "^7.7.4" + execa "5.0.0" + fs-extra "9.1.0" + get-port "5.1.1" + get-stream "6.0.0" + git-url-parse "13.1.0" + glob-parent "5.1.2" + globby "11.1.0" + graceful-fs "4.2.10" + has-unicode "2.0.1" + import-local "^3.0.2" + init-package-json "3.0.2" + inquirer "^8.2.4" + is-ci "2.0.0" + is-stream "2.0.0" + js-yaml "^4.1.0" + libnpmaccess "^6.0.3" + libnpmpublish "7.1.4" + load-json-file "6.2.0" + make-dir "3.1.0" + minimatch "3.0.5" + multimatch "5.0.0" + node-fetch "2.6.7" + npm-package-arg "8.1.1" + npm-packlist "5.1.1" + npm-registry-fetch "^14.0.3" + npmlog "^6.0.2" + nx ">=15.5.2 < 16" + p-map "4.0.0" + p-map-series "2.1.0" + p-pipe "3.1.0" + p-queue "6.6.2" + p-reduce "2.1.0" + p-waterfall "2.1.1" + pacote "15.1.1" + pify "5.0.0" + read-cmd-shim "3.0.0" + read-package-json "5.0.1" + resolve-from "5.0.0" + rimraf "^4.4.1" + semver "^7.3.8" + signal-exit "3.0.7" + slash "3.0.0" + ssri "9.0.1" + strong-log-transformer "2.1.0" + tar "6.1.11" + temp-dir "1.0.0" + typescript "^3 || ^4" + upath "^2.0.1" + uuid "8.3.2" + validate-npm-package-license "3.0.4" + validate-npm-package-name "4.0.0" + write-file-atomic "4.0.1" + write-pkg "4.0.0" + yargs "16.2.0" + yargs-parser "20.2.4" + +level-codec@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-10.0.0.tgz#f9e892770532c6cdcc83529546730791b0c62c12" + integrity sha512-QW3VteVNAp6c/LuV6nDjg7XDXx9XHK4abmQarxZmlRSDyXYk20UdaJTSX6yzVvQ4i0JyWSB7jert0DsyD/kk6g== + dependencies: + buffer "^6.0.3" + +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-errors@^3.0.0, level-errors@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-3.0.1.tgz#4bed48a33108cd83b0e39fdf9bbd84e96fbbef9f" + integrity sha512-tqTL2DxzPDzpwl0iV5+rBCv65HWbHp6eutluHNcVIftKZlQN//b6GEnZDM2CvGZvzGYMwyPtYppYnydBQd2SMQ== + +level-iterator-stream@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-5.0.0.tgz#85b3438e1b4c54ce5aa8c0eb973cfb628117df9e" + integrity sha512-wnb1+o+CVFUDdiSMR/ZymE2prPs3cjVLlXuDeSq9Zb8o032XrabGEXcTCsBxprAtseO3qvFeGzh6406z9sOTRA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + +level-js@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-6.1.0.tgz#982ee9e583fca801aa75689c041995d0e7aab4ef" + integrity sha512-i7mPtkZm68aewfv0FnIUWvFUFfoyzIvVKnUmuQGrelEkP72vSPTaA1SGneWWoCV5KZJG4wlzbJLp1WxVNGuc6A== + dependencies: + abstract-leveldown "^7.2.0" + buffer "^6.0.3" + inherits "^2.0.3" + ltgt "^2.1.2" + run-parallel-limit "^1.1.0" + +level-packager@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-6.0.1.tgz#46b521e63df7f9728543f6792c0a8fe967e679a0" + integrity sha512-8Ezr0XM6hmAwqX9uu8IGzGNkWz/9doyPA8Oo9/D7qcMI6meJC+XhIbNYHukJhIn8OGdlzQs/JPcL9B8lA2F6EQ== + dependencies: + encoding-down "^7.1.0" + levelup "^5.1.1" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +level-supports@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-4.0.1.tgz#431546f9d81f10ff0fea0e74533a0e875c08c66a" + integrity sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA== + +level-transcoder@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-transcoder/-/level-transcoder-1.0.1.tgz#f8cef5990c4f1283d4c86d949e73631b0bc8ba9c" + integrity sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w== + dependencies: + buffer "^6.0.3" + module-error "^1.0.1" + +level@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-7.0.1.tgz#05121748d95a4ff7355860d56eb5d0aa36faef2a" + integrity sha512-w3E64+ALx2eZf8RV5JL4kIcE0BFAvQscRYd1yU4YVqZN9RGTQxXSvH202xvK15yZwFFxRXe60f13LJjcJ//I4Q== + dependencies: + level-js "^6.1.0" + level-packager "^6.0.1" + leveldown "^6.1.0" + +level@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/level/-/level-8.0.1.tgz#737161db1bc317193aca4e7b6f436e7e1df64379" + integrity sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ== + dependencies: + abstract-level "^1.0.4" + browser-level "^1.0.1" + classic-level "^1.2.0" + +leveldown@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" + integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + +levelup@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-5.1.1.tgz#9f99699f414ac084a3f8a28fc262a1f49cd7a52c" + integrity sha512-0mFCcHcEebOwsQuk00WJwjLI6oCjbBuEYdh/RaRqhjnyVlzqf41T1NnDtCedumZ56qyIh8euLFDqV1KfzTAVhg== + dependencies: + catering "^2.0.0" + deferred-leveldown "^7.0.0" + level-errors "^3.0.1" + level-iterator-stream "^5.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +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" + +libnpmaccess@^6.0.3: + version "6.0.4" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-6.0.4.tgz#2dd158bd8a071817e2207d3b201d37cf1ad6ae6b" + integrity sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^9.0.1" + npm-registry-fetch "^13.0.0" + +libnpmpublish@7.1.4: + version "7.1.4" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-7.1.4.tgz#a0d138e00e52a0c71ffc82273acf0082fc2dfb36" + integrity sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg== + dependencies: + ci-info "^3.6.1" + normalize-package-data "^5.0.0" + npm-package-arg "^10.1.0" + npm-registry-fetch "^14.0.3" + proc-log "^3.0.0" + semver "^7.3.7" + sigstore "^1.4.0" + ssri "^10.0.1" + +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== + +lines-and-columns@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42" + integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A== + +load-json-file@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.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.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g== + +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@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^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" + +logform@^2.3.2, logform@^2.4.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" + integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== + dependencies: + "@colors/colors" "1.6.0" + "@types/triple-beam" "^1.3.2" + fecha "^4.2.0" + ms "^2.1.1" + safe-stable-stringify "^2.3.1" + triple-beam "^1.3.0" + +loglevel@^1.6.8: + version "1.9.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7" + integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg== + +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== + +long@^5.0.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + +longbits@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/longbits/-/longbits-1.1.0.tgz#d6a7b2411dead1cf4b79ee4586816e65c7356ab9" + integrity sha512-22U2exkkYy7sr7nuQJYx2NEZ2kEMsC69+BxM5h8auLvkVIJa+LwAB5mFIExnuW2dFuYXFOWsFMKXjaWiq/htYQ== + dependencies: + byte-access "^1.0.1" + uint8arraylist "^2.0.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" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +"lru-cache@7.10.1 - 7.13.1": + version "7.13.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.13.1.tgz#267a81fbd0881327c46a81c5922606a2cfe336c4" + integrity sha512-CHqbAq7NFlW3RSnoWXLJBxCWaZVBrfa9UEHId2M3AW8iEBurbqduNexEUCGc3SHc6iCYXNJCDi903LajSVAEPQ== + +lru-cache@^10.0.0, lru-cache@^10.0.1, lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + +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-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +ltgt@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +luxon@^3.2.1: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + +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" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.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== + +make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + +make-fetch-happen@^11.0.0, make-fetch-happen@^11.0.1, make-fetch-happen@^11.1.1: + version "11.1.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz#85ceb98079584a9523d4bf71d32996e7e208549f" + integrity sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^17.0.0" + http-cache-semantics "^4.1.1" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^10.0.0" + +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== + +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== + +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + 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== + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== + dependencies: + braces "^3.0.3" + 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.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-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +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-queue@0.0.14: + version "0.0.14" + resolved "https://registry.yarnpkg.com/mini-queue/-/mini-queue-0.0.14.tgz#83d2f3f908e3cac5390bd986d1e6fbbfa0d95b93" + integrity sha512-DNh9Wn8U1jrmn1yVfpviwClyER/Y4ltgGbG+LF/KIdKJ8BEo2Q9jDDPG7tEhz6F/DTZ/ohv5D7AAXFVSFyP05Q== + dependencies: + debug "^3.1.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@2 || 3", minimatch@^3.0.3, 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@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimatch@3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" + integrity sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw== + 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@^6.1.6: + version "6.2.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-6.2.0.tgz#2b70fd13294178c69c04dfc05aebdb97a4e79e42" + integrity sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^8.0.2: + version "8.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" + integrity sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.0, minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + 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-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-fetch@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== + dependencies: + minipass "^7.0.3" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^4.0.0, minipass@^4.2.4: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== + dependencies: + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +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" + +mocha@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" + integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +module-error@^1.0.1, module-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/module-error/-/module-error-1.0.2.tgz#8d1a48897ca883f47a45816d4fb3e3c6ba404d86" + integrity sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA== + +mokka@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/mokka/-/mokka-1.4.2.tgz#b0d7117e216672ff2deda6ef2212bcfa0edb8114" + integrity sha512-Vgki/Fr9fqUMZzChGC1yH64AQg+qkMdZZe3xKrTwYBVGEuq8j2GdnDg8voYXwWl+MLfNzWBnNiejq2xZ8PmojA== + dependencies: + bn.js "^5.2.0" + elliptic "^6.5.4" + +moment@^2.19.3: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +mortice@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/mortice/-/mortice-3.0.4.tgz#34aadef768161e9dc49a7f73637b7858bcb7c6fa" + integrity sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ== + dependencies: + observable-webworkers "^2.0.1" + p-queue "^8.0.1" + p-timeout "^6.0.0" + +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.0.0, 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== + +multiaddr-to-uri@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" + integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== + dependencies: + multiaddr "^10.0.0" + +multiaddr@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" + integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== + dependencies: + dns-over-http-resolver "^1.2.3" + err-code "^3.0.1" + is-ip "^3.1.0" + multiformats "^9.4.5" + uint8arrays "^3.0.0" + varint "^6.0.0" + +multiformats@^11.0.0, multiformats@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" + integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== + +multiformats@^12.0.1: + version "12.1.3" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-12.1.3.tgz#cbf7a9861e11e74f8228b21376088cb43ba8754e" + integrity sha512-eajQ/ZH7qXZQR2AgtfpmSMizQzmyYVmCql7pdhldPuYQi4atACekbJaQplk6dWyIi10jCaFnd6pqvcEFXjbaJw== + +multiformats@^13.0.0, multiformats@^13.1.0: + version "13.1.1" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-13.1.1.tgz#b22ce4df26330d2cf0d69f5bdcbc9a787095a6e5" + integrity sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q== + +multiformats@^9.0.2, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.4.8, multiformats@^9.5.1, multiformats@^9.5.4: + version "9.9.0" + resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" + integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== + +multimatch@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +mv@~2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" + integrity sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg== + dependencies: + mkdirp "~0.5.1" + ncp "~2.0.0" + rimraf "~2.4.0" + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.14.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" + integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== + +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +nanoid@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + +napi-macros@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044" + integrity sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g== + +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + +native-fetch@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" + integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== + +native-fetch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-4.0.2.tgz#75c8a44c5f3bb021713e5e24f2846750883e49af" + integrity sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg== + +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== + +ncp@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" + integrity sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA== + +negotiator@0.6.3, 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== + +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + +node-abort-controller@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" + integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== + +node-addon-api@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +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.12, node-fetch@^2.6.7, node-fetch@^2.6.8: + 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.1.0: + 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.3.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" + integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== + +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +nopt@^7.0.0: + version "7.2.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7" + integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w== + dependencies: + abbrev "^2.0.0" + +normalize-package-data@^2.3.2, 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-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-package-data@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-5.0.0.tgz#abcb8d7e724c40d88462b84982f7cbf6859b4588" + integrity sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q== + dependencies: + hosted-git-info "^6.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-package-data@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-6.0.1.tgz#fa69e9452210f0fabf4d79ee08d0c2870c51ed88" + integrity sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ== + dependencies: + hosted-git-info "^7.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +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-bundled@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-bundled@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-3.0.1.tgz#cca73e15560237696254b10170d8f86dad62da25" + integrity sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ== + dependencies: + npm-normalize-package-bin "^3.0.0" + +npm-install-checks@^6.0.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-normalize-package-bin@^3.0.0, npm-normalize-package-bin@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz#25447e32a9a7de1f51362c61a559233b89947832" + integrity sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ== + +npm-package-arg@8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.1.tgz#00ebf16ac395c63318e67ce66780a06db6df1b04" + integrity sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg== + dependencies: + hosted-git-info "^3.0.6" + semver "^7.0.0" + validate-npm-package-name "^3.0.0" + +npm-package-arg@^10.0.0, npm-package-arg@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-10.1.0.tgz#827d1260a683806685d17193073cc152d3c7e9b1" + integrity sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA== + dependencies: + hosted-git-info "^6.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + +npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-packlist@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.1.tgz#79bcaf22a26b6c30aa4dd66b976d69cc286800e0" + integrity sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^1.1.2" + npm-normalize-package-bin "^1.0.1" + +npm-packlist@^7.0.0: + version "7.0.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" + integrity sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q== + dependencies: + ignore-walk "^6.0.0" + +npm-pick-manifest@^8.0.0, npm-pick-manifest@^8.0.1: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + +npm-registry-fetch@14.0.3: + version "14.0.3" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.3.tgz#8545e321c2b36d2c6fe6e009e77e9f0e527f547b" + integrity sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^4.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +npm-registry-fetch@^13.0.0: + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + +npm-registry-fetch@^14.0.0, npm-registry-fetch@^14.0.3: + version "14.0.5" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" + integrity sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA== + dependencies: + make-fetch-happen "^11.0.0" + minipass "^5.0.0" + minipass-fetch "^3.0.0" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^10.0.0" + proc-log "^3.0.0" + +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" + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +npmlog@6.0.2, npmlog@^6.0.0, npmlog@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +npmlog@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-7.0.1.tgz#7372151a01ccb095c47d8bf1d0771a4ff1f53ac8" + integrity sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg== + dependencies: + are-we-there-yet "^4.0.0" + console-control-strings "^1.1.0" + gauge "^5.0.0" + set-blocking "^2.0.0" + +nx@15.9.7, "nx@>=15.5.2 < 16": + version "15.9.7" + resolved "https://registry.yarnpkg.com/nx/-/nx-15.9.7.tgz#f0e713cedb8637a517d9c4795c99afec4959a1b6" + integrity sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA== + dependencies: + "@nrwl/cli" "15.9.7" + "@nrwl/tao" "15.9.7" + "@parcel/watcher" "2.0.4" + "@yarnpkg/lockfile" "^1.1.0" + "@yarnpkg/parsers" "3.0.0-rc.46" + "@zkochan/js-yaml" "0.0.6" + axios "^1.0.0" + chalk "^4.1.0" + cli-cursor "3.1.0" + cli-spinners "2.6.1" + cliui "^7.0.2" + dotenv "~10.0.0" + enquirer "~2.3.6" + fast-glob "3.2.7" + figures "3.2.0" + flat "^5.0.2" + fs-extra "^11.1.0" + glob "7.1.4" + ignore "^5.0.4" + js-yaml "4.1.0" + jsonc-parser "3.2.0" + lines-and-columns "~2.0.3" + minimatch "3.0.5" + npm-run-path "^4.0.1" + open "^8.4.0" + semver "7.5.4" + string-width "^4.2.3" + strong-log-transformer "^2.1.0" + tar-stream "~2.2.0" + tmp "~0.2.1" + tsconfig-paths "^4.1.2" + tslib "^2.3.0" + v8-compile-cache "2.3.0" + yargs "^17.6.2" + yargs-parser "21.1.1" + optionalDependencies: + "@nrwl/nx-darwin-arm64" "15.9.7" + "@nrwl/nx-darwin-x64" "15.9.7" + "@nrwl/nx-linux-arm-gnueabihf" "15.9.7" + "@nrwl/nx-linux-arm64-gnu" "15.9.7" + "@nrwl/nx-linux-arm64-musl" "15.9.7" + "@nrwl/nx-linux-x64-gnu" "15.9.7" + "@nrwl/nx-linux-x64-musl" "15.9.7" + "@nrwl/nx-win32-arm64-msvc" "15.9.7" + "@nrwl/nx-win32-x64-msvc" "15.9.7" + +object-assign@^4, object-assign@^4.0.1, 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-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +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.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +observable-webworkers@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/observable-webworkers/-/observable-webworkers-2.0.1.tgz#7d9086ebc567bd318b46ba0506b10cedf3813878" + integrity sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw== + +omit-deep@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/omit-deep/-/omit-deep-0.3.0.tgz#21c8af3499bcadd29651a232cbcacbc52445ebec" + integrity sha512-Lbl/Ma59sss2b15DpnWnGmECBRL8cRl/PjPbPMVW+Y8zIQzRrwMaI65Oy6HvxyhYeILVKBJb2LWeG81bj5zbMg== + dependencies: + is-plain-object "^2.0.1" + unset-value "^0.1.1" + +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" + +once@^1.3.0, 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" + +one-time@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" + integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== + dependencies: + fn.name "1.x.x" + +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" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.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" + +optimism@^0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.18.0.tgz#e7bb38b24715f3fdad8a9a7fc18e999144bbfa63" + integrity sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ== + dependencies: + "@wry/caches" "^1.0.0" + "@wry/context" "^0.7.0" + "@wry/trie" "^0.4.3" + tslib "^2.3.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + 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.5" + +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-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-defer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-4.0.1.tgz#d12c6d41420785ed0d162dbd86b71ba490f7f99e" + integrity sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A== + +p-event@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-5.0.1.tgz#614624ec02ae7f4f13d09a721c90586184af5b0c" + integrity sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ== + dependencies: + p-timeout "^5.0.2" + +p-fifo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" + integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== + dependencies: + fast-fifo "^1.0.0" + p-defer "^3.0.0" + +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@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.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-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.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-series@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + +p-map@4.0.0, 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-pipe@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +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-queue@^7.2.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.4.1.tgz#7f86f853048beca8272abdbb7cec1ed2afc0f265" + integrity sha512-vRpMXmIkYF2/1hLBKisKeVYJZ8S2tZ0zEAmIJgdVKP2nq0nh4qCdf8bgw+ZgKrkh71AOCaqzwbJJk1WtdcF3VA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^5.0.2" + +p-queue@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-8.0.1.tgz#718b7f83836922ef213ddec263ff4223ce70bef8" + integrity sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA== + dependencies: + eventemitter3 "^5.0.1" + p-timeout "^6.1.2" + +p-reduce@2.1.0, p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + +p-reflect@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-reflect/-/p-reflect-3.1.0.tgz#bba22747439b5fc50a7f626e8e909dc9b888218d" + integrity sha512-3sG3UlpisPSaX+o7u2q01hIQmrpkvdl5GSO1ZwL7pfc5kHB2bPF0eFNCfYTrW1/LTUdgmPwBAvmT0Zr8eSmaAQ== + +p-settle@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/p-settle/-/p-settle-5.1.1.tgz#9300778f896d5c01e4361b8ab45d003548574c3e" + integrity sha512-VLgSBpA71aMncPVP5Es4nhQYxcxN0lit8hGlobJke8YTAhtwdRDu/s4KePP5gCT5LFfZty3qosBFYMgD5rFpCg== + dependencies: + p-limit "^4.0.0" + p-reflect "^3.1.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-timeout@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.1.0.tgz#b3c691cf4415138ce2d9cfe071dba11f0fee085b" + integrity sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew== + +p-timeout@^6.0.0, p-timeout@^6.1.1, p-timeout@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-6.1.2.tgz#22b8d8a78abf5e103030211c5fc6dee1166a6aa5" + integrity sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ== + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +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== + +p-waterfall@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + +pacote@15.1.1: + version "15.1.1" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.1.1.tgz#94d8c6e0605e04d427610b3aacb0357073978348" + integrity sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^4.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.0.0" + ssri "^10.0.0" + tar "^6.1.11" + +pacote@^15.0.0, pacote@^15.0.8: + version "15.2.0" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-15.2.0.tgz#0f0dfcc3e60c7b39121b2ac612bf8596e95344d3" + integrity sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA== + dependencies: + "@npmcli/git" "^4.0.0" + "@npmcli/installed-package-contents" "^2.0.1" + "@npmcli/promise-spawn" "^6.0.1" + "@npmcli/run-script" "^6.0.0" + cacache "^17.0.0" + fs-minipass "^3.0.0" + minipass "^5.0.0" + npm-package-arg "^10.0.0" + npm-packlist "^7.0.0" + npm-pick-manifest "^8.0.0" + npm-registry-fetch "^14.0.0" + proc-log "^3.0.0" + promise-retry "^2.0.1" + read-package-json "^6.0.0" + read-package-json-fast "^3.0.0" + sigstore "^1.3.0" + ssri "^10.0.0" + tar "^6.1.11" + +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" + +parent-require@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parent-require/-/parent-require-1.0.0.tgz#746a167638083a860b0eef6732cb27ed46c32977" + integrity sha512-2MXDNZC4aXdkkap+rBBMv0lUsfJqvX5/2FiYYnfCnorZt3Pk06/IOR5KeaoghgS2w07MLWgjbsnyaq6PdHn2LQ== + +parse-conflict-json@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/parse-conflict-json/-/parse-conflict-json-3.0.1.tgz#67dc55312781e62aa2ddb91452c7606d1969960c" + integrity sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw== + dependencies: + json-parse-even-better-errors "^3.0.0" + just-diff "^6.0.0" + just-diff-apply "^5.2.0" + +parse-duration@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.1.0.tgz#5192084c5d8f2a3fd676d04a451dbd2e05a1819c" + integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.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" + +parse-json@^8.0.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-8.1.0.tgz#91cdc7728004e955af9cb734de5684733b24a717" + integrity sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA== + dependencies: + "@babel/code-frame" "^7.22.13" + index-to-position "^0.1.2" + type-fest "^4.7.1" + +parse-path@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-7.0.0.tgz#605a2d58d0a749c8594405d8cc3a2bf76d16099b" + integrity sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog== + dependencies: + protocols "^2.0.0" + +parse-url@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-8.1.0.tgz#972e0827ed4b57fc85f0ea6b0d839f0d8a57a57d" + integrity sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w== + dependencies: + parse-path "^7.0.0" + +parse5-htmlparser2-tree-adapter@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +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.3, 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== + +path-browserify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +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-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +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-scurry@^1.11.1, path-scurry@^1.6.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-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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.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== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pg-boss@^6.1.0: + version "6.2.2" + resolved "https://registry.yarnpkg.com/pg-boss/-/pg-boss-6.2.2.tgz#b33b6c99e53bcec201cc36bbaac69ebb6c09adf1" + integrity sha512-WA4cHCmN4RTOS7uCrGQ8n+Cc88tsgZXrp4U/iGUehgl2XcawSo2L5rm5bFvqX8YFcmrdsl8sh7ZDeKPWAAvOIQ== + dependencies: + cron-parser "^4.0.0" + delay "^5.0.0" + lodash.debounce "^4.0.8" + p-map "^4.0.0" + pg "^8.5.1" + uuid "^8.3.2" + +pg-cloudflare@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98" + integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q== + +pg-connection-string@^2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.4.tgz#f543862adfa49fa4e14bc8a8892d2a84d754246d" + integrity sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA== + +pg-int8@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c" + integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw== + +pg-pool@^3.6.2: + version "3.6.2" + resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.2.tgz#3a592370b8ae3f02a7c8130d245bc02fa2c5f3f2" + integrity sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg== + +pg-protocol@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.1.tgz#21333e6d83b01faaebfe7a33a7ad6bfd9ed38cb3" + integrity sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg== + +pg-types@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3" + integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA== + dependencies: + pg-int8 "1.0.1" + postgres-array "~2.0.0" + postgres-bytea "~1.0.0" + postgres-date "~1.0.4" + postgres-interval "^1.1.0" + +pg@^8.5.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/pg/-/pg-8.12.0.tgz#9341724db571022490b657908f65aee8db91df79" + integrity sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ== + dependencies: + pg-connection-string "^2.6.4" + pg-pool "^3.6.2" + pg-protocol "^1.6.1" + pg-types "^2.1.0" + pgpass "1.x" + optionalDependencies: + pg-cloudflare "^1.1.1" + +pgpass@1.x: + version "1.0.5" + resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d" + integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== + dependencies: + split2 "^4.1.0" + +picocolors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== + +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== + +pify@5.0.0, 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== + +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== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +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" + +platform@^1.3.3: + version "1.3.6" + resolved "https://registry.yarnpkg.com/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-selector-parser@^6.0.10: + 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" + +postgres-array@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e" + integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA== + +postgres-bytea@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35" + integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w== + +postgres-date@~1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8" + integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q== + +postgres-interval@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695" + integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ== + dependencies: + xtend "^4.0.0" + +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== + +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" + +private-ip@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/private-ip/-/private-ip-3.0.2.tgz#1daf6052ee5cee53238616a377d6be180e9490ef" + integrity sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw== + dependencies: + "@chainsafe/is-ip" "^2.0.1" + ip-regex "^5.0.0" + ipaddr.js "^2.1.0" + netmask "^2.0.2" + +proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + +proc-log@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-3.0.0.tgz#fb05ef83ccd64fd7b20bbe9c8c1070fc08338dd8" + integrity sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A== + +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== + +progress-events@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/progress-events/-/progress-events-1.0.0.tgz#34f5e8fdb5dae3561837b22672d1e02277bb2109" + integrity sha512-zIB6QDrSbPfRg+33FZalluFIowkbV5Xh1xSuetjG+rlC5he6u2dc6VQJ0TbMdlN3R1RHdpOqxEFMKTnQ+itUwA== + +prom-client@^14.0.1: + version "14.2.0" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-14.2.0.tgz#ca94504e64156f6506574c25fb1c34df7812cf11" + integrity sha512-sF308EhTenb/pDRPakm+WgiN+VdM/T1RaHj1x+MvAuT8UiQP8JmOEbxVqtkbfR4LrvOg5n7ic01kRBDGXjYikA== + dependencies: + tdigest "^0.1.1" + +promise-all-reject-late@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz#f8ebf13483e5ca91ad809ccc2fcf25f26f8643c2" + integrity sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw== + +promise-call-limit@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/promise-call-limit/-/promise-call-limit-1.0.2.tgz#f64b8dd9ef7693c9c7613e7dfe8d6d24de3031ea" + integrity sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +promjs@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/promjs/-/promjs-0.4.2.tgz#9c2b4a60e00c1a0ecb69a3c1c322d1cfb47a300d" + integrity sha512-qvHcTU9xwEieFOf2Qnf5JYPKkdJU2lRbJfJvJspw6XpnoH7VPmNfnJJnOLPfN8ODJMBLRt8wEPVjxyyn0Or6RQ== + +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw== + dependencies: + read "1" + +prop-types@^15.7.2: + 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" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +protobufjs@^6.10.2, protobufjs@^6.11.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" + +protobufjs@^7.0.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" + integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== + 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/node" ">=13.7.0" + long "^5.0.0" + +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== + +protons-runtime@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-4.0.2.tgz#a5670e703a5389dccb3700b583532e3316efcb94" + integrity sha512-R4N6qKHgz8T2Gl45CTcZfITzXPQY9ym8lbLb4VyFMS4ag1KusCRZwkQXTBRhxQ+93ck3K3aDhK1wIk98AMtNyw== + dependencies: + protobufjs "^7.0.0" + uint8arraylist "^2.4.3" + +protons-runtime@^5.0.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/protons-runtime/-/protons-runtime-5.4.0.tgz#2751ce22cae6c35eebba89acfd9d783419ae3726" + integrity sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw== + dependencies: + uint8-varint "^2.0.2" + uint8arraylist "^2.4.3" + uint8arrays "^5.0.1" + +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" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +q@^1.5.1: + 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" + +queue-microtask@^1.2.2, queue-microtask@^1.2.3: + 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== + +race-signal@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/race-signal/-/race-signal-1.0.2.tgz#e42379fba0cec4ee8dab7c9bbbd4aa6e0d14c25f" + integrity sha512-o3xNv0iTcIDQCXFlF6fPAMEBRjFxssgGoRqLbg06m+AdzEXXLUmoNOoUHTVz2NoBI8hHwKFKoC6IqyNtWr2bww== + +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: + 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== + +rate-limiter-flexible@^2.3.11, rate-limiter-flexible@^2.3.9: + version "2.4.2" + resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-2.4.2.tgz#2a219cc473f015142fd8fb599371223d730decbd" + integrity sha512-rMATGGOdO1suFyf/mI5LYhts71g1sbdhmd6YvdiXO2gJnd42Tt6QS4JUKJKSWVVkMtBacm6l40FR7Trjo6Iruw== + +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-is@^16.13.1, react-is@^16.7.0: + 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@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-native-fetch-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" + integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== + dependencies: + p-defer "^3.0.0" + +read-cmd-shim@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-3.0.0.tgz#62b8c638225c61e6cc607f8f4b779f3b8238f155" + integrity sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog== + +read-cmd-shim@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz#640a08b473a49043e394ae0c7a34dd822c73b9bb" + integrity sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q== + +read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json-fast@^3.0.0, read-package-json-fast@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz#394908a9725dc7a5f14e70c8e7556dff1d2b1049" + integrity sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw== + dependencies: + json-parse-even-better-errors "^3.0.0" + npm-normalize-package-bin "^3.0.0" + +read-package-json@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.1.tgz#1ed685d95ce258954596b13e2e0e76c7d0ab4c26" + integrity sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + +read-package-json@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-6.0.4.tgz#90318824ec456c287437ea79595f4c2854708836" + integrity sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw== + dependencies: + glob "^10.2.2" + json-parse-even-better-errors "^3.0.0" + normalize-package-data "^5.0.0" + npm-normalize-package-bin "^3.0.0" + +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw== + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +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" + +read-pkg@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-9.0.1.tgz#b1b81fb15104f5dbb121b6bbdee9bbc9739f569b" + integrity sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA== + dependencies: + "@types/normalize-package-data" "^2.4.3" + normalize-package-data "^6.0.0" + parse-json "^8.0.0" + type-fest "^4.6.0" + unicorn-magic "^0.1.0" + +read@1, read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ== + dependencies: + mute-stream "~0.0.4" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.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" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: + 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" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +receptacle@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" + integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== + dependencies: + ms "^2.1.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" + +reflect-metadata@^0.1.13: + version "0.1.14" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" + integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== + +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +rehackt@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/rehackt/-/rehackt-0.1.0.tgz#a7c5e289c87345f70da8728a7eb878e5d03c696b" + integrity sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw== + +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== + +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, 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@^1.10.0, resolve@^1.10.1, resolve@^1.22.4: + 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" + +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + +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" + +retimer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" + integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +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.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" + +rimraf@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.1.tgz#bd33364f67021c5b79e93d7f4fa0568c7c21b755" + integrity sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og== + dependencies: + glob "^9.2.0" + +rimraf@~2.4.0: + version "2.4.5" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" + integrity sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ== + dependencies: + glob "^6.0.1" + +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-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz#be80e936f5768623a38a963262d6bef8ff11e7ba" + integrity sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw== + dependencies: + queue-microtask "^1.2.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" + +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" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, 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== + +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-json-stringify@~1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" + integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +safe-stable-stringify@^2.3.1: + version "2.4.3" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" + integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-filename@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +sax@>=0.6.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +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@2 || 3 || 4 || 5", semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +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.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" + +semver@^6.0.0, semver@^6.1.0, 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.0.0, semver@^7.1.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: + 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@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + +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" + +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-delayed-interval@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-delayed-interval/-/set-delayed-interval-1.0.0.tgz#1f7c065780a365f10250f8a80e2be10175ea0388" + integrity sha512-29fhAwuZlLcuBnW/EwxvLcg2D3ELX+VBDNhnavs3YYkab72qmrcSeQNVdzl8EcPPahGQXhBM6MKdPLCQGMDakw== + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +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.11: + 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" + +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== + +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@3.0.7, 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== + +sigstore@^1.0.0, sigstore@^1.3.0, sigstore@^1.4.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" + integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== + dependencies: + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/sign" "^1.0.0" + "@sigstore/tuf" "^1.0.3" + make-fetch-happen "^11.0.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@3.0.0, slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.3.tgz#1ebd0f09c52ba95a09750afe3f3f9f724a800cb5" + integrity sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg== + dependencies: + is-plain-obj "^1.0.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== + +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== + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +split2@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +sprintf-js@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + +sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +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== + +ssri@9.0.1, ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +ssri@^10.0.0, ssri@^10.0.1: + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== + dependencies: + minipass "^7.0.3" + +stack-trace@0.0.x: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== + +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== + +stream-to-it@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" + integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== + dependencies: + get-iterator "^1.0.2" + +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", 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@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +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.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +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@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +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", 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@^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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +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@^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-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-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +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, 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== + +strong-log-transformer@2.1.0, strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + +supports-color@8.1.1: + 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-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.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-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== + +symbol-observable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +tar-stream@~2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +tar@6.1.11: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +temp-dir@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ== + +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@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-1.0.0.tgz#4f192b3ee3328a2684d0e3fc5c491425395aab65" + integrity sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w== + dependencies: + del "^6.0.0" + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +text-hex@1.0.x: + version "1.0.0" + resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" + integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== + +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== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + 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.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timeout-abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" + integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== + dependencies: + retimer "^3.0.0" + +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" + +tmp@~0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +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== + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeverse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/treeverse/-/treeverse-3.0.0.tgz#dd82de9eb602115c6ebd77a574aae67003cb48c8" + integrity sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ== + +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== + +triple-beam@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" + integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +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-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== + dependencies: + tslib "^2.1.0" + +ts-node@^10.2.1: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + 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" + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.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.1.0, tslib@^2.3.0, tslib@^2.4.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +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" + +tuf-js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/tuf-js/-/tuf-js-1.1.7.tgz#21b7ae92a9373015be77dfe0cb282a80ec3bbe43" + integrity sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg== + dependencies: + "@tufjs/models" "1.0.4" + debug "^4.3.4" + make-fetch-happen "^11.1.1" + +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.0, 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.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + +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-fest@^4.6.0, type-fest@^4.7.1: + version "4.19.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.19.0.tgz#f7d3d5f55a7a118b5fe3d2eef53059cf8e516dcd" + integrity sha512-CN2l+hWACRiejlnr68vY0/7734Kzu+9+TOslUXbSCQ1ruY9XIHDBSceVXCcHm/oXrdzhtLMMdJEKfemf1yXiZQ== + +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" + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typeorm-naming-strategies@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/typeorm-naming-strategies/-/typeorm-naming-strategies-2.0.0.tgz#c7c10bc768ddce2592ef9ad4d2dca55fd5fa6ad6" + integrity sha512-nsJ5jDjhBBEG6olFmxojkO4yrW7hEv38sH7ZXWWx9wnDoo9uaoH/mo2mBYAh/VKgwoFHBLu+CYxGmzXz2GUMcA== + +typeorm@0.2.37: + version "0.2.37" + resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.37.tgz#1a5e59216077640694d27c04c99ed3f968d15dc8" + integrity sha512-7rkW0yCgFC24I5T0f3S/twmLSuccPh1SQmxET/oDWn2sSDVzbyWdnItSdKy27CdJGTlKHYtUVeOcMYw5LRsXVw== + dependencies: + "@sqltools/formatter" "^1.2.2" + app-root-path "^3.0.0" + buffer "^6.0.3" + chalk "^4.1.0" + cli-highlight "^2.1.11" + debug "^4.3.1" + dotenv "^8.2.0" + glob "^7.1.6" + js-yaml "^4.0.0" + mkdirp "^1.0.4" + reflect-metadata "^0.1.13" + sha.js "^2.4.11" + tslib "^2.1.0" + xml2js "^0.4.23" + yargonaut "^1.1.4" + yargs "^17.0.1" + zen-observable-ts "^1.0.0" + +"typescript@^3 || ^4": + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.0.2: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + +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== + +uint8-varint@^1.0.1, uint8-varint@^1.0.2, uint8-varint@^1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-1.0.8.tgz#3f6c268e4c1a1ece232f660ec37729faca7cc7d0" + integrity sha512-QS03THS87Wlc0fBCC3xP5sqScDwfvVZLUrTCeMAQbQxQUWJosPC7C8uTNhpVUEgpTbV1Ut2Fer9Se3kI1KbnlQ== + dependencies: + byte-access "^1.0.0" + longbits "^1.1.0" + uint8arraylist "^2.0.0" + uint8arrays "^4.0.2" + +uint8-varint@^2.0.1, uint8-varint@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/uint8-varint/-/uint8-varint-2.0.4.tgz#85be52b3849eb30f2c3640a2df8a14364180affb" + integrity sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw== + dependencies: + uint8arraylist "^2.0.0" + uint8arrays "^5.0.0" + +uint8arraylist@^2.0.0, uint8arraylist@^2.1.0, uint8arraylist@^2.1.1, uint8arraylist@^2.1.2, uint8arraylist@^2.3.1, uint8arraylist@^2.3.2, uint8arraylist@^2.4.1, uint8arraylist@^2.4.3, uint8arraylist@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.8.tgz#5a4d17f4defd77799cb38e93fd5db0f0dceddc12" + integrity sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ== + dependencies: + uint8arrays "^5.0.1" + +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" + +uint8arrays@^4.0.2, uint8arrays@^4.0.3, uint8arrays@^4.0.6: + version "4.0.10" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.10.tgz#3ec5cde3348903c140e87532fc53f46b8f2e921f" + integrity sha512-AnJNUGGDJAgFw/eWu/Xb9zrVKEGlwJJCaeInlf3BkecE/zcTobk5YXYIPNQJO1q5Hh1QZrQQHf0JvcHqz2hqoA== + dependencies: + multiformats "^12.0.1" + +uint8arrays@^5.0.0, uint8arrays@^5.0.1, uint8arrays@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-5.1.0.tgz#14047c9bdf825d025b7391299436e5e50e7270f1" + integrity sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww== + dependencies: + multiformats "^13.0.0" + +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@~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@^5.12.0: + version "5.28.4" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.4.tgz#6b280408edb6a1a604a9b20340f45b422e373068" + integrity sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g== + dependencies: + "@fastify/busboy" "^2.0.0" + +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-filename@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-3.0.0.tgz#48ba7a5a16849f5080d26c760c86cf5cf05770ea" + integrity sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g== + dependencies: + unique-slug "^4.0.0" + +unique-names-generator@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.7.1.tgz#966407b12ba97f618928f77322cfac8c80df5597" + integrity sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow== + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-4.0.0.tgz#6bae6bb16be91351badd24cdce741f892a6532e3" + integrity sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ== + dependencies: + imurmurhash "^0.1.4" + +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" + +universal-user-agent@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" + integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +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== + +unset-value@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-0.1.2.tgz#506810b867f27c2a5a6e9b04833631f6de58d310" + integrity sha512-yhv5I4TsldLdE3UcVQn0hD2T5sNCPv4+qm/CTUpRKIpwthYRIipsAPdsrNpOI79hPQa0rTTeW22Fq6JWRcTgNg== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +upath@2.0.1, upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + +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" + +utf8-byte-length@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz#f9f63910d15536ee2b2d5dd4665389715eac5c1e" + integrity sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA== + +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@^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" + +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, 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-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-compile-cache@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: + 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" + +validate-npm-package-name@4.0.0, validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw== + dependencies: + builtins "^1.0.3" + +validate-npm-package-name@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" + integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== + +value-or-promise@1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/value-or-promise/-/value-or-promise-1.0.11.tgz#3e90299af31dd014fe843fe309cefa7c1d94b140" + integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== + +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@^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== + +walk-up-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-1.0.0.tgz#d4745e893dd5fd0dbb58dd0a4c6a33d9c9fec53e" + integrity sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg== + +wcwidth@^1.0.0, 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" + +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-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +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" + +wherearewe@^2.0.0, wherearewe@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wherearewe/-/wherearewe-2.0.1.tgz#37c97a7bf112dca8db34bfefb2f6c997af312bb8" + integrity sha512-XUguZbDxCA2wBn2LoFtcEhXL6AXo+hVjGonwhSTTTU9SzbWG8Xu3onNIpzf9j/mYUcJQ0f+m37SzG77G851uFw== + dependencies: + is-electron "^2.2.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-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@2.0.2, which@^2.0.1, which@^2.0.2: + 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" + +which@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/which/-/which-3.0.1.tgz#89f1cd0c23f629a8105ffe69b8172791c87b4be1" + integrity sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg== + dependencies: + isexe "^2.0.0" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +winston-transport@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" + integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== + dependencies: + logform "^2.3.2" + readable-stream "^3.6.0" + triple-beam "^1.3.0" + +winston@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" + integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== + dependencies: + "@colors/colors" "^1.6.0" + "@dabh/diagnostics" "^2.0.2" + async "^3.2.3" + is-stream "^2.0.0" + logform "^2.4.0" + one-time "^1.0.0" + readable-stream "^3.4.0" + safe-stable-stringify "^2.3.1" + stack-trace "0.0.x" + triple-beam "^1.3.0" + winston-transport "^4.7.0" + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@>=0.0.2, 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== + +workerpool@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.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@^6.0.1: + 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@^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.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@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-5.0.1.tgz#68df4717c55c6fa4281a7860b4c2ba0a6d2b11e7" + integrity sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^4.0.1" + +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-pkg@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + +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.11.0, ws@^8.12.1, ws@^8.4.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + +xml2js@^0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml2js@^0.6.0, xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xsalsa20@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/xsalsa20/-/xsalsa20-1.2.0.tgz#e5a05cb26f8cef723f94a559102ed50c1b44c25c" + integrity sha512-FIr/DEeoHfj7ftfylnoFt3rAIRoWXpx2AoDfrT2qD2wtp7Dp+COajvs/Icb7uHqRW9m60f5iXZwdsJJO3kvb7w== + +xss@^1.0.8: + version "1.0.15" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.15.tgz#96a0e13886f0661063028b410ed1b18670f4e59a" + integrity sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xtend@^4.0.0, xtend@~4.0.1: + 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== + +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: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargonaut@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c" + integrity sha512-rHgFmbgXAAzl+1nngqOcwEljqHGG9uUZoPjsdZEs1w5JW9RXYzrSvH/u70C1JE5qFi0qjsdhnUX/dJRpWqitSA== + dependencies: + chalk "^1.1.1" + figlet "^1.1.1" + parent-require "^1.0.0" + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@21.1.1, 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-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-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@16.2.0, yargs@^16.0.0, yargs@^16.1.0, 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" + +yargs@^17.0.1, yargs@^17.6.2: + 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" + +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== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== + +zen-observable-ts@^1.0.0, zen-observable-ts@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz#2d1aa9d79b87058e9b75698b92791c1838551f83" + integrity sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA== + dependencies: + "@types/zen-observable" "0.8.3" + zen-observable "0.8.15" + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== + dependencies: + zen-observable "0.8.15" + +zen-observable@0.8.15: + version "0.8.15" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" + integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==