From 2f3e2488ecd0d3f0906211102847388c22431013 Mon Sep 17 00:00:00 2001 From: 0xkenj1 Date: Wed, 2 Oct 2024 16:19:09 -0300 Subject: [PATCH 1/4] feat: indexer service --- .npmrc | 7 +- README.md | 90 +- apps/indexer/.dockerignore | 5 + apps/indexer/.gitignore | 36 + apps/indexer/.npmrc | 5 + apps/indexer/Dockerfile | 11 + apps/indexer/README.md | 56 + apps/indexer/config.yaml | 326 ++ apps/indexer/package.json | 29 + apps/indexer/pnpm-lock.yaml | 3910 +++++++++++++++++ apps/indexer/pnpm-workspace.yaml | 2 + apps/indexer/schema.graphql | 5 + apps/indexer/src/handlers/Allo.ts | 18 + apps/indexer/src/handlers/Registry.ts | 14 + apps/indexer/src/handlers/Strategy.ts | 39 + apps/indexer/test/helpers.ts | 85 + apps/indexer/test/index.ts | 18 + apps/indexer/tsconfig.json | 16 + docker-compose.yaml | 64 + package.json | 9 +- packages/contracts/.solhint.json | 18 - packages/contracts/.solhint.tests.json | 25 - packages/contracts/README.md | 38 - packages/contracts/foundry.toml | 20 - packages/contracts/package.json | 29 - packages/contracts/remappings.txt | 4 - packages/contracts/src/contracts/Greeter.sol | 59 - .../contracts/src/interfaces/IGreeter.sol | 74 - packages/contracts/test/unit/Greeter.t.sol | 99 - pnpm-lock.yaml | 1097 ++++- pnpm-workspace.yaml | 4 +- 31 files changed, 5582 insertions(+), 630 deletions(-) create mode 100644 apps/indexer/.dockerignore create mode 100644 apps/indexer/.gitignore create mode 100644 apps/indexer/.npmrc create mode 100644 apps/indexer/Dockerfile create mode 100644 apps/indexer/README.md create mode 100644 apps/indexer/config.yaml create mode 100644 apps/indexer/package.json create mode 100644 apps/indexer/pnpm-lock.yaml create mode 100644 apps/indexer/pnpm-workspace.yaml create mode 100644 apps/indexer/schema.graphql create mode 100644 apps/indexer/src/handlers/Allo.ts create mode 100644 apps/indexer/src/handlers/Registry.ts create mode 100644 apps/indexer/src/handlers/Strategy.ts create mode 100644 apps/indexer/test/helpers.ts create mode 100644 apps/indexer/test/index.ts create mode 100644 apps/indexer/tsconfig.json create mode 100644 docker-compose.yaml delete mode 100644 packages/contracts/.solhint.json delete mode 100644 packages/contracts/.solhint.tests.json delete mode 100644 packages/contracts/README.md delete mode 100644 packages/contracts/foundry.toml delete mode 100644 packages/contracts/package.json delete mode 100644 packages/contracts/remappings.txt delete mode 100644 packages/contracts/src/contracts/Greeter.sol delete mode 100644 packages/contracts/src/interfaces/IGreeter.sol delete mode 100644 packages/contracts/test/unit/Greeter.t.sol diff --git a/.npmrc b/.npmrc index 449691b..132f02c 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,6 @@ -save-exact=true \ No newline at end of file +save-exact=true +# Needed for ts build folder to have +# access to rescript node_modules +shamefully-hoist=true +# Needed so users can run `pnpm install` in the root of the repo without requiring the `-w` flag. +ignore-workspace-root-check=true \ No newline at end of file diff --git a/README.md b/README.md index a35cb4a..be5351a 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,31 @@ -# ts-turborepo-boilerplate +# Grants Stack Indexer v2 -## Features +Grants Stack Indexer v2 is a tool designed to index blockchain events generated by Allo contracts, making the data accessible over HTTP in JSON format. The data is organized in a structure that enables efficient querying and easy access to key components of the protocol. -### Boilerplate monorepo setup +## ๐Ÿ“– Overview -Quickly start developing your offchain monorepo project with -minimal configuration overhead using Turborepo +This repository is a monorepo that contains 1 package and 2 applications: -### Sample library with Viem +- @ts-turborepo-boilerplate/sample-lib: A sample library for querying account balances. +- @ts-turborepo-boilerplate/sample-app: A demo application demonstrating the use of sample-lib. +- @grants-stack-indexer/indexer: An [`envio`](https://docs.envio.dev/) indexer, that collects all the relevant events from Allo contracts. -Simple provider that uses Viem client to query account balances +## ๐Ÿš€ Local Deployment (Dockerized) -### Sample contracts with Foundry +### Prerequisites -Basic Greeter contract with an external interface +Ensure you have the following installed on your machine: -Foundry configuration out-of-the-box +- [Docker](https://www.docker.com/get-started) +- [Docker Compose](https://docs.docker.com/compose/install/) -### Sample app that consumes the library +### Run -How much ETH do Vitalik and the Zero address hold together? +To deploy locally with Docker, run the following command: -### Testing - -Unit test setup with Vitest framework - -### Lint and format - -Use ESLint and Prettier to easily find issues as you code - -### Github workflows CI - -Lint code and check commit messages format on every push. - -Run all tests and see the coverage before merging changes. - -## Overview - -This repository is a monorepo consisting of 2 packages and 1 app: - -- [`@ts-turborepo-boilerplate/contracts`](./packages/contracts): A library for writing all required smart contracts -- [`@ts-turborepo-boilerplate/sample-lib`](./packages/sample-lib): A sample library for querying account balances -- [`@ts-turborepo-boilerplate/sample-app`](./apps/sample-app): A demo sample app that uses the sample-lib - -## ๐Ÿ“‹ Prerequisites - -- Ensure you have `node 20` and `pnpm 9.7.1` installed. - -## Tech stack - -- [pnpm](https://pnpm.io/): package and workspace manager -- [turborepo](https://turbo.build/repo/docs): for managing the monorepo and the build system -- [foundry](https://book.getfoundry.sh/forge/): for writing Solidity smart contracts -- [husky](https://typicode.github.io/husky/): tool for managing git hooks -- tsc: for transpiling TS and building source code -- [prettier](https://prettier.io/): code formatter -- [eslint](https://typescript-eslint.io/): code linter -- [vitest](https://vitest.dev/): modern testing framework -- [Viem](https://viem.sh/): lightweight library to interface with EVM based blockchains - -### Configuring Prettier sort import plugin - -You can further add sorting rules for your monorepo, for example in `.prettierrc` you can add: - -```json - ... - "importOrder": [ - "", - ... - "", - "^@myproject", //added - "^@myproject/(.*)$", //added - "", - ... - ], - ... ``` - -We use [IanVs prettier-plugin-sort-imports](https://github.com/IanVS/prettier-plugin-sort-imports) +docker-compose up -d --build +``` ## Contributing @@ -85,10 +33,10 @@ Wonderland is a team of top Web3 researchers, developers, and operators who beli [DeFi sucks](https://defi.sucks), but Wonderland is here to make it better. -### ๐Ÿ’ป Conventional Commits +## ๐Ÿ“ Conventional Commits We follow the Conventional Commits [specification](https://www.conventionalcommits.org/en/v1.0.0/#specification). -## License +## ๐Ÿ“œ License -The primary license for the boilerplate is MIT. See the [`LICENSE`](./LICENSE) file for details. +This project is licensed under the MIT License. See the [`LICENSE`](./LICENSE) file for more details. diff --git a/apps/indexer/.dockerignore b/apps/indexer/.dockerignore new file mode 100644 index 0000000..3b00024 --- /dev/null +++ b/apps/indexer/.dockerignore @@ -0,0 +1,5 @@ +node_modules +.git +.gitignore +*.md +generated \ No newline at end of file diff --git a/apps/indexer/.gitignore b/apps/indexer/.gitignore new file mode 100644 index 0000000..999ee23 --- /dev/null +++ b/apps/indexer/.gitignore @@ -0,0 +1,36 @@ +*.exe +*.obj +*.out +*.compile +*.native +*.byte +*.cmo +*.annot +*.cmi +*.cmx +*.cmt +*.cmti +*.cma +*.a +*.cmxa +*.obj +*~ +*.annot +*.cmj +*.bak +lib/* +*.mlast +*.mliast +.vscode +.merlin +.bsb.lock +/node_modules/ +benchmarks/ +artifacts +cache +generated +logs +*.bs.js +*.bs.mjs +*.gen.ts +build diff --git a/apps/indexer/.npmrc b/apps/indexer/.npmrc new file mode 100644 index 0000000..f910b3e --- /dev/null +++ b/apps/indexer/.npmrc @@ -0,0 +1,5 @@ +# Needed for ts build folder to have +# access to rescript node_modules +shamefully-hoist=true +# Needed so users can run `pnpm install` in the root of the repo without requiring the `-w` flag. +ignore-workspace-root-check=true \ No newline at end of file diff --git a/apps/indexer/Dockerfile b/apps/indexer/Dockerfile new file mode 100644 index 0000000..9139dbd --- /dev/null +++ b/apps/indexer/Dockerfile @@ -0,0 +1,11 @@ +FROM node:20-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app +WORKDIR /app + +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm dlx envio codegen + +CMD pnpm dlx envio local db-migrate setup && pnpm dlx envio start \ No newline at end of file diff --git a/apps/indexer/README.md b/apps/indexer/README.md new file mode 100644 index 0000000..28c8eff --- /dev/null +++ b/apps/indexer/README.md @@ -0,0 +1,56 @@ +# Indexer Service + +This repository contains the Envio indexer service, which is ready to run on the Envio hosted platform. It includes a Dockerfile for the indexer process. + +## ๐Ÿš€ Deployment + +### Envio Hosted Solution + +To deploy the indexer on the Envio hosted service, refer to the official documentation: +[Envio Hosted Service Deployment](https://docs.envio.dev/docs/HyperIndex/hosted-service-deployment) + +## ๐Ÿ›  Getting Started + +### Install Dependencies + +Run the following command to install all necessary dependencies: + +```bash +pnpm i +``` + +### Local Development + +For local development, start the service with: + +```bash +pnpm dev +``` + +## โž• Adding a New Event + +To add a new event to the indexer, follow these steps: + +### Step 1: Modify Configuration + +Update the `config.yaml` file to include the new event you wish to handle. Ensure the event is correctly configured. + +### Step 2: Add an Event Handler + +Create a handler for the new event. This handler is essential for ensuring the event is indexed. Without a handler, the event (and its corresponding entry in the `raw_events` table) will not be saved or processed. Each event must have a handler to be included in `raw_events`. + +### Step 3: Redeploy the Environment + +After making the necessary changes, redeploy your environment to apply the updates. + +## ๐Ÿ” Notes + +Ensure each event is properly handled and thoroughly tested before redeploying the environment to prevent issues in the indexing process. + +## ๐Ÿงช Testing + +To run tests, use the following command: + +```bash +pnpm test +``` diff --git a/apps/indexer/config.yaml b/apps/indexer/config.yaml new file mode 100644 index 0000000..92a7991 --- /dev/null +++ b/apps/indexer/config.yaml @@ -0,0 +1,326 @@ +name: Allo Indexer +unordered_multichain_mode: true +raw_events: true +########################## +# CONTRACTS # +########################## +contracts: + - name: Allo + handler: src/handlers/Allo.ts + events: + - event: PoolCreated(uint256 indexed poolId, bytes32 indexed profileId, address strategy, address token, uint256 amount, (uint256,string) metadata) + - event: RoleGranted(uint64 indexed roleId, address indexed account, uint32 delay, uint48 since, bool newMember) + - event: PoolMetadataUpdated(uint256 indexed poolId, (uint256,string) metadata) + - event: PoolFunded(uint256 indexed poolId, uint256 amount, uint256 fee) + - event: RoleRevoked(uint64 indexed roleId, address indexed account) + - name: Registry + handler: src/handlers/Registry.ts + events: + - event: ProfileCreated(bytes32 indexed profileId, uint256 nonce, string name, (uint256,string) metadata, address owner, address anchor) + - event: ProfileMetadataUpdated(bytes32 indexed profileId, (uint256,string) metadata) + - event: ProfileNameUpdated(bytes32 indexed profileId, string name, address anchor) + - event: ProfileOwnerUpdated(bytes32 indexed profileId, address owner) + - name: Strategy + handler: src/handlers/Strategy.ts + events: + ########################## ALLO v2 ########################## + # Registered + - event: Registered(address indexed recipientId, bytes data, address sender) + name: RegisteredWithSender + - event: Registered(address indexed _recipient, bytes _data) + name: RegisteredWithData + + #TimestampsUpdated + - event: TimestampsUpdated(uint64 startTime, uint64 endTime, address sender) + # Keep in mind that parameters could be allocation or registration timestamps in this case. It depends on the contract. + name: TimestampsUpdated + - event: TimestampsUpdated(uint64 registrationStartTime, uint64 registrationEndTime, uint64 allocationStartTime, uint64 allocationEndTime, address sender) + name: TimestampsUpdatedWithRegistrationAndAllocation + + # DistributionUpdated + - event: DistributionUpdated(bytes32 merkleRoot, (uint256,string) metadata) + + # FundsUpdated + - event: FundsDistributed(uint256 amount, address grantee, address indexed token, address indexed recipientId) + + # Distributed + - event: Distributed(address indexed recipientId, address recipientAddress, uint256 amount, address sender) + name: DistributedWithRecipientAddress + - event: Distributed(address indexed _recipient, bytes _data) + name: DistributedWithData + - event: Distributed(address indexed sender, int96 flowRate) + name: DistributedWithFlowRate + + # Allocated + - event: Allocated(address indexed recipientId, uint256 amount, address token, address sender, address origin) + name: AllocatedWithOrigin + - event: Allocated(address indexed _recipient, address indexed _sender, uint256 _amount, bytes _data) + name: AllocatedWithData + - event: Allocated(address indexed recipientId, uint256 amount, address token, address sender) + name: AllocatedWithToken + - event: Allocated(address indexed recipientId, uint256 votes, address allocator) + name: AllocatedWithVotes + - event: Allocated(address indexed recipientId, uint8 status, address sender) + name: AllocatedWithStatus + + # AllocatedWithNft + - event: AllocatedWithNft(address indexed recipientId, uint256 votes, address nft, address allocator) + + # DirectAllocated + - event: DirectAllocated(address indexed recipient, uint256 amount, address token, address sender) + + # RecipientStatusUpdated + - event: RecipientStatusUpdated(address indexed recipientId, uint256 applicationId, uint8 status, address sender) + name: RecipientStatusUpdatedWithApplicationId + - event: RecipientStatusUpdated(address indexed recipientId, uint8 recipientStatus, address sender) + name: RecipientStatusUpdatedWithRecipientStatus + - event: RecipientStatusUpdated(uint256 indexed rowIndex, uint256 fullRow, address sender) + name: RecipientStatusUpdatedWithFullRow + + # ########################## ALLO v2.1 ########################## + + # # AllocationExtension + # - event: AllocationTimestampsUpdated(uint64 allocationStartTime, uint64 allocationEndTime, address sender) + + # # AllocationAllowlistExtension + # - event: AllocatorsRemoved(address[] allocators, address sender) + # - event: AllocatorsAdded(address[] allocators, address sender) + + # # MilestoneExtension + # - event: MaxBidIncreased(uint256 maxBid) + # - event: SetBid(address indexed bidderId, uint256 newBid) + # - event: MilestoneSubmitted(uint256 milestoneId) + # - event: MilestoneStatusChanged(uint256 indexed milestoneId, uint8 status) + # - event: MilestonesSet(uint256 milestonesLength) + + # # RecipientsExtension + # - event: UpdatedRegistration(address indexed recipientId, bytes data, address sender, uint8 status) + # - event: RecipientStatusUpdated(uint256 indexed rowIndex, uint256 fullRow, address sender) + # - event: RegistrationTimestampsUpdated(uint64 registrationStartTime, uint64 registrationEndTime, address sender) + +########################## +# NETWORKS # +########################## +networks: + ####################### + # MAINNET # + ####################### + - id: 1 # mainnet + start_block: 18486688 + contracts: + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + - name: Strategy + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + + - id: 10 # optimism + start_block: 111678968 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 11155111 # sepolia + start_block: 4617051 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 250 # fantom + start_block: 77624278 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 42161 # arbitrum + start_block: 146489425 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 137 # polygon + start_block: 49466006 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 8453 # base + start_block: 6083365 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 324 # zksync-era-mainnet + start_block: 31154341 + contracts: + - name: Registry + address: + - 0xaa376Ef759c1f5A8b0B5a1e2FEC5C23f3bF30246 + - name: Strategy + - name: Allo + address: + - 0x9D1D1BF2835935C291C0f5228c86d5C4e235A249 + + - id: 43114 # avalanche + start_block: 34540051 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 534352 # scroll + start_block: 2683205 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 1329 # sei-mainnet + # rpc_config: + # url: https://evm-rpc.sei-apis.com + # start_block: 78000000 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 42220 # celo-mainnet + start_block: 22257475 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + - id: 42 # lukso-mainnet + start_block: 2400000 + contracts: + - name: Registry + address: + - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + - name: Strategy + - name: Allo + address: + - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 +####################### +# TESTNET # +####################### + +# - id: 80001 # polygon-mumbai +# start_block: 41939383 +# contracts: +# - name: Registry +# address: +# - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 +# - name: Strategy +# +# - name: Allo +# address: +# - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + +# - id: 300 # zksync-era-testnet +# rpc_config: +# url: https://sepolia.era.zksync.dev +# start_block: 1573385 +# contracts: +# - name: Registry +# address: +# - 0xaa376Ef759c1f5A8b0B5a1e2FEC5C23f3bF30246 +# - name: Allo +# address: +# - 0x9D1D1BF2835935C291C0f5228c86d5C4e235A249 + +# - id: 43113 # avalanche-fuji +# rpc_config: +# url: https://rpc.ankr.com/avalanche_fuji +# start_block: 25380385 +# contracts: +# - name: Registry +# address: +# - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 +# - name: Allo +# address: +# - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + +# - id: 713715 # sei-devnet +# rpc_config: +# url: https://evm-rpc.arctic-1.seinetwork.io +# start_block: 14660337 +# contracts: +# - name: Registry +# address: +# - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 +# - name: Allo +# address: +# - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + +# - id: 4201 # lukso-testnet +# rpc_config: +# url: https://rpc.testnet.lukso.network +# start_block: 2500000 +# contracts: +# - name: Registry +# address: +# - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 +# - name: Allo +# address: +# - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + +# - id: 44787 # celo-testnet +# rpc_config: +# url: https://alfajores-forno.celo-testnet.org +# start_block: 23061115 +# contracts: +# - name: Registry +# address: +# - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 +# - name: Allo +# address: +# - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 diff --git a/apps/indexer/package.json b/apps/indexer/package.json new file mode 100644 index 0000000..6965277 --- /dev/null +++ b/apps/indexer/package.json @@ -0,0 +1,29 @@ +{ + "name": "@grants-stack-indexer/indexer", + "version": "0.1.0", + "scripts": { + "build": "envio codegen", + "clean": "rm -rf generated node_modules", + "dev": "envio dev", + "mocha": "ts-mocha test/**/*.ts", + "start": "pnpm build && ts-node generated/src/Index.bs.js", + "test": "pnpm mocha", + "watch": "tsc --watch" + }, + "dependencies": { + "chai": "4.3.10", + "envio": "2.4.1", + "ethers": "6.8.0", + "yaml": "2.5.1" + }, + "devDependencies": { + "@types/chai": "^4.3.11", + "@types/mocha": "10.0.6", + "@types/node": "20.8.8", + "mocha": "10.2.0", + "ts-mocha": "^10.0.0", + "ts-node": "10.9.1", + "typescript": "5.2.2" + }, + "packageManager": "pnpm@9.9.0+sha512.60c18acd138bff695d339be6ad13f7e936eea6745660d4cc4a776d5247c540d0edee1a563695c183a66eb917ef88f2b4feb1fc25f32a7adcadc7aaf3438e99c1" +} diff --git a/apps/indexer/pnpm-lock.yaml b/apps/indexer/pnpm-lock.yaml new file mode 100644 index 0000000..89068ea --- /dev/null +++ b/apps/indexer/pnpm-lock.yaml @@ -0,0 +1,3910 @@ +lockfileVersion: "9.0" + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + .: + dependencies: + chai: + specifier: 4.3.10 + version: 4.3.10 + envio: + specifier: 2.4.1 + version: 2.4.1 + ethers: + specifier: 6.8.0 + version: 6.8.0 + yaml: + specifier: 2.5.1 + version: 2.5.1 + devDependencies: + "@types/chai": + specifier: ^4.3.11 + version: 4.3.20 + "@types/mocha": + specifier: 10.0.6 + version: 10.0.6 + "@types/node": + specifier: 20.8.8 + version: 20.8.8 + mocha: + specifier: 10.2.0 + version: 10.2.0 + ts-mocha: + specifier: ^10.0.0 + version: 10.0.0(mocha@10.2.0) + ts-node: + specifier: 10.9.1 + version: 10.9.1(@types/node@20.8.8)(typescript@5.2.2) + typescript: + specifier: 5.2.2 + version: 5.2.2 + + generated: + dependencies: + "@elastic/ecs-pino-format": + specifier: 1.4.0 + version: 1.4.0 + "@envio-dev/hypersync-client": + specifier: 0.6.2 + version: 0.6.2 + "@glennsl/rescript-fetch": + specifier: 0.2.0 + version: 0.2.0 + "@rescript/react": + specifier: 0.12.1 + version: 0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0) + "@ryyppy/rescript-promise": + specifier: 2.1.0 + version: 2.1.0 + bignumber.js: + specifier: 9.1.2 + version: 9.1.2 + date-fns: + specifier: 3.3.1 + version: 3.3.1 + dotenv: + specifier: 16.4.5 + version: 16.4.5 + ethers: + specifier: 6.8.0 + version: 6.8.0 + express: + specifier: 4.19.2 + version: 4.19.2 + ink: + specifier: 3.2.0 + version: 3.2.0(react@18.2.0) + ink-big-text: + specifier: 1.2.0 + version: 1.2.0(ink@3.2.0(react@18.2.0))(react@18.2.0) + ink-spinner: + specifier: 4.0.3 + version: 4.0.3(ink@3.2.0(react@18.2.0))(react@18.2.0) + js-sdsl: + specifier: 4.4.2 + version: 4.4.2 + node-fetch: + specifier: 2.7.0 + version: 2.7.0 + pino: + specifier: 8.16.1 + version: 8.16.1 + pino-pretty: + specifier: 10.2.3 + version: 10.2.3 + postgres: + specifier: 3.4.1 + version: 3.4.1 + prom-client: + specifier: 15.0.0 + version: 15.0.0 + react: + specifier: 18.2.0 + version: 18.2.0 + rescript: + specifier: 11.1.3 + version: 11.1.3 + rescript-envsafe: + specifier: 4.2.0 + version: 4.2.0(rescript-schema@8.2.0(rescript@11.1.3))(rescript@11.1.3) + rescript-express: + specifier: 0.4.1 + version: 0.4.1(express@4.19.2) + rescript-schema: + specifier: 8.2.0 + version: 8.2.0(rescript@11.1.3) + root: + specifier: ../. + version: link:.. + viem: + specifier: 2.21.0 + version: 2.21.0(typescript@5.2.2) + yargs: + specifier: 17.7.2 + version: 17.7.2 + +packages: + "@adraffy/ens-normalize@1.10.0": + resolution: + { + integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==, + } + + "@cspotcode/source-map-support@0.8.1": + resolution: + { + integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, + } + engines: { node: ">=12" } + + "@elastic/ecs-helpers@1.1.0": + resolution: + { + integrity: sha512-MDLb2aFeGjg46O5mLpdCzT5yOUDnXToJSrco2ShqGIXxNJaM8uJjX+4nd+hRYV4Vex8YJyDtOFEVBldQct6ndg==, + } + engines: { node: ">=10" } + + "@elastic/ecs-pino-format@1.4.0": + resolution: + { + integrity: sha512-eCSBUTgl8KbPyxky8cecDRLCYu2C1oFV4AZ72bEsI+TxXEvaljaL2kgttfzfu7gW+M89eCz55s49uF2t+YMTWA==, + } + engines: { node: ">=10" } + + "@envio-dev/hypersync-client-darwin-arm64@0.6.2": + resolution: + { + integrity: sha512-dDIuQqEgARR1JYodbGkmck1i9qbYEidc4Kw4DOrRKQ0uZFwflI4o8wm3P+G/ofc1iXwp4pm7jqNUGzZDpK9pqA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + + "@envio-dev/hypersync-client-darwin-x64@0.6.2": + resolution: + { + integrity: sha512-NGlgkmosAzlZ1EuQ5/djkg6sQI/dgVX+XGOLI6Zden0ca2zr/ByBRA7yCKxpwZHYynFN2FoMsMGSRY8jj6XQWw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + + "@envio-dev/hypersync-client-linux-arm64-gnu@0.6.2": + resolution: + { + integrity: sha512-p2LQSaOSgjVvvFHOGHnPHTnsDHCWNEG78J29guZyqWojmaxTaR4eGyFEknla7eO0w58EIUGEBTF0+EJ7duMimg==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + + "@envio-dev/hypersync-client-linux-x64-gnu@0.6.2": + resolution: + { + integrity: sha512-/kIL9Q0e5hM0g6cvdCHL93LMu+OCnwQAGKQHCj2TKKUjVpWFNb0Ki5PMgJhQ8mimEBFsJAnErVK+HrugLTlaVQ==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + + "@envio-dev/hypersync-client-linux-x64-musl@0.6.2": + resolution: + { + integrity: sha512-4r5hA/zyxUjWBDYYeXLCl5pBfSI9njEIPuLMFXajjVcAvSXRtBhmgVwa3JrjjCxZ8aLfqk9vvPkb/KgYfrbXXw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + + "@envio-dev/hypersync-client-win32-x64-msvc@0.6.2": + resolution: + { + integrity: sha512-VgsSwmDAgvpgo9QsIiwIp9IN+h3g0U/7zrCrvNAMj+lsMHJPZ7L0cfN58dQUr84wL8domJGJrnMKUtu/Yf49ow==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + + "@envio-dev/hypersync-client@0.6.2": + resolution: + { + integrity: sha512-wgp0UmblW8yn/q5NMkVYPFDvOmgHWPTibl/QJYyYK2KXqAMHssUjP07ayduiZCexQOZ94Agpv4SvmYxQNjGBIA==, + } + engines: { node: ">= 10" } + + "@glennsl/rescript-fetch@0.2.0": + resolution: + { + integrity: sha512-0tsEqJ/6/WBm02prM4RYG+qpnNTaB8QKKIeQHXdDaE4C5YfA/nzjxMNW3CjsGIaEgyrAmmIXFS0kx24UjvOI6A==, + } + + "@jridgewell/resolve-uri@3.1.2": + resolution: + { + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, + } + engines: { node: ">=6.0.0" } + + "@jridgewell/sourcemap-codec@1.5.0": + resolution: + { + integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, + } + + "@jridgewell/trace-mapping@0.3.9": + resolution: + { + integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, + } + + "@noble/curves@1.2.0": + resolution: + { + integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==, + } + + "@noble/curves@1.4.0": + resolution: + { + integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==, + } + + "@noble/hashes@1.3.2": + resolution: + { + integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==, + } + engines: { node: ">= 16" } + + "@noble/hashes@1.4.0": + resolution: + { + integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==, + } + engines: { node: ">= 16" } + + "@opentelemetry/api@1.9.0": + resolution: + { + integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==, + } + engines: { node: ">=8.0.0" } + + "@rescript/react@0.12.1": + resolution: + { + integrity: sha512-ZD7nhDr5FZgLYqRH9s4CNM+LRz/3IMuTb+LH12fd2Akk0xYkYUP+DZveB2VQUC2UohJnTf/c8yPSNsiFihVCCg==, + } + peerDependencies: + react: ">=18.0.0" + react-dom: ">=18.0.0" + + "@ryyppy/rescript-promise@2.1.0": + resolution: + { + integrity: sha512-+dW6msBrj2Lr2hbEMX+HoWCvN89qVjl94RwbYWJgHQuj8jm/izdPC0YzxgpGoEFdeAEW2sOozoLcYHxT6o5WXQ==, + } + + "@scure/base@1.1.9": + resolution: + { + integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==, + } + + "@scure/bip32@1.4.0": + resolution: + { + integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==, + } + + "@scure/bip39@1.3.0": + resolution: + { + integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==, + } + + "@tsconfig/node10@1.0.11": + resolution: + { + integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==, + } + + "@tsconfig/node12@1.0.11": + resolution: + { + integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, + } + + "@tsconfig/node14@1.0.3": + resolution: + { + integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, + } + + "@tsconfig/node16@1.0.4": + resolution: + { + integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, + } + + "@types/chai@4.3.20": + resolution: + { + integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, + } + + "@types/json5@0.0.29": + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + + "@types/mocha@10.0.6": + resolution: + { + integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==, + } + + "@types/node@18.15.13": + resolution: + { + integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==, + } + + "@types/node@20.8.8": + resolution: + { + integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==, + } + + "@types/yoga-layout@1.9.2": + resolution: + { + integrity: sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==, + } + + abitype@1.0.5: + resolution: + { + integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==, + } + peerDependencies: + typescript: ">=5.0.4" + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller@3.0.0: + resolution: + { + integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, + } + engines: { node: ">=6.5" } + + accepts@1.3.8: + resolution: + { + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, + } + engines: { node: ">= 0.6" } + + acorn-walk@8.3.4: + resolution: + { + integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, + } + engines: { node: ">=0.4.0" } + + acorn@8.12.1: + resolution: + { + integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==, + } + engines: { node: ">=0.4.0" } + hasBin: true + + aes-js@4.0.0-beta.5: + resolution: + { + integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==, + } + + ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + + ansi-colors@4.1.1: + resolution: + { + integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, + } + engines: { node: ">=6" } + + ansi-escapes@4.3.2: + resolution: + { + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, + } + engines: { node: ">=8" } + + ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } + + ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + + anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: ">= 8" } + + arg@4.1.3: + resolution: + { + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, + } + + argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + + array-flatten@1.1.1: + resolution: + { + integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==, + } + + arrify@1.0.1: + resolution: + { + integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, + } + engines: { node: ">=0.10.0" } + + assertion-error@1.1.0: + resolution: + { + integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, + } + + astral-regex@2.0.0: + resolution: + { + integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, + } + engines: { node: ">=8" } + + atomic-sleep@1.0.0: + resolution: + { + integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==, + } + engines: { node: ">=8.0.0" } + + auto-bind@4.0.0: + resolution: + { + integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==, + } + engines: { node: ">=8" } + + balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + base64-js@1.5.1: + resolution: + { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + + bignumber.js@9.1.2: + resolution: + { + integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==, + } + + binary-extensions@2.3.0: + resolution: + { + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, + } + engines: { node: ">=8" } + + bintrees@1.0.2: + resolution: + { + integrity: sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==, + } + + body-parser@1.20.2: + resolution: + { + integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==, + } + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + + brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + + brace-expansion@2.0.1: + resolution: + { + integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, + } + + braces@3.0.3: + resolution: + { + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, + } + engines: { node: ">=8" } + + browser-stdout@1.3.1: + resolution: + { + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, + } + + buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + + buffer@6.0.3: + resolution: + { + integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, + } + + bytes@3.1.2: + resolution: + { + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, + } + engines: { node: ">= 0.8" } + + call-bind@1.0.7: + resolution: + { + integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, + } + engines: { node: ">= 0.4" } + + camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: ">=10" } + + cfonts@2.10.1: + resolution: + { + integrity: sha512-l5IcLv4SaOdL/EGR6BpOF5SEro88VcGJJ6+xbvJb+wXi19YC6UeHE/brv7a4vIcLZopnt3Ys3zWeNnyfB04UPg==, + } + engines: { node: ">=10" } + hasBin: true + + chai@4.3.10: + resolution: + { + integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==, + } + engines: { node: ">=4" } + + chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + + check-error@1.0.3: + resolution: + { + integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, + } + + chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + + ci-info@2.0.0: + resolution: + { + integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, + } + + cli-boxes@2.2.1: + resolution: + { + integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==, + } + engines: { node: ">=6" } + + cli-cursor@3.1.0: + resolution: + { + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + } + engines: { node: ">=8" } + + cli-spinners@2.9.2: + resolution: + { + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, + } + engines: { node: ">=6" } + + cli-truncate@2.1.0: + resolution: + { + integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==, + } + engines: { node: ">=8" } + + cliui@7.0.4: + resolution: + { + integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, + } + + cliui@8.0.1: + resolution: + { + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + } + engines: { node: ">=12" } + + code-excerpt@3.0.0: + resolution: + { + integrity: sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==, + } + engines: { node: ">=10" } + + color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + + color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + colorette@2.0.20: + resolution: + { + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, + } + + concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + + content-disposition@0.5.4: + resolution: + { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + } + engines: { node: ">= 0.6" } + + content-type@1.0.5: + resolution: + { + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, + } + engines: { node: ">= 0.6" } + + convert-to-spaces@1.0.2: + resolution: + { + integrity: sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==, + } + engines: { node: ">= 4" } + + cookie-signature@1.0.6: + resolution: + { + integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==, + } + + cookie@0.6.0: + resolution: + { + integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, + } + engines: { node: ">= 0.6" } + + create-require@1.1.1: + resolution: + { + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + } + + date-fns@3.3.1: + resolution: + { + integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==, + } + + dateformat@4.6.3: + resolution: + { + integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==, + } + + debug@2.6.9: + resolution: + { + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@4.0.0: + resolution: + { + integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, + } + engines: { node: ">=10" } + + deep-eql@4.1.4: + resolution: + { + integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, + } + engines: { node: ">=6" } + + deepmerge@4.3.1: + resolution: + { + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + } + engines: { node: ">=0.10.0" } + + define-data-property@1.1.4: + resolution: + { + integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, + } + engines: { node: ">= 0.4" } + + define-property@1.0.0: + resolution: + { + integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==, + } + engines: { node: ">=0.10.0" } + + depd@2.0.0: + resolution: + { + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + } + engines: { node: ">= 0.8" } + + destroy@1.2.0: + resolution: + { + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + } + engines: { node: ">= 0.8", npm: 1.2.8000 || >= 1.4.16 } + + diff@3.5.0: + resolution: + { + integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==, + } + engines: { node: ">=0.3.1" } + + diff@4.0.2: + resolution: + { + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, + } + engines: { node: ">=0.3.1" } + + diff@5.0.0: + resolution: + { + integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, + } + engines: { node: ">=0.3.1" } + + dotenv@16.4.5: + resolution: + { + integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==, + } + engines: { node: ">=12" } + + ee-first@1.1.1: + resolution: + { + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + } + + emoji-regex@8.0.0: + resolution: + { + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + } + + encodeurl@1.0.2: + resolution: + { + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + } + engines: { node: ">= 0.8" } + + end-of-stream@1.4.4: + resolution: + { + integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + } + + envio-darwin-arm64@2.4.1: + resolution: + { + integrity: sha512-uwwKhThFH9dZhQKd6kmleeTyl//GlJGvhFXuhuJ7xn93oGbOOy3hsoYfJZSbVmb0SSSJkgWdAKN82mYHNfdVwQ==, + } + cpu: [arm64] + os: [darwin] + + envio-darwin-x64@2.4.1: + resolution: + { + integrity: sha512-SKqI2hQmjmqlDYCwFaEK6TDJMLL/UE/wWlUIzsAY5drJQTwAL0mBXzUfQM8JbMgDoxeWyKNegUV1vCuTmCDREw==, + } + cpu: [x64] + os: [darwin] + + envio-linux-arm64@2.4.1: + resolution: + { + integrity: sha512-ujUUifyKM4kHkHfcudeH8iIf5xPiW9t+IzMCgY4gug2fs3Z3biyhmeaylYNpvNiIoQ58vZqJ23fBKaUn7CPPog==, + } + cpu: [arm64] + os: [linux] + + envio-linux-x64@2.4.1: + resolution: + { + integrity: sha512-aeVQ9I4zum6X+kBeJrFev/bTDePZRSlt6HytcnqJd7+iWagQggUejhcrSccp2eRSeQ95sGp+F+lQOFfWJHyEJQ==, + } + cpu: [x64] + os: [linux] + + envio@2.4.1: + resolution: + { + integrity: sha512-GsHv4S/mAzr//XCyTHFBnfd1CZFlfaG+wcWJkpeguzhnttNSOMJXCR4UPG0PxV2cZYiA3eVrOSPn58fTzk2G5g==, + } + hasBin: true + + es-define-property@1.0.0: + resolution: + { + integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, + } + engines: { node: ">= 0.4" } + + es-errors@1.3.0: + resolution: + { + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + } + engines: { node: ">= 0.4" } + + escalade@3.2.0: + resolution: + { + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + } + engines: { node: ">=6" } + + escape-html@1.0.3: + resolution: + { + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + } + + escape-string-regexp@2.0.0: + resolution: + { + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, + } + engines: { node: ">=8" } + + escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } + + etag@1.8.1: + resolution: + { + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + } + engines: { node: ">= 0.6" } + + ethers@6.8.0: + resolution: + { + integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==, + } + engines: { node: ">=14.0.0" } + + event-target-shim@5.0.1: + resolution: + { + integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, + } + engines: { node: ">=6" } + + events@3.3.0: + resolution: + { + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + } + engines: { node: ">=0.8.x" } + + express@4.19.2: + resolution: + { + integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==, + } + engines: { node: ">= 0.10.0" } + + fast-copy@3.0.2: + resolution: + { + integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==, + } + + fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + + fast-json-stringify@2.7.13: + resolution: + { + integrity: sha512-ar+hQ4+OIurUGjSJD1anvYSDcUflywhKjfxnsW4TBTD7+u0tJufv6DKRWoQk3vI6YBOWMoz0TQtfbe7dxbQmvA==, + } + engines: { node: ">= 10.0.0" } + + fast-redact@3.5.0: + resolution: + { + integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==, + } + engines: { node: ">=6" } + + fast-safe-stringify@2.1.1: + resolution: + { + integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, + } + + fill-range@7.1.1: + resolution: + { + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + } + engines: { node: ">=8" } + + finalhandler@1.2.0: + resolution: + { + integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==, + } + engines: { node: ">= 0.8" } + + find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + + flat@5.0.2: + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + } + hasBin: true + + forwarded@0.2.0: + resolution: + { + integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, + } + engines: { node: ">= 0.6" } + + fresh@0.5.2: + resolution: + { + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + } + engines: { node: ">= 0.6" } + + fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + + fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + + function-bind@1.1.2: + resolution: + { + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + } + + get-caller-file@2.0.5: + resolution: + { + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + } + engines: { node: 6.* || 8.* || >= 10.* } + + get-func-name@2.0.2: + resolution: + { + integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, + } + + get-intrinsic@1.2.4: + resolution: + { + integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, + } + engines: { node: ">= 0.4" } + + glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + + glob@7.2.0: + resolution: + { + integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, + } + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: + { + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + } + engines: { node: ">=12" } + deprecated: Glob versions prior to v9 are no longer supported + + gopd@1.0.1: + resolution: + { + integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + } + + has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + has-property-descriptors@1.0.2: + resolution: + { + integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, + } + + has-proto@1.0.3: + resolution: + { + integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, + } + engines: { node: ">= 0.4" } + + has-symbols@1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: ">= 0.4" } + + hasown@2.0.2: + resolution: + { + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + } + engines: { node: ">= 0.4" } + + he@1.2.0: + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + } + hasBin: true + + help-me@4.2.0: + resolution: + { + integrity: sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==, + } + + http-errors@2.0.0: + resolution: + { + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + } + engines: { node: ">= 0.8" } + + iconv-lite@0.4.24: + resolution: + { + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + } + engines: { node: ">=0.10.0" } + + ieee754@1.2.1: + resolution: + { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } + + indent-string@4.0.0: + resolution: + { + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + } + engines: { node: ">=8" } + + inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + ink-big-text@1.2.0: + resolution: + { + integrity: sha512-xDfn8oOhiji9c4wojTKSaBnEfgpTTd3KL7jsMYVht4SbpfLdSKvVZiMi3U5v45eSjLm1ycMmeMWAP1G99lWL5Q==, + } + engines: { node: ">=8" } + peerDependencies: + ink: ">=2.0.0" + react: ">=16.8.0" + + ink-spinner@4.0.3: + resolution: + { + integrity: sha512-uJ4nbH00MM9fjTJ5xdw0zzvtXMkeGb0WV6dzSWvFv2/+ks6FIhpkt+Ge/eLdh0Ah6Vjw5pLMyNfoHQpRDRVFbQ==, + } + engines: { node: ">=10" } + peerDependencies: + ink: ">=3.0.5" + react: ">=16.8.2" + + ink@3.2.0: + resolution: + { + integrity: sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ">=16.8.0" + react: ">=16.8.0" + peerDependenciesMeta: + "@types/react": + optional: true + + ipaddr.js@1.9.1: + resolution: + { + integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, + } + engines: { node: ">= 0.10" } + + is-accessor-descriptor@1.0.1: + resolution: + { + integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==, + } + engines: { node: ">= 0.10" } + + is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + + is-buffer@1.1.6: + resolution: + { + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, + } + + is-ci@2.0.0: + resolution: + { + integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==, + } + hasBin: true + + is-data-descriptor@1.0.1: + resolution: + { + integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==, + } + engines: { node: ">= 0.4" } + + is-descriptor@1.0.3: + resolution: + { + integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==, + } + engines: { node: ">= 0.4" } + + is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + is-fullwidth-code-point@3.0.0: + resolution: + { + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, + } + engines: { node: ">=8" } + + is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + + is-number@3.0.0: + resolution: + { + integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==, + } + engines: { node: ">=0.10.0" } + + is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + + is-plain-obj@2.1.0: + resolution: + { + integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, + } + engines: { node: ">=8" } + + is-unicode-supported@0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: ">=10" } + + isows@1.0.4: + resolution: + { + integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==, + } + peerDependencies: + ws: "*" + + joycon@3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: ">=10" } + + js-sdsl@4.4.2: + resolution: + { + integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==, + } + + js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + + js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + + json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + + json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + + kind-of@3.2.2: + resolution: + { + integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==, + } + engines: { node: ">=0.10.0" } + + locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + + lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + + log-symbols@4.1.0: + resolution: + { + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + } + engines: { node: ">=10" } + + loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + + loupe@2.3.7: + resolution: + { + integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, + } + + make-error@1.3.6: + resolution: + { + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, + } + + media-typer@0.3.0: + resolution: + { + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + } + engines: { node: ">= 0.6" } + + merge-descriptors@1.0.1: + resolution: + { + integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==, + } + + methods@1.1.2: + resolution: + { + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, + } + engines: { node: ">= 0.6" } + + mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + + mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + + mime@1.6.0: + resolution: + { + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + } + engines: { node: ">=4" } + hasBin: true + + mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + + minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + + minimatch@5.0.1: + resolution: + { + integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==, + } + engines: { node: ">=10" } + + minimatch@5.1.6: + resolution: + { + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + } + engines: { node: ">=10" } + + minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + + mkdirp@0.5.6: + resolution: + { + integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, + } + hasBin: true + + mocha@10.2.0: + resolution: + { + integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==, + } + engines: { node: ">= 14.0.0" } + hasBin: true + + ms@2.0.0: + resolution: + { + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + } + + ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + nanoid@3.3.3: + resolution: + { + integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + negotiator@0.6.3: + resolution: + { + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + } + engines: { node: ">= 0.6" } + + node-fetch@2.7.0: + resolution: + { + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, + } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + + npm@10.8.3: + resolution: + { + integrity: sha512-0IQlyAYvVtQ7uOhDFYZCGK8kkut2nh8cpAdA9E6FvRSJaTgtZRZgNjlC5ZCct//L73ygrpY93CxXpRJDtNqPVg==, + } + engines: { node: ^18.17.0 || >=20.5.0 } + hasBin: true + bundledDependencies: + - "@isaacs/string-locale-compare" + - "@npmcli/arborist" + - "@npmcli/config" + - "@npmcli/fs" + - "@npmcli/map-workspaces" + - "@npmcli/package-json" + - "@npmcli/promise-spawn" + - "@npmcli/redact" + - "@npmcli/run-script" + - "@sigstore/tuf" + - abbrev + - archy + - cacache + - chalk + - ci-info + - cli-columns + - fastest-levenshtein + - fs-minipass + - glob + - graceful-fs + - hosted-git-info + - ini + - init-package-json + - is-cidr + - json-parse-even-better-errors + - libnpmaccess + - libnpmdiff + - libnpmexec + - libnpmfund + - libnpmhook + - libnpmorg + - libnpmpack + - libnpmpublish + - libnpmsearch + - libnpmteam + - libnpmversion + - make-fetch-happen + - minimatch + - minipass + - minipass-pipeline + - ms + - node-gyp + - nopt + - normalize-package-data + - npm-audit-report + - npm-install-checks + - npm-package-arg + - npm-pick-manifest + - npm-profile + - npm-registry-fetch + - npm-user-validate + - p-map + - pacote + - parse-conflict-json + - proc-log + - qrcode-terminal + - read + - semver + - spdx-expression-parse + - ssri + - supports-color + - tar + - text-table + - tiny-relative-date + - treeverse + - validate-npm-package-name + - which + - write-file-atomic + + object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } + + object-inspect@1.13.2: + resolution: + { + integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==, + } + engines: { node: ">= 0.4" } + + on-exit-leak-free@2.1.2: + resolution: + { + integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==, + } + engines: { node: ">=14.0.0" } + + on-finished@2.4.1: + resolution: + { + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + } + engines: { node: ">= 0.8" } + + once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + + onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + + p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + + p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + + parseurl@1.3.3: + resolution: + { + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + } + engines: { node: ">= 0.8" } + + patch-console@1.0.0: + resolution: + { + integrity: sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==, + } + engines: { node: ">=10" } + + path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + + path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: ">=0.10.0" } + + path-to-regexp@0.1.7: + resolution: + { + integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==, + } + + pathval@1.1.1: + resolution: + { + integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, + } + + picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + + pino-abstract-transport@1.1.0: + resolution: + { + integrity: sha512-lsleG3/2a/JIWUtf9Q5gUNErBqwIu1tUKTT3dUzaf5DySw9ra1wcqKjJjLX1VTY64Wk1eEOYsVGSaGfCK85ekA==, + } + + pino-abstract-transport@1.2.0: + resolution: + { + integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==, + } + + pino-pretty@10.2.3: + resolution: + { + integrity: sha512-4jfIUc8TC1GPUfDyMSlW1STeORqkoxec71yhxIpLDQapUu8WOuoz2TTCoidrIssyz78LZC69whBMPIKCMbi3cw==, + } + hasBin: true + + pino-std-serializers@6.2.2: + resolution: + { + integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==, + } + + pino@8.16.1: + resolution: + { + integrity: sha512-3bKsVhBmgPjGV9pyn4fO/8RtoVDR8ssW1ev819FsRXlRNgW8gR/9Kx+gCK4UPWd4JjrRDLWpzd/pb1AyWm3MGA==, + } + hasBin: true + + postgres@3.4.1: + resolution: + { + integrity: sha512-Wasjv6WEzrZXbwKByR2RGD7MBfj7VBqco3hYWz8ifzSAp6tb2L6MlmcKFzkmgV1jT7/vKlcSa+lxXZeTdeVMzQ==, + } + engines: { node: ">=12" } + + process-warning@2.3.2: + resolution: + { + integrity: sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==, + } + + process@0.11.10: + resolution: + { + integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, + } + engines: { node: ">= 0.6.0" } + + prom-client@15.0.0: + resolution: + { + integrity: sha512-UocpgIrKyA2TKLVZDSfm8rGkL13C19YrQBAiG3xo3aDFWcHedxRxI3z+cIcucoxpSO0h5lff5iv/SXoxyeopeA==, + } + engines: { node: ^16 || ^18 || >=20 } + + prop-types@15.8.1: + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } + + proxy-addr@2.0.7: + resolution: + { + integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, + } + engines: { node: ">= 0.10" } + + pump@3.0.2: + resolution: + { + integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==, + } + + punycode@2.3.1: + resolution: + { + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + } + engines: { node: ">=6" } + + qs@6.11.0: + resolution: + { + integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, + } + engines: { node: ">=0.6" } + + quick-format-unescaped@4.0.4: + resolution: + { + integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==, + } + + randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + } + + range-parser@1.2.1: + resolution: + { + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + } + engines: { node: ">= 0.6" } + + raw-body@2.5.2: + resolution: + { + integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, + } + engines: { node: ">= 0.8" } + + react-devtools-core@4.28.5: + resolution: + { + integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==, + } + + react-dom@18.3.1: + resolution: + { + integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==, + } + peerDependencies: + react: ^18.3.1 + + react-is@16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + + react-reconciler@0.26.2: + resolution: + { + integrity: sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==, + } + engines: { node: ">=0.10.0" } + peerDependencies: + react: ^17.0.2 + + react@18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: ">=0.10.0" } + + readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: ">= 6" } + + readable-stream@4.5.2: + resolution: + { + integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + + real-require@0.2.0: + resolution: + { + integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==, + } + engines: { node: ">= 12.13.0" } + + require-directory@2.1.1: + resolution: + { + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + } + engines: { node: ">=0.10.0" } + + rescript-envsafe@4.2.0: + resolution: + { + integrity: sha512-EpoEkyFzYZa2xzvOwHMAeW/dagqN0WXTL03IBJuZlE+33baKSTQEQ60L20472fPTJRxYaDv14A0UXglPvhSDsA==, + } + peerDependencies: + rescript: 11.x + rescript-schema: 6.x || 7.x || 8.x + + rescript-express@0.4.1: + resolution: + { + integrity: sha512-R+xAQKANfIFAIcxhQrkLn58IZQwhMZuQpVCH6UtTRNLWqlVtaogG9z4Rt0MQZgqYOjvrOtt51P0hOmYGg/90Fw==, + } + peerDependencies: + express: ^4.17.1 + + rescript-schema@8.2.0: + resolution: + { + integrity: sha512-pfRNB9kvafUYe+RgvsExiazJioi/iV8gmjK3xOw/jeSgPIIDoVhflnmpoz+vuiwlulYkNT/7u2+2EsCrph7QKA==, + } + peerDependencies: + rescript: 11.x + + rescript@11.1.3: + resolution: + { + integrity: sha512-bI+yxDcwsv7qE34zLuXeO8Qkc2+1ng5ErlSjnUIZdrAWKoGzHXpJ6ZxiiRBUoYnoMsgRwhqvrugIFyNgWasmsw==, + } + engines: { node: ">=10" } + hasBin: true + + restore-cursor@3.1.0: + resolution: + { + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + } + engines: { node: ">=8" } + + rfdc@1.4.1: + resolution: + { + integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, + } + + safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + safe-stable-stringify@2.5.0: + resolution: + { + integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==, + } + engines: { node: ">=10" } + + safer-buffer@2.1.2: + resolution: + { + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + } + + scheduler@0.20.2: + resolution: + { + integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==, + } + + scheduler@0.23.2: + resolution: + { + integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==, + } + + secure-json-parse@2.7.0: + resolution: + { + integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==, + } + + send@0.18.0: + resolution: + { + integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==, + } + engines: { node: ">= 0.8.0" } + + serialize-javascript@6.0.0: + resolution: + { + integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==, + } + + serve-static@1.15.0: + resolution: + { + integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==, + } + engines: { node: ">= 0.8.0" } + + set-function-length@1.2.2: + resolution: + { + integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, + } + engines: { node: ">= 0.4" } + + setprototypeof@1.2.0: + resolution: + { + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + } + + shell-quote@1.8.1: + resolution: + { + integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, + } + + side-channel@1.0.6: + resolution: + { + integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, + } + engines: { node: ">= 0.4" } + + signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + slice-ansi@3.0.0: + resolution: + { + integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==, + } + engines: { node: ">=8" } + + sonic-boom@3.8.1: + resolution: + { + integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==, + } + + source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + + source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + + split2@4.2.0: + resolution: + { + integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, + } + engines: { node: ">= 10.x" } + + stack-utils@2.0.6: + resolution: + { + integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, + } + engines: { node: ">=10" } + + statuses@2.0.1: + resolution: + { + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + } + engines: { node: ">= 0.8" } + + string-similarity@4.0.4: + resolution: + { + integrity: sha512-/q/8Q4Bl4ZKAPjj8WerIBJWALKkaPRfrvhfF8k/B23i4nzrlRj2/go1m90In7nG/3XDSbOo0+pu6RvCTM9RGMQ==, + } + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + string-width@4.2.3: + resolution: + { + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + } + engines: { node: ">=8" } + + string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + + strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } + + strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + + strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + + supports-color@8.1.1: + resolution: + { + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + } + engines: { node: ">=10" } + + tdigest@0.1.2: + resolution: + { + integrity: sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==, + } + + thread-stream@2.7.0: + resolution: + { + integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==, + } + + to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + + toidentifier@1.0.1: + resolution: + { + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + } + engines: { node: ">=0.6" } + + tr46@0.0.3: + resolution: + { + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + } + + ts-mocha@10.0.0: + resolution: + { + integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==, + } + engines: { node: ">= 6.X.X" } + hasBin: true + peerDependencies: + mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X + + ts-node@10.9.1: + resolution: + { + integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, + } + hasBin: true + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + + ts-node@7.0.1: + resolution: + { + integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==, + } + engines: { node: ">=4.2.0" } + hasBin: true + + tsconfig-paths@3.15.0: + resolution: + { + integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, + } + + tslib@2.4.0: + resolution: + { + integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, + } + + type-detect@4.1.0: + resolution: + { + integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, + } + engines: { node: ">=4" } + + type-fest@0.12.0: + resolution: + { + integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==, + } + engines: { node: ">=10" } + + type-fest@0.21.3: + resolution: + { + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + } + engines: { node: ">=10" } + + type-is@1.6.18: + resolution: + { + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + } + engines: { node: ">= 0.6" } + + typescript@5.2.2: + resolution: + { + integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, + } + engines: { node: ">=14.17" } + hasBin: true + + undici-types@5.25.3: + resolution: + { + integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==, + } + + unpipe@1.0.0: + resolution: + { + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + } + engines: { node: ">= 0.8" } + + uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + + util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + + utils-merge@1.0.1: + resolution: + { + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + } + engines: { node: ">= 0.4.0" } + + v8-compile-cache-lib@3.0.1: + resolution: + { + integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, + } + + vary@1.1.2: + resolution: + { + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + } + engines: { node: ">= 0.8" } + + viem@2.21.0: + resolution: + { + integrity: sha512-9g3Gw2nOU6t4bNuoDI5vwVExzIxseU0J7Jjx10gA2RNQVrytIrLxggW++tWEe3w4mnnm/pS1WgZFjQ/QKf/nHw==, + } + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + + webauthn-p256@0.0.5: + resolution: + { + integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==, + } + + webidl-conversions@3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } + + whatwg-url@5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } + + widest-line@3.1.0: + resolution: + { + integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==, + } + engines: { node: ">=8" } + + window-size@1.1.1: + resolution: + { + integrity: sha512-5D/9vujkmVQ7pSmc0SCBmHXbkv6eaHwXEx65MywhmUMsI8sGqJ972APq1lotfcwMKPFLuCFfL8xGHLIp7jaBmA==, + } + engines: { node: ">= 0.10.0" } + hasBin: true + + workerpool@6.2.1: + resolution: + { + integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==, + } + + wrap-ansi@6.2.0: + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: ">=8" } + + wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: ">=10" } + + wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + ws@7.5.10: + resolution: + { + integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, + } + engines: { node: ">=8.3.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: + { + integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ">=5.0.2" + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.5.0: + resolution: + { + integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: ">=10" } + + yaml@2.5.1: + resolution: + { + integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==, + } + engines: { node: ">= 14" } + hasBin: true + + yargs-parser@20.2.4: + resolution: + { + integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, + } + engines: { node: ">=10" } + + yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: ">=12" } + + yargs-unparser@2.0.0: + resolution: + { + integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, + } + engines: { node: ">=10" } + + yargs@16.2.0: + resolution: + { + integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, + } + engines: { node: ">=10" } + + yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: ">=12" } + + yarn@1.22.22: + resolution: + { + integrity: sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==, + } + engines: { node: ">=4.0.0" } + hasBin: true + + yn@2.0.0: + resolution: + { + integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==, + } + engines: { node: ">=4" } + + yn@3.1.1: + resolution: + { + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, + } + engines: { node: ">=6" } + + yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } + + yoga-layout-prebuilt@1.10.0: + resolution: + { + integrity: sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==, + } + engines: { node: ">=8" } + +snapshots: + "@adraffy/ens-normalize@1.10.0": {} + + "@cspotcode/source-map-support@0.8.1": + dependencies: + "@jridgewell/trace-mapping": 0.3.9 + + "@elastic/ecs-helpers@1.1.0": + dependencies: + fast-json-stringify: 2.7.13 + + "@elastic/ecs-pino-format@1.4.0": + dependencies: + "@elastic/ecs-helpers": 1.1.0 + + "@envio-dev/hypersync-client-darwin-arm64@0.6.2": + optional: true + + "@envio-dev/hypersync-client-darwin-x64@0.6.2": + optional: true + + "@envio-dev/hypersync-client-linux-arm64-gnu@0.6.2": + optional: true + + "@envio-dev/hypersync-client-linux-x64-gnu@0.6.2": + optional: true + + "@envio-dev/hypersync-client-linux-x64-musl@0.6.2": + optional: true + + "@envio-dev/hypersync-client-win32-x64-msvc@0.6.2": + optional: true + + "@envio-dev/hypersync-client@0.6.2": + dependencies: + npm: 10.8.3 + yarn: 1.22.22 + optionalDependencies: + "@envio-dev/hypersync-client-darwin-arm64": 0.6.2 + "@envio-dev/hypersync-client-darwin-x64": 0.6.2 + "@envio-dev/hypersync-client-linux-arm64-gnu": 0.6.2 + "@envio-dev/hypersync-client-linux-x64-gnu": 0.6.2 + "@envio-dev/hypersync-client-linux-x64-musl": 0.6.2 + "@envio-dev/hypersync-client-win32-x64-msvc": 0.6.2 + + "@glennsl/rescript-fetch@0.2.0": {} + + "@jridgewell/resolve-uri@3.1.2": {} + + "@jridgewell/sourcemap-codec@1.5.0": {} + + "@jridgewell/trace-mapping@0.3.9": + dependencies: + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.0 + + "@noble/curves@1.2.0": + dependencies: + "@noble/hashes": 1.3.2 + + "@noble/curves@1.4.0": + dependencies: + "@noble/hashes": 1.4.0 + + "@noble/hashes@1.3.2": {} + + "@noble/hashes@1.4.0": {} + + "@opentelemetry/api@1.9.0": {} + + "@rescript/react@0.12.1(react-dom@18.3.1(react@18.2.0))(react@18.2.0)": + dependencies: + react: 18.2.0 + react-dom: 18.3.1(react@18.2.0) + + "@ryyppy/rescript-promise@2.1.0": {} + + "@scure/base@1.1.9": {} + + "@scure/bip32@1.4.0": + dependencies: + "@noble/curves": 1.4.0 + "@noble/hashes": 1.4.0 + "@scure/base": 1.1.9 + + "@scure/bip39@1.3.0": + dependencies: + "@noble/hashes": 1.4.0 + "@scure/base": 1.1.9 + + "@tsconfig/node10@1.0.11": {} + + "@tsconfig/node12@1.0.11": {} + + "@tsconfig/node14@1.0.3": {} + + "@tsconfig/node16@1.0.4": {} + + "@types/chai@4.3.20": {} + + "@types/json5@0.0.29": + optional: true + + "@types/mocha@10.0.6": {} + + "@types/node@18.15.13": {} + + "@types/node@20.8.8": + dependencies: + undici-types: 5.25.3 + + "@types/yoga-layout@1.9.2": {} + + abitype@1.0.5(typescript@5.2.2): + optionalDependencies: + typescript: 5.2.2 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + aes-js@4.0.0-beta.5: {} + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-colors@4.1.1: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@5.0.1: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@2.0.1: {} + + array-flatten@1.1.1: {} + + arrify@1.0.1: {} + + assertion-error@1.1.0: {} + + astral-regex@2.0.0: {} + + atomic-sleep@1.0.0: {} + + auto-bind@4.0.0: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + bignumber.js@9.1.2: {} + + binary-extensions@2.3.0: {} + + bintrees@1.0.2: {} + + body-parser@1.20.2: + 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 + transitivePeerDependencies: + - supports-color + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browser-stdout@1.3.1: {} + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bytes@3.1.2: {} + + call-bind@1.0.7: + 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.2 + + camelcase@6.3.0: {} + + cfonts@2.10.1: + dependencies: + chalk: 4.1.2 + window-size: 1.1.1 + + chai@4.3.10: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@2.0.0: {} + + cli-boxes@2.2.1: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + code-excerpt@3.0.0: + dependencies: + convert-to-spaces: 1.0.2 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + concat-map@0.0.1: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-to-spaces@1.0.2: {} + + cookie-signature@1.0.6: {} + + cookie@0.6.0: {} + + create-require@1.1.1: {} + + date-fns@3.3.1: {} + + dateformat@4.6.3: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.3.4(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@4.0.0: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + depd@2.0.0: {} + + destroy@1.2.0: {} + + diff@3.5.0: {} + + diff@4.0.2: {} + + diff@5.0.0: {} + + dotenv@16.4.5: {} + + ee-first@1.1.1: {} + + emoji-regex@8.0.0: {} + + encodeurl@1.0.2: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + envio-darwin-arm64@2.4.1: + optional: true + + envio-darwin-x64@2.4.1: + optional: true + + envio-linux-arm64@2.4.1: + optional: true + + envio-linux-x64@2.4.1: + optional: true + + envio@2.4.1: + optionalDependencies: + envio-darwin-arm64: 2.4.1 + envio-darwin-x64: 2.4.1 + envio-linux-arm64: 2.4.1 + envio-linux-x64: 2.4.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + etag@1.8.1: {} + + ethers@6.8.0: + dependencies: + "@adraffy/ens-normalize": 1.10.0 + "@noble/curves": 1.2.0 + "@noble/hashes": 1.3.2 + "@types/node": 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + event-target-shim@5.0.1: {} + + events@3.3.0: {} + + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + 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 + transitivePeerDependencies: + - supports-color + + fast-copy@3.0.2: {} + + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-json-stringify@2.7.13: + dependencies: + ajv: 6.12.6 + deepmerge: 4.3.1 + rfdc: 1.4.1 + string-similarity: 4.0.4 + + fast-redact@3.5.0: {} + + fast-safe-stringify@2.1.1: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + finalhandler@1.2.0: + 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 + transitivePeerDependencies: + - supports-color + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat@5.0.2: {} + + forwarded@0.2.0: {} + + fresh@0.5.2: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + help-me@4.2.0: + dependencies: + glob: 8.1.0 + readable-stream: 3.6.2 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ink-big-text@1.2.0(ink@3.2.0(react@18.2.0))(react@18.2.0): + dependencies: + cfonts: 2.10.1 + ink: 3.2.0(react@18.2.0) + prop-types: 15.8.1 + react: 18.2.0 + + ink-spinner@4.0.3(ink@3.2.0(react@18.2.0))(react@18.2.0): + dependencies: + cli-spinners: 2.9.2 + ink: 3.2.0(react@18.2.0) + react: 18.2.0 + + ink@3.2.0(react@18.2.0): + dependencies: + ansi-escapes: 4.3.2 + auto-bind: 4.0.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + cli-cursor: 3.1.0 + cli-truncate: 2.1.0 + code-excerpt: 3.0.0 + indent-string: 4.0.0 + is-ci: 2.0.0 + lodash: 4.17.21 + patch-console: 1.0.0 + react: 18.2.0 + react-devtools-core: 4.28.5 + react-reconciler: 0.26.2(react@18.2.0) + scheduler: 0.20.2 + signal-exit: 3.0.7 + slice-ansi: 3.0.0 + stack-utils: 2.0.6 + string-width: 4.2.3 + type-fest: 0.12.0 + widest-line: 3.1.0 + wrap-ansi: 6.2.0 + ws: 7.5.10 + yoga-layout-prebuilt: 1.10.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ipaddr.js@1.9.1: {} + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-buffer@1.1.6: {} + + is-ci@2.0.0: + dependencies: + ci-info: 2.0.0 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@7.0.0: {} + + is-plain-obj@2.1.0: {} + + is-unicode-supported@0.1.0: {} + + isows@1.0.4(ws@8.17.1): + dependencies: + ws: 8.17.1 + + joycon@3.1.1: {} + + js-sdsl@4.4.2: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + json-schema-traverse@0.4.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + optional: true + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + make-error@1.3.6: {} + + media-typer@0.3.0: {} + + merge-descriptors@1.0.1: {} + + methods@1.1.2: {} + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mimic-fn@2.1.0: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mocha@10.2.0: + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + nanoid@3.3.3: {} + + negotiator@0.6.3: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + normalize-path@3.0.0: {} + + npm@10.8.3: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + parseurl@1.3.3: {} + + patch-console@1.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-to-regexp@0.1.7: {} + + pathval@1.1.1: {} + + picomatch@2.3.1: {} + + pino-abstract-transport@1.1.0: + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + + pino-pretty@10.2.3: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 4.2.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pump: 3.0.2 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 3.8.1 + strip-json-comments: 3.1.1 + + pino-std-serializers@6.2.2: {} + + pino@8.16.1: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.1.0 + pino-std-serializers: 6.2.2 + process-warning: 2.3.2 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + + postgres@3.4.1: {} + + process-warning@2.3.2: {} + + process@0.11.10: {} + + prom-client@15.0.0: + dependencies: + "@opentelemetry/api": 1.9.0 + tdigest: 0.1.2 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.3.1: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + quick-format-unescaped@4.0.4: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + react-devtools-core@4.28.5: + dependencies: + shell-quote: 1.8.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + react-dom@18.3.1(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.2 + + react-is@16.13.1: {} + + react-reconciler@0.26.2(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react: 18.2.0 + scheduler: 0.20.2 + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + real-require@0.2.0: {} + + require-directory@2.1.1: {} + + rescript-envsafe@4.2.0(rescript-schema@8.2.0(rescript@11.1.3))(rescript@11.1.3): + dependencies: + rescript: 11.1.3 + rescript-schema: 8.2.0(rescript@11.1.3) + + rescript-express@0.4.1(express@4.19.2): + dependencies: + express: 4.19.2 + + rescript-schema@8.2.0(rescript@11.1.3): + dependencies: + rescript: 11.1.3 + + rescript@11.1.3: {} + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + rfdc@1.4.1: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scheduler@0.20.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + secure-json-parse@2.7.0: {} + + send@0.18.0: + 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 + transitivePeerDependencies: + - supports-color + + serialize-javascript@6.0.0: + dependencies: + randombytes: 2.1.0 + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-function-length@1.2.2: + 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 + + setprototypeof@1.2.0: {} + + shell-quote@1.8.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + sonic-boom@3.8.1: + dependencies: + atomic-sleep: 1.0.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + + split2@4.2.0: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + statuses@2.0.1: {} + + string-similarity@4.0.4: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-bom@3.0.0: + optional: true + + strip-json-comments@3.1.1: {} + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tdigest@0.1.2: + dependencies: + bintrees: 1.0.2 + + thread-stream@2.7.0: + dependencies: + real-require: 0.2.0 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + ts-mocha@10.0.0(mocha@10.2.0): + dependencies: + mocha: 10.2.0 + ts-node: 7.0.1 + optionalDependencies: + tsconfig-paths: 3.15.0 + + ts-node@10.9.1(@types/node@20.8.8)(typescript@5.2.2): + dependencies: + "@cspotcode/source-map-support": 0.8.1 + "@tsconfig/node10": 1.0.11 + "@tsconfig/node12": 1.0.11 + "@tsconfig/node14": 1.0.3 + "@tsconfig/node16": 1.0.4 + "@types/node": 20.8.8 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + ts-node@7.0.1: + dependencies: + arrify: 1.0.1 + buffer-from: 1.1.2 + diff: 3.5.0 + make-error: 1.3.6 + minimist: 1.2.8 + mkdirp: 0.5.6 + source-map-support: 0.5.21 + yn: 2.0.0 + + tsconfig-paths@3.15.0: + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + optional: true + + tslib@2.4.0: {} + + type-detect@4.1.0: {} + + type-fest@0.12.0: {} + + type-fest@0.21.3: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + typescript@5.2.2: {} + + undici-types@5.25.3: {} + + unpipe@1.0.0: {} + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utils-merge@1.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + vary@1.1.2: {} + + viem@2.21.0(typescript@5.2.2): + dependencies: + "@adraffy/ens-normalize": 1.10.0 + "@noble/curves": 1.4.0 + "@noble/hashes": 1.4.0 + "@scure/bip32": 1.4.0 + "@scure/bip39": 1.3.0 + abitype: 1.0.5(typescript@5.2.2) + isows: 1.0.4(ws@8.17.1) + webauthn-p256: 0.0.5 + ws: 8.17.1 + optionalDependencies: + typescript: 5.2.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + webauthn-p256@0.0.5: + dependencies: + "@noble/curves": 1.4.0 + "@noble/hashes": 1.4.0 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + window-size@1.1.1: + dependencies: + define-property: 1.0.0 + is-number: 3.0.0 + + workerpool@6.2.1: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrappy@1.0.2: {} + + ws@7.5.10: {} + + ws@8.17.1: {} + + ws@8.5.0: {} + + y18n@5.0.8: {} + + yaml@2.5.1: {} + + yargs-parser@20.2.4: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yarn@1.22.22: {} + + yn@2.0.0: {} + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + yoga-layout-prebuilt@1.10.0: + dependencies: + "@types/yoga-layout": 1.9.2 diff --git a/apps/indexer/pnpm-workspace.yaml b/apps/indexer/pnpm-workspace.yaml new file mode 100644 index 0000000..71d2239 --- /dev/null +++ b/apps/indexer/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "./*" diff --git a/apps/indexer/schema.graphql b/apps/indexer/schema.graphql new file mode 100644 index 0000000..ad78efd --- /dev/null +++ b/apps/indexer/schema.graphql @@ -0,0 +1,5 @@ +type Dummy { + id: ID! + protocol: BigInt! + pointer: String! +} diff --git a/apps/indexer/src/handlers/Allo.ts b/apps/indexer/src/handlers/Allo.ts new file mode 100644 index 0000000..160a599 --- /dev/null +++ b/apps/indexer/src/handlers/Allo.ts @@ -0,0 +1,18 @@ +// /* +// * Please refer to https://docs.envio.dev for a thorough guide on all Envio indexer features +// */ +import { Allo } from "../../generated"; + +Allo.PoolCreated.contractRegister(({ event, context }) => { + context.addStrategy(event.params.strategy); +}); + +Allo.PoolCreated.handler(async ({}) => {}); + +Allo.PoolMetadataUpdated.handler(async ({}) => {}); + +Allo.PoolFunded.handler(async ({}) => {}); + +Allo.RoleGranted.handler(async ({}) => {}); + +Allo.RoleRevoked.handler(async ({}) => {}); diff --git a/apps/indexer/src/handlers/Registry.ts b/apps/indexer/src/handlers/Registry.ts new file mode 100644 index 0000000..722ff0e --- /dev/null +++ b/apps/indexer/src/handlers/Registry.ts @@ -0,0 +1,14 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +import { Registry } from "../../generated"; + +// Handler for ProfileCreated event +Registry.ProfileCreated.handler(async ({}) => {}); + +// Handler for ProfileMetadataUpdated event +Registry.ProfileMetadataUpdated.handler(async ({}) => {}); + +// Handler for ProfileNameUpdated event +Registry.ProfileNameUpdated.handler(async ({}) => {}); + +// Handler for ProfileOwnerUpdated event +Registry.ProfileOwnerUpdated.handler(async ({}) => {}); diff --git a/apps/indexer/src/handlers/Strategy.ts b/apps/indexer/src/handlers/Strategy.ts new file mode 100644 index 0000000..8367cc8 --- /dev/null +++ b/apps/indexer/src/handlers/Strategy.ts @@ -0,0 +1,39 @@ +/* eslint-disable @typescript-eslint/no-unsafe-member-access */ +import { Strategy } from "../../generated"; + +// Registered Handlers +Strategy.RegisteredWithSender.handler(async ({}) => {}); +Strategy.RegisteredWithData.handler(async ({}) => {}); + +// TimestampsUpdated Handlers +Strategy.TimestampsUpdated.handler(async ({}) => {}); +Strategy.TimestampsUpdatedWithRegistrationAndAllocation.handler(async ({}) => {}); + +// DistributionUpdated Handler +Strategy.DistributionUpdated.handler(async ({}) => {}); + +// FundsDistributed Handler +Strategy.FundsDistributed.handler(async ({}) => {}); + +// Distributed Handlers +Strategy.DistributedWithRecipientAddress.handler(async ({}) => {}); +Strategy.DistributedWithData.handler(async ({}) => {}); +Strategy.DistributedWithFlowRate.handler(async ({}) => {}); + +// Allocated Handlers +Strategy.AllocatedWithOrigin.handler(async ({}) => {}); +Strategy.AllocatedWithData.handler(async ({}) => {}); +Strategy.AllocatedWithToken.handler(async ({}) => {}); +Strategy.AllocatedWithVotes.handler(async ({}) => {}); +Strategy.AllocatedWithStatus.handler(async ({}) => {}); + +// AllocatedWithNft Handler +Strategy.AllocatedWithNft.handler(async ({}) => {}); + +// DirectAllocated Handler +Strategy.DirectAllocated.handler(async ({}) => {}); + +// RecipientStatusUpdated Handlers +Strategy.RecipientStatusUpdatedWithApplicationId.handler(async ({}) => {}); +Strategy.RecipientStatusUpdatedWithRecipientStatus.handler(async ({}) => {}); +Strategy.RecipientStatusUpdatedWithFullRow.handler(async ({}) => {}); diff --git a/apps/indexer/test/helpers.ts b/apps/indexer/test/helpers.ts new file mode 100644 index 0000000..325086c --- /dev/null +++ b/apps/indexer/test/helpers.ts @@ -0,0 +1,85 @@ +import fs from "fs"; +import path from "path"; +import * as yaml from "yaml"; + +type Contract = { + handler: string; + events: { event: string; name: string }[]; +}; + +/** + * Load events from the config YAML file + * @param filePath Path to the YAML file + * @returns Record of handler file names and their corresponding events + */ +export const loadYaml = (filePath: string): Record => { + const fileContents = fs.readFileSync(filePath, "utf8"); + const data = yaml.parse(fileContents) as { + contracts: Contract[]; + }; + + const eventHandlers: Record = {}; + + data.contracts.forEach((contract: Contract) => { + const handlerFile = path.basename(contract.handler); // Get handler file name + eventHandlers[handlerFile] = contract.events.map( + (event) => event.name || (event.event.split("(")[0] as string).trim(), + ); + }); + return eventHandlers; +}; + +/** + * Load handler functions from the handler directory + * @param handlerDir Path to the handler directory + * @returns Record of handler file names and their corresponding handler functions + */ +export const loadHandlerFunctions = (handlerDir: string): Record => { + const handlerFunctions: Record = {}; + + const handlerFiles = fs.readdirSync(handlerDir); + + handlerFiles.forEach((file) => { + const filePath = path.join(handlerDir, file); + const fileContents: string = fs.readFileSync(filePath, "utf8"); + + const handlerRegex = /\.([A-Za-z0-9_]+)\.handler/g; + const handlers: string[] = []; + let match; + while ((match = handlerRegex.exec(fileContents)) !== null) { + handlers.push(match[1] as string); // Capture handler name + } + + handlerFunctions[file] = handlers; + }); + + return handlerFunctions; +}; + +/** + * Compare events and handler functions to check if all events are handled, log missing handlers + * @param eventHandlers events from the config YAML file + * @param handlerFunctions handler functions from the handler directory + * @returns boolean indicating if there are missing handlers + */ +export const compareEventsAndHandlers = ( + eventHandlers: Record, + handlerFunctions: Record, +): boolean => { + let areMissingHandlers: boolean = false; + + Object.keys(eventHandlers).forEach((handlerFile) => { + const events = eventHandlers[handlerFile] as string[]; + const functions = handlerFunctions[handlerFile] || []; + + const missingHandlers = events.filter((event) => !functions.includes(event)); + + if (missingHandlers.length > 0) { + console.log(`Missing handlers in ${handlerFile}:`, missingHandlers); + areMissingHandlers = true; + } else { + console.log(`All events in ${handlerFile} are handled.`); + } + }); + return areMissingHandlers; +}; diff --git a/apps/indexer/test/index.ts b/apps/indexer/test/index.ts new file mode 100644 index 0000000..0c73ace --- /dev/null +++ b/apps/indexer/test/index.ts @@ -0,0 +1,18 @@ +import assert from "assert"; +import path from "path"; + +import { compareEventsAndHandlers, loadHandlerFunctions, loadYaml } from "./helpers"; + +describe("All events are handled", () => { + it("handles all the events", () => { + // File paths + const yamlFilePath = path.join(__dirname, "../config.yaml"); // Path to your YAML file + const handlersDir = path.join(__dirname, "../src/handlers"); // Path to your handlers directory + + // Load and compare + const eventHandlers = loadYaml(yamlFilePath); + const handlerFunctions = loadHandlerFunctions(handlersDir); + + assert.equal(compareEventsAndHandlers(eventHandlers, handlerFunctions), false); + }); +}); diff --git a/apps/indexer/tsconfig.json b/apps/indexer/tsconfig.json new file mode 100644 index 0000000..c262e6c --- /dev/null +++ b/apps/indexer/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "es2020", + "lib": ["es2020"], + "allowJs": true, + "checkJs": false, + "outDir": "build", + "strict": true, + "noImplicitAny": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "module": "CommonJS" + }, + "include": ["src", "test"] +} diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..733641b --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,64 @@ +services: + envio-postgres: + image: postgres:16 + restart: always + ports: + - "5433:5432" + volumes: + - db_data:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: testing + POSTGRES_USER: postgres + POSTGRES_DB: envio-dev + networks: + - indexer-service + graphql-engine: + image: hasura/graphql-engine:v2.23.0 + ports: + - "8080:8080" + user: 1001:1001 + depends_on: + - "envio-postgres" + restart: always + environment: + HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:testing@envio-postgres:5432/envio-dev + HASURA_GRAPHQL_ENABLE_CONSOLE: true + HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, + query-log + HASURA_GRAPHQL_NO_OF_RETRIES: 10 + HASURA_GRAPHQL_ADMIN_SECRET: testing + HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES: "true" + PORT: 8080 + HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public + healthcheck: + test: timeout 1s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1 + interval: 5s + timeout: 2s + retries: 50 + start_period: 5s + networks: + - indexer-service + indexer-service: + build: + context: ./apps/indexer + dockerfile: Dockerfile + depends_on: + - "envio-postgres" + - "graphql-engine" + restart: always + environment: + ENVIO_PG_HOST: envio-postgres + ENVIO_PG_PORT: 5432 + ENVIO_POSTGRES_PASSWORD: testing + ENVIO_PG_USER: postgres + ENVIO_PG_DATABASE: envio-dev + HASURA_GRAPHQL_ENDPOINT: http://graphql-engine:8080/v1/metadata + TUI_OFF: true + networks: + - indexer-service +volumes: + db_data: + ganache-data: +networks: + indexer-service: + name: indexer_test_network diff --git a/package.json b/package.json index bafebd1..6b53b91 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,8 @@ { - "name": "ts-turborepo-boilerplate", + "name": "grants-stack-indexer", "version": "0.0.1", "private": true, - "description": "Start your next offchain project in seconds", - "homepage": "https://github.com/defi-wonderland/ts-turborepo-boilerplate#readme", - "repository": { - "type": "git", - "url": "git+https://github.com/defi-wonderland/ts-turborepo-boilerplate.git" - }, + "description": "Grants stack indexer for Gitcoin Allo protocol", "license": "MIT", "author": "Wonderland", "type": "module", diff --git a/packages/contracts/.solhint.json b/packages/contracts/.solhint.json deleted file mode 100644 index 4be8b14..0000000 --- a/packages/contracts/.solhint.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "solhint:recommended", - "rules": { - "compiler-version": ["off"], - "constructor-syntax": "warn", - "quotes": ["error", "single"], - "func-visibility": ["warn", { "ignoreConstructors": true }], - "not-rely-on-time": "off", - "no-inline-assembly": "off", - "no-empty-blocks": "off", - "private-vars-leading-underscore": ["warn", { "strict": false }], - "ordering": "warn", - "immutable-name-snakecase": "warn", - "avoid-low-level-calls": "off", - "no-console": "off", - "max-line-length": ["warn", 120] - } -} diff --git a/packages/contracts/.solhint.tests.json b/packages/contracts/.solhint.tests.json deleted file mode 100644 index 5014137..0000000 --- a/packages/contracts/.solhint.tests.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "solhint:recommended", - "rules": { - "compiler-version": ["off"], - "constructor-syntax": "warn", - "quotes": ["error", "single"], - "func-visibility": ["warn", { "ignoreConstructors": true }], - "not-rely-on-time": "off", - "style-guide-casing": "off", - "var-name-mixedcase": "off", - "const-name-snakecase": "off", - "no-inline-assembly": "off", - "no-empty-blocks": "error", - "definition-name-capwords": "off", - "named-parameters-function": "off", - "no-global-import": "off", - "max-states-count": "off", - "private-vars-leading-underscore": ["warn", { "strict": false }], - "ordering": "off", - "immutable-name-snakecase": "warn", - "avoid-low-level-calls": "off", - "one-contract-per-file": "off", - "max-line-length": ["warn", 120] - } -} diff --git a/packages/contracts/README.md b/packages/contracts/README.md deleted file mode 100644 index a1c1e6d..0000000 --- a/packages/contracts/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# ts-turborepo-boilerplate: Contracts package - -> Note: in case you don't require writing contracts, it's recommended -to delete this package. Also delete Foundry install from your GH workflow setup - -Starter package for starting to write you Solidity smart contracts -using Foundry in seconds. It contains a basic Greeter contract with -an external interface - -## Setup -1. Change package name to your own in [`package.json`](./package.json) -2. Install dependencies running `pnpm install` - -## Available Scripts - -Available scripts that can be run using `pnpm`: - -| Script | Description | -| -------------- | ------------------------------------------------------------ | -| `build` | Build contracts using Foundry's forge | -| `lint` | Run forge fmt and solhint on all contracts | -| `lint:fix` | Run linter and automatically fix code formatting issues. | -| `lint:sol-logic`| Run forge fmt and solhint on contracts | -| `lint:sol-tests`| Run forge fmt and solhint on test contracts | -| `format:check` | Check code formatting and linting without making changes. | -| `test` | Run tests using forge | -| `test:cov` | Run tests with coverage report | - - -### Finding compiled contracts output -By default, forge writes output to [out](./out) folder which is not git-tracked. -There you can find all contracts output including their respective ABIs, -deployment bytecode and more stuff - - -## References -- [Foundry docs](https://book.getfoundry.sh/forge/) -- [Foundry repo](https://github.com/foundry-rs) \ No newline at end of file diff --git a/packages/contracts/foundry.toml b/packages/contracts/foundry.toml deleted file mode 100644 index d076d55..0000000 --- a/packages/contracts/foundry.toml +++ /dev/null @@ -1,20 +0,0 @@ -[fmt] -line_length = 120 -tab_width = 2 -bracket_spacing = false -int_types = 'long' -quote_style = 'single' -number_underscore = 'thousands' -multiline_func_header = 'params_first' -sort_imports = true - -[profile.default] -solc_version = '0.8.23' -libs = ['node_modules', 'lib'] -optimizer=false -src = "src" -out = "out" -# This translates to `solc --allow-paths node_modules` -allow_paths = ["node_modules"] - -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/packages/contracts/package.json b/packages/contracts/package.json deleted file mode 100644 index e6d4bff..0000000 --- a/packages/contracts/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@ts-turborepo-boilerplate/contracts", - "version": "0.0.1", - "private": true, - "description": "", - "license": "MIT", - "author": "Wonderland", - "type": "module", - "scripts": { - "build": "forge build", - "clean": "rm -rf out && rm -rf cache", - "lint": "forge fmt", - "lint:fix": "forge fmt && pnpm lint:sol-tests --fix && pnpm lint:sol-logic --fix", - "lint:sol-logic": "solhint -c .solhint.json 'src/**/*.sol'", - "lint:sol-tests": "solhint -c .solhint.tests.json 'test/**/*.sol'", - "test": "forge test -vvv", - "test:cov": "forge coverage --report summary --report lcov --match-path 'test/unit/*'" - }, - "lint-staged": { - "(src|test)*.{js,css,md,ts,sol}": "forge fmt", - "src/**/*.sol": "pnpm lint:sol-logic", - "test/**/*.sol": "pnpm lint:sol-tests", - "package.json": "sort-package-json" - }, - "devDependencies": { - "forge-std": "github:foundry-rs/forge-std#semver:1.9.2", - "solhint-community": "4.0.0" - } -} diff --git a/packages/contracts/remappings.txt b/packages/contracts/remappings.txt deleted file mode 100644 index 140bbc1..0000000 --- a/packages/contracts/remappings.txt +++ /dev/null @@ -1,4 +0,0 @@ -forge-std/=node_modules/forge-std/src - -contracts/=src/contracts -interfaces/=src/interfaces \ No newline at end of file diff --git a/packages/contracts/src/contracts/Greeter.sol b/packages/contracts/src/contracts/Greeter.sol deleted file mode 100644 index 7167b5c..0000000 --- a/packages/contracts/src/contracts/Greeter.sol +++ /dev/null @@ -1,59 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.23; - -import {IERC20} from 'forge-std/interfaces/IERC20.sol'; -import {IGreeter} from 'interfaces/IGreeter.sol'; - -contract Greeter is IGreeter { - /** - * @notice Empty string for revert checks - * @dev result of doing keccak256(bytes('')) - */ - bytes32 internal constant _EMPTY_STRING = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; - - /// @inheritdoc IGreeter - address public immutable OWNER; - - /// @inheritdoc IGreeter - string public greeting; - - /// @inheritdoc IGreeter - IERC20 public token; - - /** - * @notice Reverts in case the function was not called by the owner of the contract - */ - modifier onlyOwner() { - if (msg.sender != OWNER) { - revert Greeter_OnlyOwner(); - } - _; - } - - /** - * @notice Defines the owner to the msg.sender and sets the initial greeting - * @param _greeting Initial greeting - * @param _token Initial token - */ - constructor(string memory _greeting, IERC20 _token) { - OWNER = msg.sender; - token = _token; - setGreeting(_greeting); - } - - /// @inheritdoc IGreeter - function greet() external view returns (string memory _greeting, uint256 _balance) { - _greeting = greeting; - _balance = token.balanceOf(msg.sender); - } - - /// @inheritdoc IGreeter - function setGreeting(string memory _greeting) public onlyOwner { - if (keccak256(bytes(_greeting)) == _EMPTY_STRING) { - revert Greeter_InvalidGreeting(); - } - - greeting = _greeting; - emit GreetingSet(_greeting); - } -} diff --git a/packages/contracts/src/interfaces/IGreeter.sol b/packages/contracts/src/interfaces/IGreeter.sol deleted file mode 100644 index 53b4a64..0000000 --- a/packages/contracts/src/interfaces/IGreeter.sol +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.23; - -import {IERC20} from 'forge-std/interfaces/IERC20.sol'; - -/** - * @title Greeter Contract - * @author Wonderland - * @notice This is a basic contract created in order to portray some - * best practices and foundry functionality. - */ -interface IGreeter { - /*/////////////////////////////////////////////////////////////// - EVENTS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Greeting has changed - * @param _greeting The new greeting - */ - event GreetingSet(string _greeting); - - /*/////////////////////////////////////////////////////////////// - ERRORS - //////////////////////////////////////////////////////////////*/ - /** - * @notice Throws if the function was called by someone else than the owner - */ - error Greeter_OnlyOwner(); - - /** - * @notice Throws if the greeting set is invalid - * @dev Empty string is an invalid greeting - */ - error Greeter_InvalidGreeting(); - - /*/////////////////////////////////////////////////////////////// - VARIABLES - //////////////////////////////////////////////////////////////*/ - /** - * @notice Returns the owner of the contract - * @dev The owner will always be the deployer of the contract - * @return _owner The owner of the contract - */ - function OWNER() external view returns (address _owner); - - /** - * @notice Returns the previously set greeting - * @return _greet The greeting - */ - function greeting() external view returns (string memory _greet); - - /** - * @notice Returns the token used to greet callers - * @return _token The address of the token - */ - function token() external view returns (IERC20 _token); - - /*/////////////////////////////////////////////////////////////// - LOGIC - //////////////////////////////////////////////////////////////*/ - /** - * @notice Sets a new greeting - * @dev Only callable by the owner - * @param _newGreeting The new greeting to be set - */ - function setGreeting(string memory _newGreeting) external; - - /** - * @notice Greets the caller - * @return _greeting The greeting - * @return _balance Current token balance of the caller - */ - function greet() external view returns (string memory _greeting, uint256 _balance); -} diff --git a/packages/contracts/test/unit/Greeter.t.sol b/packages/contracts/test/unit/Greeter.t.sol deleted file mode 100644 index 82f59c9..0000000 --- a/packages/contracts/test/unit/Greeter.t.sol +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity 0.8.23; - -import {Greeter, IGreeter} from 'contracts/Greeter.sol'; -import {Test} from 'forge-std/Test.sol'; -import {IERC20} from 'forge-std/interfaces/IERC20.sol'; - -contract UnitGreeter is Test { - address internal _owner = makeAddr('owner'); - IERC20 internal _token = IERC20(makeAddr('token')); - uint256 internal _initialBalance = 100; - string internal _initialGreeting = 'hola'; - - Greeter internal _greeter; - - event GreetingSet(string _greeting); - - function setUp() external { - vm.prank(_owner); - _greeter = new Greeter(_initialGreeting, _token); - - vm.etch(address(_token), new bytes(0x1)); - } - - function test_EmptyTestExample() external { - // it does nothing - vm.skip(true); - } - - function test_ConstructorWhenPassingValidGreetingString() external { - vm.prank(_owner); - - // it deploys - _greeter = new Greeter(_initialGreeting, _token); - - // it sets the greeting string - assertEq(_greeter.greeting(), _initialGreeting); - - // it sets the owner as sender - assertEq(_greeter.OWNER(), _owner); - - // it sets the token used - assertEq(address(_greeter.token()), address(_token)); - } - - function test_ConstructorWhenPassingAnEmptyGreetingString() external { - vm.prank(_owner); - - // it reverts - vm.expectRevert(IGreeter.Greeter_InvalidGreeting.selector); - _greeter = new Greeter('', _token); - } - - function test_GreetWhenCalled() external { - vm.mockCall(address(_token), abi.encodeWithSelector(IERC20.balanceOf.selector), abi.encode(_initialBalance)); - vm.expectCall(address(_token), abi.encodeWithSelector(IERC20.balanceOf.selector)); - (string memory _greet, uint256 _balance) = _greeter.greet(); - - // it returns the greeting string - assertEq(_greet, _initialGreeting); - - // it returns the token balance of the contract - assertEq(_balance, _initialBalance); - } - - modifier whenCalledByTheOwner() { - vm.startPrank(_owner); - _; - vm.stopPrank(); - } - - function test_SetGreetingWhenPassingAValidGreetingString() external whenCalledByTheOwner { - string memory _newGreeting = 'hello'; - - // it emit GreetingSet - vm.expectEmit(true, true, true, true, address(_greeter)); - emit GreetingSet(_newGreeting); - - _greeter.setGreeting(_newGreeting); - - // it sets the greeting string - assertEq(_greeter.greeting(), _newGreeting); - } - - function test_SetGreetingWhenPassingAnEmptyGreetingString() external whenCalledByTheOwner { - // it reverts - vm.expectRevert(IGreeter.Greeter_InvalidGreeting.selector); - _greeter.setGreeting(''); - } - - function test_SetGreetingWhenCalledByANon_owner(address _caller) external { - vm.assume(_caller != _owner); - vm.prank(_caller); - - // it reverts - vm.expectRevert(IGreeter.Greeter_OnlyOwner.selector); - _greeter.setGreeting('new greeting'); - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 981189a..4333b92 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,6 +59,43 @@ importers: specifier: 2.0.5 version: 2.0.5(@types/node@20.3.1) + apps/indexer: + dependencies: + chai: + specifier: 4.3.10 + version: 4.3.10 + envio: + specifier: 2.4.1 + version: 2.4.1 + ethers: + specifier: 6.8.0 + version: 6.8.0 + yaml: + specifier: 2.5.1 + version: 2.5.1 + devDependencies: + "@types/chai": + specifier: ^4.3.11 + version: 4.3.20 + "@types/mocha": + specifier: 10.0.6 + version: 10.0.6 + "@types/node": + specifier: 20.8.8 + version: 20.8.8 + mocha: + specifier: 10.2.0 + version: 10.2.0 + ts-mocha: + specifier: ^10.0.0 + version: 10.0.0(mocha@10.2.0) + ts-node: + specifier: 10.9.1 + version: 10.9.1(@types/node@20.8.8)(typescript@5.2.2) + typescript: + specifier: 5.2.2 + version: 5.2.2 + apps/sample-app: dependencies: "@ts-turborepo-boilerplate/sample-lib": @@ -71,15 +108,6 @@ importers: specifier: 3.23.8 version: 3.23.8 - packages/contracts: - devDependencies: - forge-std: - specifier: github:foundry-rs/forge-std#semver:1.9.2 - version: https://codeload.github.com/foundry-rs/forge-std/tar.gz/1714bee72e286e73f76e320d110e0eaf5c4e649d - solhint-community: - specifier: 4.0.0 - version: 4.0.0(typescript@5.5.4) - packages/sample-lib: dependencies: viem: @@ -348,6 +376,13 @@ packages: } engines: { node: ">=v18" } + "@cspotcode/source-map-support@0.8.1": + resolution: + { + integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, + } + engines: { node: ">=12" } + "@esbuild/aix-ppc64@0.21.5": resolution: { @@ -666,12 +701,31 @@ packages: integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, } + "@jridgewell/trace-mapping@0.3.9": + resolution: + { + integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, + } + + "@noble/curves@1.2.0": + resolution: + { + integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==, + } + "@noble/curves@1.4.0": resolution: { integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==, } + "@noble/hashes@1.3.2": + resolution: + { + integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==, + } + engines: { node: ">= 16" } + "@noble/hashes@1.4.0": resolution: { @@ -849,10 +903,10 @@ packages: cpu: [x64] os: [win32] - "@scure/base@1.1.8": + "@scure/base@1.1.9": resolution: { - integrity: sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==, + integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==, } "@scure/bip32@1.4.0": @@ -867,10 +921,34 @@ packages: integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==, } - "@solidity-parser/parser@0.16.2": + "@tsconfig/node10@1.0.11": + resolution: + { + integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==, + } + + "@tsconfig/node12@1.0.11": + resolution: + { + integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, + } + + "@tsconfig/node14@1.0.3": resolution: { - integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==, + integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, + } + + "@tsconfig/node16@1.0.4": + resolution: + { + integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, + } + + "@types/chai@4.3.20": + resolution: + { + integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, } "@types/conventional-commits-parser@5.0.0": @@ -885,12 +963,36 @@ packages: integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, } + "@types/json5@0.0.29": + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + + "@types/mocha@10.0.6": + resolution: + { + integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==, + } + + "@types/node@18.15.13": + resolution: + { + integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==, + } + "@types/node@20.3.1": resolution: { integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==, } + "@types/node@20.8.8": + resolution: + { + integrity: sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==, + } + "@typescript-eslint/eslint-plugin@7.18.0": resolution: { @@ -1052,6 +1154,13 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.4: + resolution: + { + integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, + } + engines: { node: ">=0.4.0" } + acorn@8.12.1: resolution: { @@ -1060,6 +1169,12 @@ packages: engines: { node: ">=0.4.0" } hasBin: true + aes-js@4.0.0-beta.5: + resolution: + { + integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==, + } + ajv@6.12.6: resolution: { @@ -1072,6 +1187,13 @@ packages: integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, } + ansi-colors@4.1.1: + resolution: + { + integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, + } + engines: { node: ">=6" } + ansi-escapes@7.0.0: resolution: { @@ -1114,17 +1236,17 @@ packages: } engines: { node: ">=12" } - antlr4@4.13.2: + anymatch@3.1.3: resolution: { - integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==, + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, } - engines: { node: ">=16" } + engines: { node: ">= 8" } - antlr4ts@0.5.0-alpha.4: + arg@4.1.3: resolution: { - integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==, + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, } argparse@2.0.1: @@ -1146,25 +1268,25 @@ packages: } engines: { node: ">=8" } - assertion-error@2.0.1: + arrify@1.0.1: resolution: { - integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, + integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, } - engines: { node: ">=12" } + engines: { node: ">=0.10.0" } - ast-parents@0.0.1: + assertion-error@1.1.0: resolution: { - integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==, + integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, } - astral-regex@2.0.0: + assertion-error@2.0.1: resolution: { - integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==, + integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==, } - engines: { node: ">=8" } + engines: { node: ">=12" } balanced-match@1.0.2: resolution: @@ -1172,6 +1294,13 @@ packages: integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } + binary-extensions@2.3.0: + resolution: + { + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, + } + engines: { node: ">=8" } + brace-expansion@1.1.11: resolution: { @@ -1191,6 +1320,12 @@ packages: } engines: { node: ">=8" } + browser-stdout@1.3.1: + resolution: + { + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, + } + browserslist@4.23.3: resolution: { @@ -1199,6 +1334,12 @@ packages: engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } hasBin: true + buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + cac@6.7.14: resolution: { @@ -1213,12 +1354,26 @@ packages: } engines: { node: ">=6" } + camelcase@6.3.0: + resolution: + { + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + } + engines: { node: ">=10" } + caniuse-lite@1.0.30001660: resolution: { integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==, } + chai@4.3.10: + resolution: + { + integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==, + } + engines: { node: ">=4" } + chai@5.1.1: resolution: { @@ -1247,6 +1402,12 @@ packages: } engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + check-error@1.0.3: + resolution: + { + integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, + } + check-error@2.1.1: resolution: { @@ -1254,6 +1415,13 @@ packages: } engines: { node: ">= 16" } + chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + cli-cursor@5.0.0: resolution: { @@ -1268,6 +1436,12 @@ packages: } engines: { node: ">=18" } + cliui@7.0.4: + resolution: + { + integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, + } + cliui@8.0.1: resolution: { @@ -1306,13 +1480,6 @@ packages: integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } - commander@11.1.0: - resolution: - { - integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, - } - engines: { node: ">=16" } - commander@12.1.0: resolution: { @@ -1379,10 +1546,10 @@ packages: cosmiconfig: ">=8.2" typescript: ">=4" - cosmiconfig@8.3.6: + cosmiconfig@9.0.0: resolution: { - integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==, + integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, } engines: { node: ">=14" } peerDependencies: @@ -1391,17 +1558,11 @@ packages: typescript: optional: true - cosmiconfig@9.0.0: + create-require@1.1.1: resolution: { - integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, } - engines: { node: ">=14" } - peerDependencies: - typescript: ">=4.9.5" - peerDependenciesMeta: - typescript: - optional: true cross-spawn@7.0.3: resolution: @@ -1417,6 +1578,18 @@ packages: } engines: { node: ">=12" } + debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.7: resolution: { @@ -1429,6 +1602,20 @@ packages: supports-color: optional: true + decamelize@4.0.0: + resolution: + { + integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, + } + engines: { node: ">=10" } + + deep-eql@4.1.4: + resolution: + { + integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, + } + engines: { node: ">=6" } + deep-eql@5.0.2: resolution: { @@ -1456,6 +1643,27 @@ packages: } engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + diff@3.5.0: + resolution: + { + integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==, + } + engines: { node: ">=0.3.1" } + + diff@4.0.2: + resolution: + { + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, + } + engines: { node: ">=0.3.1" } + + diff@5.0.0: + resolution: + { + integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, + } + engines: { node: ">=0.3.1" } + dir-glob@3.0.1: resolution: { @@ -1521,6 +1729,45 @@ packages: } engines: { node: ">=6" } + envio-darwin-arm64@2.4.1: + resolution: + { + integrity: sha512-uwwKhThFH9dZhQKd6kmleeTyl//GlJGvhFXuhuJ7xn93oGbOOy3hsoYfJZSbVmb0SSSJkgWdAKN82mYHNfdVwQ==, + } + cpu: [arm64] + os: [darwin] + + envio-darwin-x64@2.4.1: + resolution: + { + integrity: sha512-SKqI2hQmjmqlDYCwFaEK6TDJMLL/UE/wWlUIzsAY5drJQTwAL0mBXzUfQM8JbMgDoxeWyKNegUV1vCuTmCDREw==, + } + cpu: [x64] + os: [darwin] + + envio-linux-arm64@2.4.1: + resolution: + { + integrity: sha512-ujUUifyKM4kHkHfcudeH8iIf5xPiW9t+IzMCgY4gug2fs3Z3biyhmeaylYNpvNiIoQ58vZqJ23fBKaUn7CPPog==, + } + cpu: [arm64] + os: [linux] + + envio-linux-x64@2.4.1: + resolution: + { + integrity: sha512-aeVQ9I4zum6X+kBeJrFev/bTDePZRSlt6HytcnqJd7+iWagQggUejhcrSccp2eRSeQ95sGp+F+lQOFfWJHyEJQ==, + } + cpu: [x64] + os: [linux] + + envio@2.4.1: + resolution: + { + integrity: sha512-GsHv4S/mAzr//XCyTHFBnfd1CZFlfaG+wcWJkpeguzhnttNSOMJXCR4UPG0PxV2cZYiA3eVrOSPn58fTzk2G5g==, + } + hasBin: true + environment@1.1.0: resolution: { @@ -1652,6 +1899,13 @@ packages: } engines: { node: ">=0.10.0" } + ethers@6.8.0: + resolution: + { + integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==, + } + engines: { node: ">=14.0.0" } + eventemitter3@5.0.1: resolution: { @@ -1743,6 +1997,13 @@ packages: } engines: { node: ^10.12.0 || >=12.0.0 } + flat@5.0.2: + resolution: + { + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + } + hasBin: true + flatted@3.3.1: resolution: { @@ -1756,13 +2017,6 @@ packages: } engines: { node: ">=14" } - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/1714bee72e286e73f76e320d110e0eaf5c4e649d: - resolution: - { - tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/1714bee72e286e73f76e320d110e0eaf5c4e649d, - } - version: 1.9.2 - fs.realpath@1.0.0: resolution: { @@ -1853,19 +2107,18 @@ packages: } hasBin: true - glob@7.2.3: + glob@7.2.0: resolution: { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, } deprecated: Glob versions prior to v9 are no longer supported - glob@8.1.0: + glob@7.2.3: resolution: { - integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, } - engines: { node: ">=12" } deprecated: Glob versions prior to v9 are no longer supported global-directory@4.0.1: @@ -1923,6 +2176,13 @@ packages: } engines: { node: ">=8" } + he@1.2.0: + resolution: + { + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + } + hasBin: true + html-escaper@2.0.2: resolution: { @@ -1997,6 +2257,13 @@ packages: integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } + is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + is-extglob@2.1.1: resolution: { @@ -2053,6 +2320,13 @@ packages: } engines: { node: ">=8" } + is-plain-obj@2.1.0: + resolution: + { + integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, + } + engines: { node: ">=8" } + is-plain-obj@4.1.0: resolution: { @@ -2074,6 +2348,13 @@ packages: } engines: { node: ">=8" } + is-unicode-supported@0.1.0: + resolution: + { + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + } + engines: { node: ">=10" } + isexe@2.0.0: resolution: { @@ -2180,6 +2461,13 @@ packages: integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, } + json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + json5@2.2.3: resolution: { @@ -2292,12 +2580,6 @@ packages: integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, } - lodash.truncate@4.4.2: - resolution: - { - integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==, - } - lodash.uniq@4.5.0: resolution: { @@ -2310,11 +2592,12 @@ packages: integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==, } - lodash@4.17.21: + log-symbols@4.1.0: resolution: { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, } + engines: { node: ">=10" } log-update@6.1.0: resolution: @@ -2323,6 +2606,12 @@ packages: } engines: { node: ">=18" } + loupe@2.3.7: + resolution: + { + integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, + } + loupe@3.1.1: resolution: { @@ -2360,6 +2649,12 @@ packages: } engines: { node: ">=10" } + make-error@1.3.6: + resolution: + { + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, + } + meow@12.1.1: resolution: { @@ -2407,10 +2702,10 @@ packages: integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, } - minimatch@5.1.6: + minimatch@5.0.1: resolution: { - integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==, } engines: { node: ">=10" } @@ -2434,24 +2729,53 @@ packages: } engines: { node: ">=16 || 14 >=14.17" } - ms@2.1.3: + mkdirp@0.5.6: resolution: { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, } + hasBin: true - nanoid@3.3.7: + mocha@10.2.0: resolution: { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==, } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + engines: { node: ">= 14.0.0" } hasBin: true - natural-compare@1.4.0: + ms@2.1.2: resolution: { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + + nanoid@3.3.3: + resolution: + { + integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + nanoid@3.3.7: + resolution: + { + integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + + natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, } node-releases@2.0.18: @@ -2460,6 +2784,13 @@ packages: integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, } + normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + npm-run-path@5.3.0: resolution: { @@ -2597,6 +2928,12 @@ packages: integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, } + pathval@1.1.1: + resolution: + { + integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, + } + pathval@2.0.0: resolution: { @@ -2625,13 +2962,6 @@ packages: engines: { node: ">=0.10" } hasBin: true - pluralize@8.0.0: - resolution: - { - integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==, - } - engines: { node: ">=4" } - postcss@8.4.45: resolution: { @@ -2653,14 +2983,6 @@ packages: } engines: { node: ">=6.0.0" } - prettier@2.8.8: - resolution: - { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, - } - engines: { node: ">=10.13.0" } - hasBin: true - prettier@3.3.3: resolution: { @@ -2682,6 +3004,19 @@ packages: integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, } + randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + } + + readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + require-directory@2.1.1: resolution: { @@ -2752,6 +3087,12 @@ packages: integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, } + safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + semver@6.3.1: resolution: { @@ -2767,6 +3108,12 @@ packages: engines: { node: ">=10" } hasBin: true + serialize-javascript@6.0.0: + resolution: + { + integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==, + } + shebang-command@2.0.0: resolution: { @@ -2808,13 +3155,6 @@ packages: } engines: { node: ">=12" } - slice-ansi@4.0.0: - resolution: - { - integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==, - } - engines: { node: ">=10" } - slice-ansi@5.0.0: resolution: { @@ -2829,13 +3169,6 @@ packages: } engines: { node: ">=18" } - solhint-community@4.0.0: - resolution: - { - integrity: sha512-BERw3qYzkJE64EwvYrp2+iiTN8yAZOJ74FCiL4bTBp7v0JFUvRYCEGZKAqfHcfi/koKkzM6qThsJUceKm9vvfg==, - } - hasBin: true - sort-object-keys@1.1.3: resolution: { @@ -2856,6 +3189,19 @@ packages: } engines: { node: ">=0.10.0" } + source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + + source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + split2@4.2.0: resolution: { @@ -2917,6 +3263,13 @@ packages: } engines: { node: ">=12" } + strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + strip-final-newline@3.0.0: resolution: { @@ -2945,19 +3298,19 @@ packages: } engines: { node: ">=8" } - synckit@0.9.1: + supports-color@8.1.1: resolution: { - integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==, + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, } - engines: { node: ^14.18.0 || >=16.0.0 } + engines: { node: ">=10" } - table@6.8.2: + synckit@0.9.1: resolution: { - integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==, + integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==, } - engines: { node: ">=10.0.0" } + engines: { node: ^14.18.0 || >=16.0.0 } test-exclude@7.0.1: resolution: @@ -3035,6 +3388,53 @@ packages: peerDependencies: typescript: ">=4.2.0" + ts-mocha@10.0.0: + resolution: + { + integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==, + } + engines: { node: ">= 6.X.X" } + hasBin: true + peerDependencies: + mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X + + ts-node@10.9.1: + resolution: + { + integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, + } + hasBin: true + peerDependencies: + "@swc/core": ">=1.2.50" + "@swc/wasm": ">=1.2.50" + "@types/node": "*" + typescript: ">=2.7" + peerDependenciesMeta: + "@swc/core": + optional: true + "@swc/wasm": + optional: true + + ts-node@7.0.1: + resolution: + { + integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==, + } + engines: { node: ">=4.2.0" } + hasBin: true + + tsconfig-paths@3.15.0: + resolution: + { + integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, + } + + tslib@2.4.0: + resolution: + { + integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==, + } + tslib@2.7.0: resolution: { @@ -3103,6 +3503,13 @@ packages: } engines: { node: ">= 0.8.0" } + type-detect@4.1.0: + resolution: + { + integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, + } + engines: { node: ">=4" } + type-fest@0.20.2: resolution: { @@ -3110,6 +3517,14 @@ packages: } engines: { node: ">=10" } + typescript@5.2.2: + resolution: + { + integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, + } + engines: { node: ">=14.17" } + hasBin: true + typescript@5.5.4: resolution: { @@ -3118,6 +3533,12 @@ packages: engines: { node: ">=14.17" } hasBin: true + undici-types@5.25.3: + resolution: + { + integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==, + } + unicorn-magic@0.1.0: resolution: { @@ -3140,6 +3561,12 @@ packages: integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, } + v8-compile-cache-lib@3.0.1: + resolution: + { + integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, + } + viem@2.21.4: resolution: { @@ -3250,6 +3677,12 @@ packages: } engines: { node: ">=0.10.0" } + workerpool@6.2.1: + resolution: + { + integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==, + } + wrap-ansi@7.0.0: resolution: { @@ -3292,6 +3725,21 @@ packages: utf-8-validate: optional: true + ws@8.5.0: + resolution: + { + integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==, + } + engines: { node: ">=10.0.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + y18n@5.0.8: resolution: { @@ -3313,6 +3761,13 @@ packages: engines: { node: ">= 14" } hasBin: true + yargs-parser@20.2.4: + resolution: + { + integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, + } + engines: { node: ">=10" } + yargs-parser@21.1.1: resolution: { @@ -3320,6 +3775,20 @@ packages: } engines: { node: ">=12" } + yargs-unparser@2.0.0: + resolution: + { + integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, + } + engines: { node: ">=10" } + + yargs@16.2.0: + resolution: + { + integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, + } + engines: { node: ">=10" } + yargs@17.7.2: resolution: { @@ -3327,6 +3796,20 @@ packages: } engines: { node: ">=12" } + yn@2.0.0: + resolution: + { + integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==, + } + engines: { node: ">=4" } + + yn@3.1.1: + resolution: + { + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, + } + engines: { node: ">=6" } + yocto-queue@0.1.0: resolution: { @@ -3580,6 +4063,10 @@ snapshots: "@types/conventional-commits-parser": 5.0.0 chalk: 5.3.0 + "@cspotcode/source-map-support@0.8.1": + dependencies: + "@jridgewell/trace-mapping": 0.3.9 + "@esbuild/aix-ppc64@0.21.5": optional: true @@ -3724,10 +4211,21 @@ snapshots: "@jridgewell/resolve-uri": 3.1.2 "@jridgewell/sourcemap-codec": 1.5.0 + "@jridgewell/trace-mapping@0.3.9": + dependencies: + "@jridgewell/resolve-uri": 3.1.2 + "@jridgewell/sourcemap-codec": 1.5.0 + + "@noble/curves@1.2.0": + dependencies: + "@noble/hashes": 1.3.2 + "@noble/curves@1.4.0": dependencies: "@noble/hashes": 1.4.0 + "@noble/hashes@1.3.2": {} + "@noble/hashes@1.4.0": {} "@noble/hashes@1.5.0": {} @@ -3797,31 +4295,48 @@ snapshots: "@rollup/rollup-win32-x64-msvc@4.21.2": optional: true - "@scure/base@1.1.8": {} + "@scure/base@1.1.9": {} "@scure/bip32@1.4.0": dependencies: "@noble/curves": 1.4.0 "@noble/hashes": 1.4.0 - "@scure/base": 1.1.8 + "@scure/base": 1.1.9 "@scure/bip39@1.4.0": dependencies: "@noble/hashes": 1.5.0 - "@scure/base": 1.1.8 + "@scure/base": 1.1.9 - "@solidity-parser/parser@0.16.2": - dependencies: - antlr4ts: 0.5.0-alpha.4 + "@tsconfig/node10@1.0.11": {} + + "@tsconfig/node12@1.0.11": {} + + "@tsconfig/node14@1.0.3": {} + + "@tsconfig/node16@1.0.4": {} + + "@types/chai@4.3.20": {} "@types/conventional-commits-parser@5.0.0": dependencies: - "@types/node": 20.3.1 + "@types/node": 20.8.8 "@types/estree@1.0.5": {} + "@types/json5@0.0.29": + optional: true + + "@types/mocha@10.0.6": {} + + "@types/node@18.15.13": {} + "@types/node@20.3.1": {} + "@types/node@20.8.8": + dependencies: + undici-types: 5.25.3 + "@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.56.0)(typescript@5.5.4))(eslint@8.56.0)(typescript@5.5.4)": dependencies: "@eslint-community/regexpp": 4.11.0 @@ -3970,8 +4485,14 @@ snapshots: dependencies: acorn: 8.12.1 + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 + acorn@8.12.1: {} + aes-js@4.0.0-beta.5: {} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -3986,6 +4507,8 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ansi-colors@4.1.1: {} + ansi-escapes@7.0.0: dependencies: environment: 1.1.0 @@ -4004,9 +4527,12 @@ snapshots: ansi-styles@6.2.1: {} - antlr4@4.13.2: {} + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 - antlr4ts@0.5.0-alpha.4: {} + arg@4.1.3: {} argparse@2.0.1: {} @@ -4014,14 +4540,16 @@ snapshots: array-union@2.1.0: {} - assertion-error@2.0.1: {} + arrify@1.0.1: {} - ast-parents@0.0.1: {} + assertion-error@1.1.0: {} - astral-regex@2.0.0: {} + assertion-error@2.0.1: {} balanced-match@1.0.2: {} + binary-extensions@2.3.0: {} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4035,6 +4563,8 @@ snapshots: dependencies: fill-range: 7.1.1 + browser-stdout@1.3.1: {} + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001660 @@ -4042,12 +4572,26 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) + buffer-from@1.1.2: {} + cac@6.7.14: {} callsites@3.1.0: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001660: {} + chai@4.3.10: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -4069,8 +4613,24 @@ snapshots: chalk@5.3.0: {} + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + check-error@2.1.1: {} + chokidar@3.5.3: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -4080,6 +4640,12 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -4100,8 +4666,6 @@ snapshots: colorette@2.0.20: {} - commander@11.1.0: {} - commander@12.1.0: {} commitlint@19.4.1(@types/node@20.3.1)(typescript@5.5.4): @@ -4143,15 +4707,6 @@ snapshots: jiti: 1.21.6 typescript: 5.5.4 - cosmiconfig@8.3.6(typescript@5.5.4): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.5.4 - cosmiconfig@9.0.0(typescript@5.5.4): dependencies: env-paths: 2.2.1 @@ -4161,6 +4716,8 @@ snapshots: optionalDependencies: typescript: 5.5.4 + create-require@1.1.1: {} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -4169,10 +4726,22 @@ snapshots: dargs@8.1.0: {} + debug@4.3.4(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + debug@4.3.7: dependencies: ms: 2.1.3 + decamelize@4.0.0: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -4181,6 +4750,12 @@ snapshots: detect-newline@4.0.1: {} + diff@3.5.0: {} + + diff@4.0.2: {} + + diff@5.0.0: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -4207,6 +4782,25 @@ snapshots: env-paths@2.2.1: {} + envio-darwin-arm64@2.4.1: + optional: true + + envio-darwin-x64@2.4.1: + optional: true + + envio-linux-arm64@2.4.1: + optional: true + + envio-linux-x64@2.4.1: + optional: true + + envio@2.4.1: + optionalDependencies: + envio-darwin-arm64: 2.4.1 + envio-darwin-x64: 2.4.1 + envio-linux-arm64: 2.4.1 + envio-linux-x64: 2.4.1 + environment@1.1.0: {} error-ex@1.3.2: @@ -4330,6 +4924,19 @@ snapshots: esutils@2.0.3: {} + ethers@6.8.0: + dependencies: + "@adraffy/ens-normalize": 1.10.0 + "@noble/curves": 1.2.0 + "@noble/hashes": 1.3.2 + "@types/node": 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + eventemitter3@5.0.1: {} execa@8.0.1: @@ -4391,6 +4998,8 @@ snapshots: keyv: 4.5.4 rimraf: 3.0.2 + flat@5.0.2: {} + flatted@3.3.1: {} foreground-child@3.3.0: @@ -4398,9 +5007,6 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/1714bee72e286e73f76e320d110e0eaf5c4e649d: - {} - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -4443,7 +5049,7 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 - glob@7.2.3: + glob@7.2.0: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -4452,13 +5058,14 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - glob@8.1.0: + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 5.1.6 + minimatch: 3.1.2 once: 1.4.0 + path-is-absolute: 1.0.1 global-directory@4.0.1: dependencies: @@ -4493,6 +5100,8 @@ snapshots: has-flag@4.0.0: {} + he@1.2.0: {} + html-escaper@2.0.2: {} human-signals@5.0.0: {} @@ -4521,6 +5130,10 @@ snapshots: is-arrayish@0.2.1: {} + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -4541,6 +5154,8 @@ snapshots: is-path-inside@3.0.3: {} + is-plain-obj@2.1.0: {} + is-plain-obj@4.1.0: {} is-stream@3.0.0: {} @@ -4549,6 +5164,8 @@ snapshots: dependencies: text-extensions: 2.4.0 + is-unicode-supported@0.1.0: {} + isexe@2.0.0: {} isows@1.0.4(ws@8.17.1): @@ -4602,6 +5219,11 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json5@1.0.2: + dependencies: + minimist: 1.2.8 + optional: true + json5@2.2.3: {} jsonparse@1.3.1: {} @@ -4665,13 +5287,14 @@ snapshots: lodash.startcase@4.4.0: {} - lodash.truncate@4.4.2: {} - lodash.uniq@4.5.0: {} lodash.upperfirst@4.3.1: {} - lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 log-update@6.1.0: dependencies: @@ -4681,6 +5304,10 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + loupe@3.1.1: dependencies: get-func-name: 2.0.2 @@ -4705,6 +5332,8 @@ snapshots: dependencies: semver: 7.6.3 + make-error@1.3.6: {} + meow@12.1.1: {} merge-stream@2.0.0: {} @@ -4724,7 +5353,7 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: + minimatch@5.0.1: dependencies: brace-expansion: 2.0.1 @@ -4736,14 +5365,48 @@ snapshots: minipass@7.1.2: {} + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mocha@10.2.0: + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + + ms@2.1.2: {} + ms@2.1.3: {} + nanoid@3.3.3: {} + nanoid@3.3.7: {} natural-compare@1.4.0: {} node-releases@2.0.18: {} + normalize-path@3.0.0: {} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -4817,6 +5480,8 @@ snapshots: pathe@1.1.2: {} + pathval@1.1.1: {} + pathval@2.0.0: {} picocolors@1.1.0: {} @@ -4825,8 +5490,6 @@ snapshots: pidtree@0.6.0: {} - pluralize@8.0.0: {} - postcss@8.4.45: dependencies: nanoid: 3.3.7 @@ -4839,15 +5502,20 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@2.8.8: - optional: true - prettier@3.3.3: {} punycode@2.3.1: {} queue-microtask@1.2.3: {} + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -4895,10 +5563,16 @@ snapshots: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} + semver@6.3.1: {} semver@7.6.3: {} + serialize-javascript@6.0.0: + dependencies: + randombytes: 2.1.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -4913,12 +5587,6 @@ snapshots: slash@4.0.0: {} - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -4929,30 +5597,6 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - solhint-community@4.0.0(typescript@5.5.4): - dependencies: - "@solidity-parser/parser": 0.16.2 - ajv: 6.12.6 - antlr4: 4.13.2 - ast-parents: 0.0.1 - chalk: 4.1.2 - commander: 11.1.0 - cosmiconfig: 8.3.6(typescript@5.5.4) - fast-diff: 1.3.0 - glob: 8.1.0 - ignore: 5.3.2 - js-yaml: 4.1.0 - lodash: 4.17.21 - pluralize: 8.0.0 - semver: 6.3.1 - strip-ansi: 6.0.1 - table: 6.8.2 - text-table: 0.2.0 - optionalDependencies: - prettier: 2.8.8 - transitivePeerDependencies: - - typescript - sort-object-keys@1.1.3: {} sort-package-json@2.10.1: @@ -4968,6 +5612,13 @@ snapshots: source-map-js@1.2.1: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.6.1: {} + split2@4.2.0: {} stackback@0.0.2: {} @@ -5002,6 +5653,9 @@ snapshots: dependencies: ansi-regex: 6.1.0 + strip-bom@3.0.0: + optional: true + strip-final-newline@3.0.0: {} strip-json-comments@3.1.1: {} @@ -5014,19 +5668,15 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + synckit@0.9.1: dependencies: "@pkgr/core": 0.1.1 tslib: 2.7.0 - table@6.8.2: - dependencies: - ajv: 8.17.1 - lodash.truncate: 4.4.2 - slice-ansi: 4.0.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - test-exclude@7.0.1: dependencies: "@istanbuljs/schema": 0.1.3 @@ -5057,6 +5707,52 @@ snapshots: dependencies: typescript: 5.5.4 + ts-mocha@10.0.0(mocha@10.2.0): + dependencies: + mocha: 10.2.0 + ts-node: 7.0.1 + optionalDependencies: + tsconfig-paths: 3.15.0 + + ts-node@10.9.1(@types/node@20.8.8)(typescript@5.2.2): + dependencies: + "@cspotcode/source-map-support": 0.8.1 + "@tsconfig/node10": 1.0.11 + "@tsconfig/node12": 1.0.11 + "@tsconfig/node14": 1.0.3 + "@tsconfig/node16": 1.0.4 + "@types/node": 20.8.8 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.2.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + ts-node@7.0.1: + dependencies: + arrify: 1.0.1 + buffer-from: 1.1.2 + diff: 3.5.0 + make-error: 1.3.6 + minimist: 1.2.8 + mkdirp: 0.5.6 + source-map-support: 0.5.21 + yn: 2.0.0 + + tsconfig-paths@3.15.0: + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + optional: true + + tslib@2.4.0: {} + tslib@2.7.0: {} turbo-darwin-64@2.1.1: @@ -5090,10 +5786,16 @@ snapshots: dependencies: prelude-ls: 1.2.1 + type-detect@4.1.0: {} + type-fest@0.20.2: {} + typescript@5.2.2: {} + typescript@5.5.4: {} + undici-types@5.25.3: {} + unicorn-magic@0.1.0: {} update-browserslist-db@1.1.0(browserslist@4.23.3): @@ -5106,6 +5808,8 @@ snapshots: dependencies: punycode: 2.3.1 + v8-compile-cache-lib@3.0.1: {} + viem@2.21.4(typescript@5.5.4)(zod@3.23.8): dependencies: "@adraffy/ens-normalize": 1.10.0 @@ -5200,6 +5904,8 @@ snapshots: word-wrap@1.2.5: {} + workerpool@6.2.1: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -5222,14 +5928,35 @@ snapshots: ws@8.17.1: {} + ws@8.5.0: {} + y18n@5.0.8: {} yallist@3.1.1: {} yaml@2.5.1: {} + yargs-parser@20.2.4: {} + yargs-parser@21.1.1: {} + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -5240,6 +5967,10 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yn@2.0.0: {} + + yn@3.1.1: {} + yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3e712d3..4af3162 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,3 @@ packages: - - "apps/*" - - "packages/*" \ No newline at end of file + - "apps/*" + - "packages/*" From ba1ff8e5311257db549c0ef7e124bd347e83d261 Mon Sep 17 00:00:00 2001 From: 0xkenj1 Date: Thu, 3 Oct 2024 14:11:10 -0300 Subject: [PATCH 2/4] fix: comments --- .env.example | 31 +++++ .npmrc | 7 +- README.md | 8 ++ apps/indexer/config.yaml | 236 ++++++++++++++++++------------------ apps/indexer/package.json | 4 +- apps/indexer/pnpm-lock.yaml | 12 +- docker-compose.yaml | 32 ++--- pnpm-lock.yaml | 12 +- 8 files changed, 180 insertions(+), 162 deletions(-) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..61ebc6a --- /dev/null +++ b/.env.example @@ -0,0 +1,31 @@ +############################################ +############### POSTGRES ################### +############################################ +POSTGRES_EXPOSED_PORT=5433 +POSTGRES_PASSWORD=testing +POSTGRES_USER=postgres +POSTGRES_DB=envio-dev + +############################################ +############### HASURA ##################### +############################################ +HASURA_EXPOSED_PORT=8080 +HASURA_GRAPHQL_DATABASE_URL=postgres://postgres:testing@envio-postgres:5432/envio-dev +HASURA_GRAPHQL_ENABLE_CONSOLE=true +HASURA_GRAPHQL_ENABLED_LOG_TYPES=startup, http-log, webhook-log, websocket-log, query-log +HASURA_GRAPHQL_NO_OF_RETRIES=10 +HASURA_GRAPHQL_ADMIN_SECRET=testing +HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES="true" +PORT=8080 +HASURA_GRAPHQL_UNAUTHORIZED_ROLE=public + +############################################ +############### INDEXER #################### +############################################ +ENVIO_PG_HOST=envio-postgres +ENVIO_PG_PORT=5432 +ENVIO_POSTGRES_PASSWORD=testing +ENVIO_PG_USER=postgres +ENVIO_PG_DATABASE=envio-dev +HASURA_GRAPHQL_ENDPOINT=http://graphql-engine:8080/v1/metadata +TUI_OFF=true \ No newline at end of file diff --git a/.npmrc b/.npmrc index 132f02c..449691b 100644 --- a/.npmrc +++ b/.npmrc @@ -1,6 +1 @@ -save-exact=true -# Needed for ts build folder to have -# access to rescript node_modules -shamefully-hoist=true -# Needed so users can run `pnpm install` in the root of the repo without requiring the `-w` flag. -ignore-workspace-root-check=true \ No newline at end of file +save-exact=true \ No newline at end of file diff --git a/README.md b/README.md index be5351a..60c3adc 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,14 @@ To deploy locally with Docker, run the following command: docker-compose up -d --build ``` +Once the deployment is complete, you can access Hasura by navigating to: + +``` +http://localhost:8080/ +``` + +Use the default password: `testing`. + ## Contributing Wonderland is a team of top Web3 researchers, developers, and operators who believe that the future needs to be open-source, permissionless, and decentralized. diff --git a/apps/indexer/config.yaml b/apps/indexer/config.yaml index 92a7991..0ac8873 100644 --- a/apps/indexer/config.yaml +++ b/apps/indexer/config.yaml @@ -105,16 +105,16 @@ networks: ####################### # MAINNET # ####################### - - id: 1 # mainnet - start_block: 18486688 - contracts: - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - name: Strategy - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - id: 1 # mainnet + # start_block: 18486688 + # contracts: + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + # - name: Strategy + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - id: 10 # optimism start_block: 111678968 @@ -127,93 +127,93 @@ networks: address: - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - id: 11155111 # sepolia - start_block: 4617051 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 250 # fantom - start_block: 77624278 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 42161 # arbitrum - start_block: 146489425 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 137 # polygon - start_block: 49466006 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 8453 # base - start_block: 6083365 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 324 # zksync-era-mainnet - start_block: 31154341 - contracts: - - name: Registry - address: - - 0xaa376Ef759c1f5A8b0B5a1e2FEC5C23f3bF30246 - - name: Strategy - - name: Allo - address: - - 0x9D1D1BF2835935C291C0f5228c86d5C4e235A249 - - - id: 43114 # avalanche - start_block: 34540051 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 534352 # scroll - start_block: 2683205 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + # - id: 11155111 # sepolia + # start_block: 4617051 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 250 # fantom + # start_block: 77624278 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 42161 # arbitrum + # start_block: 146489425 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 137 # polygon + # start_block: 49466006 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 8453 # base + # start_block: 6083365 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 324 # zksync-era-mainnet + # start_block: 31154341 + # contracts: + # - name: Registry + # address: + # - 0xaa376Ef759c1f5A8b0B5a1e2FEC5C23f3bF30246 + # - name: Strategy + # - name: Allo + # address: + # - 0x9D1D1BF2835935C291C0f5228c86d5C4e235A249 + + # - id: 43114 # avalanche + # start_block: 34540051 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 534352 # scroll + # start_block: 2683205 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 # - id: 1329 # sei-mainnet # rpc_config: @@ -228,27 +228,27 @@ networks: # address: # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - id: 42220 # celo-mainnet - start_block: 22257475 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 - - - id: 42 # lukso-mainnet - start_block: 2400000 - contracts: - - name: Registry - address: - - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 - - name: Strategy - - name: Allo - address: - - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + # - id: 42220 # celo-mainnet + # start_block: 22257475 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 + + # - id: 42 # lukso-mainnet + # start_block: 2400000 + # contracts: + # - name: Registry + # address: + # - 0x4AAcca72145e1dF2aeC137E1f3C5E3D75DB8b5f3 + # - name: Strategy + # - name: Allo + # address: + # - 0x1133eA7Af70876e64665ecD07C0A0476d09465a1 ####################### # TESTNET # ####################### diff --git a/apps/indexer/package.json b/apps/indexer/package.json index 6965277..eb5f5c7 100644 --- a/apps/indexer/package.json +++ b/apps/indexer/package.json @@ -17,11 +17,11 @@ "yaml": "2.5.1" }, "devDependencies": { - "@types/chai": "^4.3.11", + "@types/chai": "4.3.11", "@types/mocha": "10.0.6", "@types/node": "20.8.8", "mocha": "10.2.0", - "ts-mocha": "^10.0.0", + "ts-mocha": "10.0.0", "ts-node": "10.9.1", "typescript": "5.2.2" }, diff --git a/apps/indexer/pnpm-lock.yaml b/apps/indexer/pnpm-lock.yaml index 89068ea..c60513e 100644 --- a/apps/indexer/pnpm-lock.yaml +++ b/apps/indexer/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: version: 2.5.1 devDependencies: "@types/chai": - specifier: ^4.3.11 - version: 4.3.20 + specifier: 4.3.11 + version: 4.3.11 "@types/mocha": specifier: 10.0.6 version: 10.0.6 @@ -33,7 +33,7 @@ importers: specifier: 10.2.0 version: 10.2.0 ts-mocha: - specifier: ^10.0.0 + specifier: 10.0.0 version: 10.0.0(mocha@10.2.0) ts-node: specifier: 10.9.1 @@ -330,10 +330,10 @@ packages: integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, } - "@types/chai@4.3.20": + "@types/chai@4.3.11": resolution: { - integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, + integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==, } "@types/json5@0.0.29": @@ -2674,7 +2674,7 @@ snapshots: "@tsconfig/node16@1.0.4": {} - "@types/chai@4.3.20": {} + "@types/chai@4.3.11": {} "@types/json5@0.0.29": optional: true diff --git a/docker-compose.yaml b/docker-compose.yaml index 733641b..5ec4734 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -3,33 +3,23 @@ services: image: postgres:16 restart: always ports: - - "5433:5432" + - "${POSTGRES_PORT:-5433}:5432" volumes: - db_data:/var/lib/postgresql/data - environment: - POSTGRES_PASSWORD: testing - POSTGRES_USER: postgres - POSTGRES_DB: envio-dev + env_file: + - .env networks: - indexer-service graphql-engine: image: hasura/graphql-engine:v2.23.0 ports: - - "8080:8080" + - "${HASURA_EXPOSED_PORT:-8080}:${PORT:-8080}" user: 1001:1001 depends_on: - "envio-postgres" restart: always - environment: - HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:testing@envio-postgres:5432/envio-dev - HASURA_GRAPHQL_ENABLE_CONSOLE: true - HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, - query-log - HASURA_GRAPHQL_NO_OF_RETRIES: 10 - HASURA_GRAPHQL_ADMIN_SECRET: testing - HASURA_GRAPHQL_STRINGIFY_NUMERIC_TYPES: "true" - PORT: 8080 - HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public + env_file: + - .env healthcheck: test: timeout 1s bash -c ':> /dev/tcp/127.0.0.1/8080' || exit 1 interval: 5s @@ -46,14 +36,8 @@ services: - "envio-postgres" - "graphql-engine" restart: always - environment: - ENVIO_PG_HOST: envio-postgres - ENVIO_PG_PORT: 5432 - ENVIO_POSTGRES_PASSWORD: testing - ENVIO_PG_USER: postgres - ENVIO_PG_DATABASE: envio-dev - HASURA_GRAPHQL_ENDPOINT: http://graphql-engine:8080/v1/metadata - TUI_OFF: true + env_file: + - .env networks: - indexer-service volumes: diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4333b92..3a9a1b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,8 +75,8 @@ importers: version: 2.5.1 devDependencies: "@types/chai": - specifier: ^4.3.11 - version: 4.3.20 + specifier: 4.3.11 + version: 4.3.11 "@types/mocha": specifier: 10.0.6 version: 10.0.6 @@ -87,7 +87,7 @@ importers: specifier: 10.2.0 version: 10.2.0 ts-mocha: - specifier: ^10.0.0 + specifier: 10.0.0 version: 10.0.0(mocha@10.2.0) ts-node: specifier: 10.9.1 @@ -945,10 +945,10 @@ packages: integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, } - "@types/chai@4.3.20": + "@types/chai@4.3.11": resolution: { - integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, + integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==, } "@types/conventional-commits-parser@5.0.0": @@ -4316,7 +4316,7 @@ snapshots: "@tsconfig/node16@1.0.4": {} - "@types/chai@4.3.20": {} + "@types/chai@4.3.11": {} "@types/conventional-commits-parser@5.0.0": dependencies: From 49e7e3ccd06b782ce20579d6834d950e44553ea9 Mon Sep 17 00:00:00 2001 From: 0xkenj1 Date: Thu, 3 Oct 2024 14:11:38 -0300 Subject: [PATCH 3/4] feat: add check-types to indexer --- apps/indexer/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/indexer/package.json b/apps/indexer/package.json index eb5f5c7..180a03c 100644 --- a/apps/indexer/package.json +++ b/apps/indexer/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "scripts": { "build": "envio codegen", + "check-types": "tsc --noEmit -p ./tsconfig.json", "clean": "rm -rf generated node_modules", "dev": "envio dev", "mocha": "ts-mocha test/**/*.ts", From c9c20f5a8c1676381abb1f986d8f8463fa2a1fa2 Mon Sep 17 00:00:00 2001 From: 0xkenj1 Date: Thu, 3 Oct 2024 14:28:10 -0300 Subject: [PATCH 4/4] fix: comments --- apps/indexer/Dockerfile | 4 ++-- apps/indexer/test/index.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/indexer/Dockerfile b/apps/indexer/Dockerfile index 9139dbd..c6d3060 100644 --- a/apps/indexer/Dockerfile +++ b/apps/indexer/Dockerfile @@ -5,7 +5,7 @@ RUN corepack enable COPY . /app WORKDIR /app -RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN --mount=type=cache,id=pnpm,target=$PNPM_HOME/store pnpm install --frozen-lockfile RUN pnpm dlx envio codegen -CMD pnpm dlx envio local db-migrate setup && pnpm dlx envio start \ No newline at end of file +CMD pnpm dlx envio local db-migrate up && pnpm dlx envio start \ No newline at end of file diff --git a/apps/indexer/test/index.ts b/apps/indexer/test/index.ts index 0c73ace..3aaab49 100644 --- a/apps/indexer/test/index.ts +++ b/apps/indexer/test/index.ts @@ -3,6 +3,7 @@ import path from "path"; import { compareEventsAndHandlers, loadHandlerFunctions, loadYaml } from "./helpers"; +//TODO: MIGRATE TO GIT WORKFLOW AS AN ISOLATED SCRIPT describe("All events are handled", () => { it("handles all the events", () => { // File paths