From 4daabc080c7b53d9994845f4e702a6ac4f733567 Mon Sep 17 00:00:00 2001 From: Pedro Nauck Date: Wed, 10 Apr 2024 09:56:49 -0300 Subject: [PATCH] feat: add new indexer graphql package (L2) (#172) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: LuizAsFight Co-authored-by: Luiz Gomes - LuizAsFight.eth <8636507+LuizAsFight@users.noreply.github.com> Co-authored-by: luizstacio Co-authored-by: Hélcio Franco --- .github/workflows/docker-publish.yml | 22 +- .github/workflows/pr-tests.yml | 3 + .github/workflows/pr.yaml | 3 +- contracts/predicate/package.json | 4 +- deployment/Dockerfile.v2 | 38 + docker/docker-compose.yml | 23 +- docker/fuel-core/Dockerfile | 2 +- docker/fuel-core/chainConfig.json | 7 + docker/fuel-core/fuel_core.sh | 1 + docker/l1-chain/hardhat/package.json | 12 + package.json | 34 +- packages/app-commons/package.json | 6 +- packages/app-explorer/package.json | 12 +- packages/app-portal/package.json | 6 +- packages/graphql-new/.dockerignore | 4 + packages/graphql-new/.env.example | 7 + packages/graphql-new/.env.production | 7 + packages/graphql-new/README.md | 26 + packages/graphql-new/codegen.fuel.ts | 19 + packages/graphql-new/codegen.sdk.ts | 53 + packages/graphql-new/drizzle.config.ts | 11 + .../drizzle/0000_hesitant_moon_knight.sql | 88 + .../drizzle/meta/0000_snapshot.json | 385 ++ .../graphql-new/drizzle/meta/_journal.json | 13 + packages/graphql-new/graphql.config.ts | 8 + packages/graphql-new/package.json | 94 + packages/graphql-new/src/app.ts | 32 + .../src/application/uc/SyncAllBlocks.ts | 59 + .../src/application/uc/SyncMissingBlocks.ts | 25 + .../src/application/uc/SyncTransaction.ts | 105 + .../src/application/vo/Bytecode.ts | 24 + .../src/application/vo/GasCosts.ts | 35 + .../graphql-new/src/application/vo/GasFee.ts | 31 + .../graphql-new/src/application/vo/GasUsed.ts | 25 + .../graphql-new/src/application/vo/Hash256.ts | 22 + .../src/application/vo/ParsedTime.ts | 42 + .../src/application/vo/SerialID.ts | 16 + .../src/application/vo/Timestamp.ts | 26 + .../graphql-new/src/application/vo/index.ts | 3 + packages/graphql-new/src/cli.ts | 6 + packages/graphql-new/src/config.ts | 22 + packages/graphql-new/src/core/Address.ts | 24 + packages/graphql-new/src/core/Date.ts | 16 + packages/graphql-new/src/core/Entity.ts | 38 + packages/graphql-new/src/core/Env.ts | 47 + packages/graphql-new/src/core/GQLNode.ts | 8 + packages/graphql-new/src/core/Identifier.ts | 30 + packages/graphql-new/src/core/Paginator.ts | 177 + packages/graphql-new/src/core/Resolver.ts | 17 + packages/graphql-new/src/core/ValueObject.ts | 31 + .../src/domain/Block/BlockEntity.ts | 85 + .../src/domain/Block/BlockModel.ts | 31 + .../src/domain/Block/BlockRepository.ts | 108 + .../src/domain/Block/vo/BlockData.ts | 25 + .../src/domain/Block/vo/BlockGasUsed.ts | 35 + .../src/domain/Block/vo/BlockModelID.ts | 17 + .../src/domain/Block/vo/BlockProducer.ts | 29 + .../src/domain/Block/vo/BlockRef.ts | 27 + .../src/domain/Chain/ChainEntity.ts | 28 + .../src/domain/Chain/ChainRepository.ts | 10 + .../src/domain/Chain/vo/ChainData.ts | 25 + .../src/domain/Chain/vo/ChainID.ts | 12 + .../src/domain/Contract/ContractEntity.ts | 52 + .../src/domain/Contract/ContractModel.ts | 19 + .../src/domain/Contract/ContractRepository.ts | 50 + .../src/domain/Contract/vo/ContractData.ts | 25 + .../src/domain/Input/InputEntity.ts | 67 + .../src/domain/Input/InputModel.ts | 19 + .../src/domain/Input/InputRepository.ts | 43 + .../Input/factories/GroupedInputsFactory.ts | 34 + .../Input/factories/InputCoinFactory.ts | 44 + .../Input/factories/InputContractFactory.ts | 35 + .../Input/factories/InputMessageFactory.ts | 37 + .../src/domain/Input/vo/InputData.ts | 25 + .../src/domain/Input/vo/InputPredicateData.ts | 42 + .../src/domain/Input/vo/InputType.ts | 41 + .../src/domain/Operation/OperationEntity.ts | 60 + .../src/domain/Operation/OperationModel.ts | 21 + .../domain/Operation/OperationRepository.ts | 66 + .../Operation/factories/OperationsFactory.ts | 122 + .../src/domain/Operation/vo/OperationData.ts | 27 + .../src/domain/Output/OutputEntity.ts | 37 + .../src/domain/Output/OutputModel.ts | 19 + .../src/domain/Output/OutputRepository.ts | 43 + .../Output/factories/GroupedOutputsFactory.ts | 35 + .../Output/factories/OutputChangedFactory.ts | 44 + .../Output/factories/OutputCoinFactory.ts | 44 + .../factories/OutputContractCreatedFactory.ts | 37 + .../src/domain/Output/vo/OutputData.ts | 25 + .../src/domain/Predicate/PredicateEntity.ts | 42 + .../src/domain/Predicate/PredicateModel.ts | 20 + .../domain/Predicate/PredicateRepository.ts | 30 + .../domain/Transaction/TransactionEntity.ts | 155 + .../domain/Transaction/TransactionModel.ts | 50 + .../Transaction/TransactionRepository.ts | 56 + .../src/domain/Transaction/vo/AccountIndex.ts | 71 + .../domain/Transaction/vo/TransactionData.ts | 25 + .../vo/TransactionGroupedInputs.ts | 25 + .../vo/TransactionGroupedOutputs.ts | 25 + .../Transaction/vo/TransactionModelID.ts | 25 + .../domain/Transaction/vo/TransactionRef.ts | 28 + .../Transaction/vo/TransactionStatus.ts | 44 + .../Transaction/vo/TransactionTimestamp.ts | 31 + .../graphql-new/src/graphql/GraphQLContext.ts | 18 + .../graphql-new/src/graphql/GraphQLSDK.ts | 15 + .../graphql-new/src/graphql/GraphQLServer.ts | 28 + .../src/graphql/queries/balances.graphql | 35 + .../src/graphql/queries/block.graphql | 559 ++ .../src/graphql/queries/contract.graphql | 7 + .../graphql/queries/contractBalances.graphql | 23 + .../src/graphql/queries/predicate.graphql | 6 + .../src/graphql/queries/search.graphql | 20 + .../src/graphql/queries/transaction.graphql | 960 ++++ .../src/graphql/queries/transactions.graphql | 1389 +++++ .../queries/transactionsByOwner.graphql | 1389 +++++ .../src/graphql/resolvers/BalanceResolver.ts | 54 + .../src/graphql/resolvers/BlockResolver.ts | 62 + .../src/graphql/resolvers/ChainResolver.ts | 30 + .../src/graphql/resolvers/ContractResolver.ts | 76 + .../src/graphql/resolvers/NodeResolver.ts | 31 + .../graphql/resolvers/OperationResolver.ts | 42 + .../graphql/resolvers/PredicateResolver.ts | 32 + .../src/graphql/resolvers/SearchResolver.ts | 54 + .../graphql/resolvers/TransactionResolver.ts | 79 + .../src/graphql/schemas/explorer.graphql | 215 + .../src/graphql/schemas/fuelcore.graphql | 864 ++++ packages/graphql-new/src/index.ts | 6 + packages/graphql-new/src/infra/database/Db.ts | 61 + .../src/infra/database/DbSchema.ts | 7 + packages/graphql-new/src/infra/queue/index.ts | 79 + packages/graphql-new/src/infra/server/App.ts | 24 + .../graphql-new/src/infra/server/Program.ts | 83 + packages/graphql-new/tsconfig.json | 27 + packages/graphql-new/tsup.config.mjs | 15 + packages/graphql/package.json | 20 +- packages/storybook-addon-theme/package.json | 12 +- packages/ui/package.json | 26 +- packages/ui/scripts/create-defs.mjs | 1 + pnpm-lock.yaml | 4575 ++++++++++++----- 139 files changed, 13349 insertions(+), 1496 deletions(-) create mode 100644 deployment/Dockerfile.v2 create mode 100644 docker/l1-chain/hardhat/package.json create mode 100644 packages/graphql-new/.dockerignore create mode 100644 packages/graphql-new/.env.example create mode 100644 packages/graphql-new/.env.production create mode 100644 packages/graphql-new/README.md create mode 100644 packages/graphql-new/codegen.fuel.ts create mode 100644 packages/graphql-new/codegen.sdk.ts create mode 100644 packages/graphql-new/drizzle.config.ts create mode 100644 packages/graphql-new/drizzle/0000_hesitant_moon_knight.sql create mode 100644 packages/graphql-new/drizzle/meta/0000_snapshot.json create mode 100644 packages/graphql-new/drizzle/meta/_journal.json create mode 100644 packages/graphql-new/graphql.config.ts create mode 100644 packages/graphql-new/package.json create mode 100644 packages/graphql-new/src/app.ts create mode 100644 packages/graphql-new/src/application/uc/SyncAllBlocks.ts create mode 100644 packages/graphql-new/src/application/uc/SyncMissingBlocks.ts create mode 100644 packages/graphql-new/src/application/uc/SyncTransaction.ts create mode 100644 packages/graphql-new/src/application/vo/Bytecode.ts create mode 100644 packages/graphql-new/src/application/vo/GasCosts.ts create mode 100644 packages/graphql-new/src/application/vo/GasFee.ts create mode 100644 packages/graphql-new/src/application/vo/GasUsed.ts create mode 100644 packages/graphql-new/src/application/vo/Hash256.ts create mode 100644 packages/graphql-new/src/application/vo/ParsedTime.ts create mode 100644 packages/graphql-new/src/application/vo/SerialID.ts create mode 100644 packages/graphql-new/src/application/vo/Timestamp.ts create mode 100644 packages/graphql-new/src/application/vo/index.ts create mode 100755 packages/graphql-new/src/cli.ts create mode 100644 packages/graphql-new/src/config.ts create mode 100644 packages/graphql-new/src/core/Address.ts create mode 100644 packages/graphql-new/src/core/Date.ts create mode 100644 packages/graphql-new/src/core/Entity.ts create mode 100644 packages/graphql-new/src/core/Env.ts create mode 100644 packages/graphql-new/src/core/GQLNode.ts create mode 100644 packages/graphql-new/src/core/Identifier.ts create mode 100644 packages/graphql-new/src/core/Paginator.ts create mode 100644 packages/graphql-new/src/core/Resolver.ts create mode 100644 packages/graphql-new/src/core/ValueObject.ts create mode 100644 packages/graphql-new/src/domain/Block/BlockEntity.ts create mode 100644 packages/graphql-new/src/domain/Block/BlockModel.ts create mode 100644 packages/graphql-new/src/domain/Block/BlockRepository.ts create mode 100644 packages/graphql-new/src/domain/Block/vo/BlockData.ts create mode 100644 packages/graphql-new/src/domain/Block/vo/BlockGasUsed.ts create mode 100644 packages/graphql-new/src/domain/Block/vo/BlockModelID.ts create mode 100644 packages/graphql-new/src/domain/Block/vo/BlockProducer.ts create mode 100644 packages/graphql-new/src/domain/Block/vo/BlockRef.ts create mode 100644 packages/graphql-new/src/domain/Chain/ChainEntity.ts create mode 100644 packages/graphql-new/src/domain/Chain/ChainRepository.ts create mode 100644 packages/graphql-new/src/domain/Chain/vo/ChainData.ts create mode 100644 packages/graphql-new/src/domain/Chain/vo/ChainID.ts create mode 100644 packages/graphql-new/src/domain/Contract/ContractEntity.ts create mode 100644 packages/graphql-new/src/domain/Contract/ContractModel.ts create mode 100644 packages/graphql-new/src/domain/Contract/ContractRepository.ts create mode 100644 packages/graphql-new/src/domain/Contract/vo/ContractData.ts create mode 100644 packages/graphql-new/src/domain/Input/InputEntity.ts create mode 100644 packages/graphql-new/src/domain/Input/InputModel.ts create mode 100644 packages/graphql-new/src/domain/Input/InputRepository.ts create mode 100644 packages/graphql-new/src/domain/Input/factories/GroupedInputsFactory.ts create mode 100644 packages/graphql-new/src/domain/Input/factories/InputCoinFactory.ts create mode 100644 packages/graphql-new/src/domain/Input/factories/InputContractFactory.ts create mode 100644 packages/graphql-new/src/domain/Input/factories/InputMessageFactory.ts create mode 100644 packages/graphql-new/src/domain/Input/vo/InputData.ts create mode 100644 packages/graphql-new/src/domain/Input/vo/InputPredicateData.ts create mode 100644 packages/graphql-new/src/domain/Input/vo/InputType.ts create mode 100644 packages/graphql-new/src/domain/Operation/OperationEntity.ts create mode 100644 packages/graphql-new/src/domain/Operation/OperationModel.ts create mode 100644 packages/graphql-new/src/domain/Operation/OperationRepository.ts create mode 100644 packages/graphql-new/src/domain/Operation/factories/OperationsFactory.ts create mode 100644 packages/graphql-new/src/domain/Operation/vo/OperationData.ts create mode 100644 packages/graphql-new/src/domain/Output/OutputEntity.ts create mode 100644 packages/graphql-new/src/domain/Output/OutputModel.ts create mode 100644 packages/graphql-new/src/domain/Output/OutputRepository.ts create mode 100644 packages/graphql-new/src/domain/Output/factories/GroupedOutputsFactory.ts create mode 100644 packages/graphql-new/src/domain/Output/factories/OutputChangedFactory.ts create mode 100644 packages/graphql-new/src/domain/Output/factories/OutputCoinFactory.ts create mode 100644 packages/graphql-new/src/domain/Output/factories/OutputContractCreatedFactory.ts create mode 100644 packages/graphql-new/src/domain/Output/vo/OutputData.ts create mode 100644 packages/graphql-new/src/domain/Predicate/PredicateEntity.ts create mode 100644 packages/graphql-new/src/domain/Predicate/PredicateModel.ts create mode 100644 packages/graphql-new/src/domain/Predicate/PredicateRepository.ts create mode 100644 packages/graphql-new/src/domain/Transaction/TransactionEntity.ts create mode 100644 packages/graphql-new/src/domain/Transaction/TransactionModel.ts create mode 100644 packages/graphql-new/src/domain/Transaction/TransactionRepository.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/AccountIndex.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionData.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedInputs.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedOutputs.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionModelID.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionRef.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionStatus.ts create mode 100644 packages/graphql-new/src/domain/Transaction/vo/TransactionTimestamp.ts create mode 100644 packages/graphql-new/src/graphql/GraphQLContext.ts create mode 100644 packages/graphql-new/src/graphql/GraphQLSDK.ts create mode 100644 packages/graphql-new/src/graphql/GraphQLServer.ts create mode 100644 packages/graphql-new/src/graphql/queries/balances.graphql create mode 100644 packages/graphql-new/src/graphql/queries/block.graphql create mode 100644 packages/graphql-new/src/graphql/queries/contract.graphql create mode 100644 packages/graphql-new/src/graphql/queries/contractBalances.graphql create mode 100644 packages/graphql-new/src/graphql/queries/predicate.graphql create mode 100644 packages/graphql-new/src/graphql/queries/search.graphql create mode 100644 packages/graphql-new/src/graphql/queries/transaction.graphql create mode 100644 packages/graphql-new/src/graphql/queries/transactions.graphql create mode 100644 packages/graphql-new/src/graphql/queries/transactionsByOwner.graphql create mode 100644 packages/graphql-new/src/graphql/resolvers/BalanceResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/BlockResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/ChainResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/ContractResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/NodeResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/OperationResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/PredicateResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/SearchResolver.ts create mode 100644 packages/graphql-new/src/graphql/resolvers/TransactionResolver.ts create mode 100644 packages/graphql-new/src/graphql/schemas/explorer.graphql create mode 100644 packages/graphql-new/src/graphql/schemas/fuelcore.graphql create mode 100644 packages/graphql-new/src/index.ts create mode 100644 packages/graphql-new/src/infra/database/Db.ts create mode 100644 packages/graphql-new/src/infra/database/DbSchema.ts create mode 100644 packages/graphql-new/src/infra/queue/index.ts create mode 100644 packages/graphql-new/src/infra/server/App.ts create mode 100644 packages/graphql-new/src/infra/server/Program.ts create mode 100644 packages/graphql-new/tsconfig.json create mode 100644 packages/graphql-new/tsup.config.mjs diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index bf4b25112..d6bf693c6 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Build and push Ethereum hardhat image + - name: Build and push Fuel Explorer Graphql image uses: ./.github/actions/docker-publish id: publish with: @@ -31,3 +31,23 @@ jobs: image: ghcr.io/fuellabs/fuel-explorer dockerfile: deployment/Dockerfile context: ./packages/graphql + + # Temporary publish a new version of the graphql-new + # until the graphql removed to use only the new version + build-and-publish-image-v2: + runs-on: buildjet-4vcpu-ubuntu-2204 + if: | + (github.event_name == 'release' && github.event.action == 'published') || + github.ref == 'refs/heads/main' || github.event_name == 'pull_request' + steps: + - uses: actions/checkout@v3 + + - name: Build and push Fuel Explorer Graphql image V2 + uses: ./.github/actions/docker-publish + id: publish + with: + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + image: ghcr.io/fuellabs/fuel-explorer + dockerfile: deployment/Dockerfile.v2 + context: ./packages/graphql-new diff --git a/.github/workflows/pr-tests.yml b/.github/workflows/pr-tests.yml index 831f1925f..eb5ee6db7 100644 --- a/.github/workflows/pr-tests.yml +++ b/.github/workflows/pr-tests.yml @@ -19,6 +19,9 @@ jobs: - name: Create .env file graphql run: cp packages/graphql/.env.example packages/graphql/.env + + - name: Create .env file graphql-new + run: cp packages/graphql-new/.env.example packages/graphql-new/.env - name: Create .env file explorer run: cp packages/app-explorer/.env.example packages/app-explorer/.env diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index f6fcbaef8..e84d09920 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -10,7 +10,8 @@ concurrency: env: COVERAGE_FILE: report.json - NEXT_PUBLIC_FUEL_CHAIN_NAME: fuelBeta5 + NEXT_PUBLIC_FUEL_CHAIN_NAME: fuelBeta5 # For Next.JS apps + FUEL_PROVIDER: https://beta-5.fuel.network/graphql # For GraphQL apps jobs: validate-title: diff --git a/contracts/predicate/package.json b/contracts/predicate/package.json index b53ecf4d5..4336fc0d2 100644 --- a/contracts/predicate/package.json +++ b/contracts/predicate/package.json @@ -17,7 +17,7 @@ "devDependencies": { "dotenv": "16.4.1", "fuels": "0.74.0", - "tsx": "4.7.0", - "vitest": "1.2.2" + "vitest": "1.2.2", + "tsx": "4.7.1" } } diff --git a/deployment/Dockerfile.v2 b/deployment/Dockerfile.v2 new file mode 100644 index 000000000..f7d1ae500 --- /dev/null +++ b/deployment/Dockerfile.v2 @@ -0,0 +1,38 @@ +# This image contains the graphql server +# built for the fuel-explorer +FROM node:20-slim AS base + +# Expose the ENVs to the env of the container +ENV PORT="${PORT}" +ENV FUEL_PROVIDER="${FUEL_PROVIDER:-https://beta-5.fuel.network/graphql}" +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +ENV SERVER_BUILD=true +ENV SYNC_MISSING=false +ENV DB_MIGRATE=false + +# Database config +ENV DB_HOST="${DB_HOST}" +ENV DB_PORT="${DB_PORT}" +ENV DB_USER="${DB_USER}" +ENV DB_PASS="${DB_PASS}" +ENV DB_NAME="${DB_NAME}" + +# Enable pnpm using corepack form node.js +RUN corepack enable + +# Install dependencies for the entire monorepo +COPY . /app-explorer +WORKDIR /app-explorer + +# Install dependencies for the entire monorepo +RUN pnpm install +RUN pnpm db:setup + +# Expose the specified port +EXPOSE ${PORT} + +# Start GraphQL server +WORKDIR /app-explorer + +CMD ["pnpm", "server:start"] diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 65dfbf72d..381566616 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3.4' +version: "3.4" services: l1_chain: @@ -14,6 +14,7 @@ services: fuel_core: depends_on: - l1_chain + - fuel-explorer-pgsql image: fueldev/fuelcore:${DOCKER_TAG_FUEL_CORE:-latest} platform: linux/amd64 build: @@ -69,3 +70,23 @@ services: ports: # expose the service to the host for integration testing - ${ERC20_HTTP_PORT:-8082}:9090 + + fuel-explorer-pgsql: + image: postgres:latest + platform: linux/amd64 + container_name: fuel-explorer-pgsql + ports: + - "5435:5432" + volumes: + - fuel-explorer-pgsql-db:/usr/local/postgres + environment: + - POSTGRES_PASSWORD=postgres + - PGUSER=postgres + healthcheck: + test: ["CMD-SHELL", "pg_isready", "-U", "postgres", "-d", "postgres"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + fuel-explorer-pgsql-db: diff --git a/docker/fuel-core/Dockerfile b/docker/fuel-core/Dockerfile index a3d669df6..5edf82470 100644 --- a/docker/fuel-core/Dockerfile +++ b/docker/fuel-core/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/fuellabs/fuel-core:v0.22.0 +FROM ghcr.io/fuellabs/fuel-core:v0.22.4 ARG FUEL_IP=0.0.0.0 ARG FUEL_PORT=4001 diff --git a/docker/fuel-core/chainConfig.json b/docker/fuel-core/chainConfig.json index a58813381..7ea3de242 100644 --- a/docker/fuel-core/chainConfig.json +++ b/docker/fuel-core/chainConfig.json @@ -108,6 +108,13 @@ "amount": "0x000000e8d4a51000", "asset_id": "0x0000000000000000000000000000000000000000000000000000000000000000" } + ], + "contracts": [ + { + "contract_id": "0x1111111111111111111111111111111111111111111111111111111111111111", + "code": "0x2222222222222222222222222222222222222222222222222222222222222222", + "salt": "0x0000000000000000000000000000000000000000000000000000000000000001" + } ] }, "consensus_parameters": { diff --git a/docker/fuel-core/fuel_core.sh b/docker/fuel-core/fuel_core.sh index 7a0fcef1c..5a562bcf3 100644 --- a/docker/fuel-core/fuel_core.sh +++ b/docker/fuel-core/fuel_core.sh @@ -59,6 +59,7 @@ exec /root/fuel-core run \ --enable-relayer \ --relayer $L1_CHAIN_HTTP \ --relayer-v2-listening-contracts $FUEL_MESSAGE_PORTAL_CONTRACT_ADDRESS \ + --coinbase-recipient 0x1111111111111111111111111111111111111111111111111111111111111111 \ --poa-interval-period 1s \ --min-gas-price 1 \ --chain ./chainConfig.json \ diff --git a/docker/l1-chain/hardhat/package.json b/docker/l1-chain/hardhat/package.json new file mode 100644 index 000000000..39bb24d24 --- /dev/null +++ b/docker/l1-chain/hardhat/package.json @@ -0,0 +1,12 @@ +{ + "name": "hardhat-node", + "version": "0.0.0", + "scripts": { + "start": "hardhat node --network hardhat" + }, + "license": "MIT", + "dependencies": { + "dotenv": "^16.4.4", + "hardhat": "^2.20.1" + } +} diff --git a/package.json b/package.json index 333fb3c10..719254e92 100644 --- a/package.json +++ b/package.json @@ -66,21 +66,18 @@ "@jest/types": "29.6.3", "@next/eslint-plugin-next": "^14.1.0", "@nomiclabs/hardhat-etherscan": "^3.1.8", - "@openzeppelin/hardhat-upgrades": "^3.0.2", + "@openzeppelin/hardhat-upgrades": "^3.0.3", "@playwright/test": "^1.41.2", - "@swc/core": "1.4.0", + "@swc/core": "1.4.1", "@swc/jest": "0.2.36", "@types/jest": "29.5.12", - "@types/node": "20.11.16", - "@types/react": "^18.2.54", - "@types/react-dom": "^18.2.18", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@typescript-eslint/eslint-plugin": "^7.0.1", + "@typescript-eslint/parser": "^7.0.1", "@xstate/cli": "^0.5.17", - "dotenv": "^16.4.1", + "dotenv": "^16.4.4", "get-tsconfig": "4.7.2", "hardhat-typechain": "^0.3.5", - "husky": "^9.0.10", + "husky": "^9.0.11", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "jest-transform-stub": "^2.0.0", @@ -89,22 +86,17 @@ "npm-run-all": "^4.1.5", "ts-jest": "^29.1.2", "ts-node": "10.9.2", - "tsup": "8.0.1", - "tsx": "4.7.0", - "turbo": "^1.12.2", + "tsup": "8.0.2", + "tsx": "4.7.1", + "turbo": "^1.12.4", "typescript": "5.3.3", - "updates": "^15.1.1" + "updates": "^15.1.2", + "vitest": "1.2.2" }, "pnpm": { "peerDependencyRules": { - "allowAny": [ - "react", - "react-dom" - ], - "ignoreMissing": [ - "react", - "react-dom" - ] + "allowAny": ["react", "react-dom"], + "ignoreMissing": ["react", "react-dom"] }, "overrides": { "glob-parent@<5.1.2": ">=5.1.2", diff --git a/packages/app-commons/package.json b/packages/app-commons/package.json index c7217e5d7..31c50be7a 100644 --- a/packages/app-commons/package.json +++ b/packages/app-commons/package.json @@ -14,12 +14,12 @@ }, "dependencies": { "@fuels/ui": "workspace:*", - "react": "^18.2.0", + "react": "18.2.0", "tailwind-variants": "0.1.20" }, "devDependencies": { - "@types/react": "^18.2.54", - "@types/react-dom": "^18.2.18", + "@types/react": "18.2.54", + "@types/react-dom": "18.2.22", "typescript": "5.3.3" } } diff --git a/packages/app-explorer/package.json b/packages/app-explorer/package.json index a92434bfe..59b081807 100644 --- a/packages/app-explorer/package.json +++ b/packages/app-explorer/package.json @@ -61,15 +61,15 @@ "@storybook/types": "^8.0.0-beta.5", "@svgr/webpack": "8.1.0", "@testing-library/dom": "9.3.4", - "@testing-library/jest-dom": "6.3.0", + "@testing-library/jest-dom": "6.4.2", "@types/node": "20.11.6", - "@types/react": "^18.2.48", - "@types/react-dom": "^18.2.18", + "@types/react": "18.2.54", + "@types/react-dom": "18.2.22", "@types/react-window": "1.8.8", "@xstate/cli": "^0.5.17", "autoprefixer": "10.4.17", - "postcss": "8.4.33", - "postcss-import": "16.0.0", + "postcss": "8.4.35", + "postcss-import": "16.0.1", "radix-ui-themes-with-tailwind": "1.2.6", "storybook": "^8.0.0-beta.5", "storybook-addon-theme": "workspace:*", @@ -79,7 +79,7 @@ "tsconfig-paths-webpack-plugin": "^4.1.0", "tsup": "8.0.1", "typescript": "5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.3", "vite-tsconfig-paths": "^4.3.1" }, "browser": { diff --git a/packages/app-portal/package.json b/packages/app-portal/package.json index 5e60ff091..21782dffc 100644 --- a/packages/app-portal/package.json +++ b/packages/app-portal/package.json @@ -43,8 +43,8 @@ "@tanstack/react-query": "5.0.5", "@tanstack/react-query-devtools": "5.0.5", "@types/node": "^18.13.0", - "@types/react": "^18.0.27", - "@types/react-dom": "^18.0.10", + "@types/react": "18.2.54", + "@types/react-dom": "18.2.22", "@xstate/cli": "^0.5.17", "npm-run-all": "^4.1.5", "postcss": "8.4.33", @@ -57,4 +57,4 @@ "tailwindcss-radix": "2.8.0", "typescript": "5.3.3" } -} \ No newline at end of file +} diff --git a/packages/graphql-new/.dockerignore b/packages/graphql-new/.dockerignore new file mode 100644 index 000000000..c49efacc1 --- /dev/null +++ b/packages/graphql-new/.dockerignore @@ -0,0 +1,4 @@ +node_moduels +.turbo +dist +.env \ No newline at end of file diff --git a/packages/graphql-new/.env.example b/packages/graphql-new/.env.example new file mode 100644 index 000000000..e891536d1 --- /dev/null +++ b/packages/graphql-new/.env.example @@ -0,0 +1,7 @@ +FUEL_PROVIDER=http://beta-5.fuel.network/graphql +SERVER_PORT=3002 +DB_HOST="127.0.0.1" +DB_PORT="5435" +DB_USER="postgres" +DB_PASS="postgres" +DB_NAME="postgres" \ No newline at end of file diff --git a/packages/graphql-new/.env.production b/packages/graphql-new/.env.production new file mode 100644 index 000000000..0281d7171 --- /dev/null +++ b/packages/graphql-new/.env.production @@ -0,0 +1,7 @@ +FUEL_PROVIDER=https://beta-5.fuel.network/graphql +SERVER_PORT=3002 +DB_HOST="127.0.0.1" +DB_PORT="5435" +DB_USER="postgres" +DB_PASS="postgres" +DB_NAME="postgres" diff --git a/packages/graphql-new/README.md b/packages/graphql-new/README.md new file mode 100644 index 000000000..5f2256256 --- /dev/null +++ b/packages/graphql-new/README.md @@ -0,0 +1,26 @@ +## Mock API + +This is a mock api for block-explorer + +## Run development server + +```sh +pnpm dev +``` + +## Docker + +``` +docker run \ + -e FUEL_PROVIDER=http://beta-5.fuel.network/graphql \ + -e SERVER_PORT=3000 \ + -e SYNC_MISSING=true \ + -e DB_MIGRATE=true \ + -e DB_HOST=192.168.3.240 \ + -e DB_PORT=5435 \ + -e DB_USER=postgres \ + -e DB_PASS=postgres \ + -e DB_NAME=postgres \ + -p 3333:3000 \ + ghcr.io/fuellabs/fuel-explorer:main +``` diff --git a/packages/graphql-new/codegen.fuel.ts b/packages/graphql-new/codegen.fuel.ts new file mode 100644 index 000000000..6ec4a05e5 --- /dev/null +++ b/packages/graphql-new/codegen.fuel.ts @@ -0,0 +1,19 @@ +import type { CodegenConfig } from '@graphql-codegen/cli'; +import dotenv from 'dotenv'; +dotenv.config(); + +const SERVER_URL = process.env.FUEL_PROVIDER || 'http://127.0.0.1:4000/graphql'; + +const config: CodegenConfig = { + overwrite: true, + generates: { + './src/graphql/schemas/fuelcore.graphql': { + schema: SERVER_URL, + plugins: ['schema-ast'], + config: { + includeDirectives: true, + }, + }, + }, +}; +export default config; diff --git a/packages/graphql-new/codegen.sdk.ts b/packages/graphql-new/codegen.sdk.ts new file mode 100644 index 000000000..cee38ab15 --- /dev/null +++ b/packages/graphql-new/codegen.sdk.ts @@ -0,0 +1,53 @@ +import type { CodegenConfig } from '@graphql-codegen/cli'; +import dotenv from 'dotenv'; +dotenv.config(); + +const config: CodegenConfig = { + overwrite: true, + generates: { + './src/graphql/generated/sdk-core.ts': { + documents: ['./src/graphql/generated/fuelcore/**/**.graphql'], + schema: ['./src/graphql/schemas/fuelcore.graphql'], + plugins: [ + 'typescript', + 'typescript-operations', + 'typescript-graphql-request', + ], + config: { + nonOptionalTypename: true, + rawRequest: true, + useTypeImports: true, + defaultScalarType: 'string', + typesPrefix: 'GQL', + scalars: { + Boolean: 'boolean', + Int: 'number', + }, + }, + }, + './src/graphql/generated/sdk.ts': { + documents: ['./src/graphql/queries/**.graphql'], + schema: [ + './src/graphql/schemas/fuelcore.graphql', + './src/graphql/schemas/explorer.graphql', + ], + plugins: [ + 'typescript', + 'typescript-operations', + 'typescript-graphql-request', + ], + config: { + nonOptionalTypename: true, + rawRequest: true, + useTypeImports: true, + defaultScalarType: 'string', + typesPrefix: 'GQL', + scalars: { + Boolean: 'boolean', + Int: 'number', + }, + }, + }, + }, +}; +export default config; diff --git a/packages/graphql-new/drizzle.config.ts b/packages/graphql-new/drizzle.config.ts new file mode 100644 index 000000000..f2f4cc532 --- /dev/null +++ b/packages/graphql-new/drizzle.config.ts @@ -0,0 +1,11 @@ +import type { Config } from 'drizzle-kit'; +import { db } from './src/infra/database/Db'; + +export default { + schema: './src/infra/database/DbSchema.ts', + out: './drizzle', + driver: 'pg', + dbCredentials: { + connectionString: db.connectionString(), + }, +} satisfies Config; diff --git a/packages/graphql-new/drizzle/0000_hesitant_moon_knight.sql b/packages/graphql-new/drizzle/0000_hesitant_moon_knight.sql new file mode 100644 index 000000000..72d30444a --- /dev/null +++ b/packages/graphql-new/drizzle/0000_hesitant_moon_knight.sql @@ -0,0 +1,88 @@ +CREATE TABLE IF NOT EXISTS "blocks" ( + "_id" integer PRIMARY KEY NOT NULL, + "id" varchar(66) NOT NULL, + "timestamp" timestamp NOT NULL, + "data" jsonb NOT NULL, + "gas_used" varchar(66), + "producer" varchar(66), + CONSTRAINT "blocks_id_unique" UNIQUE("id") +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "contracts" ( + "_id" serial PRIMARY KEY NOT NULL, + "contract_hash" varchar(66) NOT NULL, + "data" jsonb NOT NULL, + CONSTRAINT "contracts_contract_hash_unique" UNIQUE("contract_hash") +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "inputs" ( + "_id" serial PRIMARY KEY NOT NULL, + "data" jsonb NOT NULL, + "transaction_id" varchar(66) NOT NULL +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "operations" ( + "_id" serial PRIMARY KEY NOT NULL, + "data" jsonb NOT NULL, + "transaction_id" varchar(66) NOT NULL, + "transaction_hash" varchar(66) NOT NULL +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "outputs" ( + "_id" serial PRIMARY KEY NOT NULL, + "data" jsonb NOT NULL, + "transaction_id" varchar(66) NOT NULL +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "predicates" ( + "_id" serial PRIMARY KEY NOT NULL, + "bytecode" text NOT NULL, + "address" varchar(66) NOT NULL, + CONSTRAINT "predicates_address_unique" UNIQUE("address") +); +--> statement-breakpoint +CREATE TABLE IF NOT EXISTS "transactions" ( + "_id" varchar(66) PRIMARY KEY NOT NULL, + "tx_hash" varchar(66) NOT NULL, + "timestamp" timestamp, + "data" jsonb NOT NULL, + "accountIndex" text DEFAULT '' NOT NULL, + "block_id" integer NOT NULL, + CONSTRAINT "transactions_tx_hash_unique" UNIQUE("tx_hash") +); +--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "blocks_timestamp_index" ON "blocks" ("timestamp");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "blocks_id_index" ON "blocks" ("id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "blocks__id_index" ON "blocks" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "contracts__id_index" ON "contracts" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "contracts_contract_hash_index" ON "contracts" ("contract_hash");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "inputs__id_index" ON "inputs" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "operations__id_index" ON "operations" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "outputs__id_index" ON "outputs" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "predicates__id_index" ON "predicates" ("_id");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "predicates_address_index" ON "predicates" ("address");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "transactions_timestamp_index" ON "transactions" ("timestamp");--> statement-breakpoint +CREATE INDEX IF NOT EXISTS "transactions__id_index" ON "transactions" ("_id");--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "inputs" ADD CONSTRAINT "inputs_transaction_id_transactions__id_fk" FOREIGN KEY ("transaction_id") REFERENCES "transactions"("_id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "operations" ADD CONSTRAINT "operations_transaction_id_transactions__id_fk" FOREIGN KEY ("transaction_id") REFERENCES "transactions"("_id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "outputs" ADD CONSTRAINT "outputs_transaction_id_transactions__id_fk" FOREIGN KEY ("transaction_id") REFERENCES "transactions"("_id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; +--> statement-breakpoint +DO $$ BEGIN + ALTER TABLE "transactions" ADD CONSTRAINT "transactions_block_id_blocks__id_fk" FOREIGN KEY ("block_id") REFERENCES "blocks"("_id") ON DELETE no action ON UPDATE no action; +EXCEPTION + WHEN duplicate_object THEN null; +END $$; diff --git a/packages/graphql-new/drizzle/meta/0000_snapshot.json b/packages/graphql-new/drizzle/meta/0000_snapshot.json new file mode 100644 index 000000000..aea7ada8a --- /dev/null +++ b/packages/graphql-new/drizzle/meta/0000_snapshot.json @@ -0,0 +1,385 @@ +{ + "id": "841c62d8-fa00-42aa-9958-f5278e0548de", + "prevId": "00000000-0000-0000-0000-000000000000", + "version": "5", + "dialect": "pg", + "tables": { + "blocks": { + "name": "blocks", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "integer", + "primaryKey": true, + "notNull": true + }, + "id": { + "name": "id", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "timestamp", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "gas_used": { + "name": "gas_used", + "type": "varchar(66)", + "primaryKey": false, + "notNull": false + }, + "producer": { + "name": "producer", + "type": "varchar(66)", + "primaryKey": false, + "notNull": false + } + }, + "indexes": { + "blocks_timestamp_index": { + "name": "blocks_timestamp_index", + "columns": ["timestamp"], + "isUnique": false + }, + "blocks_id_index": { + "name": "blocks_id_index", + "columns": ["id"], + "isUnique": false + }, + "blocks__id_index": { + "name": "blocks__id_index", + "columns": ["_id"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "blocks_id_unique": { + "name": "blocks_id_unique", + "nullsNotDistinct": false, + "columns": ["id"] + } + } + }, + "contracts": { + "name": "contracts", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "contract_hash": { + "name": "contract_hash", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "contracts__id_index": { + "name": "contracts__id_index", + "columns": ["_id"], + "isUnique": false + }, + "contracts_contract_hash_index": { + "name": "contracts_contract_hash_index", + "columns": ["contract_hash"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "contracts_contract_hash_unique": { + "name": "contracts_contract_hash_unique", + "nullsNotDistinct": false, + "columns": ["contract_hash"] + } + } + }, + "inputs": { + "name": "inputs", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "transaction_id": { + "name": "transaction_id", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "inputs__id_index": { + "name": "inputs__id_index", + "columns": ["_id"], + "isUnique": false + } + }, + "foreignKeys": { + "inputs_transaction_id_transactions__id_fk": { + "name": "inputs_transaction_id_transactions__id_fk", + "tableFrom": "inputs", + "tableTo": "transactions", + "columnsFrom": ["transaction_id"], + "columnsTo": ["_id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "operations": { + "name": "operations", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "transaction_id": { + "name": "transaction_id", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + }, + "transaction_hash": { + "name": "transaction_hash", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "operations__id_index": { + "name": "operations__id_index", + "columns": ["_id"], + "isUnique": false + } + }, + "foreignKeys": { + "operations_transaction_id_transactions__id_fk": { + "name": "operations_transaction_id_transactions__id_fk", + "tableFrom": "operations", + "tableTo": "transactions", + "columnsFrom": ["transaction_id"], + "columnsTo": ["_id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "outputs": { + "name": "outputs", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "transaction_id": { + "name": "transaction_id", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "outputs__id_index": { + "name": "outputs__id_index", + "columns": ["_id"], + "isUnique": false + } + }, + "foreignKeys": { + "outputs_transaction_id_transactions__id_fk": { + "name": "outputs_transaction_id_transactions__id_fk", + "tableFrom": "outputs", + "tableTo": "transactions", + "columnsFrom": ["transaction_id"], + "columnsTo": ["_id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {} + }, + "predicates": { + "name": "predicates", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "serial", + "primaryKey": true, + "notNull": true + }, + "bytecode": { + "name": "bytecode", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "address": { + "name": "address", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "predicates__id_index": { + "name": "predicates__id_index", + "columns": ["_id"], + "isUnique": false + }, + "predicates_address_index": { + "name": "predicates_address_index", + "columns": ["address"], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "predicates_address_unique": { + "name": "predicates_address_unique", + "nullsNotDistinct": false, + "columns": ["address"] + } + } + }, + "transactions": { + "name": "transactions", + "schema": "", + "columns": { + "_id": { + "name": "_id", + "type": "varchar(66)", + "primaryKey": true, + "notNull": true + }, + "tx_hash": { + "name": "tx_hash", + "type": "varchar(66)", + "primaryKey": false, + "notNull": true + }, + "timestamp": { + "name": "timestamp", + "type": "timestamp", + "primaryKey": false, + "notNull": false + }, + "data": { + "name": "data", + "type": "jsonb", + "primaryKey": false, + "notNull": true + }, + "accountIndex": { + "name": "accountIndex", + "type": "text", + "primaryKey": false, + "notNull": true, + "default": "''" + }, + "block_id": { + "name": "block_id", + "type": "integer", + "primaryKey": false, + "notNull": true + } + }, + "indexes": { + "transactions_timestamp_index": { + "name": "transactions_timestamp_index", + "columns": ["timestamp"], + "isUnique": false + }, + "transactions__id_index": { + "name": "transactions__id_index", + "columns": ["_id"], + "isUnique": false + } + }, + "foreignKeys": { + "transactions_block_id_blocks__id_fk": { + "name": "transactions_block_id_blocks__id_fk", + "tableFrom": "transactions", + "tableTo": "blocks", + "columnsFrom": ["block_id"], + "columnsTo": ["_id"], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": { + "transactions_tx_hash_unique": { + "name": "transactions_tx_hash_unique", + "nullsNotDistinct": false, + "columns": ["tx_hash"] + } + } + } + }, + "enums": {}, + "schemas": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/packages/graphql-new/drizzle/meta/_journal.json b/packages/graphql-new/drizzle/meta/_journal.json new file mode 100644 index 000000000..4e76d424f --- /dev/null +++ b/packages/graphql-new/drizzle/meta/_journal.json @@ -0,0 +1,13 @@ +{ + "version": "5", + "dialect": "pg", + "entries": [ + { + "idx": 0, + "version": "5", + "when": 1709785362158, + "tag": "0000_hesitant_moon_knight", + "breakpoints": true + } + ] +} diff --git a/packages/graphql-new/graphql.config.ts b/packages/graphql-new/graphql.config.ts new file mode 100644 index 000000000..99d3ddbd9 --- /dev/null +++ b/packages/graphql-new/graphql.config.ts @@ -0,0 +1,8 @@ +import type { IGraphQLConfig } from 'graphql-config'; + +const config: IGraphQLConfig = { + schema: ['./src/graphql/schemas/**.graphql'], + documents: ['./src/domain/**/*.graphql'], +}; + +export default config; diff --git a/packages/graphql-new/package.json b/packages/graphql-new/package.json new file mode 100644 index 000000000..146820627 --- /dev/null +++ b/packages/graphql-new/package.json @@ -0,0 +1,94 @@ +{ + "name": "@fuel-explorer/graphql-new", + "version": "1.0.0", + "description": "", + "private": true, + "author": "Fuel Labs (https://fuel.network/)", + "license": "Apache-2.0", + "main": "./src/index.ts", + "types": "./src/index.ts", + "typings": "./src/index.ts", + "publishConfig": { + "access": "public", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "typings": "./dist/index.d.ts", + "exports": { + ".": { + "require": "./dist/index.js", + "default": "./dist/index.mjs" + } + }, + "files": ["dist"] + }, + "scripts": { + "build:lib": "run-s codegen build:sdk", + "build:sdk": "tsup", + "ts:check": "tsc --noEmit", + "codegen": "run-s codegen:*", + "codegen:fuel": "gql-gen -r dotenv/config --config codegen.fuel.ts", + "codegen:gql-fuelcore": "gqlg --schemaFilePath ./src/graphql/schemas/fuelcore.graphql --destDirPath ./src/graphql/generated/fuelcore --ext graphql", + "codegen:sdk": "gql-gen -r dotenv/config --config codegen.sdk.ts", + "db:studio": "drizzle-kit studio", + "db:generate": "drizzle-kit generate:pg", + "db:migrate": "tsx ./src/cli.ts migrate", + "db:push": "drizzle-kit push:pg", + "db:setup": "run-s codegen db:generate", + "dev": "tsx watch src/app.ts", + "server:start": "tsx src/app.ts", + "sync:all": "tsx ./src/cli.ts sync --all", + "sync:missing": "tsx ./src/cli.ts sync --missing", + "sync:from-block": "tsx ./src/cli.ts sync --from", + "sync:clean": "tsx ./src/cli.ts sync --clean", + "prepare": "pnpm build:lib" + }, + "dependencies": { + "@graphql-tools/load": "8.0.2", + "@graphql-tools/load-files": "7.0.0", + "@graphql-tools/merge": "9.0.3", + "@graphql-tools/schema": "^10.0.2", + "@graphql-tools/stitch": "^9.0.3", + "@graphql-tools/utils": "^10.0.13", + "@types/cors": "^2.8.17", + "@types/express": "^4.17.21", + "cors": "^2.8.5", + "dayjs": "1.11.10", + "dotenv": "16.4.4", + "drizzle-orm": "^0.29.3", + "ethers": "^6.7.1", + "express": "5.0.0-beta.1", + "fuels": "0.74.0", + "graphql": "^16.8.1", + "graphql-request": "6.1.0", + "graphql-tag": "^2.12.6", + "graphql-yoga": "5.1.1", + "lodash": "^4.17.21", + "npm-run-all": "^4.1.5", + "pg": "^8.11.3", + "pg-boss": "9.0.3", + "shallow-equal-object": "1.1.1", + "tai64": "^1.0.0", + "winston": "3.11.0", + "yargs": "17.7.2", + "zod": "3.22.4" + }, + "devDependencies": { + "@fuels/ts-config": "^0.17.0", + "@graphql-codegen/cli": "^5.0.2", + "@graphql-codegen/introspection": "^4.0.2", + "@graphql-codegen/schema-ast": "^4.0.2", + "@graphql-codegen/typescript": "^4.0.4", + "@graphql-codegen/typescript-graphql-request": "^6.2.0", + "@graphql-codegen/typescript-operations": "^4.1.2", + "@types/lodash": "4.14.202", + "@types/node": "^20.11.19", + "@types/pg": "^8.11.0", + "drizzle-kit": "^0.20.14", + "gql-generator": "2.0.0", + "graphql-config": "5.0.3", + "tsup": "8.0.2", + "tsx": "4.7.1", + "typescript": "^5.3.3" + } +} diff --git a/packages/graphql-new/src/app.ts b/packages/graphql-new/src/app.ts new file mode 100644 index 000000000..3948f4a79 --- /dev/null +++ b/packages/graphql-new/src/app.ts @@ -0,0 +1,32 @@ +import { setTimeout } from 'timers/promises'; +import { env } from './config'; +import { GraphQLServer } from './graphql/GraphQLServer'; +import { db } from './infra/database/Db'; +import { QueueNames, queue } from './infra/queue'; +import { Server } from './infra/server/App'; + +const port = Number(env.get('SERVER_PORT')); +const graphQLServer = new GraphQLServer(); + +const schema = graphQLServer.schema(); +const yoga = graphQLServer.setup(schema); +const httpServer = new Server(); +const app = httpServer.setup(); + +app.use(yoga.graphqlEndpoint, yoga); +httpServer.listen(app, port).then(async () => { + console.log( + `📟 GraphQL server is running on http://localhost:${port}${yoga.graphqlEndpoint}`, + ); + + if (process.env.DB_MIGRATE) { + console.log('📦 Running database migrations...'); + await db.migrate(); + } + + if (process.env.SYNC_MISSING) { + console.log('🕐 Syncing missing blocks in 5 seconds...'); + await setTimeout(5000); + await queue.push(QueueNames.SYNC_MISSING, undefined); + } +}); diff --git a/packages/graphql-new/src/application/uc/SyncAllBlocks.ts b/packages/graphql-new/src/application/uc/SyncAllBlocks.ts new file mode 100644 index 000000000..d4243e501 --- /dev/null +++ b/packages/graphql-new/src/application/uc/SyncAllBlocks.ts @@ -0,0 +1,59 @@ +import { uniqBy } from 'lodash'; +import { BlockEntity } from '~/domain/Block/BlockEntity'; +import { BlockRepository } from '~/domain/Block/BlockRepository'; +import { QueueData, QueueInputs, QueueNames, queue } from '~/infra/queue'; + +type Props = QueueInputs[QueueNames.SYNC_BLOCKS]; + +export class SyncAllBlocks { + async execute({ first = 10, after = undefined, checkNext = true }: Props) { + const repo = new BlockRepository(); + const { blocks, endCursor } = await repo.blocksFromNode(first, after); + const hasBlocks = blocks.length > 0; + + if (hasBlocks) { + const created = await repo.insertMany(blocks); + await this.syncTransactions(created); + } + if (checkNext) { + // If current page don't have blocks, we keep trying the same page + // until we have blocks after the final cursor + const cursor = !hasBlocks ? after : endCursor; + await this.syncNext(first, cursor); + } + } + + private async syncTransactions(blocks: (BlockEntity | null)[]) { + const filtered = blocks.filter(Boolean) as BlockEntity[]; + const events = filtered.flatMap((block) => { + const txs = uniqBy(block.data.transactions, 'id'); + return txs.map( + (transaction, idx) => ({ + index: idx, + block: block.data, + txHash: transaction.id, + }), + ); + }); + + if (events.length) { + await queue.pushBatch(QueueNames.SYNC_TRANSACTION, events); + } + } + + private async syncNext(first: number, after?: number) { + await queue.push(QueueNames.SYNC_BLOCKS, { first, after }); + } +} + +export const syncAllBlocks = async ({ data }: QueueData) => { + try { + console.log(`Syncing block after cursor ${data.after}`); + const syncAllBlocks = new SyncAllBlocks(); + await syncAllBlocks.execute(data); + } catch (error) { + throw new Error('Sync block attempt failed!', { + cause: error, + }); + } +}; diff --git a/packages/graphql-new/src/application/uc/SyncMissingBlocks.ts b/packages/graphql-new/src/application/uc/SyncMissingBlocks.ts new file mode 100644 index 000000000..72c0b413f --- /dev/null +++ b/packages/graphql-new/src/application/uc/SyncMissingBlocks.ts @@ -0,0 +1,25 @@ +import { BlockRepository } from '~/domain/Block/BlockRepository'; +import { QueueNames, queue } from '~/infra/queue'; + +export class SyncMissingBlocks { + async execute() { + const repo = new BlockRepository(); + const latest = await repo.findLatestAdded(); + const after = latest ? Number(latest.data.header.height) : undefined; + + await queue.push(QueueNames.SYNC_BLOCKS, { after, first: 10 }); + } +} + +export const syncMissingBlocks = async () => { + try { + console.log('Syncing missing blocks'); + const syncMissingBlocks = new SyncMissingBlocks(); + await syncMissingBlocks.execute(); + } catch (error) { + console.error(error); + throw new Error('Sync missing', { + cause: error, + }); + } +}; diff --git a/packages/graphql-new/src/application/uc/SyncTransaction.ts b/packages/graphql-new/src/application/uc/SyncTransaction.ts new file mode 100644 index 000000000..7e823db90 --- /dev/null +++ b/packages/graphql-new/src/application/uc/SyncTransaction.ts @@ -0,0 +1,105 @@ +import { ContractRepository } from '~/domain/Contract/ContractRepository'; +import { InputEntity } from '~/domain/Input/InputEntity'; +import { InputRepository } from '~/domain/Input/InputRepository'; +import { OperationRepository } from '~/domain/Operation/OperationRepository'; +import { OperationsFactory } from '~/domain/Operation/factories/OperationsFactory'; +import { OutputRepository } from '~/domain/Output/OutputRepository'; +import { PredicateRepository } from '~/domain/Predicate/PredicateRepository'; +import { TransactionEntity } from '~/domain/Transaction/TransactionEntity'; +import { TransactionRepository } from '~/domain/Transaction/TransactionRepository'; +import { QueueData, QueueInputs, QueueNames } from '~/infra/queue'; + +type Input = QueueInputs[QueueNames.SYNC_TRANSACTION]; + +export class SyncTransactions { + async execute({ txHash, block, index }: Input) { + const repository = new TransactionRepository(); + const added = await repository.insertOne(txHash, block, index); + await Promise.all([ + this.syncInputs(added), + this.syncOutputs(added), + this.syncContracts(added), + this.syncOperations(added), + ]); + } + + private async syncInputs(transaction: TransactionEntity) { + const inputs = transaction.data.inputs; + const transactionId = transaction._id.value(); + if (inputs?.length) { + console.log(`Syncing inputs for transaction ${transaction.txHash}...`); + const repository = new InputRepository(); + const created = await repository.insertMany(inputs, transactionId); + await this.syncPredicates(created); + } + } + + private async syncOutputs(transaction: TransactionEntity) { + const outputs = transaction.data.outputs; + const transactionId = transaction._id.value(); + if (outputs?.length) { + console.log(`Syncing outputs for transaction ${transaction.txHash}...`); + const repository = new OutputRepository(); + await repository.insertMany(outputs, transactionId); + } + } + + private async syncContracts(transaction: TransactionEntity) { + const contracts = transaction.getContractsCreated(); + await Promise.all( + contracts.map(async (contract) => { + console.log(`Syncing contract ${contract.id}...`); + const repository = new ContractRepository(); + await repository.insertOne(contract); + }), + ); + } + + private async syncOperations(transaction: TransactionEntity) { + const repository = new OperationRepository(); + const operations = OperationsFactory.create(transaction).value(); + if (!operations) return; + + console.log(`Syncing operations for transaction ${transaction.txHash}...`); + const transactionId = transaction._id.value(); + await repository.insertMany(operations, transactionId); + } + + private async syncPredicates(inputs: InputEntity[]) { + const predicates = inputs + .map((input) => input.predicateData) + .filter(Boolean); + + await Promise.all( + predicates.map(async (predicate) => { + if (!predicate) return; + const { bytecode, address } = predicate; + const repository = new PredicateRepository(); + try { + console.log(`Syncing predicate ${address}...`); + await repository.insertOne({ bytecode, address }); + // biome-ignore lint/suspicious/noExplicitAny: + } catch (e: any) { + if (e.toString().includes('duplicate key value')) { + console.log('Predicate already exists'); + return; + } + throw e; + } + }), + ); + } +} + +export const syncTransactions = async ({ data }: QueueData) => { + try { + console.log(`Syncing transaction ${data.txHash}`); + const syncTransactions = new SyncTransactions(); + return syncTransactions.execute(data); + } catch (error) { + console.error(error); + throw new Error(`Sync transactions ${data.txHash}`, { + cause: error, + }); + } +}; diff --git a/packages/graphql-new/src/application/vo/Bytecode.ts b/packages/graphql-new/src/application/vo/Bytecode.ts new file mode 100644 index 000000000..ed85babb1 --- /dev/null +++ b/packages/graphql-new/src/application/vo/Bytecode.ts @@ -0,0 +1,24 @@ +import { text } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; + +interface Props { + value: string; +} + +export class Bytecode extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return text('bytecode').notNull(); + } + + static create(value: string) { + return new Bytecode({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/GasCosts.ts b/packages/graphql-new/src/application/vo/GasCosts.ts new file mode 100644 index 000000000..6a7125c41 --- /dev/null +++ b/packages/graphql-new/src/application/vo/GasCosts.ts @@ -0,0 +1,35 @@ +import { BN } from 'fuels'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLChainInfo, GQLTransaction } from '~/graphql/generated/sdk'; +import { GasFee } from './GasFee'; +import { GasUsed } from './GasUsed'; + +interface Props { + value: { + gasUsed: BN; + fee: BN; + }; +} + +export class GasCosts extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(transaction: GQLTransaction, chainInfo: GQLChainInfo) { + const fee = GasFee.create(transaction, chainInfo).value(); + const gasUsed = GasUsed.create(transaction).value(); + return new GasCosts({ value: { fee, gasUsed } }); + } + + value() { + return this.props.value; + } + + toGQL() { + return { + gasUsed: this.value().gasUsed.toString(), + fee: this.value().fee.toString(), + }; + } +} diff --git a/packages/graphql-new/src/application/vo/GasFee.ts b/packages/graphql-new/src/application/vo/GasFee.ts new file mode 100644 index 000000000..4b772c8ad --- /dev/null +++ b/packages/graphql-new/src/application/vo/GasFee.ts @@ -0,0 +1,31 @@ +import { BN, bn, calculateTransactionFee } from 'fuels'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLChainInfo, GQLTransaction } from '~/graphql/generated/sdk'; +import { GasUsed } from './GasUsed'; + +interface Props { + value: BN; +} + +export class GasFee extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(transaction: GQLTransaction, chainInfo: GQLChainInfo) { + const gasUsed = GasUsed.create(transaction).value(); + const { consensusParameters } = chainInfo; + const { rawPayload } = transaction; + const { fee } = calculateTransactionFee({ + consensusParameters, + rawPayload, + gasUsed: bn(gasUsed), + }); + + return new GasFee({ value: fee }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/GasUsed.ts b/packages/graphql-new/src/application/vo/GasUsed.ts new file mode 100644 index 000000000..bcb327b16 --- /dev/null +++ b/packages/graphql-new/src/application/vo/GasUsed.ts @@ -0,0 +1,25 @@ +import { BN, getGasUsedFromReceipts, processGqlReceipt } from 'fuels'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: BN; +} + +export class GasUsed extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(transaction: GQLTransaction) { + // biome-ignore lint/suspicious/noExplicitAny: + const receipts = (transaction.receipts ?? []) as any[]; + const decodedReceipts = receipts.map(processGqlReceipt); + const value = getGasUsedFromReceipts(decodedReceipts); + return new GasUsed({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/Hash256.ts b/packages/graphql-new/src/application/vo/Hash256.ts new file mode 100644 index 000000000..9861a256b --- /dev/null +++ b/packages/graphql-new/src/application/vo/Hash256.ts @@ -0,0 +1,22 @@ +import { varchar } from 'drizzle-orm/pg-core'; +import { Address } from '~/core/Address'; +import { ValueObject } from '~/core/ValueObject'; + +interface Props { + value: string; +} + +export class Hash256 extends ValueObject { + static type(field: string) { + return varchar(field, { length: 66 }).notNull(); + } + + static create(id: string) { + const value = new Address(id).toB256(); + return new Hash256({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/ParsedTime.ts b/packages/graphql-new/src/application/vo/ParsedTime.ts new file mode 100644 index 000000000..fd21bcca2 --- /dev/null +++ b/packages/graphql-new/src/application/vo/ParsedTime.ts @@ -0,0 +1,42 @@ +import { DateHelper } from '~/core/Date'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLParsedTime } from '~/graphql/generated/sdk'; + +type Typename = GQLParsedTime['__typename']; +interface Props { + value: GQLParsedTime; +} + +export class ParsedTime extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(timestamp?: string | null) { + if (!timestamp) { + return new ParsedTime({ + value: { + __typename: 'ParsedTime' as Typename, + fromNow: null, + full: null, + rawTai64: null, + rawUnix: null, + }, + }); + } + + const date = DateHelper.tai64toDate(timestamp); + const value = { + __typename: 'ParsedTime' as Typename, + fromNow: date.fromNow(), + full: date.format('DD MMM YYYY - HH:mm:ss A'), + rawTai64: timestamp.toString(), + rawUnix: date.unix().toString(), + }; + return new ParsedTime({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/SerialID.ts b/packages/graphql-new/src/application/vo/SerialID.ts new file mode 100644 index 000000000..d2573d91b --- /dev/null +++ b/packages/graphql-new/src/application/vo/SerialID.ts @@ -0,0 +1,16 @@ +import { serial } from 'drizzle-orm/pg-core'; +import { Identifier } from '~/core/Identifier'; + +export class SerialID extends Identifier { + private constructor(id: number) { + super(id); + } + + static type() { + return serial('_id').primaryKey(); + } + + static create(id: number) { + return new SerialID(id); + } +} diff --git a/packages/graphql-new/src/application/vo/Timestamp.ts b/packages/graphql-new/src/application/vo/Timestamp.ts new file mode 100644 index 000000000..0e07b160d --- /dev/null +++ b/packages/graphql-new/src/application/vo/Timestamp.ts @@ -0,0 +1,26 @@ +import { timestamp } from 'drizzle-orm/pg-core'; +import { DateHelper } from '~/core/Date'; +import { ValueObject } from '~/core/ValueObject'; + +interface Props { + value: Date; +} + +export class Timestamp extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return timestamp('timestamp').notNull(); + } + + static create(timestamp: string) { + const value = DateHelper.tai64toDate(timestamp); + return new Timestamp({ value: value.toDate() }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/application/vo/index.ts b/packages/graphql-new/src/application/vo/index.ts new file mode 100644 index 000000000..6df1d95f7 --- /dev/null +++ b/packages/graphql-new/src/application/vo/index.ts @@ -0,0 +1,3 @@ +export { Hash256 } from './Hash256'; +export { SerialID } from './SerialID'; +export { Timestamp } from './Timestamp'; diff --git a/packages/graphql-new/src/cli.ts b/packages/graphql-new/src/cli.ts new file mode 100755 index 000000000..75893710b --- /dev/null +++ b/packages/graphql-new/src/cli.ts @@ -0,0 +1,6 @@ +import { Program } from './infra/server/Program'; + +(async () => { + const program = new Program(); + program.create(); +})(); diff --git a/packages/graphql-new/src/config.ts b/packages/graphql-new/src/config.ts new file mode 100644 index 000000000..7832c6601 --- /dev/null +++ b/packages/graphql-new/src/config.ts @@ -0,0 +1,22 @@ +import * as zod from 'zod'; +import { Env } from './core/Env'; + +const schema = zod.object({ + FUEL_PROVIDER: zod.string(), + SERVER_PORT: zod.string().default('3000'), + DB_HOST: zod.string(), + DB_PORT: zod.string(), + DB_USER: zod.string(), + DB_PASS: zod.string(), + DB_NAME: zod.string(), +}); + +export const env = new Env(schema, { + FUEL_PROVIDER: 'http://localhost:4001/graphql', + SERVER_PORT: '3002', + DB_HOST: 'localhost', + DB_PORT: '5435', + DB_USER: 'postgres', + DB_PASS: 'postgres', + DB_NAME: 'postgres', +}); diff --git a/packages/graphql-new/src/core/Address.ts b/packages/graphql-new/src/core/Address.ts new file mode 100644 index 000000000..85364762d --- /dev/null +++ b/packages/graphql-new/src/core/Address.ts @@ -0,0 +1,24 @@ +import { Address as FuelAddr, isB256, isBech32 } from 'fuels'; + +export class Address { + private raw: FuelAddr; + + constructor(value: string) { + const isValvalue = value && (isB256(value) || isBech32(value)); + if (!value || !isValvalue) { + throw new Error('Invalvalue address'); + } + + this.raw = FuelAddr.fromString(value); + } + + toB256() { + return this.raw.toB256(); + } + toBech32() { + return this.raw.bech32Address; + } + toString() { + return this.raw.toString(); + } +} diff --git a/packages/graphql-new/src/core/Date.ts b/packages/graphql-new/src/core/Date.ts new file mode 100644 index 000000000..9995818df --- /dev/null +++ b/packages/graphql-new/src/core/Date.ts @@ -0,0 +1,16 @@ +import dayjs from 'dayjs'; +import relativeTime from 'dayjs/plugin/relativeTime'; +import { TAI64 } from 'tai64'; + +dayjs.extend(relativeTime); + +export class DateHelper { + static tai64toDate(tai64Timestamp: string) { + const timestamp = TAI64.fromString(tai64Timestamp, 10).toUnix(); + return dayjs(timestamp * 1000); + } + + static dateToTai64(date: Date) { + return TAI64.fromUnix(Math.floor(date.getTime() / 1000)).toString(10); + } +} diff --git a/packages/graphql-new/src/core/Entity.ts b/packages/graphql-new/src/core/Entity.ts new file mode 100644 index 000000000..7aba107ca --- /dev/null +++ b/packages/graphql-new/src/core/Entity.ts @@ -0,0 +1,38 @@ +import { Identifier } from './Identifier'; + +// biome-ignore lint/suspicious/noExplicitAny: +const isEntity = (v: any): v is Entity => { + return v instanceof Entity; +}; + +export abstract class Entity< + T, + ID extends Identifier | null | undefined, +> { + readonly _id!: ID; + public readonly props: T; + + constructor(props: T, id?: ID) { + this.props = props; + if (id) { + this._id = id; + } + } + + public equals(object?: Entity): boolean { + if (object == null || object === undefined) { + return false; + } + + if (this === object) { + return true; + } + + if (!isEntity(object)) { + return false; + } + + if (!this._id || !object._id) return false; + return this._id.equals(object._id); + } +} diff --git a/packages/graphql-new/src/core/Env.ts b/packages/graphql-new/src/core/Env.ts new file mode 100644 index 000000000..53d718b66 --- /dev/null +++ b/packages/graphql-new/src/core/Env.ts @@ -0,0 +1,47 @@ +import * as dotenv from 'dotenv'; +import { createLogger, transports } from 'winston'; +import * as zod from 'zod'; + +dotenv.config(); + +const logger = createLogger({ + level: 'debug', + transports: [new transports.Console()], +}); + +// biome-ignore lint/suspicious/noExplicitAny: +export class Env> { + private parsedEnv: zod.infer | undefined; + + constructor( + readonly schema: T = zod.object({}) as T, + readonly defaultValues: Partial> = {}, + ) { + if (process.env.NODE_ENV !== 'development') { + this.parsedEnv = this.parse(); + } else { + this.parsedEnv = this.safeParse(); + } + } + + private parse() { + return this.schema.parse(process.env); + } + + private safeParse() { + const result = this.schema.safeParse(process.env); + if (!result.success) { + logger.log({ + level: 'warn', + message: 'The environment variables are not valid', + }); + logger.error({ level: 'error', message: result.error }); + return this.defaultValues; + } + return result.data; + } + + get>(key: K): zod.infer[K] { + return this.parsedEnv![key]; + } +} diff --git a/packages/graphql-new/src/core/GQLNode.ts b/packages/graphql-new/src/core/GQLNode.ts new file mode 100644 index 000000000..371080f3c --- /dev/null +++ b/packages/graphql-new/src/core/GQLNode.ts @@ -0,0 +1,8 @@ +export class GQLNode { + static filterByType>( + nodes: T[], + type: T['__typename'], + ) { + return nodes.filter((node) => node.__typename === type); + } +} diff --git a/packages/graphql-new/src/core/Identifier.ts b/packages/graphql-new/src/core/Identifier.ts new file mode 100644 index 000000000..721b7aae3 --- /dev/null +++ b/packages/graphql-new/src/core/Identifier.ts @@ -0,0 +1,30 @@ +export class Identifier { + constructor(private rawValue: T) { + if (rawValue === '') { + throw new Error('ID cannot be an empty value'); + } + this.rawValue = rawValue; + } + + equals(id: Identifier): boolean { + if (id === null || id === undefined) { + return false; + } + if (!(id instanceof this.constructor)) { + return false; + } + return id.value() === this.rawValue; + } + + toString() { + return String(this.rawValue); + } + + /** + * Return raw value of identifier + */ + + value(): T { + return this.rawValue; + } +} diff --git a/packages/graphql-new/src/core/Paginator.ts b/packages/graphql-new/src/core/Paginator.ts new file mode 100644 index 000000000..ba7054f6c --- /dev/null +++ b/packages/graphql-new/src/core/Paginator.ts @@ -0,0 +1,177 @@ +import { SQL, and, asc, desc, gt, lt } from 'drizzle-orm'; +import { PgTableWithColumns } from 'drizzle-orm/pg-core'; +import { db } from '~/infra/database/Db'; +import { Entity } from './Entity'; +import { Identifier } from './Identifier'; + +export type PaginatorParams = { + first?: number | null; + last?: number | null; + after?: string | null; + before?: string | null; +}; + +type Cursor = string | number; + +type Edge = { cursor: Cursor; node: T }; + +export type PaginatedResults = { + nodes: T[]; + edges: Edge[]; + pageInfo: { + hasNextPage: boolean; + hasPreviousPage: boolean; + startCursor: Cursor; + endCursor: Cursor | null; + }; +}; + +// biome-ignore lint/suspicious/noExplicitAny: +export class Paginator> { + constructor( + private source: Source, + private params: PaginatorParams, + ) {} + + async getQueryPaginationConfig() { + const { source, params } = this; + const { first, after, before, last } = params; + const idField = source._id; + const order = first ? asc : desc; + const whereBy = first ? gt : lt; + const cursor = after || before; + const limit = first || last; + + return { + idField, + order, + whereBy, + cursor, + limit, + }; + } + + async hasPreviousPage(startCursor: Cursor): Promise { + const idField = this.source._id; + + const total = await db + .connection() + .select({ + [idField.name]: idField, + }) + .from(this.source) + .where(lt(idField, startCursor)) + .limit(1); + + return total.length > 0; + } + + async hasNextPage(endCursor: Cursor | null): Promise { + if (!endCursor) { + return false; + } + + const idField = this.source._id; + + const total = await db + .connection() + .select({ + [idField.name]: idField, + }) + .from(this.source) + .where(gt(idField, endCursor)) + .limit(1); + + return total.length > 0; + } + + async getPaginatedResult>( + config: Awaited>, + customWhere?: S, + ) { + const { last } = this.params; + const { idField, order, whereBy, cursor, limit } = config; + + let query = db + .connection() + .select() + .from(this.source) + .orderBy(order(idField)) + .$dynamic(); + + if (cursor) { + const cursorWhere = whereBy(idField, cursor); + query = customWhere + ? query.where(and(cursorWhere, customWhere)) + : query.where(cursorWhere); + } + + if (!cursor && customWhere) { + query = query.where(customWhere); + } + + if (limit) { + query = query.limit(limit); + } + + const result = await query; + if (last) { + return result.reverse(); + } + + return result; + } + + async validateParams() { + const { first, last, after, before } = this.params; + if (first && last) { + throw new Error('Cannot use both first and last'); + } + if (after && before) { + throw new Error('Cannot use both after and before'); + } + if (first && before) { + throw new Error('Cannot use first with before'); + } + if (last && after) { + throw new Error('Cannot use last with after'); + } + } + + getStartCursor>>(items: T[]) { + const first = items[0]; + return first ? first._id.value() : 0; + } + + getEndCursor>>(items: T[]) { + const last = items[items.length - 1]; + return last ? last._id.value() : null; + } + + async createPaginatedResult['cursor'] }>( + nodes: T[], + startCursor: Cursor, + endCursor: Cursor | null, + iterator: (node: T) => R, + ): Promise> { + const newNodes = nodes.map(iterator); + const edges = newNodes.map((node) => ({ + node, + cursor: node.id, + })); + + const hasPreviousPage = await this.hasPreviousPage(startCursor); + const hasNextPage = await this.hasNextPage(endCursor); + + return { + nodes: newNodes, + edges, + pageInfo: { + hasNextPage, + hasPreviousPage, + endCursor, + startCursor, + }, + }; + } +} diff --git a/packages/graphql-new/src/core/Resolver.ts b/packages/graphql-new/src/core/Resolver.ts new file mode 100644 index 000000000..7a65ad059 --- /dev/null +++ b/packages/graphql-new/src/core/Resolver.ts @@ -0,0 +1,17 @@ +import { IResolvers } from '@graphql-tools/utils'; +import { GraphQLContext } from '~/graphql/GraphQLContext'; + +// biome-ignore lint/suspicious/noExplicitAny: +type Resolvers = IResolvers; + +export class ResolverAdapter { + private resolvers: Resolvers = {}; + + setResolvers(resolvers: Resolvers) { + this.resolvers = resolvers; + } + + getResolvers() { + return this.resolvers; + } +} diff --git a/packages/graphql-new/src/core/ValueObject.ts b/packages/graphql-new/src/core/ValueObject.ts new file mode 100644 index 000000000..f63301722 --- /dev/null +++ b/packages/graphql-new/src/core/ValueObject.ts @@ -0,0 +1,31 @@ +import { shallowEqual } from 'shallow-equal-object'; + +interface ValueObjectProps { + // biome-ignore lint/suspicious/noExplicitAny: + [index: string]: any; +} + +/** + * @desc ValueObjects are objects that we determine their + * equality through their structrual property. + */ + +export abstract class ValueObject { + public readonly props: T; + + constructor(props: T) { + this.props = Object.freeze(props); + } + + public equals(vo?: ValueObject): boolean { + if (vo === null || vo === undefined) { + return false; + } + if (vo.props === undefined) { + return false; + } + return shallowEqual(this.props, vo.props); + } +} + +export type VOData = T extends ValueObject ? U['value'] : never; diff --git a/packages/graphql-new/src/domain/Block/BlockEntity.ts b/packages/graphql-new/src/domain/Block/BlockEntity.ts new file mode 100644 index 000000000..a576e3d89 --- /dev/null +++ b/packages/graphql-new/src/domain/Block/BlockEntity.ts @@ -0,0 +1,85 @@ +import { Hash256, Timestamp } from '~/application/vo'; +import { ParsedTime } from '~/application/vo/ParsedTime'; +import { Entity } from '~/core/Entity'; +import { GQLBlock } from '~/graphql/generated/sdk'; +import { BlockItem } from './BlockModel'; +import { BlockData } from './vo/BlockData'; +import { BlockGasUsed } from './vo/BlockGasUsed'; +import { BlockModelID } from './vo/BlockModelID'; +import { BlockProducer } from './vo/BlockProducer'; + +type BlockInputProps = { + blockHash: Hash256; + data: BlockData; + producer: BlockProducer; + time: ParsedTime; + totalGasUsed: BlockGasUsed; +}; + +export class BlockEntity extends Entity { + static create(block: BlockItem) { + const item = block.data; + if (!item) { + throw new Error('item is required'); + } + + const id = BlockModelID.create(item); + const blockHash = Hash256.create(item.id); + const data = BlockData.create(item); + const timestamp = Timestamp.create(item.header.time); + const time = ParsedTime.create(item.header.time); + const totalGasUsed = BlockGasUsed.create(item); + const producer = BlockProducer.create(item); + const props = { + blockHash, + data, + totalGasUsed, + time, + timestamp, + producer, + }; + + return new BlockEntity(props, id); + } + + static toDBItem(block: GQLBlock): BlockItem { + return { + _id: BlockModelID.create(block).value(), + blockHash: Hash256.create(block.id).value(), + data: BlockData.create(block).value(), + producer: BlockProducer.create(block).value()?.toB256() ?? null, + timestamp: Timestamp.create(block.header.time).value(), + totalGasUsed: BlockGasUsed.create(block).value(), + }; + } + + get blockHash() { + return this.props.blockHash.value(); + } + + get data() { + return this.props.data.value(); + } + + get producer() { + return this.props.producer.value()?.toB256() ?? null; + } + + get time() { + return this.props.time.value(); + } + + get totalGasUsed() { + return this.props.totalGasUsed.value(); + } + + toGQLNode(): GQLBlock { + const data = this.data; + return { + ...data, + producer: this.producer, + time: this.time, + totalGasUsed: this.totalGasUsed, + }; + } +} diff --git a/packages/graphql-new/src/domain/Block/BlockModel.ts b/packages/graphql-new/src/domain/Block/BlockModel.ts new file mode 100644 index 000000000..c8719f12a --- /dev/null +++ b/packages/graphql-new/src/domain/Block/BlockModel.ts @@ -0,0 +1,31 @@ +import { relations } from 'drizzle-orm'; +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { Hash256, Timestamp } from '~/application/vo'; +import { TransactionsTable } from '~/domain/Transaction/TransactionModel'; +import { BlockData } from './vo/BlockData'; +import { BlockGasUsed } from './vo/BlockGasUsed'; +import { BlockModelID } from './vo/BlockModelID'; +import { BlockProducer } from './vo/BlockProducer'; + +export const BlocksTable = pgTable( + 'blocks', + { + _id: BlockModelID.type(), + blockHash: Hash256.type('id').unique(), + timestamp: Timestamp.type(), + data: BlockData.type(), + totalGasUsed: BlockGasUsed.type(), + producer: BlockProducer.type(), + }, + (table) => ({ + blockTimestampIdx: index().on(table.timestamp), + blockHashIdx: index().on(table.blockHash), + blockIdIdx: index().on(table._id), + }), +); + +export const BlocksRelations = relations(BlocksTable, ({ many }) => ({ + transactions: many(TransactionsTable, { relationName: 'block_transactions' }), +})); + +export type BlockItem = typeof BlocksTable.$inferSelect; diff --git a/packages/graphql-new/src/domain/Block/BlockRepository.ts b/packages/graphql-new/src/domain/Block/BlockRepository.ts new file mode 100644 index 000000000..526426a4d --- /dev/null +++ b/packages/graphql-new/src/domain/Block/BlockRepository.ts @@ -0,0 +1,108 @@ +import { desc, eq } from 'drizzle-orm'; +import { Paginator, PaginatorParams } from '~/core/Paginator'; +import { GraphQLSDK } from '~/graphql/GraphQLSDK'; +import { GQLBlock } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { BlockEntity } from './BlockEntity'; +import { BlocksTable } from './BlockModel'; + +export class BlockRepository { + async findByHash(blockHash: string) { + const [first] = await db + .connection() + .select() + .from(BlocksTable) + .where(eq(BlocksTable.blockHash, blockHash)); + + if (!first) return null; + return BlockEntity.create(first); + } + + async findByHeight(height: number) { + const [first] = await db + .connection() + .select() + .from(BlocksTable) + .where(eq(BlocksTable._id, height)); + + if (!first) return null; + return BlockEntity.create(first); + } + + async findMany(params: PaginatorParams): Promise { + const paginator = new Paginator(BlocksTable, params); + const config = await paginator.getQueryPaginationConfig(); + const results = await paginator.getPaginatedResult(config); + return results.map((item) => BlockEntity.create(item)); + } + + async findLatestAdded() { + const [latest] = await db + .connection() + .select() + .from(BlocksTable) + .orderBy(desc(BlocksTable._id)) + .limit(1); + + return BlockEntity.create(latest); + } + + async insertOne(block: GQLBlock) { + const found = await this.findByHash(block.id); + if (found) { + throw new Error(`Block ${block.id} already exists`); + } + + const [item] = await db + .connection() + .insert(BlocksTable) + .values(BlockEntity.toDBItem(block)) + .returning(); + + return BlockEntity.create(item); + } + + async insertMany(blocks: GQLBlock[]) { + return db.connection().transaction(async (trx) => { + const queries = blocks.map(async (block) => { + const found = await this.findByHash(block.id); + if (found) { + console.warn(`Block ${block.id} already exists`); + return found; + } + + const [item] = await trx + .insert(BlocksTable) + .values(BlockEntity.toDBItem(block)) + .returning(); + + return BlockEntity.create(item); + }); + return Promise.all(queries.filter(Boolean)); + }); + } + + async blocksFromNode(first: number, after?: number) { + const { sdk } = new GraphQLSDK(); + const { data } = await sdk.blocks({ + first, + ...(after ? { after: String(after) } : null), + }); + const blocks = data.blocks.nodes as GQLBlock[]; + const hasNext = data.blocks.pageInfo.hasNextPage; + const hasPrev = data.blocks.pageInfo.hasPreviousPage; + const endCursor = Number(data.blocks.pageInfo.endCursor); + return { + blocks, + hasNext, + hasPrev, + endCursor: endCursor || undefined, + }; + } + + async latestBlockFromNode() { + const { sdk } = new GraphQLSDK(); + const { data } = await sdk.blocks({ last: 1 }); + return data.blocks.nodes[0] as GQLBlock; + } +} diff --git a/packages/graphql-new/src/domain/Block/vo/BlockData.ts b/packages/graphql-new/src/domain/Block/vo/BlockData.ts new file mode 100644 index 000000000..b14e623ef --- /dev/null +++ b/packages/graphql-new/src/domain/Block/vo/BlockData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLBlock } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLBlock; +} + +export class BlockData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLBlock) { + return new BlockData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Block/vo/BlockGasUsed.ts b/packages/graphql-new/src/domain/Block/vo/BlockGasUsed.ts new file mode 100644 index 000000000..a504e8adf --- /dev/null +++ b/packages/graphql-new/src/domain/Block/vo/BlockGasUsed.ts @@ -0,0 +1,35 @@ +import { varchar } from 'drizzle-orm/pg-core'; +import { bn } from 'fuels'; +import { GasUsed } from '~/application/vo/GasUsed'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLBlock } from '~/graphql/generated/sdk'; + +interface Props { + value: string; +} + +export class BlockGasUsed extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return varchar('gas_used', { length: 66 }); + } + + static create(item: GQLBlock) { + const value = item.transactions.reduce((acc, transaction) => { + const txGasUsed = GasUsed.create(transaction).value(); + return acc.add(txGasUsed); + }, bn(0)); + return new BlockGasUsed({ value: value.toString() }); + } + + value() { + return this.props.value; + } + + toBN() { + return bn(this.props.value); + } +} diff --git a/packages/graphql-new/src/domain/Block/vo/BlockModelID.ts b/packages/graphql-new/src/domain/Block/vo/BlockModelID.ts new file mode 100644 index 000000000..e96fbc5fd --- /dev/null +++ b/packages/graphql-new/src/domain/Block/vo/BlockModelID.ts @@ -0,0 +1,17 @@ +import { integer } from 'drizzle-orm/pg-core'; +import { Identifier } from '~/core/Identifier'; +import { GQLBlock } from '~/graphql/generated/sdk'; + +export class BlockModelID extends Identifier { + private constructor(id: number) { + super(id); + } + + static type() { + return integer('_id').primaryKey(); + } + + static create(block: GQLBlock) { + return new BlockModelID(Number(block.header.height)); + } +} diff --git a/packages/graphql-new/src/domain/Block/vo/BlockProducer.ts b/packages/graphql-new/src/domain/Block/vo/BlockProducer.ts new file mode 100644 index 000000000..b515ee51b --- /dev/null +++ b/packages/graphql-new/src/domain/Block/vo/BlockProducer.ts @@ -0,0 +1,29 @@ +import { varchar } from 'drizzle-orm/pg-core'; +import { Signer } from 'fuels'; +import { Address } from '~/core/Address'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLBlock } from '~/graphql/generated/sdk'; + +interface Props { + value: Address | null; +} + +export class BlockProducer extends ValueObject { + static type() { + return varchar('producer', { length: 66 }); + } + + static create(block: GQLBlock) { + if (block.consensus.__typename === 'Genesis') { + return new BlockProducer({ value: null }); + } + const signature = block.consensus.signature; + const producer = Signer.recoverAddress(block.id, signature).toB256(); + const value = new Address(producer); + return new BlockProducer({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Block/vo/BlockRef.ts b/packages/graphql-new/src/domain/Block/vo/BlockRef.ts new file mode 100644 index 000000000..6a6c30369 --- /dev/null +++ b/packages/graphql-new/src/domain/Block/vo/BlockRef.ts @@ -0,0 +1,27 @@ +import { integer } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { BlocksTable } from '../BlockModel'; + +interface Props { + value: number; +} + +export class BlockRef extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return integer('block_id') + .notNull() + .references(() => BlocksTable._id); + } + + static create(id: number) { + return new BlockRef({ value: id }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Chain/ChainEntity.ts b/packages/graphql-new/src/domain/Chain/ChainEntity.ts new file mode 100644 index 000000000..972395da6 --- /dev/null +++ b/packages/graphql-new/src/domain/Chain/ChainEntity.ts @@ -0,0 +1,28 @@ +import { Entity } from '~/core/Entity'; +import { GQLChainInfo } from '~/graphql/generated/sdk'; +import { ChainData } from './vo/ChainData'; +import { ChainID } from './vo/ChainID'; + +type ChainProps = { + data: ChainData; +}; + +export class ChainEntity extends Entity { + static create(chain: GQLChainInfo) { + const id = ChainID.create(chain); + const data = ChainData.create(chain); + return new ChainEntity({ data }, id); + } + + get data() { + return this.props.data.value(); + } + + get chainId() { + return this.data.consensusParameters.chainId; + } + + toGQLNode(): GQLChainInfo { + return this.data; + } +} diff --git a/packages/graphql-new/src/domain/Chain/ChainRepository.ts b/packages/graphql-new/src/domain/Chain/ChainRepository.ts new file mode 100644 index 000000000..12d308ee1 --- /dev/null +++ b/packages/graphql-new/src/domain/Chain/ChainRepository.ts @@ -0,0 +1,10 @@ +import { GraphQLSDK } from '~/graphql/GraphQLSDK'; +import { GQLChainInfo } from '~/graphql/generated/sdk'; + +export class ChainRepository { + async chainInfoFromNode() { + const { sdk } = new GraphQLSDK(); + const { data } = await sdk.chain(); + return data.chain as GQLChainInfo; + } +} diff --git a/packages/graphql-new/src/domain/Chain/vo/ChainData.ts b/packages/graphql-new/src/domain/Chain/vo/ChainData.ts new file mode 100644 index 000000000..e8b895567 --- /dev/null +++ b/packages/graphql-new/src/domain/Chain/vo/ChainData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLChainInfo } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLChainInfo; +} + +export class ChainData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLChainInfo) { + return new ChainData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Chain/vo/ChainID.ts b/packages/graphql-new/src/domain/Chain/vo/ChainID.ts new file mode 100644 index 000000000..662f9205e --- /dev/null +++ b/packages/graphql-new/src/domain/Chain/vo/ChainID.ts @@ -0,0 +1,12 @@ +import { Identifier } from '~/core/Identifier'; +import { GQLChainInfo } from '~/graphql/generated/sdk'; + +export class ChainID extends Identifier { + private constructor(id: number) { + super(id); + } + + static create(chain: GQLChainInfo) { + return new ChainID(Number(chain.consensusParameters.chainId)); + } +} diff --git a/packages/graphql-new/src/domain/Contract/ContractEntity.ts b/packages/graphql-new/src/domain/Contract/ContractEntity.ts new file mode 100644 index 000000000..024803e76 --- /dev/null +++ b/packages/graphql-new/src/domain/Contract/ContractEntity.ts @@ -0,0 +1,52 @@ +import { Hash256, SerialID } from '~/application/vo'; +import { Entity } from '~/core/Entity'; +import { + GQLContract, + GQLContractCreated, + GQLOutput, +} from '~/graphql/generated/sdk'; +import { ContractItem } from './ContractModel'; +import { ContractData } from './vo/ContractData'; + +type ContractProps = { + data: ContractData; + contractHash: Hash256; +}; + +export class ContractEntity extends Entity { + static create(contract: ContractItem) { + if (!contract?.data) { + throw new Error('Contract data is required'); + } + + const id = SerialID.create(contract._id); + const data = ContractData.create(contract.data); + const contractHash = Hash256.create(contract.contractHash); + return new ContractEntity({ data, contractHash }, id); + } + + static toDBItem(contract: GQLContract): Omit { + const data = ContractData.create(contract).value(); + return { data, contractHash: contract.id }; + } + + static fromOutputs(outputs: GQLOutput[]) { + const found = outputs?.filter( + (output) => + output.__typename === 'ContractCreated' && output.contract?.id, + ) as GQLContractCreated[] | undefined; + return found?.map((i) => i.contract) ?? []; + } + + get contractHash() { + return this.props.contractHash.value(); + } + + get data() { + return this.props.data.value(); + } + + toGQLNode(): GQLContract { + return this.data; + } +} diff --git a/packages/graphql-new/src/domain/Contract/ContractModel.ts b/packages/graphql-new/src/domain/Contract/ContractModel.ts new file mode 100644 index 000000000..fc27b1521 --- /dev/null +++ b/packages/graphql-new/src/domain/Contract/ContractModel.ts @@ -0,0 +1,19 @@ +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { Hash256 } from '~/application/vo'; +import { SerialID } from '~/application/vo/SerialID'; +import { ContractData } from './vo/ContractData'; + +export const ContractsTable = pgTable( + 'contracts', + { + _id: SerialID.type(), + contractHash: Hash256.type('contract_hash').unique(), + data: ContractData.type(), + }, + (table) => ({ + contractIdIdx: index().on(table._id), + contractHashIdx: index().on(table.contractHash), + }), +); + +export type ContractItem = typeof ContractsTable.$inferSelect; diff --git a/packages/graphql-new/src/domain/Contract/ContractRepository.ts b/packages/graphql-new/src/domain/Contract/ContractRepository.ts new file mode 100644 index 000000000..5b4754793 --- /dev/null +++ b/packages/graphql-new/src/domain/Contract/ContractRepository.ts @@ -0,0 +1,50 @@ +import { eq } from 'drizzle-orm'; +import { Paginator, PaginatorParams } from '~/core/Paginator'; +import { GQLContract } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { ContractEntity } from './ContractEntity'; +import { ContractsTable } from './ContractModel'; + +export class ContractRepository { + async findByHash(id: string) { + const [first] = await db + .connection() + .select() + .from(ContractsTable) + .where(eq(ContractsTable.contractHash, id)); + + if (!first) return null; + return ContractEntity.create(first); + } + + async findMany(params: PaginatorParams) { + const paginator = new Paginator(ContractsTable, params); + const config = await paginator.getQueryPaginationConfig(); + const results = await paginator.getPaginatedResult(config); + return results.map((item) => ContractEntity.create(item)); + } + + async insertOne(contract: GQLContract) { + const [item] = await db + .connection() + .insert(ContractsTable) + .values(ContractEntity.toDBItem(contract)) + .returning(); + + return ContractEntity.create(item); + } + + async insertMany(contracts: GQLContract[]) { + return db.connection().transaction(async (trx) => { + const queries = contracts.map(async (contract) => { + const [item] = await trx + .insert(ContractsTable) + .values(ContractEntity.toDBItem(contract)) + .returning(); + + return ContractEntity.create(item); + }); + return Promise.all(queries.filter(Boolean)); + }); + } +} diff --git a/packages/graphql-new/src/domain/Contract/vo/ContractData.ts b/packages/graphql-new/src/domain/Contract/vo/ContractData.ts new file mode 100644 index 000000000..ae1ccd601 --- /dev/null +++ b/packages/graphql-new/src/domain/Contract/vo/ContractData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLContract } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLContract; +} + +export class ContractData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLContract) { + return new ContractData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Input/InputEntity.ts b/packages/graphql-new/src/domain/Input/InputEntity.ts new file mode 100644 index 000000000..c4e4f7f94 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/InputEntity.ts @@ -0,0 +1,67 @@ +import { SerialID } from '~/application/vo'; +import { Entity } from '~/core/Entity'; +import { GQLInput } from '~/graphql/generated/sdk'; +import { TxID } from '../Transaction/vo/TransactionModelID'; +import { InputItem, InputPayload } from './InputModel'; +import { InputData } from './vo/InputData'; +import { InputPredicateData } from './vo/InputPredicateData'; +import { InputType } from './vo/InputType'; + +type InputProps = { + data: InputData; + type: InputType; + predicateData: InputPredicateData; +}; + +export class InputEntity extends Entity< + InputProps, + SerialID | null | undefined +> { + static create(input: InputPayload, inputId?: number) { + if (!input?.data) { + throw new Error('Input data is required'); + } + + const id = inputId ? SerialID.create(inputId) : null; + const data = InputData.create(input.data); + const type = InputType.create(input.data); + const predicateData = InputPredicateData.create(input.data); + return new InputEntity({ data, type, predicateData }, id); + } + + static toDBItem( + input: GQLInput, + transactionId: TxID, + ): Omit { + const data = InputData.create(input).value(); + return { data, transactionId }; + } + + get data() { + return this.props.data; + } + + get type() { + return this.props.type; + } + + get isCoin() { + return this.type.is('InputCoin'); + } + + get isMessage() { + return this.type.is('InputMessage'); + } + + get isContract() { + return this.type.is('InputContract'); + } + + get predicateData() { + return this.props.predicateData.value(); + } + + get hasPredicate() { + return Boolean(this.predicateData); + } +} diff --git a/packages/graphql-new/src/domain/Input/InputModel.ts b/packages/graphql-new/src/domain/Input/InputModel.ts new file mode 100644 index 000000000..2dec43216 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/InputModel.ts @@ -0,0 +1,19 @@ +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { SerialID } from '~/application/vo/SerialID'; +import { TransactionRef } from '~/domain/Transaction/vo/TransactionRef'; +import { InputData } from './vo/InputData'; + +export const InputsTable = pgTable( + 'inputs', + { + _id: SerialID.type(), + data: InputData.type(), + transactionId: TransactionRef.type(), + }, + (table) => ({ + inputIdIdx: index().on(table._id), + }), +); + +export type InputItem = typeof InputsTable.$inferSelect; +export type InputPayload = Omit; diff --git a/packages/graphql-new/src/domain/Input/InputRepository.ts b/packages/graphql-new/src/domain/Input/InputRepository.ts new file mode 100644 index 000000000..b092864a3 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/InputRepository.ts @@ -0,0 +1,43 @@ +import { eq } from 'drizzle-orm'; +import { GQLInput } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { TxID } from '../Transaction/vo/TransactionModelID'; +import { InputEntity } from './InputEntity'; +import { InputsTable } from './InputModel'; + +export class InputRepository { + async findById(id: number) { + const [first] = await db + .connection() + .select() + .from(InputsTable) + .where(eq(InputsTable._id, id)); + + if (!first) return null; + return InputEntity.create(first, first._id); + } + + async insertOne(input: GQLInput, transactionId: TxID) { + const [item] = await db + .connection() + .insert(InputsTable) + .values(InputEntity.toDBItem(input, transactionId)) + .returning(); + + return InputEntity.create(item, item._id); + } + + async insertMany(inputs: GQLInput[], transactionId: TxID) { + return db.connection().transaction(async (trx) => { + const queries = inputs.map(async (input) => { + const [item] = await trx + .insert(InputsTable) + .values(InputEntity.toDBItem(input, transactionId)) + .returning(); + + return InputEntity.create(item, item._id); + }); + return Promise.all(queries.filter(Boolean)); + }); + } +} diff --git a/packages/graphql-new/src/domain/Input/factories/GroupedInputsFactory.ts b/packages/graphql-new/src/domain/Input/factories/GroupedInputsFactory.ts new file mode 100644 index 000000000..32d223d25 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/factories/GroupedInputsFactory.ts @@ -0,0 +1,34 @@ +import { InputCoinFactory } from '~/domain/Input/factories/InputCoinFactory'; +import { InputContractFactory } from '~/domain/Input/factories/InputContractFactory'; +import { InputMessageFactory } from '~/domain/Input/factories/InputMessageFactory'; +import { + GQLGroupedInputCoin, + GQLGroupedInputContract, + GQLGroupedInputMessage, + GQLInput, +} from '~/graphql/generated/sdk'; + +export type GroupedInputsValue = ( + | GQLGroupedInputCoin + | GQLGroupedInputMessage + | GQLGroupedInputContract +)[]; + +export class GroupedInputsFactory { + private constructor(readonly value: GroupedInputsValue) {} + + static create(data?: GQLInput[] | null) { + if (!data) { + return new GroupedInputsFactory([]); + } + + const inputsCoin = InputCoinFactory.create(data).value; + const inputsMessage = InputMessageFactory.create(data).value; + const inputsContract = InputContractFactory.create(data).value; + return new GroupedInputsFactory([ + ...inputsCoin, + ...inputsMessage, + ...inputsContract, + ]); + } +} diff --git a/packages/graphql-new/src/domain/Input/factories/InputCoinFactory.ts b/packages/graphql-new/src/domain/Input/factories/InputCoinFactory.ts new file mode 100644 index 000000000..f7312a3a9 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/factories/InputCoinFactory.ts @@ -0,0 +1,44 @@ +import { bn } from 'fuels'; +import { groupBy } from 'lodash'; +import { GQLNode } from '~/core/GQLNode'; +import { + GQLGroupedInputCoin, + GQLInput, + GQLInputCoin, +} from '~/graphql/generated/sdk'; + +type Source = GQLInputCoin; +type Typename = GQLGroupedInputCoin['__typename']; +export type InputCoinGroupedEntry = GQLGroupedInputCoin; + +export class InputCoinFactory { + value: InputCoinGroupedEntry[]; + private constructor(data: GQLInput[]) { + const inputs = GQLNode.filterByType(data, 'InputCoin'); + this.value = this.entriesFromInputs(inputs as Source[]); + } + + static create(inputsData: GQLInput[]) { + return new InputCoinFactory(inputsData); + } + + private entriesFromInputs(inputs: Source[]) { + return Object.entries(groupBy(inputs, (i) => i.assetId)).map( + ([assetId, inputs]) => { + const owner = inputs[0].owner; + const totalAmount = this.getTotalAmount(inputs).toString(); + return { + __typename: 'GroupedInputCoin' as Typename, + owner, + assetId, + totalAmount, + inputs, + }; + }, + ); + } + + private getTotalAmount(inputs: Source[]) { + return inputs.reduce((acc, input) => acc.add(bn(input.amount)), bn(0)); + } +} diff --git a/packages/graphql-new/src/domain/Input/factories/InputContractFactory.ts b/packages/graphql-new/src/domain/Input/factories/InputContractFactory.ts new file mode 100644 index 000000000..d3bfe2f7b --- /dev/null +++ b/packages/graphql-new/src/domain/Input/factories/InputContractFactory.ts @@ -0,0 +1,35 @@ +import { groupBy } from 'lodash'; +import { GQLNode } from '~/core/GQLNode'; +import { + GQLGroupedInputContract, + GQLInput, + GQLInputContract, +} from '~/graphql/generated/sdk'; + +type Source = GQLInputContract; +type Typename = GQLGroupedInputContract['__typename']; +export type InputContractGroupedEntry = GQLGroupedInputContract; + +export class InputContractFactory { + value: InputContractGroupedEntry[]; + private constructor(data: GQLInput[]) { + const inputs = GQLNode.filterByType(data, 'InputContract'); + this.value = this.entriesFromInputs(inputs as Source[]); + } + + static create(inputsData: GQLInput[]) { + return new InputContractFactory(inputsData); + } + + private entriesFromInputs(inputs: Source[]) { + return Object.entries(groupBy(inputs, (i) => i.contract?.id)).map( + ([contractId, inputs]) => { + return { + __typename: 'GroupedInputContract' as Typename, + contractId, + inputs, + }; + }, + ); + } +} diff --git a/packages/graphql-new/src/domain/Input/factories/InputMessageFactory.ts b/packages/graphql-new/src/domain/Input/factories/InputMessageFactory.ts new file mode 100644 index 000000000..aff71f356 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/factories/InputMessageFactory.ts @@ -0,0 +1,37 @@ +import { GQLNode } from '~/core/GQLNode'; +import { + GQLGroupedInputMessage, + GQLInput, + GQLInputMessage, +} from '~/graphql/generated/sdk'; + +type Source = GQLInputMessage; +type Typename = GQLGroupedInputMessage['__typename']; +export type InputMessageGroupedEntry = GQLGroupedInputMessage; + +export class InputMessageFactory { + value: InputMessageGroupedEntry[]; + private constructor(data: GQLInput[]) { + const inputs = GQLNode.filterByType(data, 'InputMessage'); + this.value = this.entriesFromInputs(inputs as Source[]); + } + + static create(inputsData: GQLInput[]) { + return new InputMessageFactory(inputsData); + } + + private entriesFromInputs(inputs: Source[]) { + return inputs.map((input) => { + const sender = input.sender; + const recipient = input.recipient; + const data = input.data; + return { + __typename: 'GroupedInputMessage' as Typename, + sender, + recipient, + data, + inputs: [input], + }; + }); + } +} diff --git a/packages/graphql-new/src/domain/Input/vo/InputData.ts b/packages/graphql-new/src/domain/Input/vo/InputData.ts new file mode 100644 index 000000000..e0e51bf67 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/vo/InputData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLInput } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLInput; +} + +export class InputData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLInput) { + return new InputData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Input/vo/InputPredicateData.ts b/packages/graphql-new/src/domain/Input/vo/InputPredicateData.ts new file mode 100644 index 000000000..ee5c27b16 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/vo/InputPredicateData.ts @@ -0,0 +1,42 @@ +import { ValueObject } from '~/core/ValueObject'; +import { PredicatePayload } from '~/domain/Predicate/PredicateModel'; +import { + GQLInput, + GQLInputCoin, + GQLInputMessage, +} from '~/graphql/generated/sdk'; +import { InputType } from './InputType'; + +interface Props { + value: PredicatePayload | undefined; +} + +export class InputPredicateData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(value: GQLInput) { + const data = getPredicateData(value); + return new InputPredicateData({ value: data }); + } + + value() { + return this.props.value; + } +} + +function getPredicateData(value: GQLInput) { + const type = InputType.create(value); + if (!type.isCoin && !type.isMessage) return; + + const bytecode = (value as GQLInputCoin | GQLInputMessage).predicate; + const address = getPredicateAddress(value); + return { bytecode, address }; +} + +function getPredicateAddress(data: GQLInput) { + const type = InputType.create(data); + if (type.is('InputCoin')) return (data as GQLInputCoin).owner; + return (data as GQLInputMessage).sender; +} diff --git a/packages/graphql-new/src/domain/Input/vo/InputType.ts b/packages/graphql-new/src/domain/Input/vo/InputType.ts new file mode 100644 index 000000000..eae6685f1 --- /dev/null +++ b/packages/graphql-new/src/domain/Input/vo/InputType.ts @@ -0,0 +1,41 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLInput } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLInput['__typename']; +} + +export class InputType extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLInput) { + return new InputType({ value: value.__typename }); + } + + value() { + return this.props.value; + } + + is(type: GQLInput['__typename']) { + return this.value() === type; + } + + get isCoin() { + return this.is('InputCoin'); + } + + get isMessage() { + return this.is('InputMessage'); + } + + get isContract() { + return this.is('InputContract'); + } +} diff --git a/packages/graphql-new/src/domain/Operation/OperationEntity.ts b/packages/graphql-new/src/domain/Operation/OperationEntity.ts new file mode 100644 index 000000000..7d9f7ba8d --- /dev/null +++ b/packages/graphql-new/src/domain/Operation/OperationEntity.ts @@ -0,0 +1,60 @@ +import { Hash256, SerialID } from '~/application/vo'; +import { Entity } from '~/core/Entity'; +import { GQLOperation } from '~/graphql/generated/sdk'; +import { TransactionItem } from '../Transaction/TransactionModel'; +import { TransactionRef } from '../Transaction/vo/TransactionRef'; +import { OperationItem, OperationPayload } from './OperationModel'; +import { OperationData } from './vo/OperationData'; + +type OperationProps = { + data: OperationData; + transactionId: TransactionRef; + transactionHash: Hash256; +}; + +export class OperationEntity extends Entity { + static create(operation: OperationPayload, operationId: number) { + const id = SerialID.create(operationId); + const type = 'Operation' as const; + const data = OperationData.create({ __typename: type, ...operation }); + const transactionId = TransactionRef.create(operation.transactionId); + const transactionHash = Hash256.create(operation.transactionHash); + const props = { + data, + transactionId, + transactionHash, + }; + return new OperationEntity(props, id); + } + + static toDBItem( + operation: GQLOperation, + transaction: TransactionItem, + ): Omit { + const data = OperationData.create(operation).value(); + const transactionId = TransactionRef.create(transaction._id).value(); + const transactionHash = Hash256.create(transaction.txHash).value(); + return { + data, + transactionId, + transactionHash, + }; + } + + get data() { + return this.props.data.value(); + } + + get transactionId() { + return this.props.transactionId.value(); + } + + get transactionHash() { + return this.props.transactionHash.value(); + } + + toGQLNode() { + const data = this.data; + return { ...data, id: this._id.value() }; + } +} diff --git a/packages/graphql-new/src/domain/Operation/OperationModel.ts b/packages/graphql-new/src/domain/Operation/OperationModel.ts new file mode 100644 index 000000000..eb5a1f893 --- /dev/null +++ b/packages/graphql-new/src/domain/Operation/OperationModel.ts @@ -0,0 +1,21 @@ +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { Hash256 } from '~/application/vo'; +import { SerialID } from '~/application/vo/SerialID'; +import { TransactionRef } from '~/domain/Transaction/vo/TransactionRef'; +import { OperationData } from './vo/OperationData'; + +export const OperationsTable = pgTable( + 'operations', + { + _id: SerialID.type(), + data: OperationData.type(), + transactionId: TransactionRef.type(), + transactionHash: Hash256.type('transaction_hash'), + }, + (table) => ({ + operationIdIdx: index().on(table._id), + }), +); + +export type OperationItem = typeof OperationsTable.$inferSelect; +export type OperationPayload = Omit; diff --git a/packages/graphql-new/src/domain/Operation/OperationRepository.ts b/packages/graphql-new/src/domain/Operation/OperationRepository.ts new file mode 100644 index 000000000..ab09ce2cb --- /dev/null +++ b/packages/graphql-new/src/domain/Operation/OperationRepository.ts @@ -0,0 +1,66 @@ +import { eq } from 'drizzle-orm'; +import { Paginator } from '~/core/Paginator'; +import { GQLOperation, GQLQueryOperationsArgs } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { TransactionsTable } from '../Transaction/TransactionModel'; +import { TxID } from '../Transaction/vo/TransactionModelID'; +import { OperationEntity } from './OperationEntity'; +import { OperationsTable } from './OperationModel'; + +export class OperationRepository { + async findById(id: number) { + const [first] = await db + .connection() + .select() + .from(OperationsTable) + .where(eq(OperationsTable._id, id)); + + if (!first) return null; + return OperationEntity.create(first, first._id); + } + + async findMany(params: GQLQueryOperationsArgs) { + const txHash = params.filter.transactionHash; + const paginator = new Paginator(OperationsTable, params); + const where = eq(OperationsTable.transactionHash, txHash); + const config = await paginator.getQueryPaginationConfig(); + const results = await paginator.getPaginatedResult(config, where); + return results.map((item) => OperationEntity.create(item, item._id)); + } + + async insertOne(operation: GQLOperation, transactionId: TxID) { + const [transaction] = await db + .connection() + .select() + .from(TransactionsTable) + .where(eq(TransactionsTable._id, transactionId)) + .limit(1); + + const [item] = await db + .connection() + .insert(OperationsTable) + .values(OperationEntity.toDBItem(operation, transaction)) + .returning(); + return OperationEntity.create(item, item._id); + } + + async insertMany(operations: GQLOperation[], transactionId: TxID) { + return db.connection().transaction(async (trx) => { + const queries = operations.map(async (operation) => { + const [transaction] = await trx + .select() + .from(TransactionsTable) + .where(eq(TransactionsTable._id, transactionId)) + .limit(1); + + const [item] = await trx + .insert(OperationsTable) + .values(OperationEntity.toDBItem(operation, transaction)) + .returning(); + + return OperationEntity.create(item, item._id); + }); + return Promise.all(queries.filter(Boolean)); + }); + } +} diff --git a/packages/graphql-new/src/domain/Operation/factories/OperationsFactory.ts b/packages/graphql-new/src/domain/Operation/factories/OperationsFactory.ts new file mode 100644 index 000000000..f0086be02 --- /dev/null +++ b/packages/graphql-new/src/domain/Operation/factories/OperationsFactory.ts @@ -0,0 +1,122 @@ +import { TransactionEntity } from '~/domain/Transaction/TransactionEntity'; +import { + GQLOperation, + GQLOperationReceipt, + GQLReceipt, +} from '~/graphql/generated/sdk'; + +export class OperationsFactory { + private operations!: GQLOperation[] | null; + private constructor(receipts?: GQLReceipt[] | null) { + this.operations = this.operationsFromTransaction(receipts ?? []); + } + + static create(transaction: TransactionEntity) { + return new OperationsFactory(transaction.receipts); + } + + value() { + return this.operations; + } + + private operationsFromTransaction(receipts: GQLReceipt[]) { + return this.createOperations(receipts); + } + + private createOperations(receipts: GQLReceipt[]) { + if (!receipts.length) return null; + const hasError = receipts.some(isError); + return receipts.reduce((acc, receipt, idx) => { + const last = receipts[idx - 1]; + const isLastReturn = isReturn(last); + const isFirstCall = isCall(receipt) && idx === 0; + const isCurrentCall = isCall(receipt) && isLastReturn; + const findNextReturnIdx = this.findNextReturnIdx(receipt, idx, hasError); + const nextReturnIdx = receipts.findIndex(findNextReturnIdx); + const isTypeCall = isFirstCall || isCurrentCall; + const isOnlyResult = hasError && isResult(receipt); + const isFinalReturn = isReturn(receipt) && !receipt.contract?.id; + + if (isTypeCall || isOnlyResult || isFinalReturn) { + const type = getType(receipt); + const range = isTypeCall + ? [...receipts].slice(idx, nextReturnIdx + 1) + : [...receipts].slice(idx); + const items = this.createItems(range); + return [...acc, { type, receipts: items }] as GQLOperation[]; + } + return acc; + }, [] as GQLOperation[]); + } + + private createItems(receipts: GQLReceipt[]) { + const nestedIntervals = this.findNestedIntervals(receipts); + return receipts.reduce((acc, receipt, idx) => { + const range = nestedIntervals.find(([start, end]) => { + return idx >= start && idx <= end; + }); + if (range && isCall(receipt)) { + const startRange = range[0] + 1; + const endRange = range[1] + 1; + const nested = [...receipts].slice(startRange, endRange); + const items = this.createItems(nested) as GQLOperationReceipt[]; + const next = { item: receipt, receipts: items }; + return [...acc, next] as GQLOperationReceipt[]; + } + if (!range) { + return [...acc, { item: receipt }] as GQLOperationReceipt[]; + } + return acc; + }, [] as GQLOperationReceipt[]); + } + + private findNestedIntervals(receipts: GQLReceipt[]) { + return receipts.reduce((acc, r, idx) => { + const last = receipts[idx - 1]; + const isLastReturn = isReturn(last); + const isFirstCall = isCall(r) && idx === 0; + const findNextReturnIdx = this.findNextReturnIdx(r, idx); + const nextReturnIdx = receipts.findIndex(findNextReturnIdx); + + if (isCall(r) && !isFirstCall && !isLastReturn) { + return [...acc, [idx, nextReturnIdx]]; + } + return acc; + }, [] as number[][]); + } + + private findNextReturnIdx( + current: GQLReceipt, + idx: number, + hasError?: boolean, + ) { + return (receipt: GQLReceipt, nIdx: number) => { + if (hasError) return nIdx > idx && isError(receipt); + const hasSameId = current.to?.id === receipt.contract?.id; + return nIdx > idx && isReturn(receipt) && hasSameId; + }; + } +} + +function createReceiptTypeChecker(types: string[]) { + return (receipt: GQLReceipt) => + types.some((type) => type === receipt?.receiptType); +} + +const isCall = createReceiptTypeChecker(['CALL']); +const isReturn = createReceiptTypeChecker(['RETURN']); +const isResult = createReceiptTypeChecker(['SCRIPT_RESULT']); +const isError = createReceiptTypeChecker(['PANIC', 'REVERT']); + +function getType(receipt: GQLReceipt) { + if (receipt?.sender) { + return 'FROM_ACCOUNT'; + } + if (receipt?.contract?.id ?? receipt?.contractId ?? receipt?.to?.id) { + return 'FROM_CONTRACT'; + } + if (isReturn(receipt) && !receipt?.contract?.id) { + return 'FINAL_RESULT'; + } + return null; +} diff --git a/packages/graphql-new/src/domain/Operation/vo/OperationData.ts b/packages/graphql-new/src/domain/Operation/vo/OperationData.ts new file mode 100644 index 000000000..8202d643e --- /dev/null +++ b/packages/graphql-new/src/domain/Operation/vo/OperationData.ts @@ -0,0 +1,27 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLOperation } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLOperation; +} + +export class OperationData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(operation: GQLOperation) { + return new OperationData({ + value: operation, + }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Output/OutputEntity.ts b/packages/graphql-new/src/domain/Output/OutputEntity.ts new file mode 100644 index 000000000..a2aa8c530 --- /dev/null +++ b/packages/graphql-new/src/domain/Output/OutputEntity.ts @@ -0,0 +1,37 @@ +import { SerialID } from '~/application/vo'; +import { Entity } from '~/core/Entity'; +import { GQLOutput } from '~/graphql/generated/sdk'; +import { TxID } from '../Transaction/vo/TransactionModelID'; +import { OutputItem, OutputPayload } from './OutputModel'; +import { OutputData } from './vo/OutputData'; + +type OutputProps = { + data: OutputData; +}; + +export class OutputEntity extends Entity< + OutputProps, + SerialID | null | undefined +> { + static create(output: OutputPayload, outputId?: number) { + if (!output?.data) { + throw new Error('Output data is required'); + } + + const id = outputId ? SerialID.create(outputId) : null; + const data = OutputData.create(output.data); + return new OutputEntity({ data }, id); + } + + static toDBItem( + output: GQLOutput, + transactionId: TxID, + ): Omit { + const data = OutputData.create(output).value(); + return { data, transactionId }; + } + + get data() { + return this.props.data.value(); + } +} diff --git a/packages/graphql-new/src/domain/Output/OutputModel.ts b/packages/graphql-new/src/domain/Output/OutputModel.ts new file mode 100644 index 000000000..cb50a0ad4 --- /dev/null +++ b/packages/graphql-new/src/domain/Output/OutputModel.ts @@ -0,0 +1,19 @@ +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { SerialID } from '~/application/vo/SerialID'; +import { TransactionRef } from '~/domain/Transaction/vo/TransactionRef'; +import { OutputData } from './vo/OutputData'; + +export const OutputsTable = pgTable( + 'outputs', + { + _id: SerialID.type(), + data: OutputData.type(), + transactionId: TransactionRef.type(), + }, + (table) => ({ + outputIdIdx: index().on(table._id), + }), +); + +export type OutputItem = typeof OutputsTable.$inferSelect; +export type OutputPayload = Omit; diff --git a/packages/graphql-new/src/domain/Output/OutputRepository.ts b/packages/graphql-new/src/domain/Output/OutputRepository.ts new file mode 100644 index 000000000..30e5045eb --- /dev/null +++ b/packages/graphql-new/src/domain/Output/OutputRepository.ts @@ -0,0 +1,43 @@ +import { eq } from 'drizzle-orm'; +import { GQLOutput } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { TxID } from '../Transaction/vo/TransactionModelID'; +import { OutputEntity } from './OutputEntity'; +import { OutputsTable } from './OutputModel'; + +export class OutputRepository { + async findById(id: number) { + const [first] = await db + .connection() + .select() + .from(OutputsTable) + .where(eq(OutputsTable._id, id)); + + if (!first) return null; + return OutputEntity.create(first, first._id); + } + + async insertOne(output: GQLOutput, transactionId: TxID) { + const [item] = await db + .connection() + .insert(OutputsTable) + .values(OutputEntity.toDBItem(output, transactionId)) + .returning(); + + return OutputEntity.create(item, item._id); + } + + async insertMany(outputs: GQLOutput[], transactionId: TxID) { + return db.connection().transaction(async (trx) => { + const queries = outputs.map(async (output) => { + const [item] = await trx + .insert(OutputsTable) + .values(OutputEntity.toDBItem(output, transactionId)) + .returning(); + + return OutputEntity.create(item, item._id); + }); + return Promise.all(queries.filter(Boolean)); + }); + } +} diff --git a/packages/graphql-new/src/domain/Output/factories/GroupedOutputsFactory.ts b/packages/graphql-new/src/domain/Output/factories/GroupedOutputsFactory.ts new file mode 100644 index 000000000..20e37bdf4 --- /dev/null +++ b/packages/graphql-new/src/domain/Output/factories/GroupedOutputsFactory.ts @@ -0,0 +1,35 @@ +import { + GQLGroupedOutputChanged, + GQLGroupedOutputCoin, + GQLGroupedOutputContractCreadted, + GQLOutput, +} from '~/graphql/generated/sdk'; +import { OutputChangedFactory } from './OutputChangedFactory'; +import { OutputCoinFactory } from './OutputCoinFactory'; +import { OutputContractCreatedFactory } from './OutputContractCreatedFactory'; + +export type GroupedOutputsValue = ( + | GQLGroupedOutputCoin + | GQLGroupedOutputChanged + | GQLGroupedOutputContractCreadted +)[]; + +export class GroupedOutputsFactory { + private constructor(readonly value: GroupedOutputsValue) {} + + static create(data?: GQLOutput[] | null) { + if (!data) { + return new GroupedOutputsFactory([]); + } + + const outputsCoin = OutputCoinFactory.create(data).value; + const outputsMessage = OutputChangedFactory.create(data).value; + const outputsContractCreated = + OutputContractCreatedFactory.create(data).value; + return new GroupedOutputsFactory([ + ...outputsCoin, + ...outputsMessage, + ...outputsContractCreated, + ]); + } +} diff --git a/packages/graphql-new/src/domain/Output/factories/OutputChangedFactory.ts b/packages/graphql-new/src/domain/Output/factories/OutputChangedFactory.ts new file mode 100644 index 000000000..7ad1e383f --- /dev/null +++ b/packages/graphql-new/src/domain/Output/factories/OutputChangedFactory.ts @@ -0,0 +1,44 @@ +import { bn } from 'fuels'; +import { groupBy } from 'lodash'; +import { GQLNode } from '~/core/GQLNode'; +import { + GQLChangeOutput, + GQLGroupedOutputChanged, + GQLOutput, +} from '~/graphql/generated/sdk'; + +type Source = GQLChangeOutput; +type Typename = GQLGroupedOutputChanged['__typename']; +export type OutputChangeGroupedEntry = GQLGroupedOutputChanged; + +export class OutputChangedFactory { + value: OutputChangeGroupedEntry[]; + private constructor(data: GQLOutput[]) { + const outputs = GQLNode.filterByType(data, 'ChangeOutput'); + this.value = this.entriesFromOutputs(outputs as Source[]); + } + + static create(outputsData: GQLOutput[]) { + return new OutputChangedFactory(outputsData); + } + + private entriesFromOutputs(outputs: Source[]) { + return Object.entries(groupBy(outputs, (i) => i.assetId)).map( + ([assetId, outputs]) => { + const to = outputs[0].to; + const totalAmount = this.getTotalAmount(outputs).toString(); + return { + __typename: 'GroupedOutputChanged' as Typename, + to, + assetId, + totalAmount, + outputs, + }; + }, + ); + } + + private getTotalAmount(outputs: Source[]) { + return outputs.reduce((acc, output) => acc.add(bn(output.amount)), bn(0)); + } +} diff --git a/packages/graphql-new/src/domain/Output/factories/OutputCoinFactory.ts b/packages/graphql-new/src/domain/Output/factories/OutputCoinFactory.ts new file mode 100644 index 000000000..18ed9df81 --- /dev/null +++ b/packages/graphql-new/src/domain/Output/factories/OutputCoinFactory.ts @@ -0,0 +1,44 @@ +import { bn } from 'fuels'; +import { groupBy } from 'lodash'; +import { GQLNode } from '~/core/GQLNode'; +import { + GQLCoinOutput, + GQLGroupedOutputCoin, + GQLOutput, +} from '~/graphql/generated/sdk'; + +type Source = GQLCoinOutput; +type Typename = GQLGroupedOutputCoin['__typename']; +export type OutputCoinGroupedEntry = GQLGroupedOutputCoin; + +export class OutputCoinFactory { + value: OutputCoinGroupedEntry[]; + private constructor(data: GQLOutput[]) { + const outputs = GQLNode.filterByType(data, 'CoinOutput'); + this.value = this.entriesFromOutputs(outputs as Source[]); + } + + static create(outputsData: GQLOutput[]) { + return new OutputCoinFactory(outputsData); + } + + private entriesFromOutputs(outputs: Source[]) { + return Object.entries(groupBy(outputs, (i) => i.assetId)).map( + ([assetId, outputs]) => { + const to = outputs[0].to; + const totalAmount = this.getTotalAmount(outputs).toString(); + return { + __typename: 'GroupedOutputCoin' as Typename, + to, + assetId, + totalAmount, + outputs, + }; + }, + ); + } + + private getTotalAmount(outputs: Source[]) { + return outputs.reduce((acc, output) => acc.add(bn(output.amount)), bn(0)); + } +} diff --git a/packages/graphql-new/src/domain/Output/factories/OutputContractCreatedFactory.ts b/packages/graphql-new/src/domain/Output/factories/OutputContractCreatedFactory.ts new file mode 100644 index 000000000..17965ee36 --- /dev/null +++ b/packages/graphql-new/src/domain/Output/factories/OutputContractCreatedFactory.ts @@ -0,0 +1,37 @@ +import { groupBy } from 'lodash'; +import { GQLNode } from '~/core/GQLNode'; +import { + GQLContractCreated, + GQLGroupedOutputContractCreadted, + GQLOutput, +} from '~/graphql/generated/sdk'; + +type Source = GQLContractCreated; +type Typename = GQLGroupedOutputContractCreadted['__typename']; +export type OutputContractCreatedGroupedEntry = + GQLGroupedOutputContractCreadted; + +export class OutputContractCreatedFactory { + value: OutputContractCreatedGroupedEntry[]; + private constructor(data: GQLOutput[]) { + const outputs = GQLNode.filterByType(data, 'ContractCreated'); + this.value = this.entriesFromOutputs(outputs as Source[]); + } + + static create(outputsData: GQLOutput[]) { + return new OutputContractCreatedFactory(outputsData); + } + + private entriesFromOutputs(outputs: Source[]) { + return Object.entries(groupBy(outputs, (i) => i.contract?.id)).map( + ([_assetId, outputs]) => { + const contract = outputs[0].contract; + return { + __typename: 'GroupedOutputContractCreadted' as Typename, + contract, + outputs, + }; + }, + ); + } +} diff --git a/packages/graphql-new/src/domain/Output/vo/OutputData.ts b/packages/graphql-new/src/domain/Output/vo/OutputData.ts new file mode 100644 index 000000000..96ebecb0f --- /dev/null +++ b/packages/graphql-new/src/domain/Output/vo/OutputData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLOutput } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLOutput; +} + +export class OutputData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLOutput) { + return new OutputData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Predicate/PredicateEntity.ts b/packages/graphql-new/src/domain/Predicate/PredicateEntity.ts new file mode 100644 index 000000000..e7c75f27c --- /dev/null +++ b/packages/graphql-new/src/domain/Predicate/PredicateEntity.ts @@ -0,0 +1,42 @@ +import { Hash256, SerialID } from '~/application/vo'; +import { Bytecode } from '~/application/vo/Bytecode'; +import { Entity } from '~/core/Entity'; +import { PredicatePayload } from './PredicateModel'; + +type PredicateProps = { + bytecode: Bytecode; + address: Hash256; +}; + +export class PredicateEntity extends Entity< + PredicateProps, + SerialID | null | undefined +> { + static create(item: PredicatePayload, itemId?: number) { + const id = itemId ? SerialID.create(itemId) : null; + const bytecode = Bytecode.create(item.bytecode); + const address = Hash256.create(item.address); + return new PredicateEntity({ bytecode, address }, id); + } + + static toDBItem(item: PredicatePayload): PredicatePayload { + const bytecode = Bytecode.create(item.bytecode).value(); + const address = Hash256.create(item.address).value(); + return { bytecode, address }; + } + + get bytecode() { + return this.props.bytecode.value(); + } + + get address() { + return this.props.address.value(); + } + + toGQLNode() { + return { + bytecode: this.bytecode, + address: this.address, + }; + } +} diff --git a/packages/graphql-new/src/domain/Predicate/PredicateModel.ts b/packages/graphql-new/src/domain/Predicate/PredicateModel.ts new file mode 100644 index 000000000..7cb3bf15b --- /dev/null +++ b/packages/graphql-new/src/domain/Predicate/PredicateModel.ts @@ -0,0 +1,20 @@ +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { Hash256 } from '~/application/vo'; +import { Bytecode } from '~/application/vo/Bytecode'; +import { SerialID } from '~/application/vo/SerialID'; + +export const PredicatesTable = pgTable( + 'predicates', + { + _id: SerialID.type(), + bytecode: Bytecode.type(), + address: Hash256.type('address').unique(), + }, + (table) => ({ + predicateIdIdx: index().on(table._id), + predicateAddressIdx: index().on(table.address), + }), +); + +export type PredicateItem = typeof PredicatesTable.$inferSelect; +export type PredicatePayload = Omit; diff --git a/packages/graphql-new/src/domain/Predicate/PredicateRepository.ts b/packages/graphql-new/src/domain/Predicate/PredicateRepository.ts new file mode 100644 index 000000000..9a35265d5 --- /dev/null +++ b/packages/graphql-new/src/domain/Predicate/PredicateRepository.ts @@ -0,0 +1,30 @@ +import { eq } from 'drizzle-orm'; +import { db } from '~/infra/database/Db'; +import { PredicateEntity } from './PredicateEntity'; +import { PredicatePayload, PredicatesTable } from './PredicateModel'; + +export class PredicateRepository { + async findByAddress(address: string) { + const [first] = await db + .connection() + .select() + .from(PredicatesTable) + .where(eq(PredicatesTable.address, address)) + .limit(1); + + if (!first) return null; + return PredicateEntity.create(first, first._id); + } + + async insertOne(predicate: PredicatePayload) { + const found = await this.findByAddress(predicate.address); + if (found) return; + + const [item] = await db + .connection() + .insert(PredicatesTable) + .values(PredicateEntity.toDBItem(predicate)) + .returning(); + return PredicateEntity.create(item, item._id); + } +} diff --git a/packages/graphql-new/src/domain/Transaction/TransactionEntity.ts b/packages/graphql-new/src/domain/Transaction/TransactionEntity.ts new file mode 100644 index 000000000..0fd9ebb71 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/TransactionEntity.ts @@ -0,0 +1,155 @@ +import { Hash256 } from '~/application/vo'; +import { ParsedTime } from '~/application/vo/ParsedTime'; +import { Entity } from '~/core/Entity'; +import { GQLBlock, GQLTransaction } from '~/graphql/generated/sdk'; +import { BlockRef } from '../Block/vo/BlockRef'; +import { ContractEntity } from '../Contract/ContractEntity'; +import { InputEntity } from '../Input/InputEntity'; +import { TransactionItem } from './TransactionModel'; +import { AccountIndex } from './vo/AccountIndex'; +import { TransactionData } from './vo/TransactionData'; +import { TransactionGroupedInputs } from './vo/TransactionGroupedInputs'; +import { TransactionGroupedOutputs } from './vo/TransactionGroupedOutputs'; +import { TransactionModelID } from './vo/TransactionModelID'; +import { TransactionStatus } from './vo/TransactionStatus'; +import { TransactionTimestamp } from './vo/TransactionTimestamp'; + +type TransactionInputProps = { + accountIndex: AccountIndex; + blockId: BlockRef; + data: TransactionData; + groupedInputs: TransactionGroupedInputs; + groupedOutputs: TransactionGroupedOutputs; + status: TransactionStatus; + time: ParsedTime; + timestamp: TransactionTimestamp; + txHash: Hash256; +}; + +export class TransactionEntity extends Entity< + TransactionInputProps, + TransactionModelID +> { + static create(transaction: TransactionItem) { + const item = transaction.data; + if (!item) throw new Error('Transaction data is required'); + const id = TransactionModelID.create(transaction); + const accountIndex = AccountIndex.create(item); + const blockRef = BlockRef.create(transaction.blockId); + const data = TransactionData.create(item); + const groupedInputs = TransactionGroupedInputs.create(item); + const groupedOutputs = TransactionGroupedOutputs.create(item); + const status = TransactionStatus.create(item); + const time = ParsedTime.create(timeFromStatus(transaction)); + const timestamp = TransactionTimestamp.create(item); + const txHash = Hash256.create(item.id); + const props = { + blockId: blockRef, + status, + txHash, + data, + time, + timestamp, + accountIndex, + groupedInputs, + groupedOutputs, + }; + + return new TransactionEntity(props, id); + } + + static async toDBItem( + block: GQLBlock, + transaction: GQLTransaction, + index: number, + ): Promise { + return { + _id: TransactionModelID.createSerial(block, index).value(), + txHash: Hash256.create(transaction.id).value(), + data: TransactionData.create(transaction).value(), + timestamp: TransactionTimestamp.create(transaction).value(), + accountIndex: AccountIndex.create(transaction).value(), + blockId: BlockRef.create(Number(block.header.height)).value(), + }; + } + + toGQLNode(): GQLTransaction { + return { + ...this.data, + blockHeight: this.blockHeight, + groupedInputs: this.groupedInputs, + groupedOutputs: this.groupedOutputs, + hasPredicate: this.hasPredicate, + statusType: this.status.value(), + time: this.parsedTime, + title: this.title, + }; + } + + get txHash() { + return this.props.txHash.value(); + } + + get data() { + return this.props.data.value(); + } + + get receipts() { + return this.data.receipts; + } + + get timestamp() { + return this.props.timestamp.value(); + } + + get parsedTime() { + return this.props.time.value(); + } + + get accountIndex() { + return this.props.accountIndex.value(); + } + + get blockHeight() { + return this.props.blockId.value().toString(); + } + + get title() { + const transaction = this.data; + if (transaction.isMint) return 'Mint'; + if (transaction.isCreate) return 'Contract Created'; + return 'Script'; + } + + get groupedInputs() { + return this.props.groupedInputs.value(); + } + + get groupedOutputs() { + return this.props.groupedOutputs.value(); + } + + get status() { + return this.props.status; + } + + get hasPredicate() { + const transactionId = this._id.value(); + return Boolean( + this.data.inputs?.some((input) => { + return InputEntity.create({ data: input, transactionId }).hasPredicate; + }), + ); + } + + getContractsCreated() { + if (!this.status.is('Success')) return []; + return ContractEntity.fromOutputs(this.data.outputs); + } +} + +function timeFromStatus(item?: TransactionItem) { + if (!item) return null; + if (item.data.status?.__typename === 'SqueezedOutStatus') return null; + return item.data.status?.time; +} diff --git a/packages/graphql-new/src/domain/Transaction/TransactionModel.ts b/packages/graphql-new/src/domain/Transaction/TransactionModel.ts new file mode 100644 index 000000000..60450b8e9 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/TransactionModel.ts @@ -0,0 +1,50 @@ +import { relations } from 'drizzle-orm'; +import { index, pgTable } from 'drizzle-orm/pg-core'; +import { Hash256 } from '~/application/vo'; +import { BlocksTable } from '~/domain/Block/BlockModel'; +import { BlockRef } from '~/domain/Block/vo/BlockRef'; +import { InputsTable } from '~/domain/Input/InputModel'; +import { OutputsTable } from '~/domain/Output/OutputModel'; +import { OperationsTable } from '../Operation/OperationModel'; +import { AccountIndex } from './vo/AccountIndex'; +import { TransactionData } from './vo/TransactionData'; +import { TransactionModelID } from './vo/TransactionModelID'; +import { TransactionTimestamp } from './vo/TransactionTimestamp'; + +export const TransactionsTable = pgTable( + 'transactions', + { + _id: TransactionModelID.type(), + txHash: Hash256.type('tx_hash').unique(), + timestamp: TransactionTimestamp.type(), + data: TransactionData.type(), + accountIndex: AccountIndex.type(), + blockId: BlockRef.type(), + }, + (table) => ({ + txTimestampIdx: index().on(table.timestamp), + txIdIdx: index().on(table._id), + }), +); + +export const TransactionsRelations = relations( + TransactionsTable, + ({ one, many }) => ({ + inputs: many(InputsTable, { + relationName: 'transaction_inputs', + }), + outputs: many(OutputsTable, { + relationName: 'transaction_outputs', + }), + operations: many(OperationsTable, { + relationName: 'transaction_operations', + }), + block: one(BlocksTable, { + fields: [TransactionsTable.blockId], + references: [BlocksTable._id], + relationName: 'transaction_block', + }), + }), +); + +export type TransactionItem = typeof TransactionsTable.$inferSelect; diff --git a/packages/graphql-new/src/domain/Transaction/TransactionRepository.ts b/packages/graphql-new/src/domain/Transaction/TransactionRepository.ts new file mode 100644 index 000000000..ae17f492c --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/TransactionRepository.ts @@ -0,0 +1,56 @@ +import { eq, like } from 'drizzle-orm'; +import { Paginator, PaginatorParams } from '~/core/Paginator'; +import { GraphQLSDK } from '~/graphql/GraphQLSDK'; +import { GQLBlock, GQLTransaction } from '~/graphql/generated/sdk'; +import { db } from '~/infra/database/Db'; +import { TransactionEntity } from './TransactionEntity'; +import { TransactionsTable } from './TransactionModel'; + +export class TransactionRepository { + async findByHash(id: string) { + const [transaction] = await db + .connection() + .select() + .from(TransactionsTable) + .where(eq(TransactionsTable.txHash, id)) + .limit(1); + if (!transaction) return null; + return TransactionEntity.create(transaction); + } + + async findMany(params: PaginatorParams) { + const paginator = new Paginator(TransactionsTable, params); + const config = await paginator.getQueryPaginationConfig(); + const results = await paginator.getPaginatedResult(config); + return results.map((item) => TransactionEntity.create(item)); + } + + async findByOwner(params: PaginatorParams & { owner: string }) { + const { owner } = params; + const paginator = new Paginator(TransactionsTable, params); + await paginator.validateParams(); + + const config = await paginator.getQueryPaginationConfig(); + const paginateFn = like(TransactionsTable.accountIndex, `%${owner}%`); + const results = await paginator.getPaginatedResult(config, paginateFn); + + return Promise.all(results.map((item) => TransactionEntity.create(item))); + } + + async insertOne(txHash: string, block: GQLBlock, index: number) { + const found = await this.findByHash(txHash); + if (found) return found; + const { sdk } = new GraphQLSDK(); + const res = await sdk.transaction({ id: txHash }); + const transaction = res.data?.transaction as GQLTransaction; + if (!transaction) throw new Error('Transaction not found'); + + const dbItem = await TransactionEntity.toDBItem(block, transaction, index); + const [item] = await db + .connection() + .insert(TransactionsTable) + .values(dbItem) + .returning(); + return TransactionEntity.create(item); + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/AccountIndex.ts b/packages/graphql-new/src/domain/Transaction/vo/AccountIndex.ts new file mode 100644 index 000000000..f042434c5 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/AccountIndex.ts @@ -0,0 +1,71 @@ +import { text } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: string; +} + +export class AccountIndex extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return text('accountIndex').notNull().default(''); + } + + static create(transaction: GQLTransaction) { + const value = AccountIndex.getAccountIndex(transaction); + return new AccountIndex({ value }); + } + + value() { + return this.props.value; + } + + private static getAccountIndex(transaction: GQLTransaction): string { + if (!transaction.inputs?.length && !transaction.outputs?.length) { + return ''; + } + return [ + ...new Set( + [ + transaction.inputContract?.contract?.id || '', + ...(transaction.inputs || []).reduce( + (acc, i) => { + switch (i.__typename) { + case 'InputCoin': + return acc.concat([i.owner]); + case 'InputMessage': + return acc.concat([i.recipient, i.sender]); + case 'InputContract': + return acc.concat([i.contract?.id]); + default: + return acc; + } + }, + [] as Array, + ), + ...(transaction.outputs || []).reduce( + (acc, i) => { + switch (i.__typename) { + case 'ChangeOutput': + return acc.concat([i.to]); + case 'CoinOutput': + return acc.concat([i.to]); + default: + return acc; + } + }, + [] as Array, + ), + ] + .map((a) => a?.toLocaleLowerCase()) + .filter((i) => !!i), + ), + ] + .sort() + .join('|'); + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionData.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionData.ts new file mode 100644 index 000000000..cb6a63fc5 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionData.ts @@ -0,0 +1,25 @@ +import { jsonb } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: GQLTransaction; +} + +export class TransactionData extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return jsonb('data').notNull().$type(); + } + + static create(value: GQLTransaction) { + return new TransactionData({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedInputs.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedInputs.ts new file mode 100644 index 000000000..58844f7f1 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedInputs.ts @@ -0,0 +1,25 @@ +import { ValueObject } from '~/core/ValueObject'; +import { + GroupedInputsFactory, + GroupedInputsValue, +} from '~/domain/Input/factories/GroupedInputsFactory'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: GroupedInputsValue; +} + +export class TransactionGroupedInputs extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(data: GQLTransaction) { + const value = GroupedInputsFactory.create(data.inputs).value; + return new TransactionGroupedInputs({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedOutputs.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedOutputs.ts new file mode 100644 index 000000000..c2dc6bc53 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionGroupedOutputs.ts @@ -0,0 +1,25 @@ +import { ValueObject } from '~/core/ValueObject'; +import { + GroupedOutputsFactory, + GroupedOutputsValue, +} from '~/domain/Output/factories/GroupedOutputsFactory'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: GroupedOutputsValue; +} + +export class TransactionGroupedOutputs extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static create(data: GQLTransaction) { + const value = GroupedOutputsFactory.create(data.outputs).value; + return new TransactionGroupedOutputs({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionModelID.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionModelID.ts new file mode 100644 index 000000000..d80d75c66 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionModelID.ts @@ -0,0 +1,25 @@ +import { varchar } from 'drizzle-orm/pg-core'; +import { Identifier } from '~/core/Identifier'; +import { GQLBlock } from '~/graphql/generated/sdk'; +import { TransactionItem } from '../TransactionModel'; + +export type TxID = string; +export class TransactionModelID extends Identifier { + private constructor(id: TxID) { + super(id); + } + + static type() { + return varchar('_id', { length: 66 }).notNull().primaryKey(); + } + + static create(transaction: TransactionItem) { + return new TransactionModelID(transaction._id); + } + + static createSerial(block: GQLBlock, index: number) { + const blockHeight = block.header.height.padStart(32, '0'); + const indexStr = (index + 1).toString().padStart(16, '0'); + return new TransactionModelID(`${blockHeight}-${indexStr}`); + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionRef.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionRef.ts new file mode 100644 index 000000000..19118c8be --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionRef.ts @@ -0,0 +1,28 @@ +import { varchar } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { TransactionsTable } from '../TransactionModel'; +import { TxID } from './TransactionModelID'; + +interface Props { + value: TxID; +} + +export class TransactionRef extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return varchar('transaction_id', { length: 66 }) + .notNull() + .references(() => TransactionsTable._id); + } + + static create(value: TxID) { + return new TransactionRef({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionStatus.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionStatus.ts new file mode 100644 index 000000000..311d19123 --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionStatus.ts @@ -0,0 +1,44 @@ +import { text } from 'drizzle-orm/pg-core'; +import { ValueObject } from '~/core/ValueObject'; +import { + GQLTransaction, + GQLTransactionStatus, + Maybe, +} from '~/graphql/generated/sdk'; + +interface Props { + value: Maybe | undefined; +} + +export class TransactionStatus extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return text('timestamp'); + } + + static create(transaction: GQLTransaction) { + return new TransactionStatus({ value: transaction.status?.__typename }); + } + + value() { + return this.props.value; + } + + is(status: 'Success' | 'Failure' | 'Squeezed' | 'Submitted') { + const statusType = this.value(); + if (status === 'Success') return statusType === 'SuccessStatus'; + if (status === 'Failure') return statusType === 'FailureStatus'; + if (status === 'Squeezed') return statusType === 'SqueezedOutStatus'; + return statusType === 'SubmittedStatus'; + } + + get type() { + if (this.is('Success')) return 'Success'; + if (this.is('Failure')) return 'Failure'; + if (this.is('Squeezed')) return 'Squeezed'; + return 'Submitted'; + } +} diff --git a/packages/graphql-new/src/domain/Transaction/vo/TransactionTimestamp.ts b/packages/graphql-new/src/domain/Transaction/vo/TransactionTimestamp.ts new file mode 100644 index 000000000..6f494e18a --- /dev/null +++ b/packages/graphql-new/src/domain/Transaction/vo/TransactionTimestamp.ts @@ -0,0 +1,31 @@ +import { timestamp } from 'drizzle-orm/pg-core'; +import { DateHelper } from '~/core/Date'; +import { ValueObject } from '~/core/ValueObject'; +import { GQLTransaction } from '~/graphql/generated/sdk'; + +interface Props { + value: Date | null; +} + +export class TransactionTimestamp extends ValueObject { + private constructor(props: Props) { + super(props); + } + + static type() { + return timestamp('timestamp'); + } + + static create(transaction: GQLTransaction) { + const value = + transaction.status && 'time' in transaction.status + ? DateHelper.tai64toDate(transaction.status.time).toDate() + : null; + + return new TransactionTimestamp({ value }); + } + + value() { + return this.props.value; + } +} diff --git a/packages/graphql-new/src/graphql/GraphQLContext.ts b/packages/graphql-new/src/graphql/GraphQLContext.ts new file mode 100644 index 000000000..f188c6eab --- /dev/null +++ b/packages/graphql-new/src/graphql/GraphQLContext.ts @@ -0,0 +1,18 @@ +import { ChainEntity } from '~/domain/Chain/ChainEntity'; +import { GraphQLSDK } from './GraphQLSDK'; +import { GQLChainInfo } from './generated/sdk'; + +export type GraphQLContext = { + chain: ChainEntity | null; +}; + +export class GraphQLContextFactory { + static async create(): Promise { + const { sdk } = new GraphQLSDK(); + const res = await sdk.chain(); + const chainItem = res.data?.chain; + if (!chainItem) return { chain: null }; + const chain = ChainEntity.create(chainItem as GQLChainInfo); + return { chain }; + } +} diff --git a/packages/graphql-new/src/graphql/GraphQLSDK.ts b/packages/graphql-new/src/graphql/GraphQLSDK.ts new file mode 100644 index 000000000..c0ff9c1a3 --- /dev/null +++ b/packages/graphql-new/src/graphql/GraphQLSDK.ts @@ -0,0 +1,15 @@ +import { GraphQLClient } from 'graphql-request'; +import { env } from '~/config'; +import { getSdk } from '~/graphql/generated/sdk-core'; + +export type GQLClient = ReturnType; + +export class GraphQLSDK { + client: GraphQLClient; + sdk: ReturnType; + + constructor() { + this.client = new GraphQLClient(env.get('FUEL_PROVIDER')); + this.sdk = getSdk(this.client); + } +} diff --git a/packages/graphql-new/src/graphql/GraphQLServer.ts b/packages/graphql-new/src/graphql/GraphQLServer.ts new file mode 100644 index 000000000..f16c53f92 --- /dev/null +++ b/packages/graphql-new/src/graphql/GraphQLServer.ts @@ -0,0 +1,28 @@ +import { join } from 'path'; +import { loadFilesSync } from '@graphql-tools/load-files'; +import { mergeResolvers, mergeTypeDefs } from '@graphql-tools/merge'; +import { makeExecutableSchema } from '@graphql-tools/schema'; +import { GraphQLSchema } from 'graphql'; +import { createYoga } from 'graphql-yoga'; +import { GraphQLContextFactory } from './GraphQLContext'; + +const typesArray = loadFilesSync(join(__dirname, './schemas')); +const typeDefs = mergeTypeDefs(typesArray); +const resolversArray = loadFilesSync(join(__dirname, './resolvers')); +const resolvers = mergeResolvers(resolversArray); + +export class GraphQLServer { + schema() { + return makeExecutableSchema({ typeDefs, resolvers }); + } + + setup(schema: GraphQLSchema) { + return createYoga({ + schema, + logging: true, + context: async () => { + return GraphQLContextFactory.create(); + }, + }); + } +} diff --git a/packages/graphql-new/src/graphql/queries/balances.graphql b/packages/graphql-new/src/graphql/queries/balances.graphql new file mode 100644 index 000000000..b5120cf88 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/balances.graphql @@ -0,0 +1,35 @@ +query balances($after: String, $before: String, $filter: BalanceFilterInput!, $first: Int, $last: Int){ + balances(after: $after, before: $before, filter: $filter, first: $first, last: $last){ + edges{ + cursor + node{ + amount + assetId + owner + utxos{ + amount + blockCreated + txCreatedIdx + utxoId + } + } + } + nodes{ + amount + assetId + owner + utxos{ + amount + blockCreated + txCreatedIdx + utxoId + } + } + pageInfo{ + endCursor + hasNextPage + hasPreviousPage + startCursor + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/block.graphql b/packages/graphql-new/src/graphql/queries/block.graphql new file mode 100644 index 000000000..79107fefe --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/block.graphql @@ -0,0 +1,559 @@ +query block($height: U32, $id: BlockId){ + block(height: $height, id: $id){ + consensus{ + __typename + ... on Genesis { + chainConfigHash + coinsRoot + contractsRoot + messagesRoot + } + ... on PoAConsensus { + signature + } + } + header{ + applicationHash + daHeight + height + id + messageReceiptCount + messageReceiptRoot + prevRoot + time + transactionsCount + transactionsRoot + } + id + producer + time{ + fromNow + full + rawTai64 + rawUnix + } + totalGasUsed + transactions{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + contract{ + bytecode + id + salt + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + receipts{ + item{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + } + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + block{ + consensus{ + __typename + ... on Genesis { + chainConfigHash + coinsRoot + contractsRoot + messagesRoot + } + ... on PoAConsensus { + signature + } + } + id + producer + totalGasUsed + } + programState{ + data + returnType + } + reason + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/contract.graphql b/packages/graphql-new/src/graphql/queries/contract.graphql new file mode 100644 index 000000000..071b6f910 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/contract.graphql @@ -0,0 +1,7 @@ +query contract($id: ContractId!){ + contract(id: $id){ + bytecode + id + salt + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/contractBalances.graphql b/packages/graphql-new/src/graphql/queries/contractBalances.graphql new file mode 100644 index 000000000..b847c36b8 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/contractBalances.graphql @@ -0,0 +1,23 @@ +query contractBalances($after: String, $before: String, $filter: ContractBalanceFilterInput!, $first: Int, $last: Int){ + contractBalances(after: $after, before: $before, filter: $filter, first: $first, last: $last){ + edges{ + cursor + node{ + amount + assetId + contract + } + } + nodes{ + amount + assetId + contract + } + pageInfo{ + endCursor + hasNextPage + hasPreviousPage + startCursor + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/predicate.graphql b/packages/graphql-new/src/graphql/queries/predicate.graphql new file mode 100644 index 000000000..3ea6c1825 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/predicate.graphql @@ -0,0 +1,6 @@ +query predicate($address: String!){ + predicate(address: $address){ + address + bytecode + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/search.graphql b/packages/graphql-new/src/graphql/queries/search.graphql new file mode 100644 index 000000000..7158120d5 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/search.graphql @@ -0,0 +1,20 @@ +query search($query: String!){ + search(query: $query){ + account{ + address + transactions{ + id + } + } + block{ + height + id + } + contract{ + id + } + transaction{ + id + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/transaction.graphql b/packages/graphql-new/src/graphql/queries/transaction.graphql new file mode 100644 index 000000000..c4b9efa79 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/transaction.graphql @@ -0,0 +1,960 @@ +query transaction($id: TransactionId!){ + transaction(id: $id){ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + contract{ + bytecode + id + salt + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + receipts{ + item{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + } + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + block{ + consensus{ + __typename + ... on Genesis { + chainConfigHash + coinsRoot + contractsRoot + messagesRoot + } + ... on PoAConsensus { + signature + } + } + header{ + applicationHash + daHeight + height + id + messageReceiptCount + messageReceiptRoot + prevRoot + time + transactionsCount + transactionsRoot + } + id + producer + time{ + fromNow + full + rawTai64 + rawUnix + } + totalGasUsed + transactions{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + programState{ + data + returnType + } + reason + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } + reason + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/transactions.graphql b/packages/graphql-new/src/graphql/queries/transactions.graphql new file mode 100644 index 000000000..ffddc8391 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/transactions.graphql @@ -0,0 +1,1389 @@ +query transactions($after: String, $before: String, $first: Int, $last: Int){ + transactions(after: $after, before: $before, first: $first, last: $last){ + edges{ + cursor + node{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + contract{ + bytecode + id + salt + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + receipts{ + item{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + } + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + block{ + consensus{ + __typename + ... on Genesis { + chainConfigHash + coinsRoot + contractsRoot + messagesRoot + } + ... on PoAConsensus { + signature + } + } + header{ + applicationHash + daHeight + height + id + messageReceiptCount + messageReceiptRoot + prevRoot + time + transactionsCount + transactionsRoot + } + id + producer + time{ + fromNow + full + rawTai64 + rawUnix + } + totalGasUsed + transactions{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + programState{ + data + returnType + } + reason + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } + reason + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } + nodes{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + reason + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + pageInfo{ + endCursor + hasNextPage + hasPreviousPage + startCursor + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/queries/transactionsByOwner.graphql b/packages/graphql-new/src/graphql/queries/transactionsByOwner.graphql new file mode 100644 index 000000000..caf07a3e7 --- /dev/null +++ b/packages/graphql-new/src/graphql/queries/transactionsByOwner.graphql @@ -0,0 +1,1389 @@ +query transactionsByOwner($after: String, $before: String, $first: Int, $last: Int, $owner: Address!){ + transactionsByOwner(after: $after, before: $before, first: $first, last: $last, owner: $owner){ + edges{ + cursor + node{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + contract{ + bytecode + id + salt + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + receipts{ + item{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + } + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contract{ + bytecode + id + salt + } + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + to{ + bytecode + id + salt + } + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + block{ + consensus{ + __typename + ... on Genesis { + chainConfigHash + coinsRoot + contractsRoot + messagesRoot + } + ... on PoAConsensus { + signature + } + } + header{ + applicationHash + daHeight + height + id + messageReceiptCount + messageReceiptRoot + prevRoot + time + transactionsCount + transactionsRoot + } + id + producer + time{ + fromNow + full + rawTai64 + rawUnix + } + totalGasUsed + transactions{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + programState{ + data + returnType + } + reason + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } + reason + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + } + nodes{ + blockHeight + bytecodeLength + bytecodeWitnessIndex + gasCosts{ + fee + gasUsed + } + gasPrice + groupedInputs{ + __typename + ... on GroupedInputCoin { + assetId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + owner + totalAmount + type + } + ... on GroupedInputContract { + contractId + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + type + } + ... on GroupedInputMessage { + data + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + recipient + sender + type + } + } + groupedOutputs{ + __typename + ... on GroupedOutputChanged { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputCoin { + assetId + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + to + totalAmount + } + ... on GroupedOutputContractCreadted { + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + } + } + hasPredicate + id + inputAssetIds + inputContract{ + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + inputContracts{ + bytecode + id + salt + } + inputs{ + __typename + ... on InputCoin { + amount + assetId + maturity + owner + predicate + predicateData + predicateGasUsed + txPointer + utxoId + witnessIndex + } + ... on InputContract { + balanceRoot + contract{ + bytecode + id + salt + } + stateRoot + txPointer + utxoId + } + ... on InputMessage { + amount + data + nonce + predicate + predicateData + predicateGasUsed + recipient + sender + witnessIndex + } + } + isCreate + isMint + isScript + maturity + mintAmount + mintAssetId + operations{ + type + } + outputContract{ + balanceRoot + inputIndex + stateRoot + } + outputs{ + __typename + ... on ChangeOutput { + amount + assetId + to + } + ... on CoinOutput { + amount + assetId + to + } + ... on ContractCreated { + contract{ + bytecode + id + salt + } + stateRoot + } + ... on ContractOutput { + balanceRoot + inputIndex + stateRoot + } + ... on VariableOutput { + amount + assetId + to + } + } + policies{ + gasPrice + maturity + maxFee + witnessLimit + } + rawPayload + receipts{ + amount + assetId + contractId + data + digest + gas + gasUsed + is + len + nonce + param1 + param2 + pc + ptr + ra + rb + rc + rd + reason + receiptType + recipient + result + sender + subId + toAddress + val + } + receiptsRoot + salt + script + scriptData + scriptGasLimit + status{ + __typename + ... on FailureStatus { + reason + time + transactionId + } + ... on SqueezedOutStatus { + reason + } + ... on SubmittedStatus { + time + } + ... on SuccessStatus { + time + transactionId + } + } + statusType + storageSlots + time{ + fromNow + full + rawTai64 + rawUnix + } + title + txPointer + witnesses + } + pageInfo{ + endCursor + hasNextPage + hasPreviousPage + startCursor + } + } +} \ No newline at end of file diff --git a/packages/graphql-new/src/graphql/resolvers/BalanceResolver.ts b/packages/graphql-new/src/graphql/resolvers/BalanceResolver.ts new file mode 100644 index 000000000..ba2f0c6fd --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/BalanceResolver.ts @@ -0,0 +1,54 @@ +import { ResolverAdapter } from '~/core/Resolver'; +import { + GQLBalance, + GQLQueryBalanceArgs, + GQLQueryBalancesArgs, + GQLQueryCoinsArgs, +} from '~/graphql/generated/sdk'; +import { GraphQLSDK } from '../GraphQLSDK'; + +type Source = GQLBalance; +type Params = { + balance: GQLQueryBalanceArgs; + balances: GQLQueryBalancesArgs; + utxos: GQLQueryCoinsArgs['filter']; +}; + +class BalanceResolver extends ResolverAdapter { + private constructor(private client = new GraphQLSDK()) { + super(); + this.setResolvers({ + Query: { + balance: this.balance.bind(this), + balances: this.balances.bind(this), + }, + Balance: { + utxos: this.utoxs.bind(this), + }, + }); + } + + static create() { + return new BalanceResolver().getResolvers(); + } + + // TODO: need to check how to implement this using Postgres + async balance(_: Source, params: Params['balance']) { + const res = await this.client.sdk.balance(params); + return res.data.balance; + } + + // TODO: need to check how to implement this using Postgres + async balances(_: Source, params: Params['balances']) { + const res = await this.client.sdk.balances(params); + return res.data.balances; + } + + // TODO: need to check how to implement this using Postgres + async utoxs(_: Source, params: Params['utxos']) { + const res = await this.client.sdk.coins({ first: 100, filter: params }); + return res.data.coins.nodes; + } +} + +export default BalanceResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/BlockResolver.ts b/packages/graphql-new/src/graphql/resolvers/BlockResolver.ts new file mode 100644 index 000000000..a13924a41 --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/BlockResolver.ts @@ -0,0 +1,62 @@ +import { Paginator } from '~/core/Paginator'; +import { ResolverAdapter } from '~/core/Resolver'; +import { BlocksTable } from '~/domain/Block/BlockModel'; +import { BlockRepository } from '~/domain/Block/BlockRepository'; +import { + GQLBlock, + GQLQueryBlockArgs, + GQLQueryBlocksArgs, +} from '~/graphql/generated/sdk'; + +type Source = GQLBlock; +type Params = { + blocks: GQLQueryBlocksArgs; + block: GQLQueryBlockArgs; +}; + +class BlockResolver extends ResolverAdapter { + private constructor( + private readonly blockRepository = new BlockRepository(), + ) { + super(); + this.setResolvers({ + Query: { + block: this.block.bind(this), + blocks: this.blocks.bind(this), + }, + }); + } + + static create() { + return new BlockResolver().getResolvers(); + } + + async block(_: Source, { id, height }: Params['block']) { + if (!id && !height) { + throw new Error('Either id or height must be provided'); + } + + if (id) { + const item = await this.blockRepository.findByHash(id); + return item?.toGQLNode() ?? null; + } + + const item = await this.blockRepository.findByHeight(Number(height)); + return item?.toGQLNode() ?? null; + } + + async blocks(_: Source, params: Params['blocks']) { + const paginator = new Paginator(BlocksTable, params); + const blocks = await this.blockRepository.findMany(params); + const startCursor = paginator.getStartCursor(blocks); + const endCursor = paginator.getEndCursor(blocks); + return paginator.createPaginatedResult( + blocks, + startCursor, + endCursor, + (item) => item.toGQLNode(), + ); + } +} + +export default BlockResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/ChainResolver.ts b/packages/graphql-new/src/graphql/resolvers/ChainResolver.ts new file mode 100644 index 000000000..443cae9d7 --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/ChainResolver.ts @@ -0,0 +1,30 @@ +import { ResolverAdapter } from '~/core/Resolver'; +import { GQLChainInfo } from '~/graphql/generated/sdk'; +import { GraphQLSDK } from '../GraphQLSDK'; + +type Source = GQLChainInfo; +type Params = { + chain: null; +}; + +class ChainResolver extends ResolverAdapter { + private constructor(private client = new GraphQLSDK()) { + super(); + this.setResolvers({ + Query: { + chain: this.chain.bind(this), + }, + }); + } + + static create() { + return new ChainResolver().getResolvers(); + } + + async chain(_: Source, _params: Params['chain']) { + const res = await this.client.sdk.chain(); + return res.data.chain; + } +} + +export default ChainResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/ContractResolver.ts b/packages/graphql-new/src/graphql/resolvers/ContractResolver.ts new file mode 100644 index 000000000..657d44b17 --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/ContractResolver.ts @@ -0,0 +1,76 @@ +import { Paginator, type PaginatorParams } from '~/core/Paginator'; +import { ResolverAdapter } from '~/core/Resolver'; +import { ContractsTable } from '~/domain/Contract/ContractModel'; +import { ContractRepository } from '~/domain/Contract/ContractRepository'; +import { + GQLContract, + GQLQueryContractArgs, + GQLQueryContractBalanceArgs, + GQLQueryContractBalancesArgs, +} from '~/graphql/generated/sdk'; +import { GraphQLSDK } from '../GraphQLSDK'; + +type Source = GQLContract; +type Params = { + contracts: PaginatorParams; + contract: GQLQueryContractArgs; + contractBalance: GQLQueryContractBalanceArgs; + contractBalances: GQLQueryContractBalancesArgs; +}; + +class ContractResolver extends ResolverAdapter { + private constructor( + private readonly contractRepository = new ContractRepository(), + private readonly client = new GraphQLSDK(), + ) { + super(); + this.setResolvers({ + Query: { + contract: this.contract.bind(this), + contracts: this.contracts.bind(this), + contractBalance: this.contractBalance.bind(this), + contractBalances: this.contractBalances.bind(this), + }, + }); + } + + static create() { + return new ContractResolver().getResolvers(); + } + + async contract(_: Source, { id }: Params['contract']) { + if (!id) { + throw new Error('Contract ID is required'); + } + + const item = await this.contractRepository.findByHash(id); + return item?.toGQLNode(); + } + + async contracts(_: Source, params: Params['contracts']) { + const paginator = new Paginator(ContractsTable, params); + const contracts = await this.contractRepository.findMany(params); + const startCursor = paginator.getStartCursor(contracts); + const endCursor = paginator.getEndCursor(contracts); + return paginator.createPaginatedResult( + contracts, + startCursor, + endCursor, + (item) => item.toGQLNode(), + ); + } + + // TODO: need to check how to implement this using Postgres + async contractBalance(_: Source, params: Params['contractBalance']) { + const res = await this.client.sdk.contractBalance(params); + return res.data.contractBalance; + } + + // TODO: need to check how to implement this using Postgres + async contractBalances(_: Source, params: Params['contractBalances']) { + const res = await this.client.sdk.contractBalances(params); + return res.data.contractBalances; + } +} + +export default ContractResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/NodeResolver.ts b/packages/graphql-new/src/graphql/resolvers/NodeResolver.ts new file mode 100644 index 000000000..d1297113f --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/NodeResolver.ts @@ -0,0 +1,31 @@ +import { ResolverAdapter } from '~/core/Resolver'; +import { GQLNodeInfo } from '~/graphql/generated/sdk'; +import { GraphQLSDK } from '../GraphQLSDK'; + +type Source = GQLNodeInfo; +type Params = { + nodeInfo: null; +}; + +class NodeResolver extends ResolverAdapter { + private constructor(private readonly client = new GraphQLSDK()) { + super(); + this.setResolvers({ + Query: { + nodeInfo: this.nodeInfo.bind(this), + }, + }); + } + + static create() { + return new NodeResolver().getResolvers(); + } + + async nodeInfo(_: Source, _params: Params['nodeInfo']) { + // TODO: need to check with @luizstacio about the nodeInfo resolver + const res = await this.client.sdk.nodeInfo(); + return res.data.nodeInfo; + } +} + +export default NodeResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/OperationResolver.ts b/packages/graphql-new/src/graphql/resolvers/OperationResolver.ts new file mode 100644 index 000000000..658257afa --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/OperationResolver.ts @@ -0,0 +1,42 @@ +import { Paginator } from '~/core/Paginator'; +import { ResolverAdapter } from '~/core/Resolver'; +import { OperationsTable } from '~/domain/Operation/OperationModel'; +import { OperationRepository } from '~/domain/Operation/OperationRepository'; +import { GQLOperation, GQLQueryOperationsArgs } from '~/graphql/generated/sdk'; + +type Source = GQLOperation; +type Params = { + operations: GQLQueryOperationsArgs; +}; + +class OperationResolver extends ResolverAdapter { + private constructor( + private readonly operationRepository = new OperationRepository(), + ) { + super(); + this.setResolvers({ + Query: { + operations: this.operations.bind(this), + }, + }); + } + + static create() { + return new OperationResolver().getResolvers(); + } + + async operations(_: Source, params: Params['operations']) { + const paginator = new Paginator(OperationsTable, params); + const operations = await this.operationRepository.findMany(params); + const startCursor = paginator.getStartCursor(operations); + const endCursor = paginator.getEndCursor(operations); + return paginator.createPaginatedResult( + operations, + startCursor, + endCursor, + (item) => item.toGQLNode(), + ); + } +} + +export default OperationResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/PredicateResolver.ts b/packages/graphql-new/src/graphql/resolvers/PredicateResolver.ts new file mode 100644 index 000000000..f6082142a --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/PredicateResolver.ts @@ -0,0 +1,32 @@ +import { ResolverAdapter } from '~/core/Resolver'; +import { PredicateItem } from '~/domain/Predicate/PredicateModel'; +import { PredicateRepository } from '~/domain/Predicate/PredicateRepository'; + +type Source = PredicateItem; +type Params = { + predicate: { address: string }; +}; + +class PredicateResolver extends ResolverAdapter { + private constructor( + private readonly predicateRepository = new PredicateRepository(), + ) { + super(); + this.setResolvers({ + Query: { + predicate: this.predicate.bind(this), + }, + }); + } + + static create() { + return new PredicateResolver().getResolvers(); + } + + async predicate(_: Source, params: Params['predicate']) { + const item = await this.predicateRepository.findByAddress(params.address); + return item?.toGQLNode(); + } +} + +export default PredicateResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/SearchResolver.ts b/packages/graphql-new/src/graphql/resolvers/SearchResolver.ts new file mode 100644 index 000000000..686575b6a --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/SearchResolver.ts @@ -0,0 +1,54 @@ +import { Hash256 } from '~/application/vo'; +import { ResolverAdapter } from '~/core/Resolver'; +import { BlockRepository } from '~/domain/Block/BlockRepository'; +import { ContractRepository } from '~/domain/Contract/ContractRepository'; +import { TransactionRepository } from '~/domain/Transaction/TransactionRepository'; + +type Params = { + search: { query: string }; +}; + +class SearchResolver extends ResolverAdapter { + private constructor( + private readonly transactionRepository = new TransactionRepository(), + private readonly contractRepository = new ContractRepository(), + private readonly blockRepository = new BlockRepository(), + ) { + super(); + this.setResolvers({ + Query: { + search: this.search.bind(this), + }, + }); + } + + static create() { + return new SearchResolver().getResolvers(); + } + + async search(_: null, params: Params['search']) { + const address = Hash256.create(params.query).value(); + const block = await this.blockRepository.findByHash(address); + if (block) { + return { + block: block.toGQLNode(), + }; + } + + const contract = await this.contractRepository.findByHash(address); + if (contract) { + return { + contract: contract.toGQLNode(), + }; + } + + const transaction = await this.transactionRepository.findByHash(address); + if (transaction) { + return { + transaction: transaction.toGQLNode(), + }; + } + } +} + +export default SearchResolver.create(); diff --git a/packages/graphql-new/src/graphql/resolvers/TransactionResolver.ts b/packages/graphql-new/src/graphql/resolvers/TransactionResolver.ts new file mode 100644 index 000000000..fd746f57f --- /dev/null +++ b/packages/graphql-new/src/graphql/resolvers/TransactionResolver.ts @@ -0,0 +1,79 @@ +import { GasCosts } from '~/application/vo/GasCosts'; +import { Paginator } from '~/core/Paginator'; +import { ResolverAdapter } from '~/core/Resolver'; +import { TransactionsTable } from '~/domain/Transaction/TransactionModel'; +import { TransactionRepository } from '~/domain/Transaction/TransactionRepository'; +import { + GQLQueryTransactionArgs, + GQLQueryTransactionsArgs, + GQLQueryTransactionsByOwnerArgs, + GQLTransaction, +} from '~/graphql/generated/sdk'; +import { GraphQLContext } from '../GraphQLContext'; + +type Source = GQLTransaction; +type Params = { + transaction: GQLQueryTransactionArgs; + transactions: GQLQueryTransactionsArgs; + transactionByOwner: GQLQueryTransactionsByOwnerArgs; +}; + +class TransactionResolver extends ResolverAdapter { + private constructor( + private readonly transactionRepository = new TransactionRepository(), + ) { + super(); + this.setResolvers({ + Query: { + transaction: this.transaction.bind(this), + transactions: this.transactions.bind(this), + transactionsByOwner: this.transactionsByOwner.bind(this), + }, + Transaction: { + gasCosts: this.gasCosts.bind(this), + }, + }); + } + + static create() { + return new TransactionResolver().getResolvers(); + } + + async transaction(_: Source, params: Params['transaction']) { + const item = await this.transactionRepository.findByHash(params.id); + return item?.toGQLNode() ?? null; + } + + async transactions(_: Source, params: Params['transactions']) { + const paginator = new Paginator(TransactionsTable, params); + const transactions = await this.transactionRepository.findMany(params); + const startCursor = paginator.getStartCursor(transactions); + const endCursor = paginator.getEndCursor(transactions); + return paginator.createPaginatedResult( + transactions, + startCursor, + endCursor, + (item) => item.toGQLNode(), + ); + } + + async transactionsByOwner(_: Source, params: Params['transactionByOwner']) { + const paginator = new Paginator(TransactionsTable, params); + const transactions = await this.transactionRepository.findByOwner(params); + const startCursor = paginator.getStartCursor(transactions); + const endCursor = paginator.getEndCursor(transactions); + return paginator.createPaginatedResult( + transactions, + startCursor, + endCursor, + (item) => item.toGQLNode(), + ); + } + + async gasCosts(source: Source, _: unknown, ctx: GraphQLContext) { + if (!ctx.chain) throw new Error('Chain not found'); + return GasCosts.create(source, ctx.chain?.data).toGQL(); + } +} + +export default TransactionResolver.create(); diff --git a/packages/graphql-new/src/graphql/schemas/explorer.graphql b/packages/graphql-new/src/graphql/schemas/explorer.graphql new file mode 100644 index 000000000..ee1a37e19 --- /dev/null +++ b/packages/graphql-new/src/graphql/schemas/explorer.graphql @@ -0,0 +1,215 @@ +schema { + query: Query +} + +# -------------------------------- +# Balances +# -------------------------------- + +type UtxoItem { + amount: U64! + blockCreated: U32 + txCreatedIdx: U64 + utxoId: UtxoId! +} + +type Balance { + utxos: [UtxoItem] +} + +# -------------------------------- +# Blocks +# -------------------------------- + +type Block { + time: ParsedTime + totalGasUsed: U64 + producer: Address +} + +# -------------------------------- +# GroupedInputs +# -------------------------------- + +enum GroupedInputType { + InputCoin + InputContract + InputMessage +} + +type GroupedInputCoin { + assetId: AssetId + inputs: [Input] + owner: Address + totalAmount: U64 + type: GroupedInputType +} + +type GroupedInputContract { + contractId: ContractId + inputs: [Input] + type: GroupedInputType +} + +type GroupedInputMessage { + data: HexString + inputs: [Input] + recipient: Address + sender: Address + type: GroupedInputType +} + +union GroupedInput = + | GroupedInputCoin + | GroupedInputContract + | GroupedInputMessage + +# -------------------------------- +# GroupedOutputs +# -------------------------------- + +type GroupedOutputCoin { + assetId: AssetId + outputs: [Output] + to: Address + totalAmount: U64 +} + +type GroupedOutputChanged { + assetId: AssetId + outputs: [Output] + to: Address + totalAmount: U64 +} + +type GroupedOutputContractCreadted { + contract: Contract + outputs: [Output] +} + +union GroupedOutput = + | GroupedOutputCoin + | GroupedOutputChanged + | GroupedOutputContractCreadted + +# -------------------------------- +# Operations +# -------------------------------- + +input OperationsFilterInput { + transactionHash: String! +} + +enum OperationType { + FROM_CONTRACT + FROM_ACCOUNT + FINAL_RESULT +} + +type OperationReceipt { + item: Receipt + receipts: [OperationReceipt] +} + +type Operation { + type: OperationType + receipts: [OperationReceipt] +} + +# -------------------------------- +# Transaction +# -------------------------------- + +type ParsedTime { + fromNow: String + full: String + rawTai64: String + rawUnix: String +} + +type TransactionGasCosts { + gasUsed: U64 + fee: U64 +} + +type Transaction { + blockHeight: U32 + gasCosts: TransactionGasCosts! + groupedInputs: [GroupedInput]! + groupedOutputs: [GroupedOutput]! + hasPredicate: Boolean + operations: [Operation] + statusType: String + time: ParsedTime! + title: String! +} + +# -------------------------------- +# Contract +# -------------------------------- + +type ContractConnection { + nodes: [Contract] + pageInfo: PageInfo! +} + +# -------------------------------- +# Predicate +# -------------------------------- + +type PredicateItem { + address: Address + bytecode: String +} + +# -------------------------------- +# Search +# -------------------------------- + +type SearchAccount { + address: Address + transactions: [SearchTransaction] +} + +type SearchContract { + id: ContractId +} + +type SearchBlock { + id: BlockId + height: String +} + +type SearchTransaction { + id: TransactionId +} + +type SearchResult { + account: SearchAccount + block: SearchBlock + contract: SearchContract + transaction: SearchTransaction +} + +# -------------------------------- +# Query +# -------------------------------- + +type Query { + contracts( + after: String + before: String + first: Int + last: Int + ): ContractConnection! + + search(query: String!): SearchResult + predicate(address: String!): PredicateItem + operations( + after: String + before: String + first: Int + last: Int + filter: OperationsFilterInput! + ): [Operation] +} diff --git a/packages/graphql-new/src/graphql/schemas/fuelcore.graphql b/packages/graphql-new/src/graphql/schemas/fuelcore.graphql new file mode 100644 index 000000000..28084d0fd --- /dev/null +++ b/packages/graphql-new/src/graphql/schemas/fuelcore.graphql @@ -0,0 +1,864 @@ +schema { + query: Query + mutation: Mutation + subscription: Subscription +} + +scalar Address + +scalar AssetId + +type Balance { + amount: U64! + assetId: AssetId! + owner: Address! +} + +type BalanceConnection { + """A list of edges.""" + edges: [BalanceEdge!]! + """A list of nodes.""" + nodes: [Balance!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type BalanceEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: Balance! +} + +input BalanceFilterInput { + """Filter coins based on the `owner` field""" + owner: Address! +} + +type Block { + consensus: Consensus! + header: Header! + id: BlockId! + transactions: [Transaction!]! +} + +type BlockConnection { + """A list of edges.""" + edges: [BlockEdge!]! + """A list of nodes.""" + nodes: [Block!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type BlockEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: Block! +} + +scalar BlockId + +input Breakpoint { + contract: ContractId! + pc: U64! +} + +scalar Bytes32 + +type ChainInfo { + consensusParameters: ConsensusParameters! + daHeight: U64! + gasCosts: GasCosts! + latestBlock: Block! + name: String! +} + +type ChangeOutput { + amount: U64! + assetId: AssetId! + to: Address! +} + +type Coin { + amount: U64! + assetId: AssetId! + """TxPointer - the height of the block this coin was created in""" + blockCreated: U32! + maturity: U32! + owner: Address! + """TxPointer - the index of the transaction that created this coin""" + txCreatedIdx: U64! + utxoId: UtxoId! +} + +type CoinConnection { + """A list of edges.""" + edges: [CoinEdge!]! + """A list of nodes.""" + nodes: [Coin!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type CoinEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: Coin! +} + +input CoinFilterInput { + """Returns coins only with `asset_id`.""" + assetId: AssetId + """Returns coins owned by the `owner`.""" + owner: Address! +} + +type CoinOutput { + amount: U64! + assetId: AssetId! + to: Address! +} + +"""The schema analog of the [`coins::CoinType`].""" +union CoinType = Coin | MessageCoin + +union Consensus = Genesis | PoAConsensus + +type ConsensusParameters { + baseAssetId: AssetId! + chainId: U64! + contractParams: ContractParameters! + feeParams: FeeParameters! + gasCosts: GasCosts! + predicateParams: PredicateParameters! + scriptParams: ScriptParameters! + txParams: TxParameters! +} + +type Contract { + bytecode: HexString! + id: ContractId! + salt: Salt! +} + +type ContractBalance { + amount: U64! + assetId: AssetId! + contract: ContractId! +} + +type ContractBalanceConnection { + """A list of edges.""" + edges: [ContractBalanceEdge!]! + """A list of nodes.""" + nodes: [ContractBalance!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type ContractBalanceEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: ContractBalance! +} + +input ContractBalanceFilterInput { + """Filter assets based on the `contractId` field""" + contract: ContractId! +} + +type ContractCreated { + contract: Contract! + stateRoot: Bytes32! +} + +scalar ContractId + +type ContractOutput { + balanceRoot: Bytes32! + inputIndex: Int! + stateRoot: Bytes32! +} + +type ContractParameters { + contractMaxSize: U64! + maxStorageSlots: U64! +} + +union DependentCost = HeavyOperation | LightOperation + +input ExcludeInput { + """Messages to exclude from the selection.""" + messages: [Nonce!]! + """Utxos to exclude from the selection.""" + utxos: [UtxoId!]! +} + +type FailureStatus { + block: Block! + programState: ProgramState + reason: String! + receipts: [Receipt!]! + time: Tai64Timestamp! + transactionId: TransactionId! +} + +type FeeParameters { + gasPerByte: U64! + gasPriceFactor: U64! +} + +type GasCosts { + add: U64! + addi: U64! + aloc: U64! + and: U64! + andi: U64! + bal: U64! + bhei: U64! + bhsh: U64! + burn: U64! + call: DependentCost! + cb: U64! + ccp: DependentCost! + cfei: U64! + cfsi: U64! + contractRoot: DependentCost! + croo: U64! + csiz: DependentCost! + div: U64! + divi: U64! + eck1: U64! + ecr1: U64! + ed19: U64! + eq: U64! + exp: U64! + expi: U64! + flag: U64! + gm: U64! + gt: U64! + gtf: U64! + ji: U64! + jmp: U64! + jmpb: U64! + jmpf: U64! + jne: U64! + jneb: U64! + jnef: U64! + jnei: U64! + jnzb: U64! + jnzf: U64! + jnzi: U64! + k256: DependentCost! + lb: U64! + ldc: DependentCost! + log: U64! + logd: DependentCost! + lt: U64! + lw: U64! + mcl: DependentCost! + mcli: DependentCost! + mcp: DependentCost! + mcpi: DependentCost! + meq: DependentCost! + mint: U64! + mldv: U64! + mlog: U64! + modOp: U64! + modi: U64! + moveOp: U64! + movi: U64! + mroo: U64! + mul: U64! + muli: U64! + newStoragePerByte: U64! + noop: U64! + not: U64! + or: U64! + ori: U64! + poph: U64! + popl: U64! + pshh: U64! + pshl: U64! + ret: U64! + retd: DependentCost! + rvrt: U64! + s256: DependentCost! + sb: U64! + scwq: DependentCost! + sll: U64! + slli: U64! + smo: DependentCost! + srl: U64! + srli: U64! + srw: U64! + srwq: DependentCost! + stateRoot: DependentCost! + sub: U64! + subi: U64! + sw: U64! + sww: U64! + swwq: DependentCost! + time: U64! + tr: U64! + tro: U64! + vmInitialization: DependentCost! + wdam: U64! + wdcm: U64! + wddv: U64! + wdmd: U64! + wdml: U64! + wdmm: U64! + wdop: U64! + wqam: U64! + wqcm: U64! + wqdv: U64! + wqmd: U64! + wqml: U64! + wqmm: U64! + wqop: U64! + xor: U64! + xori: U64! +} + +type Genesis { + """ + The chain configs define what consensus type to use, what settlement layer to use, + rules of block validity, etc. + """ + chainConfigHash: Bytes32! + """The Binary Merkle Tree root of all genesis coins.""" + coinsRoot: Bytes32! + """ + The Binary Merkle Tree root of state, balances, contracts code hash of each contract. + """ + contractsRoot: Bytes32! + """The Binary Merkle Tree root of all genesis messages.""" + messagesRoot: Bytes32! +} + +type Header { + """Hash of the application header.""" + applicationHash: Bytes32! + """ + The layer 1 height of messages and events to include since the last layer 1 block number. + """ + daHeight: U64! + """Fuel block height.""" + height: U32! + """Hash of the header""" + id: BlockId! + """Number of message receipts in this block.""" + messageReceiptCount: U64! + """Merkle root of message receipts in this block.""" + messageReceiptRoot: Bytes32! + """Merkle root of all previous block header hashes.""" + prevRoot: Bytes32! + """The block producer time.""" + time: Tai64Timestamp! + """Number of transactions in this block.""" + transactionsCount: U64! + """Merkle root of transactions.""" + transactionsRoot: Bytes32! +} + +type HeavyOperation { + base: U64! + gasPerUnit: U64! +} + +scalar HexString + +union Input = InputCoin | InputContract | InputMessage + +type InputCoin { + amount: U64! + assetId: AssetId! + maturity: U32! + owner: Address! + predicate: HexString! + predicateData: HexString! + predicateGasUsed: U64! + txPointer: TxPointer! + utxoId: UtxoId! + witnessIndex: Int! +} + +type InputContract { + balanceRoot: Bytes32! + contract: Contract! + stateRoot: Bytes32! + txPointer: TxPointer! + utxoId: UtxoId! +} + +type InputMessage { + amount: U64! + data: HexString! + nonce: Nonce! + predicate: HexString! + predicateData: HexString! + predicateGasUsed: U64! + recipient: Address! + sender: Address! + witnessIndex: Int! +} + +type LightOperation { + base: U64! + unitsPerGas: U64! +} + +type MerkleProof { + proofIndex: U64! + proofSet: [Bytes32!]! +} + +type Message { + amount: U64! + daHeight: U64! + data: HexString! + nonce: Nonce! + recipient: Address! + sender: Address! +} + +type MessageCoin { + amount: U64! + assetId: AssetId! + daHeight: U64! + nonce: Nonce! + recipient: Address! + sender: Address! +} + +type MessageConnection { + """A list of edges.""" + edges: [MessageEdge!]! + """A list of nodes.""" + nodes: [Message!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type MessageEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: Message! +} + +type MessageProof { + amount: U64! + blockProof: MerkleProof! + commitBlockHeader: Header! + data: HexString! + messageBlockHeader: Header! + messageProof: MerkleProof! + nonce: Nonce! + recipient: Address! + sender: Address! +} + +enum MessageState { + NOT_FOUND + SPENT + UNSPENT +} + +type MessageStatus { + state: MessageState! +} + +type Mutation { + continueTx(id: ID!): RunResult! + """ + Execute a dry-run of the transaction using a fork of current state, no changes are committed. + """ + dryRun(tx: HexString!, utxoValidation: Boolean): [Receipt!]! + endSession(id: ID!): Boolean! + execute(id: ID!, op: String!): Boolean! + """ + Sequentially produces `blocks_to_produce` blocks. The first block starts with + `start_timestamp`. If the block production in the [`crate::service::Config`] is + `Trigger::Interval { block_time }`, produces blocks with `block_time ` intervals between + them. The `start_timestamp` is the timestamp in seconds. + """ + produceBlocks(blocksToProduce: U32!, startTimestamp: Tai64Timestamp): U32! + reset(id: ID!): Boolean! + setBreakpoint(breakpoint: Breakpoint!, id: ID!): Boolean! + setSingleStepping(enable: Boolean!, id: ID!): Boolean! + startSession: ID! + startTx(id: ID!, txJson: String!): RunResult! + """ + Submits transaction to the `TxPool`. + + Returns submitted transaction if the transaction is included in the `TxPool` without problems. + """ + submit(tx: HexString!): Transaction! +} + +type NodeInfo { + maxDepth: U64! + maxTx: U64! + minGasPrice: U64! + nodeVersion: String! + peers: [PeerInfo!]! + utxoValidation: Boolean! + vmBacktrace: Boolean! +} + +scalar Nonce + +union Output = ChangeOutput | CoinOutput | ContractCreated | ContractOutput | VariableOutput + +""" +A separate `Breakpoint` type to be used as an output, as a single +type cannot act as both input and output type in async-graphql +""" +type OutputBreakpoint { + contract: ContractId! + pc: U64! +} + +"""Information about pagination in a connection""" +type PageInfo { + """When paginating forwards, the cursor to continue.""" + endCursor: String + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! + """When paginating backwards, the cursor to continue.""" + startCursor: String +} + +type PeerInfo { + """The advertised multi-addrs that can be used to connect to this peer""" + addresses: [String!]! + """The internal fuel p2p reputation of this peer""" + appScore: Float! + """The last reported height of the peer""" + blockHeight: U32 + """The self-reported version of the client the peer is using""" + clientVersion: String + """The libp2p peer id""" + id: String! + """The last heartbeat from this peer in unix epoch time ms""" + lastHeartbeatMs: U64! +} + +type PoAConsensus { + """Gets the signature of the block produced by `PoA` consensus.""" + signature: Signature! +} + +type Policies { + gasPrice: U64 + maturity: U32 + maxFee: U64 + witnessLimit: U64 +} + +type PredicateParameters { + maxGasPerPredicate: U64! + maxMessageDataLength: U64! + maxPredicateDataLength: U64! + maxPredicateLength: U64! +} + +type ProgramState { + data: HexString! + returnType: ReturnType! +} + +type Query { + balance( + """asset_id of the coin""" + assetId: AssetId! + """address of the owner""" + owner: Address! + ): Balance! + balances(after: String, before: String, filter: BalanceFilterInput!, first: Int, last: Int): BalanceConnection! + block( + """Height of the block""" + height: U32 + """ID of the block""" + id: BlockId + ): Block + blocks(after: String, before: String, first: Int, last: Int): BlockConnection! + chain: ChainInfo! + """Gets the coin by `utxo_id`.""" + coin( + """The ID of the coin""" + utxoId: UtxoId! + ): Coin + """ + Gets all unspent coins of some `owner` maybe filtered with by `asset_id` per page. + """ + coins(after: String, before: String, filter: CoinFilterInput!, first: Int, last: Int): CoinConnection! + """ + For each `query_per_asset`, get some spendable coins(of asset specified by the query) owned by + `owner` that add up at least the query amount. The returned coins can be spent. + The number of coins is optimized to prevent dust accumulation. + + The query supports excluding and maximum the number of coins. + + Returns: + The list of spendable coins per asset from the query. The length of the result is + the same as the length of `query_per_asset`. The ordering of assets and `query_per_asset` + is the same. + """ + coinsToSpend( + """The excluded coins from the selection.""" + excludedIds: ExcludeInput + """The `Address` of the coins owner.""" + owner: Address! + """ + The list of requested assets` coins with asset ids, `target` amount the user wants to reach, and the `max` number of coins in the selection. Several entries with the same asset id are not allowed. + """ + queryPerAsset: [SpendQueryElementInput!]! + ): [[CoinType!]!]! + contract( + """ID of the Contract""" + id: ContractId! + ): Contract + contractBalance(asset: AssetId!, contract: ContractId!): ContractBalance! + contractBalances(after: String, before: String, filter: ContractBalanceFilterInput!, first: Int, last: Int): ContractBalanceConnection! + """Estimate the predicate gas for the provided transaction""" + estimatePredicates(tx: HexString!): Transaction! + """Returns true when the GraphQL API is serving requests.""" + health: Boolean! + memory(id: ID!, size: U32!, start: U32!): String! + messageProof(commitBlockHeight: U32, commitBlockId: BlockId, nonce: Nonce!, transactionId: TransactionId!): MessageProof + messageStatus(nonce: Nonce!): MessageStatus! + messages( + after: String + before: String + first: Int + last: Int + """address of the owner""" + owner: Address + ): MessageConnection! + nodeInfo: NodeInfo! + register(id: ID!, register: U32!): U64! + transaction( + """The ID of the transaction""" + id: TransactionId! + ): Transaction + transactions(after: String, before: String, first: Int, last: Int): TransactionConnection! + transactionsByOwner(after: String, before: String, first: Int, last: Int, owner: Address!): TransactionConnection! +} + +type Receipt { + amount: U64 + assetId: AssetId + contract: Contract + contractId: ContractId + data: HexString + digest: Bytes32 + gas: U64 + gasUsed: U64 + is: U64 + len: U64 + nonce: Nonce + param1: U64 + param2: U64 + pc: U64 + ptr: U64 + ra: U64 + rb: U64 + rc: U64 + rd: U64 + reason: U64 + receiptType: ReceiptType! + recipient: Address + result: U64 + sender: Address + subId: Bytes32 + to: Contract + toAddress: Address + val: U64 +} + +enum ReceiptType { + BURN + CALL + LOG + LOG_DATA + MESSAGE_OUT + MINT + PANIC + RETURN + RETURN_DATA + REVERT + SCRIPT_RESULT + TRANSFER + TRANSFER_OUT +} + +enum ReturnType { + RETURN + RETURN_DATA + REVERT +} + +type RunResult { + breakpoint: OutputBreakpoint + jsonReceipts: [String!]! + state: RunState! +} + +enum RunState { + """Stopped on a breakpoint""" + BREAKPOINT + """All breakpoints have been processed, and the program has terminated""" + COMPLETED +} + +scalar Salt + +type ScriptParameters { + maxScriptDataLength: U64! + maxScriptLength: U64! +} + +scalar Signature + +input SpendQueryElementInput { + """Target amount for the query.""" + amount: U64! + """Identifier of the asset to spend.""" + assetId: AssetId! + """The maximum number of currencies for selection.""" + max: U32 +} + +type SqueezedOutStatus { + reason: String! +} + +type SubmittedStatus { + time: Tai64Timestamp! +} + +type Subscription { + """ + Returns a stream of status updates for the given transaction id. + If the current status is [`TransactionStatus::Success`], [`TransactionStatus::SqueezedOut`] + or [`TransactionStatus::Failed`] the stream will return that and end immediately. + If the current status is [`TransactionStatus::Submitted`] this will be returned + and the stream will wait for a future update. + + This stream will wait forever so it's advised to use within a timeout. + + It is possible for the stream to miss an update if it is polled slower + then the updates arrive. In such a case the stream will close without + a status. If this occurs the stream can simply be restarted to return + the latest status. + """ + statusChange( + """The ID of the transaction""" + id: TransactionId! + ): TransactionStatus! + """ + Submits transaction to the `TxPool` and await either confirmation or failure. + """ + submitAndAwait(tx: HexString!): TransactionStatus! +} + +type SuccessStatus { + block: Block! + programState: ProgramState + receipts: [Receipt!]! + time: Tai64Timestamp! + transactionId: TransactionId! +} + +scalar Tai64Timestamp + +type Transaction { + bytecodeLength: U64 + bytecodeWitnessIndex: Int + gasPrice: U64 + id: TransactionId! + inputAssetIds: [AssetId!] + inputContract: InputContract + inputContracts: [Contract!] + inputs: [Input!] + isCreate: Boolean! + isMint: Boolean! + isScript: Boolean! + maturity: U32 + mintAmount: U64 + mintAssetId: AssetId + outputContract: ContractOutput + outputs: [Output!]! + policies: Policies + """Return the transaction bytes using canonical encoding""" + rawPayload: HexString! + receipts: [Receipt!] + receiptsRoot: Bytes32 + salt: Salt + script: HexString + scriptData: HexString + scriptGasLimit: U64 + status: TransactionStatus + storageSlots: [HexString!] + txPointer: TxPointer + witnesses: [HexString!] +} + +type TransactionConnection { + """A list of edges.""" + edges: [TransactionEdge!]! + """A list of nodes.""" + nodes: [Transaction!]! + """Information to aid in pagination.""" + pageInfo: PageInfo! +} + +"""An edge in a connection.""" +type TransactionEdge { + """A cursor for use in pagination""" + cursor: String! + """The item at the end of the edge""" + node: Transaction! +} + +scalar TransactionId + +union TransactionStatus = FailureStatus | SqueezedOutStatus | SubmittedStatus | SuccessStatus + +type TxParameters { + maxGasPerTx: U64! + maxInputs: U8! + maxOutputs: U8! + maxSize: U64! + maxWitnesses: U32! +} + +scalar TxPointer + +scalar U8 + +scalar U32 + +scalar U64 + +scalar UtxoId + +type VariableOutput { + amount: U64! + assetId: AssetId! + to: Address! +} \ No newline at end of file diff --git a/packages/graphql-new/src/index.ts b/packages/graphql-new/src/index.ts new file mode 100644 index 000000000..489c17f87 --- /dev/null +++ b/packages/graphql-new/src/index.ts @@ -0,0 +1,6 @@ +import { GraphQLServer } from './graphql/GraphQLServer'; + +const graphQLServer = new GraphQLServer(); +const schema = graphQLServer.schema(); + +export { schema }; diff --git a/packages/graphql-new/src/infra/database/Db.ts b/packages/graphql-new/src/infra/database/Db.ts new file mode 100644 index 000000000..84bf504e1 --- /dev/null +++ b/packages/graphql-new/src/infra/database/Db.ts @@ -0,0 +1,61 @@ +import path from 'path'; +import { drizzle } from 'drizzle-orm/node-postgres'; +import { migrate } from 'drizzle-orm/node-postgres/migrator'; +import { Client } from 'pg'; +import { env } from '~/config'; + +import * as DbSchema from './DbSchema'; + +const DB_HOST = env.get('DB_HOST'); +const DB_PORT = env.get('DB_PORT'); +const DB_USER = env.get('DB_USER'); +const DB_PASS = env.get('DB_PASS'); +const DB_NAME = env.get('DB_NAME'); + +export class Db { + #connection: Client; + private static instance: Db; + + constructor() { + this.#connection = new Client({ + host: DB_HOST, + port: Number(DB_PORT), + user: DB_USER, + password: DB_PASS, + database: DB_NAME, + }); + } + + connection() { + return drizzle(this.#connection, { schema: DbSchema }); + } + + async connect() { + await this.#connection.connect(); + } + + async close() { + await this.#connection.end(); + } + + async migrate() { + await migrate(this.connection(), { + migrationsFolder: path.join(__dirname, '../../../drizzle'), + migrationsTable: 'migrations', + migrationsSchema: 'public', + }); + } + + connectionString() { + return `postgres://${DB_USER}:${DB_PASS}@${DB_HOST}:${DB_PORT}/${DB_NAME}`; + } + + static getInstance() { + if (!Db.instance) { + Db.instance = new Db(); + } + return Db.instance; + } +} + +export const db = Db.getInstance(); diff --git a/packages/graphql-new/src/infra/database/DbSchema.ts b/packages/graphql-new/src/infra/database/DbSchema.ts new file mode 100644 index 000000000..b1b671591 --- /dev/null +++ b/packages/graphql-new/src/infra/database/DbSchema.ts @@ -0,0 +1,7 @@ +export { BlocksTable } from '~/domain/Block/BlockModel'; +export { ContractsTable } from '~/domain/Contract/ContractModel'; +export { InputsTable } from '~/domain/Input/InputModel'; +export { OutputsTable } from '~/domain/Output/OutputModel'; +export { OperationsTable } from '~/domain/Operation/OperationModel'; +export { PredicatesTable } from '~/domain/Predicate/PredicateModel'; +export { TransactionsTable } from '~/domain/Transaction/TransactionModel'; diff --git a/packages/graphql-new/src/infra/queue/index.ts b/packages/graphql-new/src/infra/queue/index.ts new file mode 100644 index 000000000..bca1e9993 --- /dev/null +++ b/packages/graphql-new/src/infra/queue/index.ts @@ -0,0 +1,79 @@ +import PgBoss, { Job } from 'pg-boss'; +import { syncAllBlocks } from '~/application/uc/SyncAllBlocks'; +import { syncMissingBlocks } from '~/application/uc/SyncMissingBlocks'; +import { syncTransactions } from '~/application/uc/SyncTransaction'; +import { env } from '~/config'; +import { GQLBlock } from '~/graphql/generated/sdk'; + +const DB_HOST = env.get('DB_HOST'); +const DB_PORT = env.get('DB_PORT'); +const DB_USER = env.get('DB_USER'); +const DB_PASS = env.get('DB_PASS'); +const DB_NAME = env.get('DB_NAME'); + +export enum QueueNames { + SYNC_BLOCKS = 'indexer/sync:blocks', + SYNC_MISSING = 'indexer/sync:missing', + SYNC_TRANSACTION = 'indexer/sync:transaction', +} + +export type QueueInputs = { + [QueueNames.SYNC_BLOCKS]: { + first: number; + after?: number; + checkNext?: boolean; + }; + [QueueNames.SYNC_MISSING]: undefined; + [QueueNames.SYNC_TRANSACTION]: { + index: number; + block: GQLBlock; + txHash: string; + }; +}; + +export type QueueData = Job; + +export class Queue extends PgBoss { + static defaultJobOptions: PgBoss.RetryOptions = { + retryLimit: 100, + retryDelay: 1, + retryBackoff: false, + }; + + push( + queue: Q, + data: QueueInputs[Q], + options?: PgBoss.JobOptions, + ) { + console.log(`Pushing job to queue ${queue}`); + return this.send(queue, data as object, { + ...Queue.defaultJobOptions, + ...options, + }); + } + + pushBatch(queue: Q, data: Array) { + const jobs: Array> = data.map((job) => ({ + name: queue, + data: job, + ...Queue.defaultJobOptions, + })); + return this.insert(jobs); + } + + async setupWorkers() { + await this.start(); + this.work(QueueNames.SYNC_BLOCKS, syncAllBlocks); + this.work(QueueNames.SYNC_MISSING, syncMissingBlocks); + this.work(QueueNames.SYNC_TRANSACTION, syncTransactions); + console.log('⚡️ Queue running'); + } +} + +export const queue = new Queue({ + host: DB_HOST, + port: Number(DB_PORT), + user: DB_USER, + password: DB_PASS, + database: DB_NAME, +}); diff --git a/packages/graphql-new/src/infra/server/App.ts b/packages/graphql-new/src/infra/server/App.ts new file mode 100644 index 000000000..8a973cc72 --- /dev/null +++ b/packages/graphql-new/src/infra/server/App.ts @@ -0,0 +1,24 @@ +import cors from 'cors'; +import { Express } from 'express'; +import express from 'express'; +import { db } from '../database/Db'; +import { queue } from '../queue'; + +export class Server { + setup() { + const app = express(); + app.use(cors()); + app.use(express.json()); + return app; + } + + async listen(app: Express, port: number) { + await db.connect(); + await queue.setupWorkers(); + return new Promise((resolve) => { + app.listen(port, () => { + resolve(null); + }); + }); + } +} diff --git a/packages/graphql-new/src/infra/server/Program.ts b/packages/graphql-new/src/infra/server/Program.ts new file mode 100644 index 000000000..b162a538e --- /dev/null +++ b/packages/graphql-new/src/infra/server/Program.ts @@ -0,0 +1,83 @@ +import yargs from 'yargs/yargs'; +import { db } from '../database/Db'; +import { QueueNames, queue } from '../queue'; + +const PER_PAGE = 10; + +export class Program { + async create() { + yargs(process.argv.slice(2)) + .command({ + command: 'sync', + describe: 'Sync blocks from node', + builder: (yargs) => { + return yargs + .option('all', { + alias: 'a', + type: 'boolean', + default: false, + }) + .option('missing', { + alias: 'm', + type: 'boolean', + default: false, + }) + .option('from', { + alias: 'fl', + type: 'number', + default: null, + }) + .option('clean', { + alias: 'c', + type: 'boolean', + default: false, + }); + }, + handler: async (argv) => { + await this.sync(argv); + }, + }) + .command({ + command: 'migrate', + describe: 'Run migrations', + handler: async () => { + await db.connect(); + await db.migrate(); + await db.close(); + }, + }) + .help('help') + .parse(); + } + + async sync(argv: { + all: boolean; + missing: boolean; + from: number | null; + clean: boolean; + }) { + await db.connect(); + await queue.start(); + + if (argv.clean) { + await queue.deleteAllQueues(); + } + if (argv.missing) { + await queue.push(QueueNames.SYNC_MISSING, undefined); + } + if (argv.all) { + await queue.push(QueueNames.SYNC_BLOCKS, { + first: PER_PAGE, + }); + } + if (!argv.all && argv.from) { + await queue.push(QueueNames.SYNC_BLOCKS, { + after: argv.from, + first: PER_PAGE, + }); + } + + await queue.stop(); + await db.close(); + } +} diff --git a/packages/graphql-new/tsconfig.json b/packages/graphql-new/tsconfig.json new file mode 100644 index 000000000..b55cac439 --- /dev/null +++ b/packages/graphql-new/tsconfig.json @@ -0,0 +1,27 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@fuels/ts-config/base.json", + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "types": ["node"], + "jsx": "react-jsx", + "jsxImportSource": "hono/jsx", + "esModuleInterop": true, + "isolatedModules": true, + "outDir": "./dist", + "plugins": [ + { + "name": "ts-gql-plugin" + } + ], + "baseUrl": "./", + "paths": { + "~/*": ["src/*"] + } + }, + "exclude": ["node_modules", "generated"], + "include": ["src", "scripts", "*.config.*", "codegen.*"] +} diff --git a/packages/graphql-new/tsup.config.mjs b/packages/graphql-new/tsup.config.mjs new file mode 100644 index 000000000..356380b49 --- /dev/null +++ b/packages/graphql-new/tsup.config.mjs @@ -0,0 +1,15 @@ +import { defineConfig } from 'tsup'; + +const { SERVER_BUILD } = process.env; +const isServerBuild = SERVER_BUILD === 'true'; + +export default defineConfig(() => ({ + outDir: 'dist', + splitting: true, + format: ['esm', 'cjs'], + sourcemap: true, + clean: false, + dts: !isServerBuild, + minify: false, + entry: { index: 'src/index.ts' }, +})); diff --git a/packages/graphql/package.json b/packages/graphql/package.json index 0424a757a..2bd7c0b72 100644 --- a/packages/graphql/package.json +++ b/packages/graphql/package.json @@ -27,10 +27,10 @@ "@graphql-tools/stitch": "^9.0.3", "@graphql-tools/utils": "^10.0.13", "@luckycatfactory/esbuild-graphql-loader": "3.8.1", - "chokidar": "3.5.3", + "chokidar": "3.6.0", "cors": "^2.8.5", "dayjs": "1.11.10", - "dotenv": "16.4.1", + "dotenv": "16.4.4", "esbuild": "0.20.0", "ethers": "5.7.2", "express": "5.0.0-beta.1", @@ -50,23 +50,23 @@ "@babel/cli": "7.23.9", "@babel/core": "^7.23.9", "@fuels/ts-config": "^0.18.0", - "@graphql-codegen/cli": "5.0.1", - "@graphql-codegen/introspection": "4.0.1", - "@graphql-codegen/schema-ast": "4.0.1", - "@graphql-codegen/typescript": "4.0.2", + "@graphql-codegen/cli": "5.0.2", + "@graphql-codegen/introspection": "4.0.2", + "@graphql-codegen/schema-ast": "4.0.2", + "@graphql-codegen/typescript": "4.0.4", "@graphql-codegen/typescript-graphql-request": "6.2.0", - "@graphql-codegen/typescript-operations": "4.1.0", + "@graphql-codegen/typescript-operations": "4.1.2", "@parcel/watcher": "2.4.0", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/lodash": "4.14.202", - "@types/node": "^20.11.16", + "@types/node": "^20.11.19", "execa": "8.0.1", "graphql-codegen-typescript-common": "0.18.2", "graphql-codegen-typescript-mock-data": "3.7.1", "npm-run-all": "^4.1.5", "tsconfig-paths": "^4.2.0", - "tsup": "8.0.1", - "tsx": "4.7.0" + "tsup": "8.0.2", + "tsx": "4.7.1" } } diff --git a/packages/storybook-addon-theme/package.json b/packages/storybook-addon-theme/package.json index 226a33b58..14a153c80 100644 --- a/packages/storybook-addon-theme/package.json +++ b/packages/storybook-addon-theme/package.json @@ -32,9 +32,7 @@ "typings": "./dist/register.d.ts" } }, - "files": [ - "dist" - ] + "files": ["dist"] }, "scripts": { "build:lib": "tsup --dts", @@ -47,11 +45,11 @@ "@storybook/core-events": "^8.0.0-beta.5", "@storybook/manager-api": "8.0.0-beta.5", "@storybook/theming": "^8.0.0-beta.5", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "react": "18.2.0", + "react-dom": "18.2.0" }, "devDependencies": { - "@types/react": "^18.2.54", - "@types/react-dom": "^18.2.18" + "@types/react": "18.2.54", + "@types/react-dom": "18.2.22" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index a8faa9c98..f01b5a3de 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -11,9 +11,7 @@ }, "typesVersions": { "*": { - "tailwind-preset": [ - "./src/theme/tailwind-preset.ts" - ] + "tailwind-preset": ["./src/theme/tailwind-preset.ts"] } }, "publishConfig": { @@ -38,9 +36,7 @@ }, "./styles.css": "./dist/styles.css" }, - "files": [ - "dist" - ] + "files": ["dist"] }, "scripts": { "build:lib": "tsup --dts", @@ -65,19 +61,19 @@ "@radix-ui/react-toast": "1.1.5", "@radix-ui/react-toggle-group": "1.0.4", "@radix-ui/themes": "^2.0.3", - "@react-aria/focus": "3.16.0", + "@react-aria/focus": "3.16.2", "@tabler/icons-react": "2.47.0", "@tailwindcss/typography": "0.5.10", "clsx": "2.1.0", "csstype": "3.1.3", - "framer-motion": "11.0.3", + "framer-motion": "11.0.5", "geist": "1.2.2", "modern-normalize": "2.0.0", "next": "14.1.0", "radix-ui-themes-with-tailwind": "1.2.6", - "react": "^18.2.0", - "react-aria": "3.31.1", - "react-dom": "^18.2.0", + "react": "18.2.0", + "react-aria": "3.32.1", + "react-dom": "18.2.0", "react-number-format": "5.3.1", "react-stately": "3.29.1", "react-use": "17.5.0", @@ -101,10 +97,10 @@ "@storybook/testing-library": "^0.2.2", "@storybook/types": "^8.0.0-beta.5", "@types/lodash": "4.14.202", - "@types/react": "^18.2.54", - "@types/react-dom": "^18.2.18", + "@types/react": "18.2.54", + "@types/react-dom": "18.2.22", "autoprefixer": "10.4.17", - "globby": "14.0.0", + "globby": "14.0.1", "lodash": "^4.17.21", "postcss": "8.4.34", "postcss-import": "16.0.0", @@ -113,7 +109,7 @@ "tailwindcss": "3.4.1", "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "5.3.3", - "vite": "^5.0.12", + "vite": "^5.1.3", "vite-tsconfig-paths": "^4.3.1" } } diff --git a/packages/ui/scripts/create-defs.mjs b/packages/ui/scripts/create-defs.mjs index 8a1156dd1..0cdedad86 100644 --- a/packages/ui/scripts/create-defs.mjs +++ b/packages/ui/scripts/create-defs.mjs @@ -1,3 +1,4 @@ +// biome-ignore lint/correctness/noUnusedVariables: import { promises as fs } from 'fs'; import path from 'path'; import * as url from 'url'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 822a0074a..20574c8fe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,7 +32,7 @@ importers: version: 0.74.0(dexie@3.2.4) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + version: 29.7.0(ts-node@10.9.2) lint-staged: specifier: 15.2.2 version: 15.2.2 @@ -45,13 +45,13 @@ importers: version: 1.5.3 '@fuels/jest': specifier: ^0.18.0 - version: 0.18.0(@types/jest@29.5.12)(jest@29.7.0) + version: 0.18.0(@types/jest@29.5.12)(jest@29.7.0)(vitest@1.2.2) '@fuels/ts-config': specifier: ^0.18.0 version: 0.18.0(typescript@5.3.3) '@fuels/tsup-config': specifier: ^0.18.0 - version: 0.18.0(tsup@8.0.1) + version: 0.18.0(tsup@8.0.2) '@jest/types': specifier: 29.6.3 version: 29.6.3 @@ -62,41 +62,32 @@ importers: specifier: ^3.1.8 version: 3.1.8 '@openzeppelin/hardhat-upgrades': - specifier: ^3.0.2 - version: 3.0.2(ethers@6.11.0) + specifier: ^3.0.3 + version: 3.0.5(ethers@6.11.0) '@playwright/test': specifier: ^1.41.2 version: 1.41.2 '@swc/core': - specifier: 1.4.0 - version: 1.4.0 + specifier: 1.4.1 + version: 1.4.1 '@swc/jest': specifier: 0.2.36 - version: 0.2.36(@swc/core@1.4.0) + version: 0.2.36(@swc/core@1.4.1) '@types/jest': specifier: 29.5.12 version: 29.5.12 - '@types/node': - specifier: 20.11.16 - version: 20.11.16 - '@types/react': - specifier: ^18.2.54 - version: 18.2.54 - '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(typescript@5.3.3) + specifier: ^7.0.1 + version: 7.4.0(@typescript-eslint/parser@7.4.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(typescript@5.3.3) + specifier: ^7.0.1 + version: 7.4.0(typescript@5.3.3) '@xstate/cli': specifier: ^0.5.17 version: 0.5.17 dotenv: - specifier: ^16.4.1 - version: 16.4.1 + specifier: ^16.4.4 + version: 16.4.4 get-tsconfig: specifier: 4.7.2 version: 4.7.2 @@ -104,8 +95,8 @@ importers: specifier: ^0.3.5 version: 0.3.5 husky: - specifier: ^9.0.10 - version: 9.0.10 + specifier: ^9.0.11 + version: 9.0.11 jest-environment-jsdom: specifier: 29.7.0 version: 29.7.0 @@ -123,22 +114,25 @@ importers: version: 29.1.2(@babel/core@7.23.9)(@jest/types@29.6.3)(jest@29.7.0)(typescript@5.3.3) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3) + version: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) tsup: - specifier: 8.0.1 - version: 8.0.1(@swc/core@1.4.0)(postcss@8.4.33)(ts-node@10.9.2)(typescript@5.3.3) + specifier: 8.0.2 + version: 8.0.2(@swc/core@1.4.1)(ts-node@10.9.2)(typescript@5.3.3) tsx: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.7.1 + version: 4.7.1 turbo: - specifier: ^1.12.2 - version: 1.12.2 + specifier: ^1.12.4 + version: 1.13.0 typescript: specifier: 5.3.3 version: 5.3.3 updates: - specifier: ^15.1.1 - version: 15.1.1 + specifier: ^15.1.2 + version: 15.3.1 + vitest: + specifier: 1.2.2 + version: 1.2.2 contracts/predicate: dependencies: @@ -153,11 +147,11 @@ importers: specifier: 0.74.0 version: 0.74.0(dexie@3.2.4) tsx: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.7.1 + version: 4.7.1 vitest: specifier: 1.2.2 - version: 1.2.2(@types/node@20.11.16) + version: 1.2.2 docker/erc20-deployer/deployer: dependencies: @@ -173,7 +167,7 @@ importers: devDependencies: ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3) + version: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) packages/app-commons: dependencies: @@ -181,18 +175,18 @@ importers: specifier: workspace:* version: link:../ui react: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0 tailwind-variants: specifier: 0.1.20 version: 0.1.20(tailwindcss@3.4.1) devDependencies: '@types/react': - specifier: ^18.2.54 + specifier: 18.2.54 version: 18.2.54 '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 + specifier: 18.2.22 + version: 18.2.22 typescript: specifier: 5.3.3 version: 5.3.3 @@ -322,7 +316,7 @@ importers: version: 7.6.17(react-dom@18.2.0)(react@18.2.0) '@storybook/nextjs': specifier: ^8.0.0-beta.5 - version: 8.0.0-beta.5(@swc/core@1.4.0)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + version: 8.0.0-beta.5(@swc/core@1.4.1)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/react': specifier: ^8.0.0-beta.5 version: 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) @@ -339,17 +333,17 @@ importers: specifier: 9.3.4 version: 9.3.4 '@testing-library/jest-dom': - specifier: 6.3.0 - version: 6.3.0(@types/jest@29.5.12)(jest@29.7.0) + specifier: 6.4.2 + version: 6.4.2(@types/jest@29.5.12)(jest@29.7.0)(vitest@1.2.2) '@types/node': specifier: 20.11.6 version: 20.11.6 '@types/react': - specifier: ^18.2.48 + specifier: 18.2.54 version: 18.2.54 '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 + specifier: 18.2.22 + version: 18.2.22 '@types/react-window': specifier: 1.8.8 version: 1.8.8 @@ -358,13 +352,13 @@ importers: version: 0.5.17 autoprefixer: specifier: 10.4.17 - version: 10.4.17(postcss@8.4.33) + version: 10.4.17(postcss@8.4.35) postcss: - specifier: 8.4.33 - version: 8.4.33 + specifier: 8.4.35 + version: 8.4.35 postcss-import: - specifier: 16.0.0 - version: 16.0.0(postcss@8.4.33) + specifier: 16.0.1 + version: 16.0.1(postcss@8.4.35) radix-ui-themes-with-tailwind: specifier: 1.2.6 version: 1.2.6 @@ -388,16 +382,16 @@ importers: version: 4.1.0 tsup: specifier: 8.0.1 - version: 8.0.1(@swc/core@1.4.0)(postcss@8.4.33)(ts-node@10.9.2)(typescript@5.3.3) + version: 8.0.1(@swc/core@1.4.1)(postcss@8.4.35)(ts-node@10.9.2)(typescript@5.3.3) typescript: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@20.11.6) + specifier: ^5.1.3 + version: 5.2.6(@types/node@20.11.6) vite-tsconfig-paths: specifier: ^4.3.1 - version: 4.3.1(typescript@5.3.3)(vite@5.0.12) + version: 4.3.1(typescript@5.3.3)(vite@5.2.6) packages/app-portal: dependencies: @@ -418,7 +412,7 @@ importers: version: 0.1.0(fuels@0.74.0) '@fuels/react': specifier: ^0.18.0 - version: 0.18.0(@tanstack/react-query@5.0.5)(@types/react-dom@18.2.18)(@types/react@18.2.54)(fuels@0.74.0)(react-dom@18.2.0)(react@18.2.0) + version: 0.18.0(@tanstack/react-query@5.0.5)(@types/react-dom@18.2.22)(@types/react@18.2.54)(fuels@0.74.0)(react-dom@18.2.0)(react@18.2.0) '@fuels/react-xstore': specifier: ^0.18.0 version: 0.18.0(@types/react@18.2.54)(@xstate/react@3.2.2)(react-dom@18.2.0)(react@18.2.0)(xstate@4.38.3) @@ -487,11 +481,11 @@ importers: specifier: ^18.13.0 version: 18.19.14 '@types/react': - specifier: ^18.0.27 + specifier: 18.2.54 version: 18.2.54 '@types/react-dom': - specifier: ^18.0.10 - version: 18.2.18 + specifier: 18.2.22 + version: 18.2.22 '@xstate/cli': specifier: ^0.5.17 version: 0.5.17 @@ -562,8 +556,8 @@ importers: specifier: 3.8.1 version: 3.8.1(esbuild@0.20.0)(graphql-tag@2.12.6)(graphql@16.8.1) chokidar: - specifier: 3.5.3 - version: 3.5.3 + specifier: 3.6.0 + version: 3.6.0 cors: specifier: ^2.8.5 version: 2.8.5 @@ -571,8 +565,8 @@ importers: specifier: 1.11.10 version: 1.11.10 dotenv: - specifier: 16.4.1 - version: 16.4.1 + specifier: 16.4.4 + version: 16.4.4 esbuild: specifier: 0.20.0 version: 0.20.0 @@ -626,23 +620,23 @@ importers: specifier: ^0.18.0 version: 0.18.0(typescript@5.3.3) '@graphql-codegen/cli': - specifier: 5.0.1 - version: 5.0.1(@parcel/watcher@2.4.0)(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3) + specifier: 5.0.2 + version: 5.0.2(@parcel/watcher@2.4.0)(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3) '@graphql-codegen/introspection': - specifier: 4.0.1 - version: 4.0.1(graphql@16.8.1) + specifier: 4.0.2 + version: 4.0.2(graphql@16.8.1) '@graphql-codegen/schema-ast': - specifier: 4.0.1 - version: 4.0.1(graphql@16.8.1) - '@graphql-codegen/typescript': specifier: 4.0.2 version: 4.0.2(graphql@16.8.1) + '@graphql-codegen/typescript': + specifier: 4.0.4 + version: 4.0.4(graphql@16.8.1) '@graphql-codegen/typescript-graphql-request': specifier: 6.2.0 version: 6.2.0(graphql-request@6.1.0)(graphql-tag@2.12.6)(graphql@16.8.1) '@graphql-codegen/typescript-operations': - specifier: 4.1.0 - version: 4.1.0(graphql@16.8.1) + specifier: 4.1.2 + version: 4.1.2(graphql@16.8.1) '@parcel/watcher': specifier: 2.4.0 version: 2.4.0 @@ -656,8 +650,8 @@ importers: specifier: 4.14.202 version: 4.14.202 '@types/node': - specifier: ^20.11.16 - version: 20.11.16 + specifier: ^20.11.19 + version: 20.11.19 execa: specifier: 8.0.1 version: 8.0.1 @@ -674,11 +668,147 @@ importers: specifier: ^4.2.0 version: 4.2.0 tsup: - specifier: 8.0.1 - version: 8.0.1(@swc/core@1.4.0)(postcss@8.4.33)(ts-node@10.9.2)(typescript@5.3.3) + specifier: 8.0.2 + version: 8.0.2(@swc/core@1.4.1)(ts-node@10.9.2)(typescript@5.3.3) + tsx: + specifier: 4.7.1 + version: 4.7.1 + + packages/graphql-new: + dependencies: + '@graphql-tools/load': + specifier: 8.0.2 + version: 8.0.2(graphql@16.8.1) + '@graphql-tools/load-files': + specifier: 7.0.0 + version: 7.0.0(graphql@16.8.1) + '@graphql-tools/merge': + specifier: 9.0.3 + version: 9.0.3(graphql@16.8.1) + '@graphql-tools/schema': + specifier: ^10.0.2 + version: 10.0.2(graphql@16.8.1) + '@graphql-tools/stitch': + specifier: ^9.0.3 + version: 9.0.3(graphql@16.8.1) + '@graphql-tools/utils': + specifier: ^10.0.13 + version: 10.0.13(graphql@16.8.1) + '@types/cors': + specifier: ^2.8.17 + version: 2.8.17 + '@types/express': + specifier: ^4.17.21 + version: 4.17.21 + cors: + specifier: ^2.8.5 + version: 2.8.5 + dayjs: + specifier: 1.11.10 + version: 1.11.10 + dotenv: + specifier: 16.4.4 + version: 16.4.4 + drizzle-orm: + specifier: ^0.29.3 + version: 0.29.5(@types/pg@8.11.4)(pg@8.11.3) + ethers: + specifier: ^6.7.1 + version: 6.11.0 + express: + specifier: 5.0.0-beta.1 + version: 5.0.0-beta.1 + fuels: + specifier: 0.74.0 + version: 0.74.0(dexie@3.2.4) + graphql: + specifier: '>=16.8.1' + version: 16.8.1 + graphql-request: + specifier: 6.1.0 + version: 6.1.0(graphql@16.8.1) + graphql-tag: + specifier: ^2.12.6 + version: 2.12.6(graphql@16.8.1) + graphql-yoga: + specifier: 5.1.1 + version: 5.1.1(graphql@16.8.1) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + pg: + specifier: ^8.11.3 + version: 8.11.3 + pg-boss: + specifier: 9.0.3 + version: 9.0.3 + shallow-equal-object: + specifier: 1.1.1 + version: 1.1.1 + tai64: + specifier: ^1.0.0 + version: 1.0.0 + winston: + specifier: 3.11.0 + version: 3.11.0 + yargs: + specifier: 17.7.2 + version: 17.7.2 + zod: + specifier: 3.22.4 + version: 3.22.4 + devDependencies: + '@fuels/ts-config': + specifier: ^0.17.0 + version: 0.17.0(typescript@5.3.3) + '@graphql-codegen/cli': + specifier: ^5.0.2 + version: 5.0.2(@parcel/watcher@2.4.0)(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3) + '@graphql-codegen/introspection': + specifier: ^4.0.2 + version: 4.0.2(graphql@16.8.1) + '@graphql-codegen/schema-ast': + specifier: ^4.0.2 + version: 4.0.2(graphql@16.8.1) + '@graphql-codegen/typescript': + specifier: ^4.0.4 + version: 4.0.4(graphql@16.8.1) + '@graphql-codegen/typescript-graphql-request': + specifier: ^6.2.0 + version: 6.2.0(graphql-request@6.1.0)(graphql-tag@2.12.6)(graphql@16.8.1) + '@graphql-codegen/typescript-operations': + specifier: ^4.1.2 + version: 4.1.2(graphql@16.8.1) + '@types/lodash': + specifier: 4.14.202 + version: 4.14.202 + '@types/node': + specifier: ^20.11.19 + version: 20.11.19 + '@types/pg': + specifier: ^8.11.0 + version: 8.11.4 + drizzle-kit: + specifier: ^0.20.14 + version: 0.20.14 + gql-generator: + specifier: 2.0.0 + version: 2.0.0 + graphql-config: + specifier: 5.0.3 + version: 5.0.3(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3) + tsup: + specifier: 8.0.2 + version: 8.0.2(@swc/core@1.4.1)(ts-node@10.9.2)(typescript@5.3.3) tsx: - specifier: 4.7.0 - version: 4.7.0 + specifier: 4.7.1 + version: 4.7.1 + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages/notification-service: dependencies: @@ -711,7 +841,7 @@ importers: version: 6.1.0(nodemailer@6.9.9) ts-node: specifier: ^10.9.1 - version: 10.9.2(@swc/core@1.4.0)(@types/node@18.19.14)(typescript@5.3.3) + version: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) viem: specifier: ^0.3.36 version: 0.3.36(typescript@5.3.3) @@ -727,7 +857,7 @@ importers: version: 5.9.1 ts-node-dev: specifier: ^2.0.0 - version: 2.0.0(@swc/core@1.4.0)(@types/node@18.19.14)(typescript@5.3.3) + version: 2.0.0(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) tsconfig-paths: specifier: ^4.2.0 version: 4.2.0 @@ -753,18 +883,18 @@ importers: specifier: ^8.0.0-beta.5 version: 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0) react: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0 react-dom: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0(react@18.2.0) devDependencies: '@types/react': - specifier: ^18.2.54 + specifier: 18.2.54 version: 18.2.54 '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 + specifier: 18.2.22 + version: 18.2.22 packages/ui: dependencies: @@ -782,31 +912,31 @@ importers: version: 3.0.0 '@radix-ui/react-accordion': specifier: 1.1.2 - version: 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-aspect-ratio': specifier: 1.0.3 - version: 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-dialog': specifier: 1.0.5 - version: 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': specifier: 1.0.2 version: 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-tabs': specifier: 1.0.4 - version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toast': specifier: 1.1.5 - version: 1.1.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.1.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-toggle-group': specifier: 1.0.4 - version: 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/themes': specifier: ^2.0.3 - version: 2.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + version: 2.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@react-aria/focus': - specifier: 3.16.0 - version: 3.16.0(react@18.2.0) + specifier: 3.16.2 + version: 3.16.2(react@18.2.0) '@tabler/icons-react': specifier: 2.47.0 version: 2.47.0(react@18.2.0) @@ -820,8 +950,8 @@ importers: specifier: 3.1.3 version: 3.1.3 framer-motion: - specifier: 11.0.3 - version: 11.0.3(react-dom@18.2.0)(react@18.2.0) + specifier: 11.0.5 + version: 11.0.5(react-dom@18.2.0)(react@18.2.0) geist: specifier: 1.2.2 version: 1.2.2(next@14.1.0) @@ -835,13 +965,13 @@ importers: specifier: 1.2.6 version: 1.2.6 react: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0 react-aria: - specifier: 3.31.1 - version: 3.31.1(react-dom@18.2.0)(react@18.2.0) + specifier: 3.32.1 + version: 3.32.1(react-dom@18.2.0)(react@18.2.0) react-dom: - specifier: ^18.2.0 + specifier: 18.2.0 version: 18.2.0(react@18.2.0) react-number-format: specifier: 5.3.1 @@ -897,7 +1027,7 @@ importers: version: 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/react-vite': specifier: ^8.0.0-beta.5 - version: 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@5.0.12) + version: 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@5.2.6) '@storybook/testing-library': specifier: ^0.2.2 version: 0.2.2 @@ -908,17 +1038,17 @@ importers: specifier: 4.14.202 version: 4.14.202 '@types/react': - specifier: ^18.2.54 + specifier: 18.2.54 version: 18.2.54 '@types/react-dom': - specifier: ^18.2.18 - version: 18.2.18 + specifier: 18.2.22 + version: 18.2.22 autoprefixer: specifier: 10.4.17 version: 10.4.17(postcss@8.4.34) globby: - specifier: 14.0.0 - version: 14.0.0 + specifier: 14.0.1 + version: 14.0.1 lodash: specifier: ^4.17.21 version: 4.17.21 @@ -944,11 +1074,11 @@ importers: specifier: 5.3.3 version: 5.3.3 vite: - specifier: ^5.0.12 - version: 5.0.12(@types/node@20.11.16) + specifier: ^5.1.3 + version: 5.2.6(@types/node@20.11.6) vite-tsconfig-paths: specifier: ^4.3.1 - version: 4.3.1(typescript@5.3.3)(vite@5.0.12) + version: 4.3.1(typescript@5.3.3)(vite@5.2.6) packages: @@ -987,7 +1117,7 @@ packages: '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 '@babel/runtime': 7.24.0 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 babel-preset-fbjs: 3.4.0(@babel/core@7.23.9) chalk: 4.1.2 @@ -1089,7 +1219,7 @@ packages: slash: 2.0.0 optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 - chokidar: 3.5.3 + chokidar: 3.6.0 dev: true /@babel/code-frame@7.23.5: @@ -1115,10 +1245,10 @@ packages: '@babel/helpers': 7.23.9 '@babel/parser': 7.23.9 '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 7.6.0 @@ -1195,7 +1325,7 @@ packages: '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -1325,7 +1455,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color @@ -2425,23 +2555,6 @@ packages: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 - /@babel/traverse@7.23.9: - resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - /@babel/traverse@7.23.9(supports-color@5.5.0): resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} @@ -2458,7 +2571,6 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/types@7.23.9: resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} @@ -2627,7 +2739,6 @@ packages: /@colors/colors@1.6.0: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - dev: true /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -2649,7 +2760,7 @@ packages: chalk: 4.1.2 cypress: 12.17.3 dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) execa: 4.1.0 globby: 11.1.0 istanbul-lib-coverage: 3.2.2 @@ -2716,7 +2827,7 @@ packages: dependencies: '@babel/core': 7.23.9 bluebird: 3.7.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) lodash: 4.17.21 transitivePeerDependencies: - supports-color @@ -2731,11 +2842,25 @@ packages: - supports-color dev: true + /@dabh/diagnostics@2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} + dependencies: + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + dev: false + /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} dev: true + /@drizzle-team/studio@0.0.39: + resolution: {integrity: sha512-c5Hkm7MmQC2n5qAsKShjQrHoqlfGslB8+qWzsGGZ+2dHMRTNG60UuzalF0h0rvBax5uzPXuGkYLGaQ+TUX3yMw==} + dependencies: + superjson: 2.2.1 + dev: true + /@drptbl/gremlins.js@2.2.1: resolution: {integrity: sha512-VWsdOZTsu8ABNVplFQUniHSLsCAQIJh+HDTUP6CllxXBe2pgFQKQ6RGxAS/QRTUcPprQCGpB3zH+gqNnvRRTmQ==} dependencies: @@ -2890,6 +3015,20 @@ packages: tslib: 2.6.2 dev: false + /@esbuild-kit/core-utils@3.3.2: + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader@2.6.5: + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.7.2 + dev: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -2907,6 +3046,15 @@ packages: dev: false optional: true + /@esbuild/aix-ppc64@0.20.2: + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64@0.18.20: resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -2933,6 +3081,15 @@ packages: dev: false optional: true + /@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm@0.18.20: resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -2959,6 +3116,15 @@ packages: dev: false optional: true + /@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64@0.18.20: resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -2985,6 +3151,15 @@ packages: dev: false optional: true + /@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64@0.18.20: resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -3011,6 +3186,15 @@ packages: dev: false optional: true + /@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64@0.18.20: resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -3037,6 +3221,15 @@ packages: dev: false optional: true + /@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64@0.18.20: resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -3063,6 +3256,15 @@ packages: dev: false optional: true + /@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64@0.18.20: resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -3089,6 +3291,15 @@ packages: dev: false optional: true + /@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64@0.18.20: resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -3115,6 +3326,15 @@ packages: dev: false optional: true + /@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm@0.18.20: resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -3141,6 +3361,15 @@ packages: dev: false optional: true + /@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32@0.18.20: resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -3167,6 +3396,15 @@ packages: dev: false optional: true + /@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.18.20: resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -3193,6 +3431,15 @@ packages: dev: false optional: true + /@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el@0.18.20: resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -3219,6 +3466,15 @@ packages: dev: false optional: true + /@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64@0.18.20: resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -3245,6 +3501,15 @@ packages: dev: false optional: true + /@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64@0.18.20: resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -3271,6 +3536,15 @@ packages: dev: false optional: true + /@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x@0.18.20: resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -3297,7 +3571,16 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.18.20: + /@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] @@ -3323,6 +3606,15 @@ packages: dev: false optional: true + /@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64@0.18.20: resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -3349,6 +3641,15 @@ packages: dev: false optional: true + /@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64@0.18.20: resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -3375,6 +3676,15 @@ packages: dev: false optional: true + /@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64@0.18.20: resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -3401,6 +3711,15 @@ packages: dev: false optional: true + /@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64@0.18.20: resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -3427,6 +3746,15 @@ packages: dev: false optional: true + /@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32@0.18.20: resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -3453,6 +3781,15 @@ packages: dev: false optional: true + /@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64@0.18.20: resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -3479,6 +3816,15 @@ packages: dev: false optional: true + /@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0: resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4577,27 +4923,22 @@ packages: json-rpc-2.0: 1.7.0 dev: false - /@fuels/jest@0.18.0(@types/jest@29.5.12)(jest@29.7.0): + /@fuels/jest@0.18.0(@types/jest@29.5.12)(jest@29.7.0)(vitest@1.2.2): resolution: {integrity: sha512-Pd0ABGGf7TM7DioatxWiZneTu+wtOpbwNJIUu7qgpcubNSjaVq9YK9CbSY/oTd9ST3GUfTkTCMfR7+L+MgqHMQ==} peerDependencies: jest: ^29.6.4 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true dependencies: '@ariakit/test': 0.2.5(@testing-library/dom@9.3.4)(@testing-library/react@14.2.1)(react@18.2.0) '@chakra-ui/utils': 2.0.15 '@testing-library/dom': 9.3.4 - '@testing-library/jest-dom': 6.3.0(@types/jest@29.5.12)(jest@29.7.0) + '@testing-library/jest-dom': 6.4.2(@types/jest@29.5.12)(jest@29.7.0)(vitest@1.2.2) '@testing-library/react': 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': 14.5.2(@testing-library/dom@9.3.4) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 - dotenv: 16.4.1 + '@types/react-dom': 18.2.22 + dotenv: 16.4.4 identity-obj-proxy: 3.0.0 - jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest: 29.7.0(ts-node@10.9.2) jest-axe: 8.0.0 jest-environment-jsdom: 29.7.0 jest-fail-on-console: 3.1.2 @@ -4660,7 +5001,7 @@ packages: - ws dev: false - /@fuels/react@0.18.0(@tanstack/react-query@5.0.5)(@types/react-dom@18.2.18)(@types/react@18.2.54)(fuels@0.74.0)(react-dom@18.2.0)(react@18.2.0): + /@fuels/react@0.18.0(@tanstack/react-query@5.0.5)(@types/react-dom@18.2.22)(@types/react@18.2.54)(fuels@0.74.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-y9IZ4/ZlZ7gq+VZFGMDoV4EzHbSvfv8GLVtwU/qfRL3aduZbUwg3/lJ8wMNArB/W8+o633ZswDHjGXEw0JPHIA==} peerDependencies: '@tanstack/react-query': '>=5.0.0' @@ -4670,7 +5011,7 @@ packages: react: optional: true dependencies: - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': 5.0.5(react-dom@18.2.0)(react@18.2.0) events: 3.3.0 fuels: 0.74.0(dexie@3.2.4) @@ -4681,6 +5022,14 @@ packages: - react-dom dev: false + /@fuels/ts-config@0.17.0(typescript@5.3.3): + resolution: {integrity: sha512-OoEM1JHFCzWlOjsy/KG0T2RsQ8Z2uQVN8Y6qlszvZO0WzbLa8mJf1gFDayx0K0sv6SyABF0c17anNgsYf7ZM8Q==} + peerDependencies: + typescript: 5.2.2 + dependencies: + typescript: 5.3.3 + dev: true + /@fuels/ts-config@0.18.0(typescript@5.3.3): resolution: {integrity: sha512-xZos/RWXPdCdKk8ulyECnHHecl8C/ezstcJhqoQGo5w5PRXmcgVKYkkYj2p2U9dxnUJlcsCzjsRJfP+zw8gmcA==} peerDependencies: @@ -4689,15 +5038,15 @@ packages: typescript: 5.3.3 dev: true - /@fuels/tsup-config@0.18.0(tsup@8.0.1): + /@fuels/tsup-config@0.18.0(tsup@8.0.2): resolution: {integrity: sha512-Xye9MKd8HEp8wR5CfHyNJZ+iD6bZfc42Mjifm28qH6TwMisw8UJQYzSR4JmE0IW7Jhlb7T2uvDnt+FXPLX2mjw==} peerDependencies: tsup: ^7.2.0 dependencies: - dotenv: 16.4.1 + dotenv: 16.4.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - tsup: 8.0.1(@swc/core@1.4.0)(postcss@8.4.33)(ts-node@10.9.2)(typescript@5.3.3) + tsup: 8.0.2(@swc/core@1.4.1)(ts-node@10.9.2)(typescript@5.3.3) dev: true /@fuels/vm-asm@0.36.1: @@ -4707,18 +5056,18 @@ packages: /@fuels/vm-asm@0.42.1: resolution: {integrity: sha512-5e0IDHen26hrKc93ejYNDhQFbqi+EQ7xPpFJcUnSrz0+6zPdPhA2dtwh5UqN0fYDM5AcEFd0wpq+r7Pd2XS5AQ==} - /@graphql-codegen/add@5.0.1(graphql@16.8.1): - resolution: {integrity: sha512-u0G8+BdV5mcMFc6MJYobTP2HvNsj3aSPC0XY9DROCm0AEhZ57YDH6flSUE0wbNAc8+bcTg9WBfN+SzIPJdURUw==} + /@graphql-codegen/add@5.0.2(graphql@16.8.1): + resolution: {integrity: sha512-ouBkSvMFUhda5VoKumo/ZvsZM9P5ZTyDsI8LW18VxSNWOjrTeLXBWHG8Gfaai0HwhflPtCYVABbriEcOmrRShQ==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 dev: true - /@graphql-codegen/cli@5.0.1(@parcel/watcher@2.4.0)(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3): - resolution: {integrity: sha512-n6O2HsI0vUcj6ON8Z8rqvbBS5Jjs1ZWA/wx99f+5qEU0zvphhnzD0y+VapjszBl35qTfwxnAdQj9eGRMza0oTg==} + /@graphql-codegen/cli@5.0.2(@parcel/watcher@2.4.0)(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3): + resolution: {integrity: sha512-MBIaFqDiLKuO4ojN6xxG9/xL9wmfD3ZjZ7RsPjwQnSHBCUXnEkdKvX+JVpx87Pq29Ycn8wTJUguXnTZ7Di0Mlw==} hasBin: true peerDependencies: '@parcel/watcher': ^2.1.0 @@ -4730,18 +5079,18 @@ packages: '@babel/generator': 7.23.6 '@babel/template': 7.23.9 '@babel/types': 7.23.9 - '@graphql-codegen/client-preset': 4.2.0(graphql@16.8.1) - '@graphql-codegen/core': 4.0.1(graphql@16.8.1) - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) + '@graphql-codegen/client-preset': 4.2.5(graphql@16.8.1) + '@graphql-codegen/core': 4.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/apollo-engine-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/code-file-loader': 8.1.0(graphql@16.8.1) '@graphql-tools/git-loader': 8.0.4(graphql@16.8.1) - '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/github-loader': 8.0.0(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) - '@graphql-tools/load': 8.0.1(graphql@16.8.1) - '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.11.16)(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/load': 8.0.2(graphql@16.8.1) + '@graphql-tools/prisma-loader': 8.0.2(@types/node@20.11.19)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@parcel/watcher': 2.4.0 '@whatwg-node/fetch': 0.8.8 @@ -4750,7 +5099,7 @@ packages: debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.8.1 - graphql-config: 5.0.3(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3) + graphql-config: 5.0.3(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3) inquirer: 8.2.6 is-glob: 4.0.3 jiti: 1.21.0 @@ -4775,20 +5124,20 @@ packages: - utf-8-validate dev: true - /@graphql-codegen/client-preset@4.2.0(graphql@16.8.1): - resolution: {integrity: sha512-c4zereHPc0Z8uSjOUxQmaAsqyczHPSl8p4nzjYaTUssVxXCK5SMRJMdXQy8O5LNIh2bNw/Pdeq52diyMYcOftw==} + /@graphql-codegen/client-preset@4.2.5(graphql@16.8.1): + resolution: {integrity: sha512-hAdB6HN8EDmkoBtr0bPUN/7NH6svzqbcTDMWBCRXPESXkl7y80po+IXrXUjsSrvhKG8xkNXgJNz/2mjwHzywcA==} peerDependencies: graphql: '>=16.8.1' dependencies: '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.23.9 - '@graphql-codegen/add': 5.0.1(graphql@16.8.1) - '@graphql-codegen/gql-tag-operations': 4.0.2(graphql@16.8.1) - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/typed-document-node': 5.0.2(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.2(graphql@16.8.1) - '@graphql-codegen/typescript-operations': 4.1.0(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/add': 5.0.2(graphql@16.8.1) + '@graphql-codegen/gql-tag-operations': 4.0.6(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/typed-document-node': 5.0.6(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.6(graphql@16.8.1) + '@graphql-codegen/typescript-operations': 4.2.0(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) '@graphql-tools/documents': 1.0.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) @@ -4799,25 +5148,25 @@ packages: - supports-color dev: true - /@graphql-codegen/core@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-eNzIkDNne65TP7DU3uZjLv7RzEXaDF9RdevdjnTtNL2MMyJBLN/A+TpDeDZxvVHOU7fWkIcsTXTOUsX9vuwfNA==} + /@graphql-codegen/core@4.0.2(graphql@16.8.1): + resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/schema': 10.0.2(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 dev: true - /@graphql-codegen/gql-tag-operations@4.0.2(graphql@16.8.1): - resolution: {integrity: sha512-MZiPsb44yaLdmPmTRuUROrS9iq/nHFAZP+AJF5HSiqPZDhmP23ZeAJ0zJZmdB+nuzaz0epvLLAGUdI/9K+C29A==} + /@graphql-codegen/gql-tag-operations@4.0.6(graphql@16.8.1): + resolution: {integrity: sha512-y6iXEDpDNjwNxJw3WZqX1/Znj0QHW7+y8O+t2V8qvbTT+3kb2lr9ntc8By7vCr6ctw9tXI4XKaJgpTstJDOwFA==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 @@ -4827,13 +5176,13 @@ packages: - supports-color dev: true - /@graphql-codegen/introspection@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-HJEqo+NzX2t3gDMU9AxI4mALp9OD07EcWndwEvTXLG5WY0itIY6O6RjvDBFccH5nhA68CQWkvnDrA3PjPrs4tw==} + /@graphql-codegen/introspection@4.0.2(graphql@16.8.1): + resolution: {integrity: sha512-yx6SpiBYwrCI67inicHKhvOhrD4mSYQkIcUtGjvksqv7UC4JBj/YtvneupeNnd2Qxb7XXp4wk+Fnop9odRoQAA==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.1.2(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 transitivePeerDependencies: @@ -4869,8 +5218,8 @@ packages: tslib: 2.4.1 dev: true - /@graphql-codegen/plugin-helpers@5.0.2(graphql@16.8.1): - resolution: {integrity: sha512-EOnaofr43M87pT4UbXodWJNtKcm0SPfGNqrKb+7XPpWOXHnxuspj43X37S/gWg0vXkyuWzPTeZR8NQ5iXM0Kuw==} + /@graphql-codegen/plugin-helpers@5.0.3(graphql@16.8.1): + resolution: {integrity: sha512-yZ1rpULIWKBZqCDlvGIJRSyj1B2utkEdGmXZTBT/GVayP4hyRYlkd36AJV/LfEsVD8dnsKL5rLz2VTYmRNlJ5Q==} peerDependencies: graphql: '>=16.8.1' dependencies: @@ -4883,24 +5232,24 @@ packages: tslib: 2.6.2 dev: true - /@graphql-codegen/schema-ast@4.0.1(graphql@16.8.1): - resolution: {integrity: sha512-86TmF0f5JcL1GJdx7ZTYfS11KHnV0Luf6DnqsUmotBXbtRovdD/zhZBzwXTRoRs6MqBuP1pmIW6JCBejdsgIgQ==} + /@graphql-codegen/schema-ast@4.0.2(graphql@16.8.1): + resolution: {integrity: sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 tslib: 2.6.2 dev: true - /@graphql-codegen/typed-document-node@5.0.2(graphql@16.8.1): - resolution: {integrity: sha512-UOyC3GQdrZzYiYXkutr9RlVLqWQ4YDfD0dJlmCLgp+DIT8PtbKPlvHxWxbesLVYCgC6eCYE+RNYNfSvWCqMnSg==} + /@graphql-codegen/typed-document-node@5.0.6(graphql@16.8.1): + resolution: {integrity: sha512-US0J95hOE2/W/h42w4oiY+DFKG7IetEN1mQMgXXeat1w6FAR5PlIz4JrRrEkiVfVetZ1g7K78SOwBD8/IJnDiA==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.8.1 @@ -4930,14 +5279,46 @@ packages: - supports-color dev: true - /@graphql-codegen/typescript-operations@4.1.0(graphql@16.8.1): - resolution: {integrity: sha512-nSiGXFBETSJlvvHZXfXhRx0Q4FdFwiIZxDq4UzXH0rclOgp8LPtZTIU6LV2kwUIkZE5wM0TkEUhmGxP0r6FYQA==} + /@graphql-codegen/typescript-operations@4.1.2(graphql@16.8.1): + resolution: {integrity: sha512-CtCWK+gW7hS+Ely3lohr8CL1HVLswQzMcaUk3k1sxdWCWKTNq7abMsWa31rTVwRCJ+WNEkM/7S8sIBTpEG683A==} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.4(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.1.2(graphql@16.8.1) + auto-bind: 4.0.0 + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript-operations@4.2.0(graphql@16.8.1): + resolution: {integrity: sha512-lmuwYb03XC7LNRS8oo9M4/vlOrq/wOKmTLBHlltK2YJ1BO/4K/Q9Jdv/jDmJpNydHVR1fmeF4wAfsIp1f9JibA==} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/typescript': 4.0.6(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) + auto-bind: 4.0.0 + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/typescript@4.0.4(graphql@16.8.1): + resolution: {integrity: sha512-x79CKLfP9UQCX+/I78qxQlMs2Mmq3pF1lKafZo7lAno0f/fvJ+qWUduzdgjRNz+YL+5blGeWcC0pWEDxniO7hw==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/schema-ast': 4.0.2(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 4.1.2(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 tslib: 2.6.2 @@ -4946,14 +5327,14 @@ packages: - supports-color dev: true - /@graphql-codegen/typescript@4.0.2(graphql@16.8.1): - resolution: {integrity: sha512-FwglnSJgp7sd/qqkNIC247IF4WRd+5biAECA/6GAPkfIEnKbFiawZHmWwBMwWPIFhbc6/yyiN+GgOUjzObi08w==} + /@graphql-codegen/typescript@4.0.6(graphql@16.8.1): + resolution: {integrity: sha512-IBG4N+Blv7KAL27bseruIoLTjORFCT3r+QYyMC3g11uY3/9TPpaUyjSdF70yBe5GIQ6dAgDU+ENUC1v7EPi0rw==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) - '@graphql-codegen/schema-ast': 4.0.1(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 4.1.0(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-codegen/schema-ast': 4.0.2(graphql@16.8.1) + '@graphql-codegen/visitor-plugin-common': 5.1.0(graphql@16.8.1) auto-bind: 4.0.0 graphql: 16.8.1 tslib: 2.6.2 @@ -4983,12 +5364,33 @@ packages: - supports-color dev: true - /@graphql-codegen/visitor-plugin-common@4.1.0(graphql@16.8.1): - resolution: {integrity: sha512-V7Rc9DbkIfnDkwNHkK+FtdGefHTze3UcMg4788xQQhTtk6kjYuTNQ2p6qV6+VlU5+IbAfVnGLcscI6G58LF4xA==} + /@graphql-codegen/visitor-plugin-common@4.1.2(graphql@16.8.1): + resolution: {integrity: sha512-yk7iEAL1kYZ2Gi/pvVjdsZhul5WsYEM4Zcgh2Ev15VicMdJmPHsMhNUsZWyVJV0CaQCYpNOFlGD/11Ea3pn4GA==} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) + '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) + '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.8.1 + graphql-tag: 2.12.6(graphql@16.8.1) + parse-filepath: 1.0.2 + tslib: 2.6.2 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /@graphql-codegen/visitor-plugin-common@5.1.0(graphql@16.8.1): + resolution: {integrity: sha512-eamQxtA9bjJqI2lU5eYoA1GbdMIRT2X8m8vhWYsVQVWD3qM7sx/IqJU0kx0J3Vd4/CSd36BzL6RKwksibytDIg==} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-codegen/plugin-helpers': 5.0.2(graphql@16.8.1) + '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) '@graphql-tools/relay-operation-optimizer': 7.0.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) @@ -5104,7 +5506,7 @@ packages: - utf-8-validate dev: true - /@graphql-tools/executor-http@1.0.7(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/executor-http@1.0.7(@types/node@20.11.19)(graphql@16.8.1): resolution: {integrity: sha512-/MoRYzQS50Tz5mxRfq3ZmeZ2SOins9wGZAGetsJ55F3PxL0PmHdSGlCq12KzffZDbwHV5YMlwigBsSGWq4y9Iw==} engines: {node: '>=16.0.0'} peerDependencies: @@ -5115,7 +5517,7 @@ packages: '@whatwg-node/fetch': 0.9.16 extract-files: 11.0.0 graphql: 16.8.1 - meros: 1.3.0(@types/node@20.11.16) + meros: 1.3.0(@types/node@20.11.19) tslib: 2.6.2 value-or-promise: 1.0.12 transitivePeerDependencies: @@ -5169,14 +5571,14 @@ packages: - supports-color dev: true - /@graphql-tools/github-loader@8.0.0(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/github-loader@8.0.0(@types/node@20.11.19)(graphql@16.8.1): resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: '>=16.8.1' dependencies: '@ardatan/sync-fetch': 0.0.1 - '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/graphql-tag-pluck': 8.2.0(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@whatwg-node/fetch': 0.9.16 @@ -5212,7 +5614,7 @@ packages: '@babel/core': 7.23.9 '@babel/parser': 7.23.9 '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 @@ -5246,18 +5648,29 @@ packages: unixify: 1.0.0 dev: true - /@graphql-tools/load@8.0.1(graphql@16.8.1): - resolution: {integrity: sha512-qSMsKngJhDqRbuWyo3NvakEFqFL6+eSjy8ooJ1o5qYD26N7dqXkKzIMycQsX7rBK19hOuINAUSaRcVWH6hTccw==} + /@graphql-tools/load-files@7.0.0(graphql@16.8.1): + resolution: {integrity: sha512-P98amERIwI7FD8Bsq6xUbz9Mj63W8qucfrE/WQjad5jFMZYdFFt46a99FFdfx8S/ZYgpAlj/AZbaTtWLitMgNQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-tools/schema': 10.0.2(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + dev: false + + /@graphql-tools/load@8.0.2(graphql@16.8.1): + resolution: {integrity: sha512-S+E/cmyVmJ3CuCNfDuNF2EyovTwdWfQScXv/2gmvJOti2rGD8jTt9GYVzXaxhblLivQR9sBUCNZu/w7j7aXUCA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-tools/schema': 10.0.3(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) graphql: 16.8.1 p-limit: 3.1.0 tslib: 2.6.2 - dev: true /@graphql-tools/merge@9.0.1(graphql@16.8.1): resolution: {integrity: sha512-hIEExWO9fjA6vzsVjJ3s0cCQ+Q/BEeMVJZtMXd7nbaVefVy0YDyYlEkeoYYNV3NVVvu1G9lr6DM1Qd0DGo9Caw==} @@ -5269,6 +5682,16 @@ packages: graphql: 16.8.1 tslib: 2.6.2 + /@graphql-tools/merge@9.0.3(graphql@16.8.1): + resolution: {integrity: sha512-FeKv9lKLMwqDu0pQjPpF59GY3HReUkWXKsMIuMuJQOKh9BETu7zPEFUELvcw8w+lwZkl4ileJsHXC9+AnsT2Lw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + /@graphql-tools/optimize@1.4.0(graphql@16.8.1): resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} peerDependencies: @@ -5288,20 +5711,20 @@ packages: tslib: 2.6.2 dev: true - /@graphql-tools/prisma-loader@8.0.2(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/prisma-loader@8.0.2(@types/node@20.11.19)(graphql@16.8.1): resolution: {integrity: sha512-8d28bIB0bZ9Bj0UOz9sHagVPW+6AHeqvGljjERtwCnWl8OCQw2c2pNboYXISLYUG5ub76r4lDciLLTU+Ks7Q0w==} engines: {node: '>=16.0.0'} peerDependencies: graphql: '>=16.8.1' dependencies: - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@types/js-yaml': 4.0.9 '@types/json-stable-stringify': 1.0.36 '@whatwg-node/fetch': 0.9.16 chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) - dotenv: 16.4.1 + debug: 4.3.4(supports-color@5.5.0) + dotenv: 16.4.4 graphql: 16.8.1 graphql-request: 6.1.0(graphql@16.8.1) http-proxy-agent: 7.0.0 @@ -5362,6 +5785,18 @@ packages: tslib: 2.6.2 value-or-promise: 1.0.12 + /@graphql-tools/schema@10.0.3(graphql@16.8.1): + resolution: {integrity: sha512-p28Oh9EcOna6i0yLaCFOnkcBDQECVf3SCexT6ktb86QNj9idnkhI+tCxnwZDh58Qvjd2nURdkbevvoZkvxzCog==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: '>=16.8.1' + dependencies: + '@graphql-tools/merge': 9.0.3(graphql@16.8.1) + '@graphql-tools/utils': 10.0.13(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + /@graphql-tools/stitch@9.0.3(graphql@16.8.1): resolution: {integrity: sha512-G03XahiHDu1pnaS8z2GNfsV/5BribMEUATT5dCHBAqj13Te5y1amZNQePrmw8DLtbf5qDbU6CO7kGHPxv0XO9A==} engines: {node: '>=16.0.0'} @@ -5380,7 +5815,7 @@ packages: value-or-promise: 1.0.12 dev: false - /@graphql-tools/url-loader@8.0.1(@types/node@20.11.16)(graphql@16.8.1): + /@graphql-tools/url-loader@8.0.1(@types/node@20.11.19)(graphql@16.8.1): resolution: {integrity: sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==} engines: {node: '>=16.0.0'} peerDependencies: @@ -5389,7 +5824,7 @@ packages: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.3(graphql@16.8.1) '@graphql-tools/executor-graphql-ws': 1.1.0(graphql@16.8.1) - '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/executor-http': 1.0.7(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/executor-legacy-ws': 1.0.5(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) '@graphql-tools/wrap': 10.0.1(graphql@16.8.1) @@ -5507,8 +5942,14 @@ packages: '@swc/helpers': 0.5.6 dev: false - /@internationalized/message@3.1.1: - resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} + /@internationalized/date@3.5.2: + resolution: {integrity: sha512-vo1yOMUt2hzp63IutEaTUxROdvQg1qlMRsbCvbay2AK2Gai7wIgCyK5weEX3nHkiLgo4qCXHijFNC/ILhlRpOQ==} + dependencies: + '@swc/helpers': 0.5.6 + dev: false + + /@internationalized/message@3.1.2: + resolution: {integrity: sha512-MHAWsZWz8jf6jFPZqpTudcCM361YMtPIRu9CXkYmKjJ/0R3pQRScV5C0zS+Qi50O5UAm8ecKhkXx6mWDDcF6/g==} dependencies: '@swc/helpers': 0.5.6 intl-messageformat: 10.5.11 @@ -5520,12 +5961,24 @@ packages: '@swc/helpers': 0.5.6 dev: false + /@internationalized/number@3.5.1: + resolution: {integrity: sha512-N0fPU/nz15SwR9IbfJ5xaS9Ss/O5h1sVXMZf43vc9mxEG48ovglvvzBjF53aHlq20uoR6c+88CrIXipU/LSzwg==} + dependencies: + '@swc/helpers': 0.5.6 + dev: false + /@internationalized/string@3.2.0: resolution: {integrity: sha512-Xx3Sy3f2c9ctT+vh8c7euEaEHQZltp0euZ3Hy4UfT3E13r6lxpUS3kgKyumEjboJZSnaZv7JhqWz3D75v+IxQg==} dependencies: '@swc/helpers': 0.5.6 dev: false + /@internationalized/string@3.2.1: + resolution: {integrity: sha512-vWQOvRIauvFMzOO+h7QrdsJmtN1AXAFVcaLWP9AseRN2o7iHceZ6bIXhBD4teZl8i91A3gxKnWBlGgjCwU6MFQ==} + dependencies: + '@swc/helpers': 0.5.6 + dev: false + /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} @@ -5559,7 +6012,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -5579,14 +6032,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -5620,7 +6073,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-mock: 29.7.0 /@jest/expect-utils@29.7.0: @@ -5644,7 +6097,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -5675,7 +6128,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.22 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -5756,7 +6209,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -5767,7 +6220,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/yargs': 16.0.9 chalk: 4.1.2 dev: true @@ -5779,11 +6232,11 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/yargs': 17.0.32 chalk: 4.1.2 - /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.3)(vite@5.0.12): + /@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.3.3)(vite@5.2.6): resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} peerDependencies: typescript: '>= 4.3.x' @@ -5797,7 +6250,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.3.3) typescript: 5.3.3 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.2.6(@types/node@20.11.6) dev: true /@jridgewell/gen-mapping@0.3.3: @@ -6035,7 +6488,7 @@ packages: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) semver: 7.6.0 superstruct: 1.0.3 transitivePeerDependencies: @@ -6049,7 +6502,7 @@ packages: '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) pony-cause: 2.1.10 semver: 7.6.0 superstruct: 1.0.3 @@ -6273,7 +6726,7 @@ packages: '@ethersproject/address': 5.7.0 cbor: 8.1.0 chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fs-extra: 7.0.1 lodash: 4.17.21 semver: 7.6.0 @@ -6311,8 +6764,8 @@ packages: - encoding dev: true - /@openzeppelin/defender-sdk-base-client@1.9.0: - resolution: {integrity: sha512-ywxZslKaY7Z5z9APpBunIDp4nXkGnYZAStaIhzzh8vbbzu7lxiZO98tsX3B9vCefqWC4oyX0mm78CdyYUgW5KQ==} + /@openzeppelin/defender-sdk-base-client@1.11.0: + resolution: {integrity: sha512-HNcbRhbcMZZM5Ri5IfUwJaiJZGIrc0yboRZRlXJfG2aFS/EMfUFnQHC0tyyXtCOAoAZcn+iMlsSj5h8CoUeCfw==} dependencies: amazon-cognito-identity-js: 6.3.7 async-retry: 1.3.3 @@ -6320,11 +6773,21 @@ packages: - encoding dev: true - /@openzeppelin/defender-sdk-deploy-client@1.9.0(debug@4.3.4): - resolution: {integrity: sha512-xw3qRJzE3XQRBoBBqOC7VOEtaVnzeN9EgsBZSjWlDUcmfJ6jdUuUsoqEkwYBZVEi+Dr3ujURY2DsmEvs0gFoNw==} + /@openzeppelin/defender-sdk-deploy-client@1.11.0(debug@4.3.4): + resolution: {integrity: sha512-ELYVihsrTOlH7Sy5C/+Yf64hV3ICeTY2OcczOWVQ/o6rHBWKSnHSZCE/oB1cfOpyg/gCrCLXozs4NyrS5z3GUw==} dependencies: - '@ethersproject/abi': 5.7.0 - '@openzeppelin/defender-sdk-base-client': 1.9.0 + '@openzeppelin/defender-sdk-base-client': 1.11.0 + axios: 1.6.7(debug@4.3.4) + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + dev: true + + /@openzeppelin/defender-sdk-network-client@1.11.0(debug@4.3.4): + resolution: {integrity: sha512-CPy1TA6RyFYtACbvXZJhJpsYW2u4yxTSNU8cVIw1lH/9iArXzfWuJ2p8Deidc0sJBbMeJYkv1AvqTBJNifjKMg==} + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.11.0 axios: 1.6.7(debug@4.3.4) lodash: 4.17.21 transitivePeerDependencies: @@ -6332,8 +6795,8 @@ packages: - encoding dev: true - /@openzeppelin/hardhat-upgrades@3.0.2(ethers@6.11.0): - resolution: {integrity: sha512-Fk940cxwew++bfSZKWHEXVUCr3tRBiRZZBw1nl1wUVq29cq7BrlwDkZ6hTab/+p0IOnx0l6HJHLu3amDxxs3/w==} + /@openzeppelin/hardhat-upgrades@3.0.5(ethers@6.11.0): + resolution: {integrity: sha512-7Klg1B6fH45+7Zxzr6d9mLqudrL9Uk6CUG5AeG5NckPfP4ZlQRo1squcQ8yJPwqDS8rQjfChiqKDelp4LTjyZQ==} hasBin: true peerDependencies: '@nomicfoundation/hardhat-ethers': ^3.0.0 @@ -6346,15 +6809,16 @@ packages: dependencies: '@openzeppelin/defender-admin-client': 1.54.1(debug@4.3.4) '@openzeppelin/defender-base-client': 1.54.1(debug@4.3.4) - '@openzeppelin/defender-sdk-base-client': 1.9.0 - '@openzeppelin/defender-sdk-deploy-client': 1.9.0(debug@4.3.4) + '@openzeppelin/defender-sdk-base-client': 1.11.0 + '@openzeppelin/defender-sdk-deploy-client': 1.11.0(debug@4.3.4) + '@openzeppelin/defender-sdk-network-client': 1.11.0(debug@4.3.4) '@openzeppelin/upgrades-core': 1.32.4 chalk: 4.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) ethereumjs-util: 7.1.5 ethers: 6.11.0 proper-lockfile: 4.1.2 - undici: 5.28.3 + undici: 6.10.2 transitivePeerDependencies: - bufferutil - encoding @@ -6369,7 +6833,7 @@ packages: cbor: 9.0.2 chalk: 4.1.2 compare-versions: 6.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) ethereumjs-util: 7.1.5 minimist: 1.2.8 proper-lockfile: 4.1.2 @@ -6643,16 +7107,16 @@ packages: /@radix-ui/number@1.0.1: resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 dev: false /@radix-ui/primitive@1.0.1: resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 dev: false - /@radix-ui/react-accessible-icon@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-accessible-icon@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-duVGKeWPSUILr/MdlPxV+GeULTc2rS1aihGdQ3N2qCUPMgxYLxvAsHJM3mCVLF8d5eK+ympmB22mb1F3a5biNw==} peerDependencies: '@types/react': '*' @@ -6669,15 +7133,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-accordion@1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fDG7jcoNKVjSK6yfmuAs0EnPDro0WMXIhMtXdTBWqEioVW206ku+4Lw07e+13lUkFkpoEQ2PdeMIAGpdqEAmDg==} peerDependencies: '@types/react': '*' @@ -6696,21 +7160,21 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collapsible': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-alert-dialog@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==} peerDependencies: '@types/react': '*' @@ -6727,20 +7191,20 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-arrow@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==} peerDependencies: '@types/react': '*' @@ -6757,15 +7221,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-aspect-ratio@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fXR5kbMan9oQqMuacfzlGG/SQMcmMlZ4wrvpckv8SgUulD0MMpspxJrxg/Gp/ISV3JfV1AeSWTYK9GvxA4ySwA==} peerDependencies: '@types/react': '*' @@ -6783,14 +7247,14 @@ packages: optional: true dependencies: '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-avatar@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-kVK2K7ZD3wwj3qhle0ElXhOjbezIgyl2hVvgwfIdexL3rN6zJmy5AqqIf+D31lxVppdzV8CjAfZ6PklkmInZLw==} peerDependencies: '@types/react': '*' @@ -6807,18 +7271,18 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-checkbox@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-CBuGQa52aAYnADZVt/KBQzXrwx6TqnlwtcIPGtVt5JkkzQwMOLJjPukimhfKEr4GQNd43C+djUh5Ikopj8pSLg==} peerDependencies: '@types/react': '*' @@ -6835,22 +7299,22 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collapsible@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UBmVDkmR6IvDsloHVN+3rtx4Mi5TFvylYXpluuv0f37dtaz3H99bp8No0LGXRigVpl3UAT4l9j6bIchh42S/Gg==} peerDependencies: '@types/react': '*' @@ -6867,22 +7331,22 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-collection@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==} peerDependencies: '@types/react': '*' @@ -6899,13 +7363,13 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -6921,11 +7385,11 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 - /@radix-ui/react-context-menu@2.1.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-context-menu@2.1.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-R5XaDj06Xul1KGb+WP8qiOh7tKJNz2durpLBXAGZjSVtctcRFCuEvy2gtMwRJGePwQQE5nV77gs4FwRi8T+r2g==} peerDependencies: '@types/react': '*' @@ -6942,15 +7406,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -6966,12 +7430,12 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false - /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dialog@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==} peerDependencies: '@types/react': '*' @@ -6992,17 +7456,17 @@ packages: '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -7020,12 +7484,12 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false - /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==} peerDependencies: '@types/react': '*' @@ -7042,19 +7506,19 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-dropdown-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==} peerDependencies: '@types/react': '*' @@ -7071,16 +7535,16 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-menu': 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -7096,12 +7560,12 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false - /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-focus-scope@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==} peerDependencies: '@types/react': '*' @@ -7118,17 +7582,17 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-form@0.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-form@0.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-kgE+Z/haV6fxE5WqIXj05KkaXa3OkZASoTDy25yX2EIp/x0c54rOH/vFr5nOZTg7n7T1z8bSyXmiVIFP9bbhPQ==} peerDependencies: '@types/react': '*' @@ -7145,20 +7609,20 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-label': 2.0.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-label': 2.0.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-hover-card@1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-hover-card@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-OcUN2FU0YpmajD/qkph3XzMcK/NmSk9hGWnjV68p6QiZMgILugusgQwnLSDs3oFSJYGKf3Y49zgFedhGh04k9A==} peerDependencies: '@types/react': '*' @@ -7175,18 +7639,18 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -7202,13 +7666,13 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 react: 18.2.0 dev: false - /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==} peerDependencies: '@types/react': '*' @@ -7225,15 +7689,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-menu@2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==} peerDependencies: '@types/react': '*' @@ -7250,32 +7714,32 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(@types/react@18.2.54)(react@18.2.0) dev: false - /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popover@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==} peerDependencies: '@types/react': '*' @@ -7292,29 +7756,29 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(@types/react@18.2.54)(react@18.2.0) dev: false - /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-popper@1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==} peerDependencies: '@types/react': '*' @@ -7331,24 +7795,24 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/rect': 1.0.1 '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-portal@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==} peerDependencies: '@types/react': '*' @@ -7365,15 +7829,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==} peerDependencies: '@types/react': '*' @@ -7390,16 +7854,16 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==} peerDependencies: '@types/react': '*' @@ -7416,15 +7880,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-radio-group@1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==} peerDependencies: '@types/react': '*' @@ -7441,24 +7905,24 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-roving-focus@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==} peerDependencies: '@types/react': '*' @@ -7475,23 +7939,23 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-scroll-area@1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==} peerDependencies: '@types/react': '*' @@ -7508,23 +7972,23 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-select@2.0.0(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==} peerDependencies: '@types/react': '*' @@ -7541,35 +8005,35 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(@types/react@18.2.54)(react@18.2.0) dev: false - /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-separator@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==} peerDependencies: '@types/react': '*' @@ -7586,15 +8050,15 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-slider@1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-slider@1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==} peerDependencies: '@types/react': '*' @@ -7611,20 +8075,20 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -7645,7 +8109,7 @@ packages: '@types/react': 18.2.54 react: 18.2.0 - /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-switch@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==} peerDependencies: '@types/react': '*' @@ -7662,21 +8126,21 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tabs@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==} peerDependencies: '@types/react': '*' @@ -7698,17 +8162,17 @@ packages: '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toast@1.1.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==} peerDependencies: '@types/react': '*' @@ -7727,24 +8191,24 @@ packages: dependencies: '@babel/runtime': 7.23.9 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle-group@1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Uaj/M/cMyiyT9Bx6fOZO0SAG4Cls0GptBWiBmBxofmDbNVnYYoyRWj/2M/6VCi/7qcXFWnHhRUfdfZFvvkuu8A==} peerDependencies: '@types/react': '*' @@ -7765,17 +8229,17 @@ packages: '@radix-ui/primitive': 1.0.1 '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-toggle@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-Pkqg3+Bc98ftZGsl60CLANXQBBQ4W3mTFS9EJvNxKMZ7magklKV69/id1mlAlOFDDfHvlCms0fx8fA4CMKDJHg==} peerDependencies: '@types/react': '*' @@ -7792,17 +8256,17 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==} peerDependencies: '@types/react': '*' @@ -7819,21 +8283,21 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/primitive': 1.0.1 '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-context': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-id': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popper': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-presence': 1.0.1(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -7849,7 +8313,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false @@ -7865,7 +8329,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 react: 18.2.0 @@ -7882,7 +8346,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 react: 18.2.0 @@ -7899,7 +8363,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false @@ -7915,7 +8379,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/react': 18.2.54 react: 18.2.0 dev: false @@ -7931,7 +8395,7 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/rect': 1.0.1 '@types/react': 18.2.54 react: 18.2.0 @@ -7948,13 +8412,13 @@ packages: react: optional: true dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.54)(react@18.2.0) '@types/react': 18.2.54 react: 18.2.0 dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} peerDependencies: '@types/react': '*' @@ -7971,10 +8435,10 @@ packages: react-dom: optional: true dependencies: - '@babel/runtime': 7.23.9 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.24.0 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -7982,10 +8446,10 @@ packages: /@radix-ui/rect@1.0.1: resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 dev: false - /@radix-ui/themes@2.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): + /@radix-ui/themes@2.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-yaXQ8aWT2P1CQ0Xe6YCRD9HXsfMTvKkrIYkrc4aitCzhGTLS0sjtTqKmrxIWMVA+3DIbEuG9K/8aAMRJBhep8g==} peerDependencies: '@types/react': '*' @@ -8004,74 +8468,74 @@ packages: dependencies: '@radix-ui/colors': 3.0.0 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-accessible-icon': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-alert-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-aspect-ratio': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-avatar': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-context-menu': 2.1.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-accessible-icon': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-alert-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-aspect-ratio': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-avatar': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-checkbox': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-context-menu': 2.1.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dialog': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-direction': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-form': 0.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-hover-card': 1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-scroll-area': 1.0.5(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-select': 2.0.0(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slider': 1.1.2(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-dropdown-menu': 2.0.6(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-form': 0.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-hover-card': 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-popover': 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-portal': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-radio-group': 1.1.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-scroll-area': 1.0.5(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 2.0.0(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-slider': 1.1.2(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-slot': 1.0.2(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-switch': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tabs': 1.0.4(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-tooltip': 1.0.7(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.54)(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@18.2.22)(@types/react@18.2.54)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.54 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 classnames: 2.5.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/breadcrumbs@3.5.9(react@18.2.0): - resolution: {integrity: sha512-asbXTL5NjeHl1+YIF0K70y8tNHk8Lb6VneYH8yOkpLO49ejyNDYBK0tp0jtI9IZAQiTa2qkhYq58c9LloTwebQ==} + /@react-aria/breadcrumbs@3.5.11(react@18.2.0): + resolution: {integrity: sha512-bQz4g2tKvcWxeqPGj9O0RQf++Ka8f2o/pJMJB+QQ27DVQWhxpQpND//oFku2aFYkxHB/fyD9qVoiqpQR25bidw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/link': 3.6.3(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/breadcrumbs': 3.7.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/link': 3.6.5(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/breadcrumbs': 3.7.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/button@3.9.1(react@18.2.0): - resolution: {integrity: sha512-nAnLMUAnwIVcRkKzS1G2IU6LZSkIWPJGu9amz/g7Y02cGUwFp3lk5bEw2LdoaXiSDJNSX8g0SZFU8FROg57jfQ==} + /@react-aria/button@3.9.3(react@18.2.0): + resolution: {integrity: sha512-ZXo2VGTxfbaTEnfeIlm5ym4vYpGAy8sGrad8Scv+EyDAJWLMKokqctfaN6YSWbqUApC3FN63IvMqASflbmnYig==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/toggle': 3.7.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/toggle': 3.7.2(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/calendar@3.5.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8k7khgea5kwfWriZJWCADNB0R2d7g5A6tTjUEktK4FFZcTb0RCubFejts4hRyzKlF9XHUro2dfh6sbZrzfMKDQ==} + /@react-aria/calendar@3.5.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PA0Ur5WcODMn7t2gCUvq61YktkB+WlSZjzDr5kcY3sdl53ZjiyqCa2hYgrb6R0J859LVJXAp+5Qaproz8g1oLA==} peerDependencies: react: '*' react-dom: '*' @@ -8081,43 +8545,44 @@ packages: react-dom: optional: true dependencies: - '@internationalized/date': 3.5.1 - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/calendar': 3.4.3(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/calendar': 3.4.3(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/date': 3.5.2 + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/calendar': 3.4.4(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/calendar': 3.4.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/checkbox@3.13.0(react@18.2.0): - resolution: {integrity: sha512-eylJwtADIPKJ1Y5rITNJm/8JD8sXG2nhiZBIg1ko44Szxrpu+Le53NoGtg8nlrfh9vbUrXVvuFtf2jxbPXR5Jw==} + /@react-aria/checkbox@3.14.1(react@18.2.0): + resolution: {integrity: sha512-b4rtrg5SpRSa9jBOqzJMmprJ+jDi3KyVvUh+DsvISe5Ti7gVAhMBgnca1D0xBp22w2jhk/o4gyu1bYxGLum0GA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/form': 3.0.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/toggle': 3.10.0(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/checkbox': 3.6.1(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-stately/toggle': 3.7.0(react@18.2.0) - '@react-types/checkbox': 3.6.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/form': 3.0.3(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/toggle': 3.10.2(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/checkbox': 3.6.3(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/toggle': 3.7.2(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/combobox@3.8.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-q8Kdw1mx6nSSydXqRagRuyKH1NPGvpSOFjUfgxdO8ZqaEEuZX3ObOoiO/DLtXDndViNc03dMbMpfuJoLYXfCtg==} + /@react-aria/combobox@3.8.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HyTWIo2B/0xq0Of+sDEZCfJyf4BvCvDYIWG4UhjqL1kHIHIGQyyr+SldbVUjXVYnk8pP1eGB3ttiREujjjALPQ==} peerDependencies: react: '*' react-dom: '*' @@ -8127,27 +8592,27 @@ packages: react-dom: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/textfield': 3.14.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/combobox': 3.8.1(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/combobox': 3.10.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.3(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/combobox': 3.8.2(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/combobox': 3.10.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/datepicker@3.9.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bdlY2H/zwe3hQf64Lp1oGTf7Va8ennDyAv4Ffowb+BOoL8+FB9smtGyONKe87zXu7VJL2M5xYAi4n7c004PM+w==} + /@react-aria/datepicker@3.9.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1AjCAizd88ACKjVNhFazX4HZZFwWi2rsSlGCTm66Nx6wm5N/Cpbm466dpYEFyQUsKSOG4CC65G1zfYoMPe48MQ==} peerDependencies: react: '*' react-dom: '*' @@ -8157,30 +8622,30 @@ packages: react-dom: optional: true dependencies: - '@internationalized/date': 3.5.1 - '@internationalized/number': 3.5.0 - '@internationalized/string': 3.2.0 - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/form': 3.0.1(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/datepicker': 3.9.1(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/calendar': 3.4.3(react@18.2.0) - '@react-types/datepicker': 3.7.1(react@18.2.0) - '@react-types/dialog': 3.5.7(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/date': 3.5.2 + '@internationalized/number': 3.5.1 + '@internationalized/string': 3.2.1 + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/form': 3.0.3(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/spinbutton': 3.6.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/datepicker': 3.9.2(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/calendar': 3.4.4(react@18.2.0) + '@react-types/datepicker': 3.7.2(react@18.2.0) + '@react-types/dialog': 3.5.8(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/dialog@3.5.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-H2BNVLOfaum6/4irH5XUU/wIcXSs/ymxmTPGmucRG1hzaUh8H3tupdl/qCZ+SsW9oYDFlphY172uM1nsPjBMiQ==} + /@react-aria/dialog@3.5.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7UJR/h/Y364u6Ltpw0bT51B48FybTuIBacGpEJN5IxZlpxvQt0KQcBDiOWfAa/GQogw4B5hH6agaOO0nJcP49Q==} peerDependencies: react: '*' react-dom: '*' @@ -8190,18 +8655,18 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/dialog': 3.5.7(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/dialog': 3.5.8(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/dnd@3.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7OPGePdle+xNYHAIAUOvIETRMfnkRt7h/C0bCkxUR2GYefEbTzfraso4ppNH2JZ7fCRd0K/Qe+jvQklwusHAKA==} + /@react-aria/dnd@3.5.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0gi6sRnr97fSQnGy+CMt+99/+vVqr+qv2T9Ts8X9TAzxHNokz5QfSL88QSlTU36EnAVLxPY18iZQWCExSjKpEQ==} peerDependencies: react: '*' react-dom: '*' @@ -8211,54 +8676,54 @@ packages: react-dom: optional: true dependencies: - '@internationalized/string': 3.2.0 - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/dnd': 3.2.7(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/string': 3.2.1 + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/dnd': 3.2.8(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/focus@3.16.0(react@18.2.0): - resolution: {integrity: sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==} + /@react-aria/focus@3.16.2(react@18.2.0): + resolution: {integrity: sha512-Rqo9ummmgotESfypzFjI3uh58yMpL+E+lJBbQuXkBM0u0cU2YYzu0uOrFrq3zcHk997udZvq1pGK/R+2xk9B7g==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 clsx: 2.1.0 react: 18.2.0 dev: false - /@react-aria/form@3.0.1(react@18.2.0): - resolution: {integrity: sha512-6586oODMDR4/ciGRwXjpvEAg7tWGSDrXE//waK0n5e5sMuzlPOo1DHc5SpPTvz0XdJsu6VDt2rHdVWVIC9LEyw==} + /@react-aria/form@3.0.3(react@18.2.0): + resolution: {integrity: sha512-5Q2BHE4TTPDzGY2npCzpRRYshwWUb3SMUA/Cbz7QfEtBk+NYuVaq3KjvqLqgUUdyKtqLZ9Far0kIAexloOC4jw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/grid@3.8.6(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JlQDkdm5heG1FfRyy5KnB8b6s/hRqSI6Xt2xN2AccLX5kcbfFr2/d5KVxyf6ahfa4Gfd46alN6477ju5eTWJew==} + /@react-aria/grid@3.8.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7Bzbya4tO0oIgqexwRb8D6ZdC0GASYq9f/pnkrqocgvG9e1SCld4zOioKbYQDvAK/NnbCgXmmdqFAcLM/iazaA==} peerDependencies: react: '*' react-dom: '*' @@ -8268,26 +8733,26 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/grid': 3.8.4(react@18.2.0) - '@react-stately/selection': 3.14.2(react@18.2.0) - '@react-stately/virtualizer': 3.6.6(react@18.2.0) - '@react-types/checkbox': 3.6.0(react@18.2.0) - '@react-types/grid': 3.2.3(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/grid': 3.8.5(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-stately/virtualizer': 3.6.8(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) + '@react-types/grid': 3.2.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/gridlist@3.7.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-rkkepYM7xJiebR0g3uC4zzkdR7a8z0fLaM+sg9lSTbdElHMLAlrebS2ytEyZnhiu9nbOnw13GN1OC4/ZenzbHQ==} + /@react-aria/gridlist@3.7.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RmHEJ++vngHYEWbUCtLLmGh7H3vNd2Y9S0q/9SgHFPbqPZycT5mxDZ2arqpOXeHRVRvPBaW9ZlMxI2bPOePrYw==} peerDependencies: react: '*' react-dom: '*' @@ -8297,86 +8762,86 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/list': 3.10.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/grid': 3.8.8(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/i18n@3.10.0(react@18.2.0): - resolution: {integrity: sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==} + /@react-aria/i18n@3.10.2(react@18.2.0): + resolution: {integrity: sha512-Z1ormoIvMOI4mEdcFLYsoJy9w/EzBdBmgfLP+S/Ah+1xwQOXpgwZxiKOhYHpWa0lf6hkKJL34N9MHJvCJ5Crvw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@internationalized/date': 3.5.1 - '@internationalized/message': 3.1.1 - '@internationalized/number': 3.5.0 - '@internationalized/string': 3.2.0 - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/date': 3.5.2 + '@internationalized/message': 3.1.2 + '@internationalized/number': 3.5.1 + '@internationalized/string': 3.2.1 + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/interactions@3.20.1(react@18.2.0): - resolution: {integrity: sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==} + /@react-aria/interactions@3.21.1(react@18.2.0): + resolution: {integrity: sha512-AlHf5SOzsShkHfV8GLLk3v9lEmYqYHURKcXWue0JdYbmquMRkUsf/+Tjl1+zHVAQ8lKqRnPYbTmc4AcZbqxltw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/label@3.7.4(react@18.2.0): - resolution: {integrity: sha512-3Y0yyrqpLzZdzHw+TOyzwuyx5wa2ujU5DGfKuL5GFnU9Ii4DtdwBGSYS7Yu7qadU+eQmG4OGhAgFVswbIgIwJw==} + /@react-aria/label@3.7.6(react@18.2.0): + resolution: {integrity: sha512-ap9iFS+6RUOqeW/F2JoNpERqMn1PvVIo3tTMrJ1TY1tIwyJOxdCBRgx9yjnPBnr+Ywguep+fkPNNi/m74+tXVQ==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/link@3.6.3(react@18.2.0): - resolution: {integrity: sha512-8kPWc4u/lDow3Ll0LDxeMgaxt9Y3sl8UldKLGli8tzRSltYFugNh/n+i9sCnmo4Qv9Tp9kYv+yxBK50Uk9sINw==} + /@react-aria/link@3.6.5(react@18.2.0): + resolution: {integrity: sha512-kg8CxKqkciQFzODvLAfxEs8gbqNXFZCW/ISOE2LHYKbh9pA144LVo71qO3SPeYVVzIjmZeW4vEMdZwqkNozecw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/link': 3.5.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/link': 3.5.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/listbox@3.11.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-PBrnldmyEYUUJvfDeljW8ITvZyBTfGpLNf0b5kfBPK3TDgRH4niEH2vYEcaZvSqb0FrpdvcunuTRXcOpfb+gCQ==} + /@react-aria/listbox@3.11.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-y3a3zQYjT+JKgugCMMKS7K9sRoCoP1Z6Fiiyfd77OHXWzh9RlnvWGsseljynmbxLzSuPwFtCYkU1Jz4QwsPUIg==} peerDependencies: react: '*' react-dom: '*' @@ -8386,27 +8851,27 @@ packages: react-dom: optional: true dependencies: - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/list': 3.10.2(react@18.2.0) - '@react-types/listbox': 3.4.6(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-types/listbox': 3.4.7(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/live-announcer@3.3.1: - resolution: {integrity: sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==} + /@react-aria/live-announcer@3.3.2: + resolution: {integrity: sha512-aOyPcsfyY9tLCBhuUaYCruwcd1IrYLc47Ou+J7wMzjeN9v4lsaEfiN12WFl8pDqOwfy6/7It2wmlm5hOuZY8wQ==} dependencies: '@swc/helpers': 0.5.6 dev: false - /@react-aria/menu@3.12.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Nsujv3b61WR0gybDKnBjAeyxDVJOfPLMggRUf9SQDfPWnrPXEsAFxaPaVcAkzlfI4HiQs1IxNwsKFNpc3PPZTQ==} + /@react-aria/menu@3.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jF80YIcvD16Fgwm5pj7ViUE3Dj7z5iewQixLaFVdvpgfyE58SD/ZVU9/JkK5g/03DYM0sjpUKZGkdFxxw8eKnw==} peerDependencies: react: '*' react-dom: '*' @@ -8416,40 +8881,40 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/menu': 3.6.0(react@18.2.0) - '@react-stately/tree': 3.7.5(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/menu': 3.9.6(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/menu': 3.6.1(react@18.2.0) + '@react-stately/tree': 3.7.6(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/menu': 3.9.7(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/meter@3.4.9(react@18.2.0): - resolution: {integrity: sha512-1/FHFmFmSyfQBJ2oH152lp4nps76v1UdhnFbIsmRIH+0g0IfMv1yDT2M9dIZ/b9DgVZSx527FmWOXm0eHGKD6w==} + /@react-aria/meter@3.4.11(react@18.2.0): + resolution: {integrity: sha512-P1G3Jdh0f/uieUDqvc3Ee4wzqBJa7H077BVSC3KPRqEp6YY7JimZGWjOwbFlO2PXhryXm/dI8EzUmh+4ZXjq/g==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/progress': 3.4.9(react@18.2.0) - '@react-types/meter': 3.3.6(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/progress': 3.4.11(react@18.2.0) + '@react-types/meter': 3.3.7(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/numberfield@3.10.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-KjGTXq3lIhN4DEdEeHzfS/k9Qq0sDEpLgLr/hgSfGN4Q7Syu4Ck/n2HXmrDn//z08/wNvcukuP6Ioers138DcQ==} + /@react-aria/numberfield@3.11.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JQ1Z+Ho5H+jeav7jt9A4vBsIQR/Dd2CFbObrULjGkqSrnWjARFZBv3gZwmfGCtplEPeAv9buYKHAqebPtJNUww==} peerDependencies: react: '*' react-dom: '*' @@ -8459,23 +8924,23 @@ packages: react-dom: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/textfield': 3.14.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-stately/numberfield': 3.8.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/numberfield': 3.7.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/spinbutton': 3.6.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.3(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/numberfield': 3.9.1(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/numberfield': 3.8.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/overlays@3.20.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==} + /@react-aria/overlays@3.21.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-djEBDF+TbIIOHWWNpdm19+z8xtY8U+T+wKVQg/UZ6oWnclSqSWeGl70vu73Cg4HVBJ4hKf1SRx4Z/RN6VvH4Yw==} peerDependencies: react: '*' react-dom: '*' @@ -8485,80 +8950,80 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-aria/visually-hidden': 3.8.8(react@18.2.0) - '@react-stately/overlays': 3.6.4(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/overlays': 3.8.4(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-aria/visually-hidden': 3.8.10(react@18.2.0) + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/overlays': 3.8.5(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/progress@3.4.9(react@18.2.0): - resolution: {integrity: sha512-CME1ZLsJHOmSgK8IAPOC/+vYO5Oc614mkEw5MluT/yclw5rMyjAkK1XsHLjEXy81uwPeiRyoQQIMPKG2/sMxFQ==} + /@react-aria/progress@3.4.11(react@18.2.0): + resolution: {integrity: sha512-RePHbS15/KYFiApYLdwazwvWKsB9q0Kn5DGCSb0hqCC+k2Eui8iVVOsegswiP+xqkk/TiUCIkBEw22W3Az4kTg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/progress': 3.5.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/progress': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/radio@3.10.0(react@18.2.0): - resolution: {integrity: sha512-6NaKzdGymdcVWLYgHT0cHsVmNzPOp89o8r41w29OPBQWu8w2c9mxg4366OiIZn/uXIBS4abhQ4nL4toBRLgBrg==} + /@react-aria/radio@3.10.2(react@18.2.0): + resolution: {integrity: sha512-CTUTR+qt3BLjmyQvKHZuVm+1kyvT72ZptOty++sowKXgJApTLdjq8so1IpaLAr8JIfzqD5I4tovsYwIQOX8log==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/form': 3.0.1(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/radio': 3.10.1(react@18.2.0) - '@react-types/radio': 3.7.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/form': 3.0.3(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/radio': 3.10.2(react@18.2.0) + '@react-types/radio': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/searchfield@3.7.1(react@18.2.0): - resolution: {integrity: sha512-ebhnV/reNByIZzpcQLHIo1RQ+BrYS8HdwX624i9R7dep1gxGHXYEaqL9aSY+RdngNerB4OeiWmB75em9beSpjQ==} + /@react-aria/searchfield@3.7.3(react@18.2.0): + resolution: {integrity: sha512-mnYI969R7tU3yMRIGmY1+peq7tmEW0W3MB/J2ImK36Obz/91tTtspHHEeFtPlQDLIyvVPB0Ucam4LIxCKPJm/Q==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/textfield': 3.14.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/searchfield': 3.5.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/searchfield': 3.5.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/textfield': 3.14.3(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/searchfield': 3.5.1(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/searchfield': 3.5.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/select@3.14.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pAy/+Xbj11Lx6bi/O1hWH0NSIDRxFb6V7N0ry2L8x7MALljh516VbpnAc5RgvbjbuKq0cHUAcdINOzOzpYWm4A==} + /@react-aria/select@3.14.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9KCxI41FI+jTxEfUzRsMdJsZvjkCuuhL4UHig8MZXtXs0nsi7Ir3ezUDQ9m5MSG+ooBYM/CA9DyLDvo5Ioef+g==} peerDependencies: react: '*' react-dom: '*' @@ -8568,26 +9033,26 @@ packages: react-dom: optional: true dependencies: - '@react-aria/form': 3.0.1(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-aria/visually-hidden': 3.8.8(react@18.2.0) - '@react-stately/select': 3.6.1(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/select': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/form': 3.0.3(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-aria/visually-hidden': 3.8.10(react@18.2.0) + '@react-stately/select': 3.6.2(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/select': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/selection@3.17.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xl2sgeGH61ngQeE05WOWWPVpGRTPMjQEFmsAWEprArFi4Z7ihSZgpGX22l1w7uSmtXM/eN/v0W8hUYUju5iXlQ==} + /@react-aria/selection@3.17.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-gO5jBUkc7WdkiFMlWt3x9pTSuj3Yeegsxfo44qU5NPlKrnGtPRZDWrlACNgkDHu645RNNPhlyoX0C+G8mUg1xA==} peerDependencies: react: '*' react-dom: '*' @@ -8597,53 +9062,53 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/selection': 3.14.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/separator@3.3.9(react@18.2.0): - resolution: {integrity: sha512-1wEXiaSJjq2+DR5TC0RKnUBsfZN+YXTzyI7XMzjQoc3YlclumX8wQtzPAOGOEjHB1JKUgo1Gw70FtupVXz58QQ==} + /@react-aria/separator@3.3.11(react@18.2.0): + resolution: {integrity: sha512-UTla+3P2pELpP73WSfbwZgP1y1wODFBQbEOHnUxxO8ocyaUyQLJdvc07bBLLpPoyutlggRG0v9ACo0Rui7AjOg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/slider@3.7.4(react@18.2.0): - resolution: {integrity: sha512-OFJWeGSL2duVDFs/kcjlWsY6bqCVKZgM0aFn2QN4wmID+vfBvBnqGHAgWv3BCePTAPS3+GBjMN002TrftorjwQ==} + /@react-aria/slider@3.7.6(react@18.2.0): + resolution: {integrity: sha512-ZeZhyHzhk9gxGuThPKgX2K3RKsxPxsFig1iYoJvqP8485NtHYQIPht2YcpEKA9siLxGF0DR9VCfouVhSoW0AEA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/slider': 3.5.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/slider': 3.7.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/slider': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/slider': 3.7.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/spinbutton@3.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-u5GuOP3k4Zis055iY0fZJNHU7dUNCoSfUq5LKwJ1iNaCqDcavdstAnAg+X1a7rhpp5zCnJmAMseo3Qmzi9P+Ew==} + /@react-aria/spinbutton@3.6.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IlfhRu/pc9zOt2C5zSEB7NmmzddvWisGx2iGzw8BwIKMD+cN3uy+Qwp+sG6Z/JzFEBN0F6Mxm3l5lhbiqjpICQ==} peerDependencies: react: '*' react-dom: '*' @@ -8653,18 +9118,18 @@ packages: react-dom: optional: true dependencies: - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/ssr@3.9.1(react@18.2.0): - resolution: {integrity: sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==} + /@react-aria/ssr@3.9.2(react@18.2.0): + resolution: {integrity: sha512-0gKkgDYdnq1w+ey8KzG9l+H5Z821qh9vVjztk55rUg71vTk/Eaebeir+WtzcLLwTjw3m/asIjx8Y59y1lJZhBw==} engines: {node: '>= 12'} peerDependencies: react: '*' @@ -8676,23 +9141,23 @@ packages: react: 18.2.0 dev: false - /@react-aria/switch@3.6.0(react@18.2.0): - resolution: {integrity: sha512-YNWc5fGLNXE4XlmDAKyqAdllRiClGR7ki4KGFY7nL+xR5jxzjCGU3S3ToMK5Op3QSMGZLxY/aYmC4O+MvcoADQ==} + /@react-aria/switch@3.6.2(react@18.2.0): + resolution: {integrity: sha512-X5m/omyhXK+V/vhJFsHuRs2zmt9Asa/RuzlldbXnWohLdeuHMPgQnV8C9hg3f+sRi3sh9UUZ64H61pCtRoZNwg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/toggle': 3.10.0(react@18.2.0) - '@react-stately/toggle': 3.7.0(react@18.2.0) - '@react-types/switch': 3.5.0(react@18.2.0) + '@react-aria/toggle': 3.10.2(react@18.2.0) + '@react-stately/toggle': 3.7.2(react@18.2.0) + '@react-types/switch': 3.5.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/table@3.13.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-AzmETpyxwNqISTzwHJPs85x9gujG40IIsSOBUdp49oKhB85RbPLvMwhadp4wCVAoHw3erOC/TJxHtVc7o2K1LA==} + /@react-aria/table@3.13.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-P2nHEDk2CCoEbMFKNCyBC9qvmv7F/IXARDt/7z/J4mKFgU2iNSK+/zw6yrb38q33Zlk8hDaqSYNxHlMrh+/1MQ==} peerDependencies: react: '*' react-dom: '*' @@ -8702,28 +9167,28 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/live-announcer': 3.3.1 - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-aria/visually-hidden': 3.8.8(react@18.2.0) - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/flags': 3.0.0 - '@react-stately/table': 3.11.4(react@18.2.0) - '@react-stately/virtualizer': 3.6.6(react@18.2.0) - '@react-types/checkbox': 3.6.0(react@18.2.0) - '@react-types/grid': 3.2.3(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/table': 3.9.2(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/grid': 3.8.8(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.2 + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-aria/visually-hidden': 3.8.10(react@18.2.0) + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/flags': 3.0.1 + '@react-stately/table': 3.11.6(react@18.2.0) + '@react-stately/virtualizer': 3.6.8(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) + '@react-types/grid': 3.2.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/table': 3.9.3(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/tabs@3.8.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Plw0K/5Qv35vYq7pHZFfQB2BF5OClFx4Abzo9hLVx4oMy3qb7i5lxmLBVbt81yPX/MdjYeP4zO1EHGBl4zMRhA==} + /@react-aria/tabs@3.8.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Jvt33/W+66n5oCxVwHAYarJ3Fit61vULiPcG7uTez0Mf11cq/C72wOrj+ZuNz6PTLTi2veBNQ7MauY72SnOjRg==} peerDependencies: react: '*' react-dom: '*' @@ -8733,20 +9198,20 @@ packages: react-dom: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/tabs': 3.6.3(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/tabs': 3.3.4(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/tabs': 3.6.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/tabs': 3.3.5(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/tag@3.3.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-w7d8sVZqxTo8VFfeg2ixLp5kawtrcguGznVY4mt5aE6K8LMJOeNVDqNNfolfyia80VjOWjeX+RpVdVJRdrv/GQ==} + /@react-aria/tag@3.3.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tlJD9qj1XcsPIZD7DVJ6tWv8t7Z87/8qkbRDx7ugNqeHso9z0WqH9ZkSt17OFUWE2IQIk3V8D3iBSOtmhXcZGQ==} peerDependencies: react: '*' react-dom: '*' @@ -8756,102 +9221,102 @@ packages: react-dom: optional: true dependencies: - '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/list': 3.10.2(react@18.2.0) - '@react-types/button': 3.9.1(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/gridlist': 3.7.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-types/button': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@react-aria/textfield@3.14.1(react@18.2.0): - resolution: {integrity: sha512-UMepuYtDdCgrUF4dMphNxrUm23xOmR54aZD1pbp9cJyfioVkJN35BTXZVkD0D07gHLn4RhxKIZxBortQQrLB9g==} + /@react-aria/textfield@3.14.3(react@18.2.0): + resolution: {integrity: sha512-wPSjj/mTABspYQdahg+l5YMtEQ3m5iPCTtb5g6nR1U1rzJkvS4i5Pug6PUXeLeMz2H3ToflPWGlNOqBioAFaOQ==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/form': 3.0.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/form': 3.0.0(react@18.2.0) - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/textfield': 3.9.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/form': 3.0.3(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/textfield': 3.9.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/toggle@3.10.0(react@18.2.0): - resolution: {integrity: sha512-6cUf4V9TuG2J7AvXUdU/GspEPFCubUOID3mrselSe563RViy+mMZk0vUEOdyoNanDcEXl58W4dE3SGWxFn71vg==} + /@react-aria/toggle@3.10.2(react@18.2.0): + resolution: {integrity: sha512-DgitscHWgI6IFgnvp2HcMpLGX/cAn+XX9kF5RJQbRQ9NqUgruU5cEEGSOLMrEJ6zXDa2xmOiQ+kINcyNhA+JLg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/toggle': 3.7.0(react@18.2.0) - '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/toggle': 3.7.2(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/tooltip@3.7.0(react@18.2.0): - resolution: {integrity: sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==} + /@react-aria/tooltip@3.7.2(react@18.2.0): + resolution: {integrity: sha512-6jXOSGPao3gPgUQWLbH2r/jxGMqIaIKrJgfwu9TQrh+UkwwiTYW20EpEDCYY2nRFlcoi7EYAiPDSEbHCwXS7Lg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-stately/tooltip': 3.4.6(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/tooltip': 3.4.6(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-stately/tooltip': 3.4.7(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/tooltip': 3.4.7(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-aria/utils@3.23.0(react@18.2.0): - resolution: {integrity: sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==} + /@react-aria/utils@3.23.2(react@18.2.0): + resolution: {integrity: sha512-yznR9jJ0GG+YJvTMZxijQwVp+ahP66DY0apZf7X+dllyN+ByEDW+yaL1ewYPIpugxVzH5P8jhnBXsIyHKN411g==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 clsx: 2.1.0 react: 18.2.0 dev: false - /@react-aria/visually-hidden@3.8.8(react@18.2.0): - resolution: {integrity: sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==} + /@react-aria/visually-hidden@3.8.10(react@18.2.0): + resolution: {integrity: sha512-np8c4wxdbE7ZrMv/bnjwEfpX0/nkWy9sELEb0sK8n4+HJ+WycoXXrVxBUb9tXgL/GCx5ReeDQChjQWwajm/z3A==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false @@ -8879,6 +9344,22 @@ packages: react: 18.2.0 dev: false + /@react-stately/calendar@3.4.4(react@18.2.0): + resolution: {integrity: sha512-f9ZOd096gGGD+3LmU1gkmfqytGyQtrgi+Qjn+70GbM2Jy65pwOR4I9YrobbmeAFov5Tff13mQEa0yqWvbcDLZQ==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@internationalized/date': 3.5.2 + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/calendar': 3.4.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/checkbox@3.6.1(react@18.2.0): resolution: {integrity: sha512-rOjFeVBy32edYwhKiHj3ZLdLeO+xZ2fnBwxnOBjcygnw4Neygm8FJH/dB1J0hdYYR349yby86ED2x0wRc84zPw==} peerDependencies: @@ -8895,6 +9376,22 @@ packages: react: 18.2.0 dev: false + /@react-stately/checkbox@3.6.3(react@18.2.0): + resolution: {integrity: sha512-hWp0GXVbMI4sS2NbBjWgOnHNrRqSV4jeftP8zc5JsIYRmrWBUZitxluB34QuVPzrBO29bGsF0GTArSiQZt6BWw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/collections@3.10.4(react@18.2.0): resolution: {integrity: sha512-OHhCrItGt4zB2bSrgObRo0H2SC7QlkH8ReGxo+NVIWchXRLRoiWBP7S+IwleewEo5gOqDVPY3hqA9n4iiI8twg==} peerDependencies: @@ -8908,6 +9405,19 @@ packages: react: 18.2.0 dev: false + /@react-stately/collections@3.10.5(react@18.2.0): + resolution: {integrity: sha512-k8Q29Nnvb7iAia1QvTanZsrWP2aqVNBy/1SlE6kLL6vDqtKZC+Esd1SDLHRmIcYIp5aTdfwIGd0NuiRQA7a81Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/combobox@3.8.1(react@18.2.0): resolution: {integrity: sha512-FaWkqTXQdWg7ptaeU4iPcqF/kxbRg2ZNUcvW/hiL/enciV5tRCsddvfNqvDvy1L30z9AUwlp9MWqzm/DhBITCw==} peerDependencies: @@ -8928,6 +9438,26 @@ packages: react: 18.2.0 dev: false + /@react-stately/combobox@3.8.2(react@18.2.0): + resolution: {integrity: sha512-f+IHuFW848VoMbvTfSakn2WIh2urDxO355LrKxnisXPCkpQHpq3lvT2mJtKJwkPxjAy7xPjpV8ejgga2R6p53Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-stately/select': 3.6.2(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/combobox': 3.10.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/data@3.11.0(react@18.2.0): resolution: {integrity: sha512-0BlPT58WrAtUvpiEfUuyvIsGFTzp/9vA5y+pk53kGJhOdc5tqBGHi9cg40pYE/i1vdHJGMpyHGRD9nkQb8wN3Q==} peerDependencies: @@ -8960,6 +9490,25 @@ packages: react: 18.2.0 dev: false + /@react-stately/datepicker@3.9.2(react@18.2.0): + resolution: {integrity: sha512-Z6FrK6Af7R5BizqHhJFCj3Hn32mg5iLSDdEgFQAuO043guOXUKFUAnbxfbQUjL6PGE6QwWMfQD7PPGebHn9Ifw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@internationalized/date': 3.5.2 + '@internationalized/string': 3.2.1 + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/datepicker': 3.7.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/dnd@3.2.7(react@18.2.0): resolution: {integrity: sha512-QqSCvE9Rhp+Mr8Mt/SrByze24BFX1cy7gmXbwoqAYgHNIx3gWCVdBLqxfpfgYIhZdF9H72EWS8lQkfkZla06Ng==} peerDependencies: @@ -8974,12 +9523,32 @@ packages: react: 18.2.0 dev: false + /@react-stately/dnd@3.2.8(react@18.2.0): + resolution: {integrity: sha512-oSo+2Bzum3Q1/d+3FuaDmpVHqqBB004tycuQDDFtad3N1BKm+fNfmslRK1ioLkPLK4sm1130V+BZBY3JXLe80A==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/flags@3.0.0: resolution: {integrity: sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==} dependencies: '@swc/helpers': 0.4.36 dev: false + /@react-stately/flags@3.0.1: + resolution: {integrity: sha512-h5PcDMj54aipQNO18ig/IMI1kzPwcvSwVq5M6Ib6XE1WIkOH0dIuW2eADdAOhcGi3KXJtXVdD29zh0Eox1TKgQ==} + dependencies: + '@swc/helpers': 0.4.36 + dev: false + /@react-stately/form@3.0.0(react@18.2.0): resolution: {integrity: sha512-C8wkfFmtx1escizibhdka5JvTy9/Vp173CS9cakjvWTmnjYYC1nOlzwp7BsYWTgerCFbRY/BU/Cf/bJDxPiUKQ==} peerDependencies: @@ -8993,6 +9562,19 @@ packages: react: 18.2.0 dev: false + /@react-stately/form@3.0.1(react@18.2.0): + resolution: {integrity: sha512-T1Ul2Ou0uE/S4ECLcGKa0OfXjffdjEHfUFZAk7OZl0Mqq/F7dl5WpoLWJ4d4IyvZzGO6anFNenP+vODWbrF3NA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/grid@3.8.4(react@18.2.0): resolution: {integrity: sha512-rwqV1K4lVhaiaqJkt4TfYqdJoVIyqvSm98rKAYfCNzrKcivVpoiCMJ2EMt6WlYCjDVBdEOQ7fMV1I60IV0pntA==} peerDependencies: @@ -9009,6 +9591,22 @@ packages: react: 18.2.0 dev: false + /@react-stately/grid@3.8.5(react@18.2.0): + resolution: {integrity: sha512-KCzi0x0p1ZKK+OptonvJqMbn6Vlgo6GfOIlgcDd0dNYDP8TJ+3QFJAFre5mCr7Fubx7LcAOio4Rij0l/R8fkXQ==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-types/grid': 3.2.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/list@3.10.2(react@18.2.0): resolution: {integrity: sha512-INt+zofkIg2KN8B95xPi9pJG7ZFWAm30oIm/lCPBqM3K1Nm03/QaAbiQj2QeJcOsG3lb7oqI6D6iwTolwJkjIQ==} peerDependencies: @@ -9025,6 +9623,22 @@ packages: react: 18.2.0 dev: false + /@react-stately/list@3.10.3(react@18.2.0): + resolution: {integrity: sha512-Ul8el0tQy2Ucl3qMQ0fiqdJ874W1ZNjURVSgSxN+pGwVLNBVRjd6Fl7YwZFCXER2YOlzkwg+Zqozf/ZlS0EdXA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/menu@3.6.0(react@18.2.0): resolution: {integrity: sha512-OB6CjNyfOkAuirqx1oTL8z8epS9WDzLyrXjmRnxdiCU9EgRXLGAQNECuO7VIpl58oDry8tgRJiJ8fn8FivWSQA==} peerDependencies: @@ -9040,6 +9654,21 @@ packages: react: 18.2.0 dev: false + /@react-stately/menu@3.6.1(react@18.2.0): + resolution: {integrity: sha512-3v0vkTm/kInuuG8jG7jbxXDBnMQcoDZKWvYsBQq7+POt0LmijbLdbdZPBoz9TkZ3eo/OoP194LLHOaFTQyHhlw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-types/menu': 3.9.7(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/numberfield@3.8.0(react@18.2.0): resolution: {integrity: sha512-1XvB8tDOvZKcFnMM6qNLEaTVJcIc0jRFS/9jtS8MzalZvh8DbKi0Ucm1bGU7S5rkCx2QWqZ0rGOIm2h/RlcpkA==} peerDependencies: @@ -9056,52 +9685,52 @@ packages: react: 18.2.0 dev: false - /@react-stately/overlays@3.6.4(react@18.2.0): - resolution: {integrity: sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==} + /@react-stately/numberfield@3.9.1(react@18.2.0): + resolution: {integrity: sha512-btBIcBEfSVCUm6NwJrMrMygoIu/fQGazzD0RhF7PNsfvkFiWn+TSOyQqSXcsUJVOnBfoS/dVWj6r57KA7zl3FA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/overlays': 3.8.4(react@18.2.0) + '@internationalized/number': 3.5.1 + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/numberfield': 3.8.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/radio@3.10.1(react@18.2.0): - resolution: {integrity: sha512-MsBYbcLCvjKsqTAKe43T681F2XwKMsS7PLG0eplZgWP9210AMY78GeY1XPYZKHPAau8XkbYiuJqbqTerIJ3DBw==} + /@react-stately/overlays@3.6.4(react@18.2.0): + resolution: {integrity: sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-stately/form': 3.0.0(react@18.2.0) '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/radio': 3.7.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/searchfield@3.5.0(react@18.2.0): - resolution: {integrity: sha512-SStjChkn/33pEn40slKQPnBnmQYyxVazVwPjiBkdeVejC42lUVairUTrGJgF0PNoZTbxn0so2/XzjqTC9T8iCw==} + /@react-stately/overlays@3.6.5(react@18.2.0): + resolution: {integrity: sha512-U4rCFj6TPJPXLUvYXAcvh+yP/CO2W+7f0IuqP7ZZGE+Osk9qFkT+zRK5/6ayhBDFpmueNfjIEAzT9gYPQwNHFw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/searchfield': 3.5.2(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/overlays': 3.8.5(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/select@3.6.1(react@18.2.0): - resolution: {integrity: sha512-e5ixtLiYLlFWM8z1msDqXWhflF9esIRfroptZsltMn1lt2iImUlDRlOTZlMtPQzUrDWoiHXRX88sSKUM/jXjQQ==} + /@react-stately/radio@3.10.1(react@18.2.0): + resolution: {integrity: sha512-MsBYbcLCvjKsqTAKe43T681F2XwKMsS7PLG0eplZgWP9210AMY78GeY1XPYZKHPAau8XkbYiuJqbqTerIJ3DBw==} peerDependencies: react: '*' peerDependenciesMeta: @@ -9109,31 +9738,31 @@ packages: optional: true dependencies: '@react-stately/form': 3.0.0(react@18.2.0) - '@react-stately/list': 3.10.2(react@18.2.0) - '@react-stately/overlays': 3.6.4(react@18.2.0) - '@react-types/select': 3.9.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/radio': 3.7.0(react@18.2.0) '@react-types/shared': 3.22.0(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/selection@3.14.2(react@18.2.0): - resolution: {integrity: sha512-mL7OoiUgVWaaF7ks5XSxgbXeShijYmD4G3bkBHhqkpugU600QH6BM2hloCq8KOUupk1y8oTljPtF9EmCv375DA==} + /@react-stately/radio@3.10.2(react@18.2.0): + resolution: {integrity: sha512-JW5ZWiNMKcZvMTsuPeWJQLHXD5rlqy7Qk6fwUx/ZgeibvMBW/NnW19mm2+IMinzmbtERXvR6nsiA837qI+4dew==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-stately/collections': 3.10.4(react@18.2.0) - '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/radio': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/slider@3.5.0(react@18.2.0): - resolution: {integrity: sha512-dOVpIxb7XKuiRxgpHt1bUSlsklciFki100tKIyBPR+Okar9iC/CwLYROYgVfLkGe77jEBNkor9tDLjDGEWcc1w==} + /@react-stately/searchfield@3.5.0(react@18.2.0): + resolution: {integrity: sha512-SStjChkn/33pEn40slKQPnBnmQYyxVazVwPjiBkdeVejC42lUVairUTrGJgF0PNoZTbxn0so2/XzjqTC9T8iCw==} peerDependencies: react: '*' peerDependenciesMeta: @@ -9141,13 +9770,120 @@ packages: optional: true dependencies: '@react-stately/utils': 3.9.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/slider': 3.7.0(react@18.2.0) + '@react-types/searchfield': 3.5.2(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-stately/table@3.11.4(react@18.2.0): + /@react-stately/searchfield@3.5.1(react@18.2.0): + resolution: {integrity: sha512-9A8Wghx1avRHhMpNH1Nj+jFfiF1bhsff2GEC5PZgWYzhCykw3G5bywn3JAuUS4kh7Vpqhbu4KpHAhmWPSv4B/Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/searchfield': 3.5.3(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/select@3.6.1(react@18.2.0): + resolution: {integrity: sha512-e5ixtLiYLlFWM8z1msDqXWhflF9esIRfroptZsltMn1lt2iImUlDRlOTZlMtPQzUrDWoiHXRX88sSKUM/jXjQQ==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/select': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/select@3.6.2(react@18.2.0): + resolution: {integrity: sha512-duOxdHKol93h6Ew6fap6Amz+zngoERKZLSKVm/8I8uaBgkoBhEeTFv7mlpHTgINxymMw3mMrvy6GL/gfKFwkqg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/form': 3.0.1(react@18.2.0) + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-types/select': 3.9.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/selection@3.14.2(react@18.2.0): + resolution: {integrity: sha512-mL7OoiUgVWaaF7ks5XSxgbXeShijYmD4G3bkBHhqkpugU600QH6BM2hloCq8KOUupk1y8oTljPtF9EmCv375DA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/selection@3.14.3(react@18.2.0): + resolution: {integrity: sha512-d/t0rIWieqQ7wjLoMoWnuHEUSMoVXxkPBFuSlJF3F16289FiQ+b8aeKFDzFTYN7fFD8rkZTnpuE4Tcxg3TmA+w==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/slider@3.5.0(react@18.2.0): + resolution: {integrity: sha512-dOVpIxb7XKuiRxgpHt1bUSlsklciFki100tKIyBPR+Okar9iC/CwLYROYgVfLkGe77jEBNkor9tDLjDGEWcc1w==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/slider': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/slider@3.5.2(react@18.2.0): + resolution: {integrity: sha512-ntH3NLRG+AwVC7q4Dx9DcmMkMh9vmHjHNXAgaoqNjhvwfSIae7sQ69CkVe6XeJjIBy6LlH81Kgapz+ABe5a1ZA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/slider': 3.7.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + + /@react-stately/table@3.11.4(react@18.2.0): resolution: {integrity: sha512-dWINJIEOKQl4qq3moq+S8xCD3m+yJqBj0dahr+rOkS+t2uqORwzsusTM35D2T/ZHZi49S2GpE7QuDa+edCynPw==} peerDependencies: react: '*' @@ -9167,6 +9903,26 @@ packages: react: 18.2.0 dev: false + /@react-stately/table@3.11.6(react@18.2.0): + resolution: {integrity: sha512-34YsfOILXusj3p6QNcKEaDWVORhM6WEhwPSLCZlkwAJvkxuRQFdih5rQKoIDc0uV5aZsB6bYBqiFhnjY0VERhw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/flags': 3.0.1 + '@react-stately/grid': 3.8.5(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/grid': 3.2.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/table': 3.9.3(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/tabs@3.6.3(react@18.2.0): resolution: {integrity: sha512-Nj+Gacwa2SIzYIvHW40GsyX4Q6c8kF7GOuXESeQswbCjnwqhrSbDBp+ngPcUPUJxqFh6JhDCVwAS3wMhUoyUwA==} peerDependencies: @@ -9182,6 +9938,21 @@ packages: react: 18.2.0 dev: false + /@react-stately/tabs@3.6.4(react@18.2.0): + resolution: {integrity: sha512-WZJgMBqzLgN88RN8AxhY4aH1+I+4w1qQA0Lh3LRSDegaytd+NHixCWaP3IPjePgCB5N1UsPe96Xglw75zjHmDg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/list': 3.10.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/tabs': 3.3.5(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/toggle@3.7.0(react@18.2.0): resolution: {integrity: sha512-TRksHkCJk/Xogq4181g3CYgJf+EfsJCqX5UZDSw1Z1Kgpvonjmdf6FAfQfCh9QR2OuXUL6hOLUDVLte5OPI+5g==} peerDependencies: @@ -9196,6 +9967,20 @@ packages: react: 18.2.0 dev: false + /@react-stately/toggle@3.7.2(react@18.2.0): + resolution: {integrity: sha512-SHCF2btcoK57c4lyhucRbyPBAFpp0Pdp0vcPdn3hUgqbu6e5gE0CwG/mgFmZRAQoc7PRc7XifL0uNw8diJJI0Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/checkbox': 3.7.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/tooltip@3.4.6(react@18.2.0): resolution: {integrity: sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==} peerDependencies: @@ -9210,6 +9995,20 @@ packages: react: 18.2.0 dev: false + /@react-stately/tooltip@3.4.7(react@18.2.0): + resolution: {integrity: sha512-ACtRgBQ8rphBtsUaaxvEAM0HHN9PvMuyvL0vUHd7jvBDCVZJ6it1BKu9SBKjekBkoBOw9nemtkplh9R2CA6V8Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/overlays': 3.6.5(react@18.2.0) + '@react-types/tooltip': 3.4.7(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/tree@3.7.5(react@18.2.0): resolution: {integrity: sha512-xTJVwvhAeY0N5rui4N/TxN7f8hjXdqApDuGDxMZeFAWoQz8Abf7LFKBVQ3OkT6qVr7P+23dgoisUDBhD5a45Hg==} peerDependencies: @@ -9226,6 +10025,22 @@ packages: react: 18.2.0 dev: false + /@react-stately/tree@3.7.6(react@18.2.0): + resolution: {integrity: sha512-y8KvEoZX6+YvqjNCVGS3zA/BKw4D3XrUtUKIDme3gu5Mn6z97u+hUXKdXVCniZR7yvV3fHAIXwE5V2K8Oit4aw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-stately/collections': 3.10.5(react@18.2.0) + '@react-stately/selection': 3.14.3(react@18.2.0) + '@react-stately/utils': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 + react: 18.2.0 + dev: false + /@react-stately/utils@3.9.0(react@18.2.0): resolution: {integrity: sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==} peerDependencies: @@ -9238,42 +10053,54 @@ packages: react: 18.2.0 dev: false - /@react-stately/virtualizer@3.6.6(react@18.2.0): - resolution: {integrity: sha512-9hWvfITdE/028q4YFve6FxlmA3PdSMkUwpYA+vfaGCXI/4DFZIssBMspUeu4PTRJoV+k+m0z1wYHPmufrq6a3g==} + /@react-stately/utils@3.9.1(react@18.2.0): + resolution: {integrity: sha512-yzw75GE0iUWiyps02BOAPTrybcsMIxEJlzXqtvllAb01O9uX5n0i3X+u2eCpj2UoDF4zS08Ps0jPgWxg8xEYtA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-types/breadcrumbs@3.7.2(react@18.2.0): - resolution: {integrity: sha512-esl6RucDW2CNMsApJxNYfMtDaUcfLlwKMPH/loYsOBbKxGl2HsgVLMcdpjEkTRs2HCTNCbBXWpeU8AY77t+bsw==} + /@react-stately/virtualizer@3.6.8(react@18.2.0): + resolution: {integrity: sha512-Pf06ihTwExRJltGhi72tmLIo0pcjkL55nu7ifMafAAdxZK4ONxRLSuUjjpvYf/0Rs92xRZy2t/XmHREnfirdkQ==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/link': 3.5.2(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + '@swc/helpers': 0.5.6 react: 18.2.0 dev: false - /@react-types/button@3.9.1(react@18.2.0): - resolution: {integrity: sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==} + /@react-types/breadcrumbs@3.7.3(react@18.2.0): + resolution: {integrity: sha512-eFto/+6J+JR58vThNcALZRA1OlqlG3GzQ/bq3q8IrrkOZcrfbEJJCWit/+53Ia98siJKuF4OJHnotxIVIz5I3w==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/link': 3.5.3(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/button@3.9.2(react@18.2.0): + resolution: {integrity: sha512-EnPTkGHZRtiwAoJy5q9lDjoG30bEzA/qnvKG29VVXKYAGeqY2IlFs1ypmU+z1X/CpJgPcG3I5cakM7yTVm3pSg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false @@ -9290,6 +10117,19 @@ packages: react: 18.2.0 dev: false + /@react-types/calendar@3.4.4(react@18.2.0): + resolution: {integrity: sha512-hV1Thmb/AES5OmfPvvmyjSkmsEULjiDfA7Yyy70L/YKuSNKb7Su+Bf2VnZuDW3ec+GxO4JJNlpJ0AkbphWBvcg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@internationalized/date': 3.5.2 + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + /@react-types/checkbox@3.6.0(react@18.2.0): resolution: {integrity: sha512-vgbuJzQpVCNT5AZWV0OozXCnihqrXxoZKfJFIw0xro47pT2sn3t5UC4RA9wfjDGMoK4frw1K/4HQLsQIOsPBkw==} peerDependencies: @@ -9302,6 +10142,18 @@ packages: react: 18.2.0 dev: false + /@react-types/checkbox@3.7.1(react@18.2.0): + resolution: {integrity: sha512-kuGqjQFex0As/3gfWyk+e9njCcad/ZdnYLLiNvhlk15730xfa0MmnOdpqo9jfuFSXBjOcpxoofvEhvrRMtEdUA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + /@react-types/combobox@3.10.0(react@18.2.0): resolution: {integrity: sha512-1IXSNS02TPbguyYopaW2snU6sZusbClHrEyVr4zPeexTV4kpUUBNXOzFQ+eSQRR0r2XW57Z0yRW4GJ6FGU0yCA==} peerDependencies: @@ -9314,6 +10166,18 @@ packages: react: 18.2.0 dev: false + /@react-types/combobox@3.10.1(react@18.2.0): + resolution: {integrity: sha512-XMno1rgVRNta49vf5nV7VJpVSVAV20tt79t618gG1qRKH5Kt2Cy8lz2fQ5vHG6UTv/6jUOvU8g5Pc93sLaTmoA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + /@react-types/datepicker@3.7.1(react@18.2.0): resolution: {integrity: sha512-5juVDULOytNzkotqX8j5mYKJckeIpkgbHqVSGkPgLw0++FceIaSZ6RH56cqLup0pO45paqIt9zHh+QXBYX+syg==} peerDependencies: @@ -9329,16 +10193,31 @@ packages: react: 18.2.0 dev: false - /@react-types/dialog@3.5.7(react@18.2.0): - resolution: {integrity: sha512-geYoqAyQaTLG43AaXdMUVqZXYgkSifrD9cF7lR2kPAT0uGFv0YREi6ieU+aui8XJ83EW0xcxP+EPWd2YkN4D4w==} + /@react-types/datepicker@3.7.2(react@18.2.0): + resolution: {integrity: sha512-zThqFAdhQL1dqyVDsDSSTdfCjoD6634eyg/B0ZJfQxcLUR/5pch3v/gxBhbyCVDGMNHRWUWIJvY9DVOepuoSug==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/overlays': 3.8.4(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/date': 3.5.2 + '@react-types/calendar': 3.4.4(react@18.2.0) + '@react-types/overlays': 3.8.5(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/dialog@3.5.8(react@18.2.0): + resolution: {integrity: sha512-RX8JsMvty8ADHRqVEkppoynXLtN4IzUh8d5z88UEBbcvWKlHfd6bOBQjQcBH3AUue5wjfpPIt6brw2VzgBY/3Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/overlays': 3.8.5(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false @@ -9354,27 +10233,39 @@ packages: react: 18.2.0 dev: false - /@react-types/link@3.5.2(react@18.2.0): - resolution: {integrity: sha512-/s51/WejmpLiyxOgP89s4txgxYoGaPe8pVDItVo1h4+BhU1Puyvgv/Jx8t9dPvo6LUXbraaN+SgKk/QDxaiirw==} + /@react-types/grid@3.2.4(react@18.2.0): + resolution: {integrity: sha512-sDVoyQcH7MoGdx5nBi5ZOU/mVFBt9YTxhvr0PZ97dMdEHZtJC1w9SuezwWS34f50yb8YAXQRTICbZYcK4bAlDA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/listbox@3.4.6(react@18.2.0): - resolution: {integrity: sha512-XOQvrTqNh5WIPDvKiWiep8T07RAsMfjAXTjDbnjxVlKACUXkcwpts9kFaLnJ9LJRFt6DwItfP+WMkzvmx63/NQ==} + /@react-types/link@3.5.3(react@18.2.0): + resolution: {integrity: sha512-yVafjW3IejyVnK3oMBNjFABCGG6J27EUG8rvkaGaI1uB6srGUEhpJ97XLv11aj1QkXHBy3VGXqxEV3S7wn4HTw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/listbox@3.4.7(react@18.2.0): + resolution: {integrity: sha512-68y5H9CVSPFiwO6MOFxTbry9JQMK/Lb1M9i3M8TDyq1AbJxBPpgAvJ9RaqIMCucsnqCzpY/zA3D/X417zByL1w==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false @@ -9391,15 +10282,28 @@ packages: react: 18.2.0 dev: false - /@react-types/meter@3.3.6(react@18.2.0): - resolution: {integrity: sha512-1XYp1fA9UU0lO6kjf3TwVE8mppOJa64mBKAcLWtTyq1e/cYIAbx5o6CsuUx0YDpXKF6gdtvIWvfmxeWsmqJ1jQ==} + /@react-types/menu@3.9.7(react@18.2.0): + resolution: {integrity: sha512-K6KhloJVoGsqwkdeez72fkNI9dfrmLI/sNrB4XuOKo2crDQ/eyZYWyJmzz8giz/tHME9w774k487rVoefoFh5w==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/progress': 3.5.1(react@18.2.0) + '@react-types/overlays': 3.8.5(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/meter@3.3.7(react@18.2.0): + resolution: {integrity: sha512-p+YJ0+Lpn5MLmlbFZbDH1P0ILv1+AuMcUbxLcXMIVMGn7o0FO7eVZnFuq76D+qTDm9all+TRLJix7bctOrP+5Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/progress': 3.5.2(react@18.2.0) react: 18.2.0 dev: false @@ -9415,6 +10319,18 @@ packages: react: 18.2.0 dev: false + /@react-types/numberfield@3.8.1(react@18.2.0): + resolution: {integrity: sha512-GaCjLQgXUGCt40SLjKk3/COMWFlN2vV/3Xs3VSLAEdFZpk99b+Ik1oR21+7ZP5/iMHuQDc1MJRWdFfIjxCvVDQ==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + /@react-types/overlays@3.8.4(react@18.2.0): resolution: {integrity: sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==} peerDependencies: @@ -9427,15 +10343,27 @@ packages: react: 18.2.0 dev: false - /@react-types/progress@3.5.1(react@18.2.0): - resolution: {integrity: sha512-CqsUjczUK/SfuFzDcajBBaXRTW0D3G9S/yqLDj9e8E0ii+lGDLt1PHj24t1J7E88U2rVYqmM9VL4NHTt8o3IYA==} + /@react-types/overlays@3.8.5(react@18.2.0): + resolution: {integrity: sha512-4D7EEBQigD/m8hE68Ys8eloyyZFHHduqykSIgINJ0edmo0jygRbWlTwuhWFR9USgSP4dK54duN0Mvq0m4HEVEw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/progress@3.5.2(react@18.2.0): + resolution: {integrity: sha512-aQql22kusEudsHwDEzq6y/Mh29AM+ftRDKdS5E5g4MkCY5J4FMbOYco1T5So83NIvvG9+eKcxPoJUMjQQACAyA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false @@ -9447,48 +10375,158 @@ packages: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/radio@3.7.1(react@18.2.0): + resolution: {integrity: sha512-Zut3rN1odIUBLZdijeyou+UqsLeRE76d9A+npykYGu29ndqmo3w4sLn8QeQcdj1IR71ZnG0pW2Y2BazhK5XrrQ==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/searchfield@3.5.2(react@18.2.0): + resolution: {integrity: sha512-JAK2/Kg4Dr393FYfbRw0TlXKnJPX77sq1x/ZBxtO6p64+MuuIYKqw0i9PwDlo1PViw2QI5u8GFhKA2TgemY9uA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/textfield': 3.9.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/searchfield@3.5.3(react@18.2.0): + resolution: {integrity: sha512-gBfsT1WpY8UIb74yyYmnjiHpVasph2mdmGj9i8cGF2HUYwx5p+Fr85mtCGDph0uirvRoM5ExMp4snD+ueNAVCg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + '@react-types/textfield': 3.9.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/select@3.9.1(react@18.2.0): + resolution: {integrity: sha512-EpKSxrnh8HdZvOF9dHQkjivAcdIp1K81FaxmvosH8Lygqh0iYXxAdZGtKLMyBoPI8YFhA+rotIzTcOqgCCnqWA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/select@3.9.2(react@18.2.0): + resolution: {integrity: sha512-fGFrunednY3Pq/BBwVOf87Fsuyo/SlevL0wFIE9OOl2V5NXVaTY7/7RYA8hIOHPzmvsMbndy419BEudiNGhv4A==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/shared@3.22.0(react@18.2.0): + resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + react: 18.2.0 + dev: false + + /@react-types/shared@3.22.1(react@18.2.0): + resolution: {integrity: sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + react: 18.2.0 + dev: false + + /@react-types/slider@3.7.0(react@18.2.0): + resolution: {integrity: sha512-uyQXUVFfqc9SPUW0LZLMan2n232F/OflRafiHXz9viLFa9tVOupVa7GhASRAoHojwkjoJ1LjFlPih7g5dOZ0/Q==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/slider@3.7.1(react@18.2.0): + resolution: {integrity: sha512-FKO3YZYdrBs00XbBW5acP+0L1cCdevl/uRJiXbnLpGysO5PrSFIRS7Wlv4M7ztf6gT7b1Ao4FNC9crbxBr6BzA==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dependencies: + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/searchfield@3.5.2(react@18.2.0): - resolution: {integrity: sha512-JAK2/Kg4Dr393FYfbRw0TlXKnJPX77sq1x/ZBxtO6p64+MuuIYKqw0i9PwDlo1PViw2QI5u8GFhKA2TgemY9uA==} + /@react-types/switch@3.5.1(react@18.2.0): + resolution: {integrity: sha512-2LFEKMGeufqyYmeN/5dtkDkCPG6x9O4eu6aaBaJmPGon7C/l3yiFEgRue6oCUYc1HixR7Qlp0sPxk0tQeWzrSg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) - '@react-types/textfield': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/select@3.9.1(react@18.2.0): - resolution: {integrity: sha512-EpKSxrnh8HdZvOF9dHQkjivAcdIp1K81FaxmvosH8Lygqh0iYXxAdZGtKLMyBoPI8YFhA+rotIzTcOqgCCnqWA==} + /@react-types/table@3.9.2(react@18.2.0): + resolution: {integrity: sha512-brw5JUANOzBa2rYNpN8AIl9nDZ9RwRZC6G/wTM/JhtirjC1S42oCtf8Ap5rWJBdmMG/5KOfcGNcAl/huyqb3gg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: + '@react-types/grid': 3.2.3(react@18.2.0) '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 dev: false - /@react-types/shared@3.22.0(react@18.2.0): - resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==} + /@react-types/table@3.9.3(react@18.2.0): + resolution: {integrity: sha512-Hs/pMbxJdga2zBol4H5pV1FVIiRjCuSTXst6idJjkctanTexR4xkyrtBwl+rdLNoGwQ2pGii49vgklc5bFK7zA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: + '@react-types/grid': 3.2.4(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/slider@3.7.0(react@18.2.0): - resolution: {integrity: sha512-uyQXUVFfqc9SPUW0LZLMan2n232F/OflRafiHXz9viLFa9tVOupVa7GhASRAoHojwkjoJ1LjFlPih7g5dOZ0/Q==} + /@react-types/tabs@3.3.4(react@18.2.0): + resolution: {integrity: sha512-4mCTtFrwMRypyGTZCvNYVT9CkknexO/UYvqwDm2jMYb8JgjRvxnomu776Yh7uyiYKWyql2upm20jqasEOm620w==} peerDependencies: react: '*' peerDependenciesMeta: @@ -9499,65 +10537,65 @@ packages: react: 18.2.0 dev: false - /@react-types/switch@3.5.0(react@18.2.0): - resolution: {integrity: sha512-/wNmUGjk69bP6t5k2QkAdrNN5Eb9Rz4dOyp0pCPmoeE+5haW6sV5NmtkvWX1NSc4DQz1xL/a5b+A0vxPCP22Jw==} + /@react-types/tabs@3.3.5(react@18.2.0): + resolution: {integrity: sha512-6NTSZBOWekCtApdZrhu5tHhE/8q52oVohQN+J5T7shAXd6ZAtu8PABVR/nH4BWucc8FL0OUajRqunqzQMU13gA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/table@3.9.2(react@18.2.0): - resolution: {integrity: sha512-brw5JUANOzBa2rYNpN8AIl9nDZ9RwRZC6G/wTM/JhtirjC1S42oCtf8Ap5rWJBdmMG/5KOfcGNcAl/huyqb3gg==} + /@react-types/textfield@3.9.0(react@18.2.0): + resolution: {integrity: sha512-D/DiwzsfkwlAg3uv8hoIfwju+zhB/hWDEdTvxQbPkntDr0kmN/QfI17NMSzbOBCInC4ABX87ViXLGxr940ykGA==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/grid': 3.2.3(react@18.2.0) '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 dev: false - /@react-types/tabs@3.3.4(react@18.2.0): - resolution: {integrity: sha512-4mCTtFrwMRypyGTZCvNYVT9CkknexO/UYvqwDm2jMYb8JgjRvxnomu776Yh7uyiYKWyql2upm20jqasEOm620w==} + /@react-types/textfield@3.9.1(react@18.2.0): + resolution: {integrity: sha512-JBHY9M2CkL6xFaGSfWmUJVu3tEK09FaeB1dU3IEh6P41xxbFnPakYHSSAdnwMXBtXPoSHIVsUBickW/pjgfe5g==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false - /@react-types/textfield@3.9.0(react@18.2.0): - resolution: {integrity: sha512-D/DiwzsfkwlAg3uv8hoIfwju+zhB/hWDEdTvxQbPkntDr0kmN/QfI17NMSzbOBCInC4ABX87ViXLGxr940ykGA==} + /@react-types/tooltip@3.4.6(react@18.2.0): + resolution: {integrity: sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 dev: false - /@react-types/tooltip@3.4.6(react@18.2.0): - resolution: {integrity: sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==} + /@react-types/tooltip@3.4.7(react@18.2.0): + resolution: {integrity: sha512-rV4HZRQxLRNhe24yATOxnFQtGRUmsR7mqxMupXCmd1vrw8h+rdKlQv1zW2q8nALAKNmnRXZJHxYQ1SFzb98fgg==} peerDependencies: react: '*' peerDependenciesMeta: react: optional: true dependencies: - '@react-types/overlays': 3.8.4(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/overlays': 3.8.5(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 dev: false @@ -9578,6 +10616,14 @@ packages: picomatch: 2.3.1 dev: true + /@rollup/rollup-android-arm-eabi@4.13.1: + resolution: {integrity: sha512-4C4UERETjXpC4WpBXDbkgNVgHyWfG3B/NKY46e7w5H134UDOFqUJKpsLm0UYmuupW+aJmRgeScrDNfvZ5WV80A==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-android-arm-eabi@4.9.6: resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} cpu: [arm] @@ -9586,6 +10632,14 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm64@4.13.1: + resolution: {integrity: sha512-TrTaFJ9pXgfXEiJKQ3yQRelpQFqgRzVR9it8DbeRzG0RX7mKUy0bqhCFsgevwXLJepQKTnLl95TnPGf9T9AMOA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-android-arm64@4.9.6: resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} cpu: [arm64] @@ -9594,6 +10648,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-arm64@4.13.1: + resolution: {integrity: sha512-fz7jN6ahTI3cKzDO2otQuybts5cyu0feymg0bjvYCBrZQ8tSgE8pc0sSNEuGvifrQJWiwx9F05BowihmLxeQKw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-arm64@4.9.6: resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} cpu: [arm64] @@ -9602,6 +10664,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-x64@4.13.1: + resolution: {integrity: sha512-WTvdz7SLMlJpektdrnWRUN9C0N2qNHwNbWpNo0a3Tod3gb9leX+yrYdCeB7VV36OtoyiPAivl7/xZ3G1z5h20g==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-x64@4.9.6: resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} cpu: [x64] @@ -9610,6 +10680,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.13.1: + resolution: {integrity: sha512-dBHQl+7wZzBYcIF6o4k2XkAfwP2ks1mYW2q/Gzv9n39uDcDiAGDqEyml08OdY0BIct0yLSPkDTqn4i6czpBLLw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} cpu: [arm] @@ -9618,6 +10696,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-gnu@4.13.1: + resolution: {integrity: sha512-bur4JOxvYxfrAmocRJIW0SADs3QdEYK6TQ7dTNz6Z4/lySeu3Z1H/+tl0a4qDYv0bCdBpUYM0sYa/X+9ZqgfSQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-gnu@4.9.6: resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} cpu: [arm64] @@ -9626,6 +10712,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-musl@4.13.1: + resolution: {integrity: sha512-ssp77SjcDIUSoUyj7DU7/5iwM4ZEluY+N8umtCT9nBRs3u045t0KkW02LTyHouHDomnMXaXSZcCSr2bdMK63kA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-musl@4.9.6: resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} cpu: [arm64] @@ -9634,6 +10728,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-riscv64-gnu@4.13.1: + resolution: {integrity: sha512-Jv1DkIvwEPAb+v25/Unrnnq9BO3F5cbFPT821n3S5litkz+O5NuXuNhqtPx5KtcwOTtaqkTsO+IVzJOsxd11aQ==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-riscv64-gnu@4.9.6: resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} cpu: [riscv64] @@ -9642,6 +10744,22 @@ packages: dev: true optional: true + /@rollup/rollup-linux-s390x-gnu@4.13.1: + resolution: {integrity: sha512-U564BrhEfaNChdATQaEODtquCC7Ez+8Hxz1h5MAdMYj0AqD0GA9rHCpElajb/sQcaFL6NXmHc5O+7FXpWMa73Q==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.13.1: + resolution: {integrity: sha512-zGRDulLTeDemR8DFYyFIQ8kMP02xpUsX4IBikc7lwL9PrwR3gWmX2NopqiGlI2ZVWMl15qZeUjumTwpv18N7sQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-gnu@4.9.6: resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} cpu: [x64] @@ -9650,6 +10768,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-musl@4.13.1: + resolution: {integrity: sha512-VTk/MveyPdMFkYJJPCkYBw07KcTkGU2hLEyqYMsU4NjiOfzoaDTW9PWGRsNwiOA3qI0k/JQPjkl/4FCK1smskQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-musl@4.9.6: resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} cpu: [x64] @@ -9658,6 +10784,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.13.1: + resolution: {integrity: sha512-L+hX8Dtibb02r/OYCsp4sQQIi3ldZkFI0EUkMTDwRfFykXBPptoz/tuuGqEd3bThBSLRWPR6wsixDSgOx/U3Zw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.9.6: resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} cpu: [arm64] @@ -9666,6 +10800,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.13.1: + resolution: {integrity: sha512-+dI2jVPfM5A8zme8riEoNC7UKk0Lzc7jCj/U89cQIrOjrZTCWZl/+IXUeRT2rEZ5j25lnSA9G9H1Ob9azaF/KQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.9.6: resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} cpu: [ia32] @@ -9674,6 +10816,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-x64-msvc@4.13.1: + resolution: {integrity: sha512-YY1Exxo2viZ/O2dMHuwQvimJ0SqvL+OAWQLLY6rvXavgQKjhQUzn7nc1Dd29gjB5Fqi00nrBWctJBOyfVMIVxw==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.9.6: resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} cpu: [x64] @@ -9774,8 +10924,8 @@ packages: engines: {node: '>=4'} dev: true - /@sindresorhus/merge-streams@1.0.0: - resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} dev: true @@ -10127,7 +11277,7 @@ packages: - supports-color dev: true - /@storybook/builder-vite@8.0.0-beta.5(typescript@5.3.3)(vite@5.0.12): + /@storybook/builder-vite@8.0.0-beta.5(typescript@5.3.3)(vite@5.2.6): resolution: {integrity: sha512-XsN1EggUoHuCIf6nVw0O2H9vnHpFUCdcfN+YmS4MEm8waH5zXnnrGttwq4jnGcVVydFEq/9xsbLxzvl8l3cLLQ==} peerDependencies: '@preact/preset-vite': '*' @@ -10159,13 +11309,13 @@ packages: magic-string: 0.30.7 ts-dedent: 2.2.0 typescript: 5.3.3 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.2.6(@types/node@20.11.6) transitivePeerDependencies: - encoding - supports-color dev: true - /@storybook/builder-webpack5@8.0.0-beta.5(@swc/core@1.4.0)(typescript@5.3.3): + /@storybook/builder-webpack5@8.0.0-beta.5(@swc/core@1.4.1)(typescript@5.3.3): resolution: {integrity: sha512-ZFhnkKMzCAOMxCpsZCxwxozKFWkP3jlhrltjFyYTCTEs836syhW6lBmxybwNG0bD3YJ3RcJ2rHNBdSjRYMyPnQ==} peerDependencies: typescript: '*' @@ -10198,13 +11348,13 @@ packages: process: 0.11.10 semver: 7.6.0 style-loader: 3.3.4(webpack@5.90.1) - terser-webpack-plugin: 5.3.10(@swc/core@1.4.0)(webpack@5.90.1) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.1)(webpack@5.90.1) ts-dedent: 2.2.0 typescript: 5.3.3 url: 0.11.3 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) webpack-dev-middleware: 6.1.1(webpack@5.90.1) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.5.0 @@ -10534,7 +11684,7 @@ packages: dependencies: '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 '@storybook/csf': 0.1.2 '@storybook/types': 8.0.0-beta.5 @@ -10648,7 +11798,7 @@ packages: resolution: {integrity: sha512-J7jlCo4W2At5Xz0AlRNWutCaFSSuUu5AoIZk27RyrqXNzhF8By9bsABYDp4ObEAembvVOkTfDdl96jDY/tsBqw==} dev: true - /@storybook/nextjs@8.0.0-beta.5(@swc/core@1.4.0)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@storybook/nextjs@8.0.0-beta.5(@swc/core@1.4.1)(next@14.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-UO4pQGoXmXOszyU6o9mm04EoEDe0bQgphPLy9s2oN5LWExyXajWYB76s+laGUqaoNqU5spS88g2zop+oLvXgAw==} engines: {node: '>=18.0.0'} peerDependencies: @@ -10682,11 +11832,11 @@ packages: '@babel/runtime': 7.23.9 '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0) '@storybook/addon-actions': 8.0.0-beta.5 - '@storybook/builder-webpack5': 8.0.0-beta.5(@swc/core@1.4.0)(typescript@5.3.3) + '@storybook/builder-webpack5': 8.0.0-beta.5(@swc/core@1.4.1)(typescript@5.3.3) '@storybook/core-common': 8.0.0-beta.5 '@storybook/core-events': 8.0.0-beta.5 '@storybook/node-logger': 8.0.0-beta.5 - '@storybook/preset-react-webpack': 8.0.0-beta.5(@swc/core@1.4.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) + '@storybook/preset-react-webpack': 8.0.0-beta.5(@swc/core@1.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/preview-api': 8.0.0-beta.5 '@storybook/react': 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) '@storybook/types': 8.0.0-beta.5 @@ -10701,8 +11851,8 @@ packages: next: 14.1.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) node-polyfill-webpack-plugin: 2.0.1 pnp-webpack-plugin: 1.7.0(typescript@5.3.3) - postcss: 8.4.34 - postcss-loader: 7.3.4(postcss@8.4.34)(typescript@5.3.3) + postcss: 8.4.35 + postcss-loader: 7.3.4(postcss@8.4.35)(typescript@5.3.3) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-refresh: 0.14.0 @@ -10745,7 +11895,7 @@ packages: resolution: {integrity: sha512-ePFqxExROGHmu+PHOF63SvDlxAZ4Aph3ST+Lj7wszHrOnSGxzVCtgyPOj/kv1rkz0JCB/ySSWrOqd+DsECEbGw==} dev: true - /@storybook/preset-react-webpack@8.0.0-beta.5(@swc/core@1.4.0)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): + /@storybook/preset-react-webpack@8.0.0-beta.5(@swc/core@1.4.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3): resolution: {integrity: sha512-41gyAAZUuY3fe+Op5GP9hHezhVGEFwQpYM/rKsspVKfPOUty3E+Mf1xkPje3UHstnURuy6lG7yu6RKUEU3yLdw==} engines: {node: '>=18.0.0'} peerDependencies: @@ -10774,7 +11924,7 @@ packages: react-dom: 18.2.0(react@18.2.0) semver: 7.6.0 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) transitivePeerDependencies: - '@swc/core' - encoding @@ -10850,7 +12000,7 @@ packages: typescript: '>= 4.x' webpack: '>= 4' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) endent: 2.1.0 find-cache-dir: 3.3.2 flat-cache: 3.2.0 @@ -10858,7 +12008,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.3.3) tslib: 2.6.2 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) transitivePeerDependencies: - supports-color dev: true @@ -10893,7 +12043,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-vite@8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@5.0.12): + /@storybook/react-vite@8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@5.2.6): resolution: {integrity: sha512-vu65xYChrJ1MpDm/VD3iVasP5Xy3LTOp1Gy3hNp0WvZAe5J5pykRnnRUT3WRU+p9pQOHyCGAWa4lESzA4WyReA==} engines: {node: '>=18.0.0'} peerDependencies: @@ -10906,15 +12056,15 @@ packages: react-dom: optional: true dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@5.0.12) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.3.3)(vite@5.2.6) '@rollup/pluginutils': 5.1.0 - '@storybook/builder-vite': 8.0.0-beta.5(typescript@5.3.3)(vite@5.0.12) + '@storybook/builder-vite': 8.0.0-beta.5(typescript@5.3.3)(vite@5.2.6) '@storybook/react': 8.0.0-beta.5(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3) magic-string: 0.30.7 react: 18.2.0 react-docgen: 7.0.3 react-dom: 18.2.0(react@18.2.0) - vite: 5.0.12(@types/node@20.11.16) + vite: 5.2.6(@types/node@20.11.6) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -11277,88 +12427,88 @@ packages: - typescript dev: true - /@swc/core-darwin-arm64@1.4.0: - resolution: {integrity: sha512-UTJ/Vz+s7Pagef6HmufWt6Rs0aUu+EJF4Pzuwvr7JQQ5b1DZeAAUeUtkUTFx/PvCbM8Xfw4XdKBUZfrIKCfW8A==} + /@swc/core-darwin-arm64@1.4.1: + resolution: {integrity: sha512-ePyfx0348UbR4DOAW24TedeJbafnzha8liXFGuQ4bdXtEVXhLfPngprrxKrAddCuv42F9aTxydlF6+adD3FBhA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.4.0: - resolution: {integrity: sha512-f8v58u2GsGak8EtZFN9guXqE0Ep10Suny6xriaW2d8FGqESPyNrnBzli3aqkSeQk5gGqu2zJ7WiiKp3XoUOidA==} + /@swc/core-darwin-x64@1.4.1: + resolution: {integrity: sha512-eLf4JSe6VkCMdDowjM8XNC5rO+BrgfbluEzAVtKR8L2HacNYukieumN7EzpYCi0uF1BYwu1ku6tLyG2r0VcGxA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.4.0: - resolution: {integrity: sha512-q2KAkBzmPcTnRij/Y1fgHCKAGevUX/H4uUESrw1J5gmUg9Qip6onKV80lTumA1/aooGJ18LOsB31qdbwmZk9OA==} + /@swc/core-linux-arm-gnueabihf@1.4.1: + resolution: {integrity: sha512-K8VtTLWMw+rkN/jDC9o/Q9SMmzdiHwYo2CfgkwVT29NsGccwmNhCQx6XoYiPKyKGIFKt4tdQnJHKUFzxUqQVtQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.4.0: - resolution: {integrity: sha512-SknGu96W0mzHtLHWm+62fk5+Omp9fMPFO7AWyGFmz2tr8EgRRXtTSrBUnWhAbgcalnhen48GsvtMdxf1KNputg==} + /@swc/core-linux-arm64-gnu@1.4.1: + resolution: {integrity: sha512-0e8p4g0Bfkt8lkiWgcdiENH3RzkcqKtpRXIVNGOmVc0OBkvc2tpm2WTx/eoCnes2HpTT4CTtR3Zljj4knQ4Fvw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.4.0: - resolution: {integrity: sha512-/k3TDvpBRMDNskHooNN1KqwUhcwkfBlIYxRTnJvsfT2C7My4pffR+4KXmt0IKynlTTbCdlU/4jgX4801FSuliw==} + /@swc/core-linux-arm64-musl@1.4.1: + resolution: {integrity: sha512-b/vWGQo2n7lZVUnSQ7NBq3Qrj85GrAPPiRbpqaIGwOytiFSk8VULFihbEUwDe0rXgY4LDm8z8wkgADZcLnmdUA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.4.0: - resolution: {integrity: sha512-GYsTMvNt5+WTVlwwQzOOWsPMw6P/F41u5PGHWmfev8Nd4QJ1h3rWPySKk4mV42IJwH9MgQCVSl3ygwNqwl6kFg==} + /@swc/core-linux-x64-gnu@1.4.1: + resolution: {integrity: sha512-AFMQlvkKEdNi1Vk2GFTxxJzbICttBsOQaXa98kFTeWTnFFIyiIj2w7Sk8XRTEJ/AjF8ia8JPKb1zddBWr9+bEQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.4.0: - resolution: {integrity: sha512-jGVPdM/VwF7kK/uYRW5N6FwzKf/FnDjGIR3RPvQokjYJy7Auk+3Oj21C0Jev7sIT9RYnO/TrFEoEozKeD/z2Qw==} + /@swc/core-linux-x64-musl@1.4.1: + resolution: {integrity: sha512-QX2MxIECX1gfvUVZY+jk528/oFkS9MAl76e3ZRvG2KC/aKlCQL0KSzcTSm13mOxkDKS30EaGRDRQWNukGpMeRg==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.4.0: - resolution: {integrity: sha512-biHYm1AronEKlt47O/H8sSOBM2BKXMmWT+ApvlxUw50m1RGNnVnE0bgY7tylFuuSiWyXsQPJbmUV708JqORXVg==} + /@swc/core-win32-arm64-msvc@1.4.1: + resolution: {integrity: sha512-OklkJYXXI/tntD2zaY8i3iZldpyDw5q+NAP3k9OlQ7wXXf37djRsHLV0NW4+ZNHBjE9xp2RsXJ0jlOJhfgGoFA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.4.0: - resolution: {integrity: sha512-TL5L2tFQb19kJwv6+elToGBj74QXCn9j+hZfwQatvZEJRA5rDK16eH6oAE751dGUArhnWlW3Vj65hViPvTuycw==} + /@swc/core-win32-ia32-msvc@1.4.1: + resolution: {integrity: sha512-MBuc3/QfKX9FnLOU7iGN+6yHRTQaPQ9WskiC8s8JFiKQ+7I2p25tay2RplR9dIEEGgVAu6L7auv96LbNTh+FaA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.4.0: - resolution: {integrity: sha512-e2xVezU7XZ2Stzn4i7TOQe2Kn84oYdG0M3A7XI7oTdcpsKCcKwgiMoroiAhqCv+iN20KNqhnWwJiUiTj/qN5AA==} + /@swc/core-win32-x64-msvc@1.4.1: + resolution: {integrity: sha512-lu4h4wFBb/bOK6N2MuZwg7TrEpwYXgpQf5R7ObNSXL65BwZ9BG8XRzD+dLJmALu8l5N08rP/TrpoKRoGT4WSxw==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.4.0: - resolution: {integrity: sha512-wc5DMI5BJftnK0Fyx9SNJKkA0+BZSJQx8430yutWmsILkHMBD3Yd9GhlMaxasab9RhgKqZp7Ht30hUYO5ZDvQg==} + /@swc/core@1.4.1: + resolution: {integrity: sha512-3y+Y8js+e7BbM16iND+6Rcs3jdiL28q3iVtYsCviYSSpP2uUVKkp5sJnCY4pg8AaVvyN7CGQHO7gLEZQ5ByozQ==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -11370,16 +12520,16 @@ packages: '@swc/counter': 0.1.3 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.0 - '@swc/core-darwin-x64': 1.4.0 - '@swc/core-linux-arm-gnueabihf': 1.4.0 - '@swc/core-linux-arm64-gnu': 1.4.0 - '@swc/core-linux-arm64-musl': 1.4.0 - '@swc/core-linux-x64-gnu': 1.4.0 - '@swc/core-linux-x64-musl': 1.4.0 - '@swc/core-win32-arm64-msvc': 1.4.0 - '@swc/core-win32-ia32-msvc': 1.4.0 - '@swc/core-win32-x64-msvc': 1.4.0 + '@swc/core-darwin-arm64': 1.4.1 + '@swc/core-darwin-x64': 1.4.1 + '@swc/core-linux-arm-gnueabihf': 1.4.1 + '@swc/core-linux-arm64-gnu': 1.4.1 + '@swc/core-linux-arm64-musl': 1.4.1 + '@swc/core-linux-x64-gnu': 1.4.1 + '@swc/core-linux-x64-musl': 1.4.1 + '@swc/core-win32-arm64-msvc': 1.4.1 + '@swc/core-win32-ia32-msvc': 1.4.1 + '@swc/core-win32-x64-msvc': 1.4.1 /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -11408,14 +12558,14 @@ packages: tslib: 2.6.2 dev: false - /@swc/jest@0.2.36(@swc/core@1.4.0): + /@swc/jest@0.2.36(@swc/core@1.4.1): resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.4.0 + '@swc/core': 1.4.1 '@swc/counter': 0.1.3 jsonc-parser: 3.2.1 dev: true @@ -11565,8 +12715,8 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.3.0(@types/jest@29.5.12)(jest@29.7.0): - resolution: {integrity: sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==} + /@testing-library/jest-dom@6.4.2(@types/jest@29.5.12)(jest@29.7.0)(vitest@1.2.2): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' @@ -11587,15 +12737,16 @@ packages: optional: true dependencies: '@adobe/css-tools': 4.3.3 - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 '@types/jest': 29.5.12 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest: 29.7.0(ts-node@10.9.2) lodash: 4.17.21 redent: 3.0.0 + vitest: 1.2.2 dev: true /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): @@ -11612,7 +12763,7 @@ packages: dependencies: '@babel/runtime': 7.24.0 '@testing-library/dom': 9.3.4 - '@types/react-dom': 18.2.18 + '@types/react-dom': 18.2.22 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -11684,18 +12835,18 @@ packages: /@types/bn.js@5.1.5: resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/chrome@0.0.136: @@ -11708,24 +12859,23 @@ packages: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.43 - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.11.16 - dev: true + '@types/node': 20.11.19 /@types/cross-spawn@6.0.6: resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/debug@4.1.12: @@ -11789,7 +12939,7 @@ packages: /@types/express-serve-static-core@4.17.43: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/qs': 6.9.11 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -11818,13 +12968,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/har-format@1.2.15: resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} @@ -11849,7 +12999,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/istanbul-lib-coverage@2.0.6: @@ -11883,7 +13033,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: true @@ -11899,7 +13049,7 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/lodash.mergewith@4.6.7: @@ -11934,14 +13084,14 @@ packages: /@types/node-fetch@2.6.11: resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 form-data: 4.0.0 dev: true /@types/node-forge@1.3.11: resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/node@10.12.18: @@ -11959,8 +13109,8 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.11.16: - resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} dependencies: undici-types: 5.26.5 @@ -11980,7 +13130,7 @@ packages: /@types/nodemailer@6.4.14: resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: false /@types/normalize-package-data@2.4.4: @@ -11993,9 +13143,16 @@ packages: /@types/pbkdf2@3.1.2: resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true + /@types/pg@8.11.4: + resolution: {integrity: sha512-yw3Bwbda6vO+NvI1Ue/YKOwtl31AYvvd/e73O3V4ZkNzuGpTDndLSyc0dQRB2xrQqDePd20pEGIfqSp/GH3pRw==} + dependencies: + '@types/node': 20.11.19 + pg-protocol: 1.6.0 + pg-types: 4.0.2 + /@types/pretty-hrtime@1.0.3: resolution: {integrity: sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==} dev: true @@ -12009,8 +13166,8 @@ packages: /@types/range-parser@1.2.7: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} - /@types/react-dom@18.2.18: - resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} + /@types/react-dom@18.2.22: + resolution: {integrity: sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ==} dependencies: '@types/react': 18.2.54 @@ -12024,7 +13181,7 @@ packages: resolution: {integrity: sha512-039k+vrVJymDoe2y+HLk3O3oI3sa+C8KNjuDKofqrIJK26ramnqLNj9VJTaxAzFGMvpW/79HrrAJapHzpQ9fGQ==} dependencies: '@types/prop-types': 15.7.11 - '@types/scheduler': 0.16.8 + '@types/scheduler': 0.23.0 csstype: 3.1.3 /@types/resolve@1.20.6: @@ -12034,20 +13191,20 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/retry@0.12.0: resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} dev: true - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + /@types/scheduler@0.23.0: + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} /@types/secp256k1@4.0.6: resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/semver@7.5.6: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} @@ -12057,7 +13214,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/serve-index@1.9.4: resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} @@ -12070,7 +13227,7 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.11.16 + '@types/node': 20.11.19 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -12083,7 +13240,7 @@ packages: /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/source-list-map@0.1.6: @@ -12118,7 +13275,6 @@ packages: /@types/triple-beam@1.3.5: resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} - dev: true /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -12144,7 +13300,7 @@ packages: /@types/webpack-sources@3.2.3: resolution: {integrity: sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/source-list-map': 0.1.6 source-map: 0.7.4 dev: true @@ -12152,7 +13308,7 @@ packages: /@types/webpack@4.41.38: resolution: {integrity: sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 '@types/tapable': 1.0.12 '@types/uglify-js': 3.17.5 '@types/webpack-sources': 3.2.3 @@ -12163,7 +13319,7 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /@types/yargs-parser@21.0.3: @@ -12190,28 +13346,28 @@ packages: resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} requiresBuild: true dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true optional: true - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(typescript@5.3.3): - resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/eslint-plugin@7.4.0(@typescript-eslint/parser@7.4.0)(typescript@5.3.3): + resolution: {integrity: sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/parser': 7.4.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/type-utils': 7.4.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.4.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4(supports-color@5.5.0) graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -12222,70 +13378,70 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/parser@7.4.0(typescript@5.3.3): + resolution: {integrity: sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4(supports-color@5.5.0) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/scope-manager@7.4.0: + resolution: {integrity: sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 dev: true - /@typescript-eslint/type-utils@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/type-utils@7.4.0(typescript@5.3.3): + resolution: {integrity: sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.21.0(typescript@5.3.3) - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.4.0(typescript@5.3.3) + debug: 4.3.4(supports-color@5.5.0) ts-api-utils: 1.2.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/types@7.4.0: + resolution: {integrity: sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==} + engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/typescript-estree@7.4.0(typescript@5.3.3): + resolution: {integrity: sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/visitor-keys': 7.4.0 + debug: 4.3.4(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -12296,29 +13452,29 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.21.0(typescript@5.3.3): - resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/utils@7.4.0(typescript@5.3.3): + resolution: {integrity: sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0 '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.4.0 + '@typescript-eslint/types': 7.4.0 + '@typescript-eslint/typescript-estree': 7.4.0(typescript@5.3.3) semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} - engines: {node: ^16.0.0 || >=18.0.0} + /@typescript-eslint/visitor-keys@7.4.0: + resolution: {integrity: sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==} + engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.4.0 eslint-visitor-keys: 3.4.3 dev: true @@ -13013,7 +14169,7 @@ packages: xstate: ^4 dependencies: '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 recast: 0.23.4 xstate: 4.38.3 @@ -13218,7 +14374,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -13227,7 +14383,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -13246,13 +14402,9 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: true /ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependenciesMeta: - ajv: - optional: true dependencies: ajv: 8.12.0 dev: true @@ -13474,7 +14626,6 @@ packages: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.4 - dev: true /array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -13493,7 +14644,6 @@ packages: /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true /array-uniq@1.0.3: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} @@ -13504,11 +14654,11 @@ packages: resolution: {integrity: sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.2 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.3 + get-intrinsic: 1.2.4 dev: true /array.prototype.reduce@1.0.7: @@ -13536,7 +14686,6 @@ packages: get-intrinsic: 1.2.3 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 - dev: true /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -13615,7 +14764,6 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -13634,7 +14782,7 @@ packages: engines: {node: '>=8'} dev: true - /autoprefixer@10.4.17(postcss@8.4.33): + /autoprefixer@10.4.17(postcss@8.4.34): resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -13646,11 +14794,11 @@ packages: fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.33 + postcss: 8.4.34 postcss-value-parser: 4.2.0 dev: true - /autoprefixer@10.4.17(postcss@8.4.34): + /autoprefixer@10.4.17(postcss@8.4.35): resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -13662,7 +14810,7 @@ packages: fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.34 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true @@ -14236,6 +15384,11 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-writer@2.0.0: + resolution: {integrity: sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==} + engines: {node: '>=4'} + dev: false + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} dev: true @@ -14386,6 +15539,11 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + /camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: false @@ -14470,7 +15628,6 @@ packages: /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: false /chance@1.1.11: resolution: {integrity: sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==} @@ -14579,6 +15736,20 @@ packages: optionalDependencies: fsevents: 2.3.3 + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + 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 + /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: true @@ -14633,6 +15804,16 @@ packages: /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + + /cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + memoizee: 0.4.15 + timers-ext: 0.1.7 dev: true /cli-cursor@3.1.0: @@ -14784,7 +15965,6 @@ packages: dependencies: color-convert: 1.9.3 color-string: 1.9.1 - dev: true /color@4.2.3: resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} @@ -14809,7 +15989,6 @@ packages: dependencies: color: 3.2.1 text-hex: 1.0.0 - dev: true /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} @@ -14994,6 +16173,13 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} + /copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + dev: true + /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: @@ -15096,7 +16282,7 @@ packages: sha.js: 2.4.11 dev: true - /create-jest@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): + /create-jest@29.7.0(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -15105,7 +16291,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -15117,6 +16303,13 @@ packages: /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + /cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} + engines: {node: '>=12.0.0'} + dependencies: + luxon: 3.4.4 + dev: false + /cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: @@ -15146,7 +16339,6 @@ packages: semver: 7.6.0 shebang-command: 1.2.0 which: 1.3.1 - dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -15209,15 +16401,15 @@ packages: webpack: optional: true dependencies: - icss-utils: 5.1.0(postcss@8.4.34) - postcss: 8.4.34 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.34) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.34) - postcss-modules-scope: 3.1.1(postcss@8.4.34) - postcss-modules-values: 4.0.0(postcss@8.4.34) + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) + postcss-modules-scope: 3.1.1(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) postcss-value-parser: 4.2.0 semver: 7.6.0 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /css-select@4.3.0: @@ -15369,6 +16561,14 @@ packages: yauzl: 2.10.0 dev: true + /d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dependencies: + es5-ext: 0.10.64 + type: 2.7.2 + dev: true + /dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -15470,7 +16670,6 @@ packages: dependencies: ms: 2.1.2 supports-color: 5.5.0 - dev: false /debug@4.3.4(supports-color@8.1.1): resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -15483,6 +16682,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} @@ -15676,7 +16876,6 @@ packages: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true /defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} @@ -15695,6 +16894,11 @@ packages: slash: 3.0.0 dev: true + /delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + dev: false + /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -15784,7 +16988,7 @@ packages: hasBin: true dependencies: address: 1.2.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -15827,6 +17031,12 @@ packages: randombytes: 2.1.0 dev: true + /difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + dependencies: + heap: 0.2.7 + dev: true + /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -15835,7 +17045,6 @@ packages: engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true /dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -15953,7 +17162,7 @@ packages: resolution: {integrity: sha512-/Tezlx6xpDqR6zKg1V4vLCeQtHWiELhWoBz5A/E0+A1lXN9iIkNbbfc4THSymS0LQUo8F1PMiIwVG8ai/HrnSA==} engines: {node: '>= 8.3.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) is-string-and-not-blank: 0.0.2 transitivePeerDependencies: - supports-color @@ -15963,22 +17172,130 @@ packages: resolution: {integrity: sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==} engines: {node: '>=12'} + /dotenv@16.4.4: + resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==} + engines: {node: '>=12'} + /download@8.0.0: resolution: {integrity: sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==} engines: {node: '>=10'} dependencies: - archive-type: 4.0.0 - content-disposition: 0.5.4 - decompress: 4.2.1 - ext-name: 5.0.0 - file-type: 11.1.0 - filenamify: 3.0.0 - get-stream: 4.1.0 - got: 8.3.2 - make-dir: 2.1.0 - p-event: 2.3.1 - pify: 4.0.1 - dev: true + archive-type: 4.0.0 + content-disposition: 0.5.4 + decompress: 4.2.1 + ext-name: 5.0.0 + file-type: 11.1.0 + filenamify: 3.0.0 + get-stream: 4.1.0 + got: 8.3.2 + make-dir: 2.1.0 + p-event: 2.3.1 + pify: 4.0.1 + dev: true + + /dreamopt@0.8.0: + resolution: {integrity: sha512-vyJTp8+mC+G+5dfgsY+r3ckxlz+QMX40VjPQsZc5gxVAxLmi64TBoVkP54A/pRAXMXsbu2GMMBrZPxNv23waMg==} + engines: {node: '>=0.4.0'} + dependencies: + wordwrap: 1.0.0 + dev: true + + /drizzle-kit@0.20.14: + resolution: {integrity: sha512-0fHv3YIEaUcSVPSGyaaBfOi9bmpajjhbJNdPsRMIUvYdLVxBu9eGjH8mRc3Qk7HVmEidFc/lhG1YyJhoXrn5yA==} + hasBin: true + dependencies: + '@drizzle-team/studio': 0.0.39 + '@esbuild-kit/esm-loader': 2.6.5 + camelcase: 7.0.1 + chalk: 5.3.0 + commander: 9.5.0 + env-paths: 3.0.0 + esbuild: 0.19.12 + esbuild-register: 3.5.0(esbuild@0.19.12) + glob: 8.1.0 + hanji: 0.0.5 + json-diff: 0.9.0 + minimatch: 7.4.6 + semver: 7.6.0 + zod: 3.22.4 + transitivePeerDependencies: + - supports-color + dev: true + + /drizzle-orm@0.29.5(@types/pg@8.11.4)(pg@8.11.3): + resolution: {integrity: sha512-jS3+uyzTz4P0Y2CICx8FmRQ1eplURPaIMWDn/yq6k4ShRFj9V7vlJk67lSf2kyYPzQ60GkkNGXcJcwrxZ6QCRw==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=3' + '@libsql/client': '*' + '@neondatabase/serverless': '>=0.1' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/react': '>=18' + '@types/sql.js': '*' + '@vercel/postgres': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=13.2.0' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + react: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@libsql/client': + optional: true + '@neondatabase/serverless': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/react': + optional: true + '@types/sql.js': + optional: true + '@vercel/postgres': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + react: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dependencies: + '@types/pg': 8.11.4 + pg: 8.11.3 + dev: false /dset@3.1.3: resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} @@ -16082,6 +17399,10 @@ packages: env-variable: 0.0.6 dev: true + /enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + dev: false + /encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -16106,7 +17427,7 @@ packages: resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io-parser: 5.2.2 ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) xmlhttprequest-ssl: 2.0.0 @@ -16144,6 +17465,11 @@ packages: engines: {node: '>=0.12'} dev: true + /env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /env-variable@0.0.6: resolution: {integrity: sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==} dev: true @@ -16207,7 +17533,6 @@ packages: typed-array-length: 1.0.4 unbox-primitive: 1.0.2 which-typed-array: 1.1.14 - dev: true /es-abstract@1.23.2: resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} @@ -16312,7 +17637,6 @@ packages: get-intrinsic: 1.2.3 has-tostringtag: 1.0.2 hasown: 2.0.0 - dev: true /es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} @@ -16326,7 +17650,7 @@ packages: /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -16336,12 +17660,47 @@ packages: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + + /es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 dev: true /es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + dev: true + + /es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + dependencies: + d: 1.0.2 + ext: 1.7.0 + dev: true + + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + dev: true + /esbuild-plugin-alias@0.2.1: resolution: {integrity: sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==} dev: true @@ -16351,12 +17710,23 @@ packages: peerDependencies: esbuild: '>=0.12 <1' dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) esbuild: 0.18.20 transitivePeerDependencies: - supports-color dev: true + /esbuild-register@3.5.0(esbuild@0.19.12): + resolution: {integrity: sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + esbuild: 0.19.12 + transitivePeerDependencies: + - supports-color + dev: true + /esbuild@0.18.20: resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} @@ -16448,6 +17818,37 @@ packages: '@esbuild/win32-x64': 0.20.0 dev: false + /esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + dev: true + /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -16492,6 +17893,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.2 + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -16672,6 +18083,13 @@ packages: - debug dev: true + /event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + dev: true + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -16879,6 +18297,12 @@ packages: sort-keys-length: 1.0.1 dev: true + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: true + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -17038,7 +18462,6 @@ packages: /fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - dev: true /fetch-retry@5.0.6: resolution: {integrity: sha512-3yurQZ2hD9VISAhJJP9bpYFNQrHHBXE2JxxjY5aLEcDi46RmAzJE2OC9FAde0yis5ElW0jTTzs0zfg/Cca4XqQ==} @@ -17244,6 +18667,10 @@ packages: engines: {node: '>=0.4.0'} dev: true + /fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + dev: false + /follow-redirects@1.15.5(debug@4.3.4): resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} @@ -17253,7 +18680,7 @@ packages: debug: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) dev: true /for-each@0.3.3: @@ -17289,7 +18716,7 @@ packages: dependencies: '@babel/code-frame': 7.23.5 chalk: 4.1.2 - chokidar: 3.5.3 + chokidar: 3.6.0 cosmiconfig: 7.1.0 deepmerge: 4.3.1 fs-extra: 10.1.0 @@ -17300,7 +18727,7 @@ packages: semver: 7.6.0 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /form-data@2.3.3: @@ -17373,6 +18800,24 @@ packages: '@emotion/is-prop-valid': 0.8.8 dev: false + /framer-motion@11.0.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Lb0EYbQcSK/pgyQUJm+KzsQrKrJRX9sFRyzl9hSr9gFG4Mk8yP7BjhuxvRXzblOM/+JxycrJdCDVmOQBsjpYlw==} + peerDependencies: + react: '*' + react-dom: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 + dev: false + /framer-motion@6.5.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: @@ -17603,11 +19048,9 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.3 functions-have-names: 1.2.3 - dev: true /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true /futoin-hkdf@1.5.3: resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} @@ -17734,7 +19177,6 @@ packages: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.3 - dev: true /get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} @@ -17857,6 +19299,17 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + /global-dirs@3.0.1: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} @@ -17873,7 +19326,6 @@ packages: engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -17885,13 +19337,12 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - dev: true - /globby@14.0.0: - resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} dependencies: - '@sindresorhus/merge-streams': 1.0.0 + '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 ignore: 5.3.1 path-type: 5.0.0 @@ -17944,6 +19395,16 @@ packages: url-to-options: 1.0.1 dev: true + /gql-generator@2.0.0: + resolution: {integrity: sha512-BFJCaCyJ6xMnL7C0bCGtnuG8M9IoZWpCauPpVEBZmRKSNTp4GS33neC5Q+uwpipawsB/mwZPOMB/5WAescRGGQ==} + engines: {node: '>=18'} + hasBin: true + dependencies: + commander: 11.1.0 + graphql: 16.8.1 + rimraf: 5.0.5 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -18008,7 +19469,7 @@ packages: upper-case: 2.0.2 dev: true - /graphql-config@5.0.3(@types/node@20.11.16)(graphql@16.8.1)(typescript@5.3.3): + /graphql-config@5.0.3(@types/node@20.11.19)(graphql@16.8.1)(typescript@5.3.3): resolution: {integrity: sha512-BNGZaoxIBkv9yy6Y7omvsaBUHOzfFcII3UN++tpH8MGOKFPFkCPZuwx09ggANMt8FgyWP1Od8SWPmrUEZca4NQ==} engines: {node: '>= 16.0.0'} peerDependencies: @@ -18020,9 +19481,9 @@ packages: dependencies: '@graphql-tools/graphql-file-loader': 8.0.0(graphql@16.8.1) '@graphql-tools/json-file-loader': 8.0.0(graphql@16.8.1) - '@graphql-tools/load': 8.0.1(graphql@16.8.1) - '@graphql-tools/merge': 9.0.1(graphql@16.8.1) - '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.16)(graphql@16.8.1) + '@graphql-tools/load': 8.0.2(graphql@16.8.1) + '@graphql-tools/merge': 9.0.3(graphql@16.8.1) + '@graphql-tools/url-loader': 8.0.1(@types/node@20.11.19)(graphql@16.8.1) '@graphql-tools/utils': 10.0.13(graphql@16.8.1) cosmiconfig: 8.3.6(typescript@5.3.3) graphql: 16.8.1 @@ -18116,7 +19577,7 @@ packages: resolution: {integrity: sha512-C1SRw5zZtl7CN7mv6Q0abFVSJwG8M+FniFCPqWD+AjQMj9igNPthraMUQ02KSo+j19khR60mksqmFN3BwboFaw==} dependencies: '@babel/parser': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 source-map-support: 0.5.21 typescript: 3.9.10 @@ -18255,6 +19716,13 @@ packages: optionalDependencies: uglify-js: 3.17.4 + /hanji@0.0.5: + resolution: {integrity: sha512-Abxw1Lq+TnYiL4BueXqMau222fPSPMFtya8HdpWsz/xVAhifXou71mPh/kY2+08RgFcVccjG3uZHs6K5HAe3zw==} + dependencies: + lodash.throttle: 4.1.1 + sisteransi: 1.0.5 + dev: true + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -18283,7 +19751,6 @@ packages: /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} @@ -18406,6 +19873,10 @@ packages: tslib: 2.6.2 dev: true + /heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + dev: true + /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} @@ -18423,7 +19894,6 @@ packages: /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true /hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -18520,7 +19990,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /htmlparser2@6.1.0: @@ -18581,7 +20051,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -18591,7 +20061,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -18657,7 +20127,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -18667,7 +20137,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -18690,8 +20160,8 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - /husky@9.0.10: - resolution: {integrity: sha512-TQGNknoiy6bURzIO77pPRu+XHi6zI7T93rX+QnJsoYFf3xdjKOur+IlfqzJGMHIK/wXrLg+GsvMs8Op7vI2jVA==} + /husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} engines: {node: '>=18'} hasBin: true dev: true @@ -18723,13 +20193,13 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils@5.1.0(postcss@8.4.34): + /icss-utils@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.34 + postcss: 8.4.35 dev: true /idb-keyval@6.2.1: @@ -18748,7 +20218,6 @@ packages: /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - dev: true /image-size@1.1.1: resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} @@ -18807,7 +20276,6 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -18866,7 +20334,6 @@ packages: get-intrinsic: 1.2.3 hasown: 2.0.0 side-channel: 1.0.4 - dev: true /internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} @@ -18910,7 +20377,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -18962,7 +20429,6 @@ packages: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.3 - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -18974,7 +20440,6 @@ packages: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 - dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -18988,7 +20453,6 @@ packages: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.2 - dev: true /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} @@ -19018,7 +20482,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-deflate@1.0.0: resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} @@ -19152,7 +20615,6 @@ packages: /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} - dev: true /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} @@ -19164,7 +20626,6 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} @@ -19214,13 +20675,16 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true + /is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.2 - dev: true /is-relative@1.0.0: resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} @@ -19242,7 +20706,6 @@ packages: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.5 - dev: true /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} @@ -19280,14 +20743,12 @@ packages: engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.2 - dev: true /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 - dev: true /is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} @@ -19338,7 +20799,6 @@ packages: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.5 - dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} @@ -19347,6 +20807,11 @@ packages: get-intrinsic: 1.2.3 dev: true + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + dev: true + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} @@ -19375,7 +20840,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -19500,7 +20964,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -19570,7 +21034,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -19590,7 +21054,7 @@ packages: - babel-plugin-macros - supports-color - /jest-cli@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): + /jest-cli@29.7.0(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19604,10 +21068,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + create-jest: 29.7.0(ts-node@10.9.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -19617,7 +21081,7 @@ packages: - supports-color - ts-node - /jest-config@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): + /jest-config@29.7.0(@types/node@20.11.19)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -19632,7 +21096,7 @@ packages: '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 @@ -19652,7 +21116,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -19695,7 +21159,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -19712,7 +21176,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -19730,7 +21194,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.16 + '@types/node': 20.11.19 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -19787,7 +21251,7 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /jest-mock@29.7.0: @@ -19795,7 +21259,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-util: 29.7.0 /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -19845,7 +21309,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -19875,7 +21339,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -19929,7 +21393,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -19952,7 +21416,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.16 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -19963,7 +21427,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -19972,12 +21436,12 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.7.0(@types/node@20.11.16)(ts-node@10.9.2): + /jest@29.7.0(ts-node@10.9.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -19990,7 +21454,7 @@ packages: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest-cli: 29.7.0(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20159,9 +21623,17 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-diff@0.9.0: + resolution: {integrity: sha512-cVnggDrVkAAA3OvFfHpFEhOnmcsUpleEKq4d4O8sQWWSH40MBrWstKigVB1kGrgLWzuom+7rRdaCsnBD6VyObQ==} + hasBin: true + dependencies: + cli-color: 2.0.4 + difflib: 0.2.4 + dreamopt: 0.8.0 + dev: true + /json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -20203,7 +21675,7 @@ packages: resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 isarray: 2.0.5 jsonify: 0.0.1 object-keys: 1.1.1 @@ -20314,6 +21786,10 @@ packages: colornames: 1.1.1 dev: true + /kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + dev: false + /launch-editor@2.6.1: resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} dependencies: @@ -20331,7 +21807,7 @@ packages: engines: {node: '>=14.0.0'} dependencies: app-root-dir: 1.0.2 - dotenv: 16.4.1 + dotenv: 16.4.4 dotenv-expand: 10.0.0 dev: true @@ -20357,7 +21833,7 @@ packages: dependencies: chalk: 5.3.0 commander: 11.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) execa: 8.0.1 lilconfig: 3.0.0 listr2: 8.0.1 @@ -20470,7 +21946,6 @@ packages: parse-json: 4.0.0 pify: 3.0.0 strip-bom: 3.0.0 - dev: true /load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} @@ -20552,7 +22027,6 @@ packages: /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - dev: true /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} @@ -20601,6 +22075,10 @@ packages: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} dev: true + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true @@ -20658,7 +22136,6 @@ packages: ms: 2.1.3 safe-stable-stringify: 2.4.3 triple-beam: 1.4.1 - dev: true /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} @@ -20722,6 +22199,17 @@ packages: dependencies: yallist: 4.0.0 + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + dependencies: + es5-ext: 0.10.64 + dev: true + + /luxon@3.4.4: + resolution: {integrity: sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==} + engines: {node: '>=12'} + dev: false + /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -20832,6 +22320,19 @@ packages: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false + /memoizee@0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + dev: true + /memoizerific@1.11.3: resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} dependencies: @@ -20840,7 +22341,6 @@ packages: /memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - dev: true /merge-descriptors@1.0.1: resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} @@ -20858,7 +22358,7 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /meros@1.3.0(@types/node@20.11.16): + /meros@1.3.0(@types/node@20.11.19): resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} engines: {node: '>=13'} peerDependencies: @@ -20867,7 +22367,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.11.16 + '@types/node': 20.11.19 dev: true /mersenne-twister@1.1.0: @@ -20964,6 +22464,13 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -21154,6 +22661,10 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: true + /next@14.1.0(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} @@ -21198,7 +22709,6 @@ packages: /nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true /no-case@2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} @@ -21340,14 +22850,12 @@ packages: resolve: 1.22.8 semver: 7.6.0 validate-npm-package-license: 3.0.4 - dev: true /normalize-path@2.1.1: resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} engines: {node: '>=0.10.0'} dependencies: remove-trailing-separator: 1.1.0 - dev: true /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -21381,7 +22889,6 @@ packages: read-pkg: 3.0.0 shell-quote: 1.8.1 string.prototype.padend: 3.1.5 - dev: true /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -21489,7 +22996,6 @@ packages: /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -21499,7 +23005,6 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.getownpropertydescriptors@2.1.8: resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} @@ -21520,7 +23025,6 @@ packages: /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - dev: true /ofetch@1.3.3: resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} @@ -21562,6 +23066,12 @@ packages: resolution: {integrity: sha512-qAMrwuk2xLEutlASoiPiAMW3EN3K96Ka/ilSXYr6qR1zSVXw2j7+yDSqGTC4T9apfLYxM3tLLjKvgPdAUK7kYQ==} dev: true + /one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: false + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -21702,7 +23212,6 @@ packages: engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 - dev: true /p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} @@ -21733,6 +23242,10 @@ packages: release-zalgo: 1.0.0 dev: true + /packet-reader@1.0.0: + resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} + dev: false + /pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} dev: true @@ -21785,7 +23298,6 @@ packages: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: true /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -21863,7 +23375,6 @@ packages: /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} - dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -21907,7 +23418,6 @@ packages: engines: {node: '>=4'} dependencies: pify: 3.0.0 - dev: true /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -21952,6 +23462,99 @@ packages: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true + /pg-boss@9.0.3: + resolution: {integrity: sha512-cUWUiv3sr563yNy0nCZ25Tv5U0m59Y9MhX/flm0vTR012yeVCrqpfboaZP4xFOQPdWipMJpuu4g94HR0SncTgw==} + engines: {node: '>=16'} + dependencies: + cron-parser: 4.9.0 + delay: 5.0.0 + lodash.debounce: 4.0.8 + p-map: 4.0.0 + pg: 8.11.3 + serialize-error: 8.1.0 + uuid: 9.0.1 + transitivePeerDependencies: + - pg-native + dev: false + + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: false + optional: true + + /pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} + dev: false + + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + /pg-numeric@1.0.2: + resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} + engines: {node: '>=4'} + + /pg-pool@3.6.1(pg@8.11.3): + resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.3 + dev: false + + /pg-protocol@1.6.0: + resolution: {integrity: sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==} + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: false + + /pg-types@4.0.2: + resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==} + engines: {node: '>=10'} + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: 3.0.2 + postgres-bytea: 3.0.0 + postgres-date: 2.1.0 + postgres-interval: 3.0.0 + postgres-range: 1.1.4 + + /pg@8.11.3: + resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + buffer-writer: 2.0.0 + packet-reader: 1.0.0 + pg-connection-string: 2.6.2 + pg-pool: 3.6.1(pg@8.11.3) + pg-protocol: 1.6.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: false + + /pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.2.0 + dev: false + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -21963,7 +23566,6 @@ packages: resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} engines: {node: '>=0.10'} hasBin: true - dev: true /pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} @@ -22127,13 +23729,13 @@ packages: engines: {node: '>= 0.4'} dev: true - /postcss-import@15.1.0(postcss@8.4.34): + /postcss-import@15.1.0(postcss@8.4.35): resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} engines: {node: '>=14.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.34 + postcss: 8.4.35 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 @@ -22162,34 +23764,28 @@ packages: resolve: 1.22.8 dev: true - /postcss-js@4.0.1(postcss@8.4.34): + /postcss-import@16.0.1(postcss@8.4.35): + resolution: {integrity: sha512-i2Pci0310NaLHr/5JUFSw1j/8hf1CzwMY13g6ZDxgOavmRHQi2ba3PmUHoihO+sjaum+KmCNzskNsw7JDrg03g==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.35): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} engines: {node: ^12 || ^14 || >= 16} peerDependencies: postcss: ^8.4.21 dependencies: camelcase-css: 2.0.1 - postcss: 8.4.34 - - /postcss-load-config@4.0.2(postcss@8.4.33)(ts-node@10.9.2): - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - dependencies: - lilconfig: 3.0.0 - postcss: 8.4.33 - ts-node: 10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3) - yaml: 2.3.4 - dev: true + postcss: 8.4.35 - /postcss-load-config@4.0.2(postcss@8.4.34)(ts-node@10.9.2): + /postcss-load-config@4.0.2(postcss@8.4.35)(ts-node@10.9.2): resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: @@ -22202,11 +23798,11 @@ packages: optional: true dependencies: lilconfig: 3.0.0 - postcss: 8.4.34 - ts-node: 10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3) + postcss: 8.4.35 + ts-node: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) yaml: 2.3.4 - /postcss-loader@7.3.4(postcss@8.4.34)(typescript@5.3.3): + /postcss-loader@7.3.4(postcss@8.4.35)(typescript@5.3.3): resolution: {integrity: sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==} engines: {node: '>= 14.15.0'} peerDependencies: @@ -22215,60 +23811,60 @@ packages: dependencies: cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 - postcss: 8.4.34 + postcss: 8.4.35 semver: 7.6.0 transitivePeerDependencies: - typescript dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.34): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.34 + postcss: 8.4.35 dev: true - /postcss-modules-local-by-default@4.0.4(postcss@8.4.34): + /postcss-modules-local-by-default@4.0.4(postcss@8.4.35): resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.34) - postcss: 8.4.34 + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.1.1(postcss@8.4.34): + /postcss-modules-scope@3.1.1(postcss@8.4.35): resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.34 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.34): + /postcss-modules-values@4.0.0(postcss@8.4.35): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.34) - postcss: 8.4.34 + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 dev: true - /postcss-nested@6.0.1(postcss@8.4.34): + /postcss-nested@6.0.1(postcss@8.4.35): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 dependencies: - postcss: 8.4.34 + postcss: 8.4.35 postcss-selector-parser: 6.0.15 /postcss-selector-parser@6.0.10: @@ -22313,6 +23909,67 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.2.0 + dev: true + + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: false + + /postgres-array@3.0.2: + resolution: {integrity: sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==} + engines: {node: '>=12'} + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-bytea@3.0.0: + resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} + engines: {node: '>= 6'} + dependencies: + obuf: 1.1.2 + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: false + + /postgres-date@2.1.0: + resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} + engines: {node: '>=12'} + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: false + + /postgres-interval@3.0.0: + resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} + engines: {node: '>=12'} + + /postgres-range@1.1.4: + resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} /preact@10.19.3: resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} @@ -22694,8 +24351,8 @@ packages: strip-json-comments: 2.0.1 dev: true - /react-aria@3.31.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-q4jRCVDKO6V2o4Sgir5S2obssw/YnMx6QOy10+p0dYqROHpSnMFNkONrKT1w/nA+Nx4ptfPqZbaNra1hR1bUWg==} + /react-aria@3.32.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7KCJg4K5vlRqiXdGjgCT05Du8RhGBYC+2ok4GOh/Znmg8aMwOk7t0YwxaT5i1z30+fmDcJS/pk/ipUPUg28CXg==} peerDependencies: react: '*' react-dom: '*' @@ -22705,43 +24362,43 @@ packages: react-dom: optional: true dependencies: - '@internationalized/string': 3.2.0 - '@react-aria/breadcrumbs': 3.5.9(react@18.2.0) - '@react-aria/button': 3.9.1(react@18.2.0) - '@react-aria/calendar': 3.5.4(react-dom@18.2.0)(react@18.2.0) - '@react-aria/checkbox': 3.13.0(react@18.2.0) - '@react-aria/combobox': 3.8.2(react-dom@18.2.0)(react@18.2.0) - '@react-aria/datepicker': 3.9.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/dialog': 3.5.10(react-dom@18.2.0)(react@18.2.0) - '@react-aria/dnd': 3.5.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/focus': 3.16.0(react@18.2.0) - '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/i18n': 3.10.0(react@18.2.0) - '@react-aria/interactions': 3.20.1(react@18.2.0) - '@react-aria/label': 3.7.4(react@18.2.0) - '@react-aria/link': 3.6.3(react@18.2.0) - '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/meter': 3.4.9(react@18.2.0) - '@react-aria/numberfield': 3.10.2(react-dom@18.2.0)(react@18.2.0) - '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) - '@react-aria/progress': 3.4.9(react@18.2.0) - '@react-aria/radio': 3.10.0(react@18.2.0) - '@react-aria/searchfield': 3.7.1(react@18.2.0) - '@react-aria/select': 3.14.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/separator': 3.3.9(react@18.2.0) - '@react-aria/slider': 3.7.4(react@18.2.0) - '@react-aria/ssr': 3.9.1(react@18.2.0) - '@react-aria/switch': 3.6.0(react@18.2.0) - '@react-aria/table': 3.13.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/tabs': 3.8.3(react-dom@18.2.0)(react@18.2.0) - '@react-aria/tag': 3.3.1(react-dom@18.2.0)(react@18.2.0) - '@react-aria/textfield': 3.14.1(react@18.2.0) - '@react-aria/tooltip': 3.7.0(react@18.2.0) - '@react-aria/utils': 3.23.0(react@18.2.0) - '@react-aria/visually-hidden': 3.8.8(react@18.2.0) - '@react-types/shared': 3.22.0(react@18.2.0) + '@internationalized/string': 3.2.1 + '@react-aria/breadcrumbs': 3.5.11(react@18.2.0) + '@react-aria/button': 3.9.3(react@18.2.0) + '@react-aria/calendar': 3.5.6(react-dom@18.2.0)(react@18.2.0) + '@react-aria/checkbox': 3.14.1(react@18.2.0) + '@react-aria/combobox': 3.8.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/datepicker': 3.9.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dialog': 3.5.12(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dnd': 3.5.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/focus': 3.16.2(react@18.2.0) + '@react-aria/gridlist': 3.7.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.2(react@18.2.0) + '@react-aria/interactions': 3.21.1(react@18.2.0) + '@react-aria/label': 3.7.6(react@18.2.0) + '@react-aria/link': 3.6.5(react@18.2.0) + '@react-aria/listbox': 3.11.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.13.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/meter': 3.4.11(react@18.2.0) + '@react-aria/numberfield': 3.11.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.21.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/progress': 3.4.11(react@18.2.0) + '@react-aria/radio': 3.10.2(react@18.2.0) + '@react-aria/searchfield': 3.7.3(react@18.2.0) + '@react-aria/select': 3.14.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/separator': 3.3.11(react@18.2.0) + '@react-aria/slider': 3.7.6(react@18.2.0) + '@react-aria/ssr': 3.9.2(react@18.2.0) + '@react-aria/switch': 3.6.2(react@18.2.0) + '@react-aria/table': 3.13.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tabs': 3.8.5(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tag': 3.3.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.3(react@18.2.0) + '@react-aria/tooltip': 3.7.2(react@18.2.0) + '@react-aria/utils': 3.23.2(react@18.2.0) + '@react-aria/visually-hidden': 3.8.10(react@18.2.0) + '@react-types/shared': 3.22.1(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -22774,7 +24431,7 @@ packages: engines: {node: '>=16.14.0'} dependencies: '@babel/core': 7.23.9 - '@babel/traverse': 7.23.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.23.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 @@ -23120,7 +24777,6 @@ packages: load-json-file: 4.0.0 normalize-package-data: 2.5.0 path-type: 3.0.0 - dev: true /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} @@ -23240,7 +24896,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 dev: true /regex-parser@2.3.0: @@ -23254,7 +24910,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 - dev: true /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} @@ -23334,7 +24989,6 @@ packages: /remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: true /remove-trailing-spaces@1.0.8: resolution: {integrity: sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA==} @@ -23442,7 +25096,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 3.2.1 - postcss: 8.4.34 + postcss: 8.4.35 source-map: 0.6.1 dev: true @@ -23517,6 +25171,14 @@ packages: dependencies: glob: 7.2.3 + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + /ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} dependencies: @@ -23546,6 +25208,30 @@ packages: source-map: 0.7.4 yargs: 17.7.2 + /rollup@4.13.1: + resolution: {integrity: sha512-hFi+fU132IvJ2ZuihN56dwgpltpmLZHZWsx27rMCTZ2sYwrqlgL5sECGy1eeV2lAihD8EzChBVVhsXci0wD4Tg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.13.1 + '@rollup/rollup-android-arm64': 4.13.1 + '@rollup/rollup-darwin-arm64': 4.13.1 + '@rollup/rollup-darwin-x64': 4.13.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.13.1 + '@rollup/rollup-linux-arm64-gnu': 4.13.1 + '@rollup/rollup-linux-arm64-musl': 4.13.1 + '@rollup/rollup-linux-riscv64-gnu': 4.13.1 + '@rollup/rollup-linux-s390x-gnu': 4.13.1 + '@rollup/rollup-linux-x64-gnu': 4.13.1 + '@rollup/rollup-linux-x64-musl': 4.13.1 + '@rollup/rollup-win32-arm64-msvc': 4.13.1 + '@rollup/rollup-win32-ia32-msvc': 4.13.1 + '@rollup/rollup-win32-x64-msvc': 4.13.1 + fsevents: 2.3.3 + dev: true + /rollup@4.9.6: resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -23584,7 +25270,7 @@ packages: /rtl-css-js@1.16.1: resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} dependencies: - '@babel/runtime': 7.23.9 + '@babel/runtime': 7.24.0 dev: false /run-async@2.4.1: @@ -23611,7 +25297,6 @@ packages: get-intrinsic: 1.2.3 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true /safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} @@ -23636,7 +25321,6 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.3 is-regex: 1.1.4 - dev: true /safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} @@ -23820,6 +25504,13 @@ packages: upper-case-first: 2.0.2 dev: true + /serialize-error@8.1.0: + resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} + engines: {node: '>=10'} + dependencies: + type-fest: 0.20.2 + dev: false + /serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} dependencies: @@ -23900,7 +25591,6 @@ packages: define-data-property: 1.1.1 functions-have-names: 1.2.3 has-property-descriptors: 1.0.1 - dev: true /set-harmonic-interval@1.0.1: resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} @@ -23932,6 +25622,10 @@ packages: kind-of: 6.0.3 dev: true + /shallow-equal-object@1.1.1: + resolution: {integrity: sha512-9DDzYRlzCwF2CemeF0aOFk5T5KMrjG7HldcW7utwYhA/limuGHn3No8KhpDE8BrO7GLaSRJumNKReipZBybd7A==} + dev: false + /shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} dev: false @@ -23956,7 +25650,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 - dev: true /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -23967,7 +25660,6 @@ packages: /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} - dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} @@ -23975,7 +25667,6 @@ packages: /shell-quote@1.8.1: resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: true /shelljs@0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} @@ -24095,7 +25786,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -24108,7 +25799,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -24156,6 +25847,11 @@ packages: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: true + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: @@ -24214,27 +25910,23 @@ packages: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.16 - dev: true /spdx-exceptions@2.4.0: resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} - dev: true /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.4.0 spdx-license-ids: 3.0.16 - dev: true /spdx-license-ids@3.0.16: resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} - dev: true /spdy-transport@3.0.0: resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -24248,7 +25940,7 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -24307,7 +25999,6 @@ packages: /stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: true /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} @@ -24463,7 +26154,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} @@ -24472,7 +26162,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} @@ -24490,7 +26179,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} @@ -24506,7 +26194,6 @@ packages: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - dev: true /string_decoder@1.0.3: resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} @@ -24545,7 +26232,6 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: true /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} @@ -24607,7 +26293,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /style-value-types@5.0.0: @@ -24685,6 +26371,13 @@ packages: pirates: 4.0.6 ts-interface-checker: 0.1.13 + /superjson@2.2.1: + resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + engines: {node: '>=16'} + dependencies: + copy-anything: 3.0.5 + dev: true + /superstruct@1.0.3: resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} engines: {node: '>=14.0.0'} @@ -24826,11 +26519,11 @@ packages: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.34 - postcss-import: 15.1.0(postcss@8.4.34) - postcss-js: 4.0.1(postcss@8.4.34) - postcss-load-config: 4.0.2(postcss@8.4.34)(ts-node@10.9.2) - postcss-nested: 6.0.1(postcss@8.4.34) + postcss: 8.4.35 + postcss-import: 15.1.0(postcss@8.4.35) + postcss-js: 4.0.1(postcss@8.4.35) + postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.2) + postcss-nested: 6.0.1(postcss@8.4.35) postcss-selector-parser: 6.0.15 resolve: 1.22.8 sucrase: 3.35.0 @@ -24936,7 +26629,7 @@ packages: unique-string: 2.0.0 dev: true - /terser-webpack-plugin@5.3.10(@swc/core@1.4.0)(webpack@5.90.1): + /terser-webpack-plugin@5.3.10(@swc/core@1.4.1)(webpack@5.90.1): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -24953,12 +26646,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.22 - '@swc/core': 1.4.0 + '@swc/core': 1.4.1 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.27.0 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /terser@5.27.0: @@ -24982,7 +26675,6 @@ packages: /text-hex@1.0.0: resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} - dev: true /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} @@ -25036,6 +26728,13 @@ packages: setimmediate: 1.0.5 dev: true + /timers-ext@0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + dependencies: + es5-ext: 0.10.64 + next-tick: 1.1.0 + dev: true + /tiny-case@1.0.3: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} dev: false @@ -25174,7 +26873,6 @@ packages: /triple-beam@1.4.1: resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} engines: {node: '>= 14.0.0'} - dev: true /ts-api-utils@1.2.0(typescript@5.3.3): resolution: {integrity: sha512-d+3WxW4r8WQy2cZWpNRPPGExX8ffOLGcIhheUANKbL5Sqjbhkneki76fRAWeXkaslV2etTb4tSJBSxOsH5+CJw==} @@ -25227,7 +26925,7 @@ packages: '@jest/types': 29.6.3 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.11.16)(ts-node@10.9.2) + jest: 29.7.0(ts-node@10.9.2) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -25245,7 +26943,7 @@ packages: resolution: {integrity: sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA==} dev: true - /ts-node-dev@2.0.0(@swc/core@1.4.0)(@types/node@18.19.14)(typescript@5.3.3): + /ts-node-dev@2.0.0(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3): resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} engines: {node: '>=0.8.0'} hasBin: true @@ -25256,7 +26954,7 @@ packages: node-notifier: optional: true dependencies: - chokidar: 3.5.3 + chokidar: 3.6.0 dynamic-dedupe: 0.3.0 minimist: 1.2.8 mkdirp: 1.0.4 @@ -25264,7 +26962,7 @@ packages: rimraf: 2.7.1 source-map-support: 0.5.21 tree-kill: 1.2.2 - ts-node: 10.9.2(@swc/core@1.4.0)(@types/node@18.19.14)(typescript@5.3.3) + ts-node: 10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3) tsconfig: 7.0.0 typescript: 5.3.3 transitivePeerDependencies: @@ -25273,7 +26971,7 @@ packages: - '@types/node' dev: true - /ts-node@10.9.2(@swc/core@1.4.0)(@types/node@18.19.14)(typescript@5.3.3): + /ts-node@10.9.2(@swc/core@1.4.1)(@types/node@18.19.14)(typescript@5.3.3): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -25288,7 +26986,7 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.4.0 + '@swc/core': 1.4.1 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 @@ -25304,37 +27002,6 @@ packages: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /ts-node@10.9.2(@swc/core@1.4.0)(@types/node@20.11.16)(typescript@5.3.3): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - 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 - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.4.0 - '@tsconfig/node10': 1.0.9 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 20.11.16 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.3.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - /ts-pnp@1.2.0(typescript@5.3.3): resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} @@ -25400,7 +27067,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@8.0.1(@swc/core@1.4.0)(postcss@8.4.33)(ts-node@10.9.2)(typescript@5.3.3): + /tsup@8.0.1(@swc/core@1.4.1)(postcss@8.4.35)(ts-node@10.9.2)(typescript@5.3.3): resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} engines: {node: '>=18'} hasBin: true @@ -25419,17 +27086,17 @@ packages: typescript: optional: true dependencies: - '@swc/core': 1.4.0 + '@swc/core': 1.4.1 bundle-require: 4.0.2(esbuild@0.19.12) cac: 6.7.14 chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss: 8.4.33 - postcss-load-config: 4.0.2(postcss@8.4.33)(ts-node@10.9.2) + postcss: 8.4.35 + postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.2) resolve-from: 5.0.0 rollup: 4.9.6 source-map: 0.8.0-beta.0 @@ -25441,8 +27108,48 @@ packages: - ts-node dev: true - /tsx@4.7.0: - resolution: {integrity: sha512-I+t79RYPlEYlHn9a+KzwrvEwhJg35h/1zHsLC2JXvhC2mdynMv6Zxzvhv5EMV6VF5qJlLlkSnMVvdZV3PSIGcg==} + /tsup@8.0.2(@swc/core@1.4.1)(ts-node@10.9.2)(typescript@5.3.3): + resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + '@swc/core': 1.4.1 + bundle-require: 4.0.2(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.3.4(supports-color@5.5.0) + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.2) + resolve-from: 5.0.0 + rollup: 4.13.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /tsx@4.7.1: + resolution: {integrity: sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==} engines: {node: '>=18.0.0'} hasBin: true dependencies: @@ -25462,64 +27169,64 @@ packages: safe-buffer: 5.2.1 dev: true - /turbo-darwin-64@1.12.2: - resolution: {integrity: sha512-Aq/ePQ5KNx6XGwlZWTVTqpQYfysm1vkwkI6kAYgrX5DjMWn+tUXrSgNx4YNte0F+V4DQ7PtuWX+jRG0h0ZNg0A==} + /turbo-darwin-64@1.13.0: + resolution: {integrity: sha512-ctHeJXtQgBcgxnCXwrJTGiq57HtwF7zWz5NTuSv//5yeU01BtQIt62ArKfjudOhRefWJbX3Z5srn88XTb9hfww==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.12.2: - resolution: {integrity: sha512-wTr+dqkwJo/eXE+4SPTSeNBKyyfQJhI6I9sKVlCSBmtaNEqoGNgdVzgMUdqrg9AIFzLIiKO+zhfskNaSWpVFow==} + /turbo-darwin-arm64@1.13.0: + resolution: {integrity: sha512-/Q9/pNFkF9w83tNxwMpgapwLYdQ12p8mpty2YQRoUiS9ClWkcqe136jR0mtuMqzlNlpREOFZaoyIthjt6Sdo0g==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.12.2: - resolution: {integrity: sha512-BggBKrLojGarDaa2zBo+kUR3fmjpd6bLA8Unm3Aa2oJw0UvEi3Brd+w9lNsPZHXXQYBUzNUY2gCdxf3RteWb0g==} + /turbo-linux-64@1.13.0: + resolution: {integrity: sha512-hgbT7o020BGV4L7Sd8hhFTd5zVKPKxbsr0dPfel/9NkdTmptz2aGZ0Vb2MAa18SY3XaCQpDxmdYuOzvvRpo5ZA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.12.2: - resolution: {integrity: sha512-v/apSRvVuwYjq1D9MJFsHv2EpGd1S4VoSdZvVfW6FaM06L8CFZa92urNR1svdGYN28YVKwK9Ikc9qudC6t/d5A==} + /turbo-linux-arm64@1.13.0: + resolution: {integrity: sha512-WK01i2wDZARrV+HEs495A3hNeGMwQR5suYk7G+ceqqW7b+dOTlQdvUjnI3sg7wAnZPgjafFs/hoBaZdJjVa/nw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.12.2: - resolution: {integrity: sha512-3uDdwXcRGkgopYFdPDpxQiuQjfQ12Fxq0fhj+iGymav0eWA4W4wzYwSdlUp6rT22qOBIzaEsrIspRwx1DsMkNg==} + /turbo-windows-64@1.13.0: + resolution: {integrity: sha512-hJgSZJZwlWHNwLEthaqJqJWGm4NqF5X/I7vE0sPE4i/jeDl8f0n1hcOkgJkJiNXVxhj+qy/9+4dzbPLKT9imaQ==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.12.2: - resolution: {integrity: sha512-zNIHnwtQfJSjFi7movwhPQh2rfrcKZ7Xv609EN1yX0gEp9GxooCUi2yNnBQ8wTqFjioA2M5hZtGJQ0RrKaEm/Q==} + /turbo-windows-arm64@1.13.0: + resolution: {integrity: sha512-L/ErxYoXeq8tmjU/AIGicC9VyBN1zdYw8JlM4yPmMI0pJdY8E4GaYK1IiIazqq7M72lmQhU/WW7fV9FqEktwrw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.12.2: - resolution: {integrity: sha512-BcoQjBZ+LJCMdjzWhzQflOinUjek28rWXj07aaaAQ8T3Ehs0JFSjIsXOm4qIbo52G4xk3gFVcUtJhh/QRADl7g==} + /turbo@1.13.0: + resolution: {integrity: sha512-r02GtNmkOPcQvUzVE6lg474QVLyU02r3yh3lUGqrFHf5h5ZEjgDGWILsAUqplVqjri1Y/oOkTssks4CObTAaiw==} hasBin: true optionalDependencies: - turbo-darwin-64: 1.12.2 - turbo-darwin-arm64: 1.12.2 - turbo-linux-64: 1.12.2 - turbo-linux-arm64: 1.12.2 - turbo-windows-64: 1.12.2 - turbo-windows-arm64: 1.12.2 + turbo-darwin-64: 1.13.0 + turbo-darwin-arm64: 1.13.0 + turbo-linux-64: 1.13.0 + turbo-linux-arm64: 1.13.0 + turbo-windows-64: 1.13.0 + turbo-windows-arm64: 1.13.0 dev: true /tweetnacl@0.14.5: @@ -25535,6 +27242,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: false + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -25564,6 +27276,10 @@ packages: media-typer: 0.3.0 mime-types: 2.1.35 + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: true + /typed-array-buffer@1.0.0: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} @@ -25571,7 +27287,6 @@ packages: call-bind: 1.0.5 get-intrinsic: 1.2.3 is-typed-array: 1.1.13 - dev: true /typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} @@ -25590,7 +27305,6 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.13 - dev: true /typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} @@ -25612,7 +27326,6 @@ packages: for-each: 0.3.3 has-proto: 1.0.1 is-typed-array: 1.1.13 - dev: true /typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} @@ -25632,7 +27345,6 @@ packages: call-bind: 1.0.5 for-each: 0.3.3 is-typed-array: 1.1.13 - dev: true /typed-array-length@1.0.5: resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} @@ -25689,7 +27401,6 @@ packages: has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true /unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} @@ -25720,6 +27431,11 @@ packages: '@fastify/busboy': 2.1.0 dev: true + /undici@6.10.2: + resolution: {integrity: sha512-HcVuBy7ACaDejIMdwCzAvO22OsiE6ir6ziTIr9kAE0vB+PheVe29ZvRN8p7FXCO2uZHTjEoUs5bPiFpuc/hwwQ==} + engines: {node: '>=18.0'} + dev: true + /unenv@1.9.0: resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} dependencies: @@ -25807,7 +27523,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: normalize-path: 2.1.1 - dev: true /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} @@ -25817,7 +27532,7 @@ packages: resolution: {integrity: sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ==} dependencies: acorn: 8.11.3 - chokidar: 3.5.3 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 dev: true @@ -25864,7 +27579,7 @@ packages: optional: true dependencies: anymatch: 3.1.3 - chokidar: 3.5.3 + chokidar: 3.6.0 destr: 2.0.2 h3: 1.10.1 idb-keyval: 6.2.1 @@ -25901,8 +27616,8 @@ packages: escalade: 3.1.2 picocolors: 1.0.0 - /updates@15.1.1: - resolution: {integrity: sha512-dMz/4251b0lV7yR58tuydCKaiWxOa18YM8fnRgtiDVzQ5ALopTZhMckv00w0nSMj6OFMFKLshTZGkX4dAebaaw==} + /updates@15.3.1: + resolution: {integrity: sha512-DqHT1aJ6p6jVLWRiAeuVx/TQotvEwUjgrY1Mlc0a2qYk+eKEQVXugQ4M+6QoVMA3X1NFAVsb02d93pmWam4bBA==} engines: {node: '>=18'} hasBin: true dev: true @@ -26106,7 +27821,6 @@ packages: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - dev: true /valtio@1.11.2(@types/react@18.2.54)(react@18.2.0): resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} @@ -26205,16 +27919,16 @@ packages: - utf-8-validate - zod - /vite-node@1.2.2(@types/node@20.11.16): + /vite-node@1.2.2: resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) pathe: 1.1.2 picocolors: 1.0.0 - vite: 5.0.12(@types/node@20.11.16) + vite: 5.2.6(@types/node@20.11.6) transitivePeerDependencies: - '@types/node' - less @@ -26226,7 +27940,7 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.12): + /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.2.6): resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' @@ -26234,16 +27948,16 @@ packages: vite: optional: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.0.1(typescript@5.3.3) - vite: 5.0.12(@types/node@20.11.6) + vite: 5.2.6(@types/node@20.11.6) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@5.0.12(@types/node@20.11.16): + /vite@5.0.12: resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -26271,16 +27985,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.11.16 esbuild: 0.19.12 - postcss: 8.4.34 + postcss: 8.4.35 rollup: 4.9.6 optionalDependencies: fsevents: 2.3.3 dev: true - /vite@5.0.12(@types/node@20.11.6): - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.2.6(@types/node@20.11.6): + resolution: {integrity: sha512-FPtnxFlSIKYjZ2eosBQamz4CbyrTizbZ3hnGJlh/wMtCrlp1Hah6AzBLjGI5I2urTfNnpovpHdrL6YRuBOPnCA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -26308,14 +28021,14 @@ packages: optional: true dependencies: '@types/node': 20.11.6 - esbuild: 0.19.12 - postcss: 8.4.34 - rollup: 4.9.6 + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.13.1 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.2.2(@types/node@20.11.16): + /vitest@1.2.2: resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -26340,7 +28053,6 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.11.16 '@vitest/expect': 1.2.2 '@vitest/runner': 1.2.2 '@vitest/snapshot': 1.2.2 @@ -26349,7 +28061,7 @@ packages: acorn-walk: 8.3.2 cac: 6.7.14 chai: 4.4.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.7 @@ -26359,8 +28071,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.6.0 tinypool: 0.8.2 - vite: 5.0.12(@types/node@20.11.16) - vite-node: 1.2.2(@types/node@20.11.16) + vite: 5.0.12 + vite-node: 1.2.2 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -26453,7 +28165,7 @@ packages: dependencies: chalk: 4.1.2 commander: 9.5.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -26549,7 +28261,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.90.1(@swc/core@1.4.0) + webpack: 5.90.1(@swc/core@1.4.1) dev: true /webpack-dev-server@4.15.2(debug@4.3.4): @@ -26574,7 +28286,7 @@ packages: '@types/ws': 8.5.10 ansi-html-community: 0.0.8 bonjour-service: 1.2.1 - chokidar: 3.5.3 + chokidar: 3.6.0 colorette: 2.0.20 compression: 1.7.4 connect-history-api-fallback: 2.0.0 @@ -26632,7 +28344,7 @@ packages: resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} dev: true - /webpack@5.90.1(@swc/core@1.4.0): + /webpack@5.90.1(@swc/core@1.4.1): resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} engines: {node: '>=10.13.0'} hasBin: true @@ -26663,7 +28375,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.0)(webpack@5.90.1) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.1)(webpack@5.90.1) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -26732,7 +28444,6 @@ packages: is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true /which-collection@1.0.1: resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} @@ -26772,7 +28483,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -26801,7 +28511,23 @@ packages: logform: 2.6.0 readable-stream: 3.6.2 triple-beam: 1.4.1 - dev: true + + /winston@3.11.0: + resolution: {integrity: sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.5 + is-stream: 2.0.1 + logform: 2.6.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.4.3 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.7.0 + dev: false /winston@3.2.1: resolution: {integrity: sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==} @@ -27130,7 +28856,6 @@ packages: /zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} - dev: false /zustand@4.4.1(@types/react@18.2.54)(react@18.2.0): resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} @@ -27179,7 +28904,7 @@ packages: commander: 11.1.0 cypress: 12.17.3 cypress-wait-until: 2.0.1 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) dotenv: 16.4.1 dotenv-parse-variables: 2.0.0 download: 8.0.0