From 42fb7f345a84b5c67a5cd212906f004e9ddce947 Mon Sep 17 00:00:00 2001 From: Daniel Werner Date: Tue, 5 Nov 2024 09:29:48 -0800 Subject: [PATCH] all: remove indexer-service, indexer-native --- .github/workflows/indexer-service-image.yml | 56 - .github/workflows/publish-native-binaries.yml | 58 - Dockerfile.indexer-agent | 2 - Dockerfile.indexer-service | 67 - README.md | 102 +- docs/errors.md | 4 +- k8s/base/indexer-service/backend_config.yaml | 7 - k8s/base/indexer-service/service.yaml | 16 - k8s/base/indexer-service/statefulset.yaml | 94 - k8s/base/kustomization.yaml | 3 - k8s/overlays/kustomization.yaml | 3 - package.json | 5 +- packages/indexer-agent/CHANGELOG.md | 569 --- packages/indexer-agent/package.json | 2 +- packages/indexer-cli/CHANGELOG.md | 246 -- packages/indexer-cli/package.json | 2 +- packages/indexer-common/CHANGELOG.md | 330 -- .../indexer-integration-tests/.eslintignore | 4 - .../indexer-integration-tests/.eslintrc.js | 6 - .../.prettierrc.json | 7 - packages/indexer-integration-tests/LICENSE | 18 - packages/indexer-integration-tests/README.md | 18 - .../indexer-integration-tests/jest.config.js | 20 - .../package-lock.json | 3232 ----------------- .../indexer-integration-tests/package.json | 17 - .../src/global-setup.ts | 4 - .../src/global-teardown.ts | 4 - .../tests/bootstrap.spec.ts | 5 - .../indexer-integration-tests/tsconfig.json | 18 - packages/indexer-native/.eslintignore | 3 - packages/indexer-native/.eslintrc.js | 13 - packages/indexer-native/.gitignore | 6 - packages/indexer-native/CHANGELOG.md | 65 - packages/indexer-native/README.md | 3 - packages/indexer-native/jest.config.js | 8 - packages/indexer-native/lib/index.d.ts | 48 - packages/indexer-native/lib/index.js | 41 - packages/indexer-native/lib/index.test.js | 106 - packages/indexer-native/native/Cargo.lock | 907 ----- packages/indexer-native/native/Cargo.toml | 22 - .../indexer-native/native/src/attestation.rs | 92 - packages/indexer-native/native/src/lib.rs | 123 - .../native/src/signature_verification.rs | 68 - packages/indexer-native/package.json | 70 - packages/indexer-service/.eslintignore | 3 - packages/indexer-service/.eslintrc.js | 6 - packages/indexer-service/.prettierrc.json | 7 - packages/indexer-service/CHANGELOG.md | 386 -- packages/indexer-service/LICENSE | 18 - packages/indexer-service/README.md | 66 - .../indexer-service/bin/graph-indexer-service | 3 - packages/indexer-service/config.yaml | 1 - packages/indexer-service/jest.config.js | 39 - packages/indexer-service/package.json | 89 - packages/indexer-service/src/allocations.ts | 90 - .../indexer-service/src/commands/start.ts | 523 --- packages/indexer-service/src/index.ts | 10 - packages/indexer-service/src/queries.ts | 170 - .../src/query-fees/allocations.ts | 264 -- .../indexer-service/src/query-fees/index.ts | 13 - .../src/server/__tests__/server.test.ts | 293 -- packages/indexer-service/src/server/cost.ts | 203 -- .../src/server/deployment-health.ts | 85 - packages/indexer-service/src/server/index.ts | 405 --- .../indexer-service/src/server/operator.ts | 17 - packages/indexer-service/src/server/status.ts | 53 - packages/indexer-service/src/types.ts | 52 - packages/indexer-service/tsconfig.json | 19 - scripts/release.sh | 29 - yarn.lock | 2003 +--------- 70 files changed, 103 insertions(+), 11238 deletions(-) delete mode 100644 .github/workflows/indexer-service-image.yml delete mode 100644 .github/workflows/publish-native-binaries.yml delete mode 100644 Dockerfile.indexer-service delete mode 100644 k8s/base/indexer-service/backend_config.yaml delete mode 100644 k8s/base/indexer-service/service.yaml delete mode 100644 k8s/base/indexer-service/statefulset.yaml delete mode 100644 packages/indexer-agent/CHANGELOG.md delete mode 100644 packages/indexer-cli/CHANGELOG.md delete mode 100644 packages/indexer-common/CHANGELOG.md delete mode 100644 packages/indexer-integration-tests/.eslintignore delete mode 100644 packages/indexer-integration-tests/.eslintrc.js delete mode 100644 packages/indexer-integration-tests/.prettierrc.json delete mode 100644 packages/indexer-integration-tests/LICENSE delete mode 100644 packages/indexer-integration-tests/README.md delete mode 100644 packages/indexer-integration-tests/jest.config.js delete mode 100644 packages/indexer-integration-tests/package-lock.json delete mode 100644 packages/indexer-integration-tests/package.json delete mode 100644 packages/indexer-integration-tests/src/global-setup.ts delete mode 100644 packages/indexer-integration-tests/src/global-teardown.ts delete mode 100644 packages/indexer-integration-tests/tests/bootstrap.spec.ts delete mode 100644 packages/indexer-integration-tests/tsconfig.json delete mode 100644 packages/indexer-native/.eslintignore delete mode 100644 packages/indexer-native/.eslintrc.js delete mode 100644 packages/indexer-native/.gitignore delete mode 100644 packages/indexer-native/CHANGELOG.md delete mode 100644 packages/indexer-native/README.md delete mode 100644 packages/indexer-native/jest.config.js delete mode 100644 packages/indexer-native/lib/index.d.ts delete mode 100644 packages/indexer-native/lib/index.js delete mode 100644 packages/indexer-native/lib/index.test.js delete mode 100644 packages/indexer-native/native/Cargo.lock delete mode 100644 packages/indexer-native/native/Cargo.toml delete mode 100644 packages/indexer-native/native/src/attestation.rs delete mode 100644 packages/indexer-native/native/src/lib.rs delete mode 100644 packages/indexer-native/native/src/signature_verification.rs delete mode 100644 packages/indexer-native/package.json delete mode 100644 packages/indexer-service/.eslintignore delete mode 100644 packages/indexer-service/.eslintrc.js delete mode 100644 packages/indexer-service/.prettierrc.json delete mode 100644 packages/indexer-service/CHANGELOG.md delete mode 100644 packages/indexer-service/LICENSE delete mode 100644 packages/indexer-service/README.md delete mode 100755 packages/indexer-service/bin/graph-indexer-service delete mode 100644 packages/indexer-service/config.yaml delete mode 100644 packages/indexer-service/jest.config.js delete mode 100644 packages/indexer-service/package.json delete mode 100644 packages/indexer-service/src/allocations.ts delete mode 100644 packages/indexer-service/src/commands/start.ts delete mode 100644 packages/indexer-service/src/index.ts delete mode 100644 packages/indexer-service/src/queries.ts delete mode 100644 packages/indexer-service/src/query-fees/allocations.ts delete mode 100644 packages/indexer-service/src/query-fees/index.ts delete mode 100644 packages/indexer-service/src/server/__tests__/server.test.ts delete mode 100644 packages/indexer-service/src/server/cost.ts delete mode 100644 packages/indexer-service/src/server/deployment-health.ts delete mode 100644 packages/indexer-service/src/server/index.ts delete mode 100644 packages/indexer-service/src/server/operator.ts delete mode 100644 packages/indexer-service/src/server/status.ts delete mode 100644 packages/indexer-service/src/types.ts delete mode 100644 packages/indexer-service/tsconfig.json delete mode 100755 scripts/release.sh diff --git a/.github/workflows/indexer-service-image.yml b/.github/workflows/indexer-service-image.yml deleted file mode 100644 index 262214ff1..000000000 --- a/.github/workflows/indexer-service-image.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Indexer Service Image - -on: - push: - branches: - - main - tags: - - v*.*.* - pull_request: - branches: [main] - -jobs: - build: - runs-on: ubuntu-22.04 - permissions: - packages: write - - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Docker meta - id: docker_meta - uses: crazy-max/ghaction-docker-meta@v1 - with: - images: ghcr.io/graphprotocol/indexer-service - tag-sha: true - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{github.repository_owner}} - password: ${{secrets.GITHUB_TOKEN}} - - name: Setup python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - name: Set up Node.js v20 - uses: actions/setup-node@v2.1.5 - with: - node-version: 20 - - name: Build and push Indexer Service image - id: docker_build - uses: docker/build-push-action@v2 - with: - context: . - file: Dockerfile.indexer-service - # Enabling the line below restricts Docker images to only be built for branches - # push: ${{github.event_name != 'pull_request'}} - push: true - tags: ${{steps.docker_meta.outputs.tags}} - labels: ${{steps.docker_meta.outputs.labels}} - build-args: NPM_TOKEN=${{secrets.graphprotocol_npm_token}} diff --git a/.github/workflows/publish-native-binaries.yml b/.github/workflows/publish-native-binaries.yml deleted file mode 100644 index 8f521a8a1..000000000 --- a/.github/workflows/publish-native-binaries.yml +++ /dev/null @@ -1,58 +0,0 @@ -# Creates and publishes assets for a new release. -# To manually trigger this workflow, create a release in the GitHub UI. - -name: "Publish binaries" - -on: - workflow_dispatch: - release: - types: - - created - - published - -jobs: - publish-github: - strategy: - # Allowing jobs to fail until 'node-pre-gyp-github' supports failing gracefully if file already exists - # (https://github.com/bchr02/node-pre-gyp-github/issues/42) - fail-fast: false - matrix: - node_version: [18, 19, 20] - system: - - os: macos-12 - target: x86_64-apple-darwin - - os: ubuntu-22.04 - target: x86_64-unknown-linux-gnu - runs-on: ${{ matrix.system.os }} - steps: - - name: Checkout the repo - uses: actions/checkout@v2 - - name: update OS - run: | - sudo apt-get update - sudo apt install -y --no-install-recommends gcc g++ make build-essential - if: ${{ runner.os == 'Linux' }} - - name: Set up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.1.5 - with: - node-version: ${{ matrix.node_version }} - - name: Setup Python - uses: actions/setup-python@v4 - with: - python-version: '3.10' - - name: Setup Rust - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - target: ${{ matrix.system.target }} - override: true - - name: Install dependencies - working-directory: ./packages/indexer-native - run: yarn install --ignore-scripts - - name: Compile binary, test, package, and publish to Github release page - env: - NODE_PRE_GYP_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CARGO_BUILD_TARGET: ${{ matrix.system.target }} - working-directory: ./packages/indexer-native - run: yarn build-test-pack-publish diff --git a/Dockerfile.indexer-agent b/Dockerfile.indexer-agent index 3ee1a9140..1f15ac337 100644 --- a/Dockerfile.indexer-agent +++ b/Dockerfile.indexer-agent @@ -17,7 +17,6 @@ WORKDIR /opt/indexer COPY package.json . COPY yarn.lock . COPY tsconfig.json . -COPY lerna.json . # Copy shared and package files COPY packages/indexer-common/ ./packages/indexer-common @@ -51,7 +50,6 @@ WORKDIR /opt/indexer COPY package.json . COPY yarn.lock . COPY tsconfig.json . -COPY lerna.json . # Copy build output COPY --from=build /opt/indexer/packages/indexer-common/package.json /opt/indexer/packages/indexer-common/package.json diff --git a/Dockerfile.indexer-service b/Dockerfile.indexer-service deleted file mode 100644 index 63bf2d174..000000000 --- a/Dockerfile.indexer-service +++ /dev/null @@ -1,67 +0,0 @@ -######################################################################## -# Build image - -FROM node:20.11-bookworm-slim as build - -ENV NODE_ENV production - -RUN apt-get update && apt-get install -y python3 build-essential git curl - -# Install Rust -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y -ENV PATH="/root/.cargo/bin:$PATH" - -WORKDIR /opt/indexer - -# Copy root files -COPY package.json . -COPY yarn.lock . -COPY lerna.json . -COPY tsconfig.json . - -# Copy shared and package files -COPY packages/indexer-common/ ./packages/indexer-common -COPY packages/indexer-native/ ./packages/indexer-native -COPY packages/indexer-service/ ./packages/indexer-service - -# Install dependencies; include dev dependencies -RUN yarn --frozen-lockfile --non-interactive --production=false - -######################################################################## -# Runtime image - -FROM node:20.11-bookworm-slim - -ENV NODE_ENV production - -RUN apt-get update && apt-get install -y python3 build-essential git curl - -# Install Rust -RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > /tmp/rustup.sh && sh /tmp/rustup.sh -y -ENV PATH="/root/.cargo/bin:$PATH" - -WORKDIR /opt/indexer - -# Copy root files -COPY package.json . -COPY yarn.lock . -COPY lerna.json . -COPY tsconfig.json . - -# Copy build output -COPY --from=build /opt/indexer/packages/indexer-common/package.json /opt/indexer/packages/indexer-common/package.json -COPY --from=build /opt/indexer/packages/indexer-common/dist /opt/indexer/packages/indexer-common/dist -COPY --from=build /opt/indexer/packages/indexer-native/package.json /opt/indexer/packages/indexer-native/package.json -COPY --from=build /opt/indexer/packages/indexer-native/lib /opt/indexer/packages/indexer-native/lib -COPY --from=build /opt/indexer/packages/indexer-native/native /opt/indexer/packages/indexer-native/native -COPY --from=build /opt/indexer/packages/indexer-service/package.json /opt/indexer/packages/indexer-service/package.json -COPY --from=build /opt/indexer/packages/indexer-service/dist /opt/indexer/packages/indexer-service/dist - -# Install dependencies; exclude dev dependencies -RUN yarn --frozen-lockfile --non-interactive - -ENV ETHEREUM "" - -# Run the indexer-service -WORKDIR /opt/indexer/packages/indexer-service -ENTRYPOINT ["node", "dist/index.js", "start"] diff --git a/README.md b/README.md index 09137b986..24ae3b291 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # Graph Protocol Indexer Components ![CI](https://github.com/graphprotocol/indexer/workflows/CI/badge.svg) -[![Docker Image: Indexer Service](https://github.com/graphprotocol/indexer/workflows/Indexer%20Service%20Image/badge.svg)](https://github.com/orgs/graphprotocol/packages/container/package/indexer-service) [![Docker Image: Indexer Agent](https://github.com/graphprotocol/indexer/workflows/Indexer%20Agent%20Image/badge.svg)](https://github.com/orgs/graphprotocol/packages/container/package/indexer-agent) **NOTE: THIS PROJECT IS BETA SOFTWARE.** @@ -19,7 +18,6 @@ query fees, can be found [here](./docs/scalar.md). The indexer service, agent and CLI can be installed as NPM packages, using ```sh -npm install -g @graphprotocol/indexer-service npm install -g @graphprotocol/indexer-agent # Indexer CLI is a plugin for Graph CLI, so both need to be installed: @@ -30,9 +28,6 @@ npm install -g @graphprotocol/indexer-cli After that, they can be run with the following commands: ```sh -# Indexer service -graph-indexer-service start ... - # Indexer agent graph-indexer-agent start ... @@ -42,68 +37,6 @@ graph indexer ... ## Usage -### Indexer service - -```sh -$ graph-indexer-service start --help - -Start the service - -Ethereum - --ethereum Ethereum node or provider URL [string] [required] - --ethereum-network Ethereum network [string] [default: "mainnet"] - --ethereum-polling-interval Polling interval for the Ethereum provider (ms) - [number] [default: 4000] - --mnemonic Mnemonic for the operator wallet - [string] [required] - --indexer-address Ethereum address of the indexer - [string] [required] - -Indexer Infrastructure - --port Port to serve queries at[number] [default: 7600] - --metrics-port Port to serve Prometheus metrics at - [number] [default: 7300] - --graph-node-query-endpoint Graph Node endpoint to forward queries to - [string] [required] - --graph-node-status-endpoint Graph Node endpoint for indexing statuses etc. - [string] [required] - --log-level Log level [string] [default: "debug"] - -Postgres - --postgres-host Postgres host [string] [required] - --postgres-port Postgres port [number] [default: 5432] - --postgres-username Postgres username [string] [default: "postgres"] - --postgres-password Postgres password [string] [default: ""] - --postgres-database Postgres database name [string] [required] - -Network Subgraph - --network-subgraph-endpoint Endpoint to query the network subgraph from - [string] [required] - --network-subgraph-auth-token Bearer token to require for /network queries - [string] - --serve-network-subgraph Whether to serve the network subgraph at - /network [boolean] [default: false] - --allocation-syncing-interval Interval (in ms) for syncing indexer - allocations from the network - [number] [default: 120000] - -Query Fees - --vector-node URL of a vector node [string] - --vector-router Public identifier of the vector router [string] - --vector-transfer-definition Address of the Graph transfer definition - contract [string] [default: "auto"] - -Options: - --version Show version number [boolean] - --help Show help [boolean] - --gcloud-profiling Whether to enable Google Cloud profiling - [boolean] [default: false] - --free-query-auth-token Auth token that clients can use to query for free - [array] - --client-signer-address Address that signs query fee receipts from a known - client [string] -``` - ### Indexer agent ```sh @@ -294,13 +227,9 @@ build the packages: yarn ``` -After this, the indexer service and agent can be run with: +After this, the agent can be run with: ```sh -# Indexer service -cd packages/indexer-service -./bin/graph-indexer-service start ... - # Indexer agent cd packages/indexer-agent ./bin/graph-indexer-agent start ... @@ -308,23 +237,16 @@ cd packages/indexer-agent ## Docker images -The easiest way to run the indexer service agent is by using Docker. Docker +The easiest way to run the indexer agent is by using Docker. Docker images can either be pulled via ```sh -docker pull ghcr.io/graphprotocol/indexer-service:latest docker pull ghcr.io/graphprotocol/indexer-agent:latest ``` or built locally with ```sh -# Indexer service -docker build \ - -f Dockerfile.indexer-service \ - -t indexer-service:latest \ - . - # Indexer agent docker build \ -f Dockerfile.indexer-agent \ @@ -332,18 +254,9 @@ docker build \ . ``` -After this, the indexer agent and service can be run as follows: - -1. Indexer service: - - ```sh - docker run -p 7600:7600 -it indexer-service:latest ... - ``` - - After this, the indexer service should be up and running at - http://localhost:7600/. +After this, the indexer agent can be run as follows: -2. Indexer Agent +1. Indexer Agent ```sh docker run -p 18000:8000 -it indexer-agent:latest ... @@ -371,7 +284,6 @@ workspaces](https://classic.yarnpkg.com/en/docs/workspaces/). [chan](https://github.com/geut/chan/tree/master/packages/chan) is used to maintain the following changelogs: -- [indexer-service](packages/indexer-service/CHANGELOG.md) - [indexer-agent](packages/indexer-agent/CHANGELOG.md) - [indexer-cli](packages/indexer-cli/CHANGELOG.md) - [indexer-common](packages/indexer-common/CHANGELOG.md) @@ -381,16 +293,12 @@ Creating a new release involves the following steps: 1. Update all changelogs: ```sh - pushd packages/indexer-service + pushd packages/indexer-agent chan added ... chan fixed ... chan changed ... popd - pushd packages/indexer-agent - ... - popd - pushd packages/indexer-cli ... popd diff --git a/docs/errors.md b/docs/errors.md index 78e42ccaa..23d573bd6 100644 --- a/docs/errors.md +++ b/docs/errors.md @@ -512,7 +512,7 @@ issues with your Ethereum node or provider, but it may also simply be an internal error in ethers.js, in which case you can ignore this error. If the error is _not_ related to Ethereum requests, it is likely to be an -unhandled error in indexer-agent and indexer-service and is best reported as an +unhandled error in indexer-agent and is best reported as an issue on https://github.com/graphprotocol/indexer/issues. ## IE036 @@ -523,7 +523,7 @@ An operation failed somewhere in the system but this error wasn't handled. **Solution** -This is likely to be an unhandled error in indexer-agent and indexer-service and +This is likely to be an unhandled error in indexer-agent and is best reported as an issue on https://github.com/graphprotocol/indexer/issues. ## IE037 diff --git a/k8s/base/indexer-service/backend_config.yaml b/k8s/base/indexer-service/backend_config.yaml deleted file mode 100644 index 37ad9d183..000000000 --- a/k8s/base/indexer-service/backend_config.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: cloud.google.com/v1beta1 -kind: BackendConfig -metadata: - name: indexer-service-backend-config -spec: - connectionDraining: - drainingTimeoutSec: 0 diff --git a/k8s/base/indexer-service/service.yaml b/k8s/base/indexer-service/service.yaml deleted file mode 100644 index 70dc20e1c..000000000 --- a/k8s/base/indexer-service/service.yaml +++ /dev/null @@ -1,16 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: indexer-service - annotations: - cloud.google.com/neg: '{"ingress": true, "exposed_ports": {"80":{}}}' - beta.cloud.google.com/backend-config: '{"ports": {"80":"indexer-service-backend-config"}}' -spec: - type: ClusterIP - selector: - app: indexer-service - ports: - - name: http - protocol: TCP - port: 80 - targetPort: 7600 diff --git a/k8s/base/indexer-service/statefulset.yaml b/k8s/base/indexer-service/statefulset.yaml deleted file mode 100644 index dd10e4264..000000000 --- a/k8s/base/indexer-service/statefulset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: indexer-service -spec: - serviceName: indexer-service - selector: - matchLabels: - app: indexer-service - replicas: 1 - template: - metadata: - labels: - app: indexer-service - annotations: - prometheus.io/scrape: "true" - prometheus.io/path: "/metrics" - prometheus.io/port: "7300" - spec: - containers: - - name: indexer-service - image: indexer-service-image - imagePullPolicy: Always - resources: - requests: - cpu: 600m - ports: - - name: http - containerPort: 7600 - - name: metrics - containerPort: 7300 - env: - - name: INDEXER_SERVICE_PORT - value: "7600" - - name: INDEXER_SERVICE_MNEMONIC - valueFrom: - secretKeyRef: - name: indexer - key: mnemonic - - name: INDEXER_SERVICE_INDEXER_ADDRESS - valueFrom: - secretKeyRef: - name: indexer - key: indexer_address - - name: INDEXER_SERVICE_ETHEREUM_NETWORK - valueFrom: - secretKeyRef: - name: ethereum - key: network_name - - name: INDEXER_SERVICE_ETHEREUM - valueFrom: - secretKeyRef: - name: ethereum - key: url - - name: INDEXER_SERVICE_GRAPH_NODE_QUERY_ENDPOINT - value: http://query-node.default.svc.cluster.local:8000/ - - name: INDEXER_SERVICE_GRAPH_NODE_STATUS_ENDPOINT - value: http://query-node.default.svc.cluster.local:8030/graphql - - name: INDEXER_SERVICE_NETWORK_SUBGRAPH_ENDPOINT - value: https://gateway.network.thegraph.com/network - - name: INDEXER_SERVICE_POSTGRES_HOST - valueFrom: - secretKeyRef: - name: postgres-credentials - key: host - - name: INDEXER_SERVICE_POSTGRES_USERNAME - valueFrom: - secretKeyRef: - name: postgres-credentials - key: user - - name: INDEXER_SERVICE_POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: postgres-credentials - key: password - - name: INDEXER_SERVICE_POSTGRES_DATABASE - valueFrom: - secretKeyRef: - name: postgres-credentials - key: indexer_db - - name: INDEXER_SERVICE_FREE_QUERY_AUTH_TOKEN - valueFrom: - secretKeyRef: - name: free-query-auth-token - key: token - - name: INDEXER_SERVICE_CLIENT_SIGNER_ADDRESS - valueFrom: - secretKeyRef: - name: scalar - key: client_signer_address - - name: INDEXER_SERVICE_SERVE_NETWORK_SUBGRAPH - value: "true" - - name: INDEXER_SERVICE_GCLOUD_PROFILING - value: "true" diff --git a/k8s/base/kustomization.yaml b/k8s/base/kustomization.yaml index b12f4979b..640c299a3 100644 --- a/k8s/base/kustomization.yaml +++ b/k8s/base/kustomization.yaml @@ -11,9 +11,6 @@ resources: - query-node/service.yaml - indexer-agent/service.yaml - indexer-agent/statefulset.yaml - - indexer-service/backend_config.yaml - - indexer-service/statefulset.yaml - - indexer-service/service.yaml - shell.yaml - nfs.yaml - prometheus.yaml diff --git a/k8s/overlays/kustomization.yaml b/k8s/overlays/kustomization.yaml index db9edfcb6..334f04175 100644 --- a/k8s/overlays/kustomization.yaml +++ b/k8s/overlays/kustomization.yaml @@ -12,9 +12,6 @@ images: - name: indexer-agent-image newName: ghcr.io/graphprotocol/indexer-agent newTag: v0.20.4 - - name: indexer-service-image - newName: ghcr.io/graphprotocol/indexer-service - newTag: v0.20.4 - name: prometheus-image newName: prom/prometheus newTag: v2.32.1 diff --git a/package.json b/package.json index fb6fa233f..4db1da91b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "packages/indexer-common", "packages/indexer-cli", "packages/indexer-agent", - "packages/indexer-service", "packages/indexer-native" ] }, @@ -14,8 +13,8 @@ "bootstrap": "lerna bootstrap", "prepare": "lerna run prepare", "release": "./scripts/release.sh", - "test": "lerna --concurrency 1 run test --stream --ignore @graphprotocol/indexer-service", - "test:ci": "lerna --concurrency 1 run test:ci --stream --ignore @graphprotocol/indexer-service", + "test": "lerna --concurrency 1 run test --stream", + "test:ci": "lerna --concurrency 1 run test:ci --stream", "clean": "lerna run clean && rm -rf ./node_modules", "compile": "lerna run compile" }, diff --git a/packages/indexer-agent/CHANGELOG.md b/packages/indexer-agent/CHANGELOG.md deleted file mode 100644 index 836bf8edd..000000000 --- a/packages/indexer-agent/CHANGELOG.md +++ /dev/null @@ -1,569 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -- Upgraded `common-ts` dependency to v2.0.11 -- Add ability to enable SSL to database connection with `sslEnabled` (maintain default of `false`) - -## [0.21.2] - 2024-01-18 -### Changed -- Improve efficiency of batch action preparation -- Add falback if decimals() call to DAI contract fails - -### Added -- Add tests for allocation decision consolidation - -## [0.20.23] - 2023-09-29 -### Added -- Subgraph Freshness check for Epoch and Network subgraphs -- `manual` deployment management mode - -### Fixed -- Deprecate old payment systems after Exponential Rebates contract changes -- Updated README files - -## [0.20.22] - 2023-08-28 -### Fixed -- Fixed bug causing the network subgraph to be removed after syncing - -## [0.20.21] - 2023-08-22 -### Fixed -- Add missing fields when parsing network specification from CLI options - -### Changed -- Upgraded `common-ts` dependency to v2.0.3 - -## [0.20.20] - 2023-08-21 -### Fixed -- Properly skip reconciling allocations on a network in MANUAL mode -- Missing string interpolation in migration file -- Indexer registration was running for already registered indexers - -## [0.20.19] - 2023-08-18 -### Fixed -- Contract interface changes involving Exponential Rebates -- Included the protocolNetwork field when checking for duplicate action targets - -### Added -- Enforced active connections with Graph-Node and the database during startup -- PostgreSQL connection pool size can be configured with the `postgres-pool-size` *(defaults to `50`)*. - -### Changed -- Skip dispute checking on epochs with unavailable start block hash - -## [0.20.18] - 2023-08-11 -### Added -- A new migration to add the - - Actions - - IndexingRules - - POIDisputes - - allocation_receipts - - vouchers - - transfer_receipts - - transfers - - allocation_summaries -- The Agent can now be configured for multiple protocol networks. - To enable this feature, start the agent with the environment variable `INDEXER_AGENT_MULTINETWORK_MODE` set to - `true` and specify a directory containing YAML network specification files, one per network. -- The Agent can be configured to automatically support subgraph transfers from L1 to L2. To enable - this feature, set the `enable-auto-migration-support` startup option to `true`. - -### Changed -- The Agent GraphQL API was updated to accept (and in some cases require) a `protocolNetwork` - parameter to determine which network should be used for queries or mutations. -- The `/network` endpoint exposed by the Agent now requires an additional path segment to disambiguate - which protocol network it should target, like `/network/mainnet` or `/network/arbitrum-one`. - -## [0.20.17] - 2023-06-19 -### Changed -- Use updated batch stake feasibility check, improve potential action batch efficiency - -## [0.20.12] - 2023-02-19 -### Changed -- Only require network current epoch resolutio if indexing a subgraph on network chain - -## [0.20.11] - 2023-02-01 -### Changed -- Remove unnecessary currentEpochStartBlock eventual - -## [0.20.9] - 2023-01-24 -### Changed -- The `--epoch-subgraph-endpoint` is now a required parameter to start the Agent - -## [0.20.7] - 2022-12-20 -### Changed -- Agent makes deployment assignment decisions - -## [0.20.6] - 2022-12-14 -### Removed -- The `ethereum-network` command line argument is no longer required - -### Changed -- Leave subgraph node assignment decisions to the graph nodes (user can control using graph-node.toml) -- Upgrade @graphprotocol/common-ts to v2.0.1 - -## [0.20.4] - 2022-09-29 -### Added -- Use partial-vouchers endpoint to batch receipt collection -- Integrate epochSubgraph, use for multi-chain POI resolve - -### Changed -- Remove cost model default file in favor or applying via cli - -## [0.20.3] - 2022-08-31 -### Added -- Include rule match crieteria as action reason to improve debugging process - -## [0.20.2] - 2022-08-09 -### Added -- Migration: update Actions.failureReason column size - -## [0.20.1] - 2022-08-04 -### Added -- Provide allocation action batching controls -- Option to set a global default cost model - -### Changed -- Support Goerli network (upgrade @graphprotocol/contracts) - -## [0.20.0] - 2022-06-21 -### Added -- Support file-based configuration of startup params -- New allocation management mode, oversight, for requiring indexer approval to execute agents actions - -### Changed -- Agent now pushes proposed allocation changes to action queue for execution by worker instead of executing them from the agent - -## [0.19.3] - 2022-06-14 -### Changed -- Move Network module to indexer-common - -### Added -- Manual management mode - -## [0.19.1] - 2022-04-21 -### Changed -- Upgrade dependencies - -### Added -- Assign deployments to nodes based on usage -- Check previous allocation closed w/ valid POI before creating - -## [0.19.0] - 2022-02-24 -### Added -- Added automatic batching of query voucher redemptions -- Added `--voucher-redemption-threshold`, `--voucher-redemption-batch-threshold` and `--voucher-redemption-max-batch-size` for controlling voucher batching behaviour -- Expose option to allocate to network subgraph -- Live metric for operator ETH balance -- DB migration CLI tool for testing and management of migrations -- Support indexer rules defined by subgraph id -- Support offchain subgraph management via indexing rules / CLI -- Agent immediately reconciles after rule update -- Manage allocation lifetimes via rules/CLI -- Reject unsupported subgraphs by default -- Optional autorenewal of allocations - -### Fixed -- Added `--rebate-claim-max-batch-size` to make max batch size configurable. For users in low-RAM environments, the primary constraint is not block space but the RAM required to construct large transactions. -- Improved validation of rebate batch claim parameters - -### Changed -- Upgrade dependencies -- Improve log messages readability -- Use signallTokens instead of signalAmount for minSignal threshold -- Use AllocationExchange contract from common-ts - -## [0.18.6] - 2021-12-23 -### Fixed -- Fix subgraphDeploymentsWorthIndexing batch query mangagement - -## [0.18.4] - 2021-12-09 -### Added -- Max claim batch size parameter - -### Fixed -- Fix logic to ensure network subgraph not allocated towards - -## [0.18.3] - 2021-11-23 -### Fixed -- Only add prefix to voucher address if not present -- Bump type 2 transaction gas fee configs on retry after timeout - -### Changed -- Keep deployment indexing for 1 day after allocation close -- Reducing transaction logging redundancy to improve readability - -## [0.18.2] - 2021-10-19 -### Changed -- Bump priority gas fee on gas price too low retry - -### Fixed -- Set default parallelAllocations = 1 - -## [0.18.0] - 2021-09-07 -### Added -- Support type 0x2 transactions (EIP-1559) -- Close all parallel allocations and only renew a single allocation per deployment -- Include an additional state for indexing dispute monitoring, references_unavailable, for the case where the indexer does not have a reference PoI available. Typically this case occurs when an indexer's deployment is not synced far enough - -### Changed -- Update Ethers dependencies -- Simplify transaction retry logic on nonce collisions; agent now introduces a delay and returns to reconciliation step to re-evaluate -- Deprecate the parallel allocations feature - -### Fixed -- Update max-transaction-attempts default to unlimited to avoid orphaned transactions -- Treat deployments assigned to node = null or undefined as removed, so they are filtered out of the activeDeployments array -- Fix delete query fee vouchers logic, so they are actually removed after the expiration time -- Update tests to use the latest version of the Indexer class constructor - -## [0.17.0] - 2021-07-21 -### Added -- Reallocate to subgraph deployment in one transaction using closeAndAllocate -- Wait for gas prices below the `gas-price-max` (gwei) before proceeding with transaction execution - -### Changed -- Show subgraph query error reason in logs -- Use `ClusterIP` in the k8s indexer agent service rather than a `LoadBalalancer` since `LoadBalancer` services have been - shown to introduce extra latency -- Use undefined for auth user and password if none specified -- Update `gas-price-max` units to be gwei instead of wei for improved human readability -- Default `gas-price-max` changed from 20 gwei to 50 gwei - -### Fixed -- Improve robustness of subgraph deployments query by querying batches of only 10 deployments at a time - -## [0.16.0] - 2021-06-09 -### Changed -- Default to only one transaction retry attempt to reduce gas usage -- Apply allocation claim threshold to redeeming query fee vouchers as well -- Add the same network subgraph fallback logic as the agent uses - -### Fixed -- Improve handling of reverted transactions by detecting the revert reason - -## [0.15.1] - 2021-05-26 -### Fixed -- Ensure allocation summaries exist for allocations created before v0.15.0 or outside the indexer agent - -## [0.15.0] - 2021-05-25 -### Fixed -- Make receipts table renaming migration more robust - -### Added -- Allow network subgraph endpoint to be used as a fallback for the local network subgraph deployment -- Add allocation exchange contract address for mainnet - -### Changed -- Rename query fee related fields in database models - -## [0.14.0] - 2021-05-12 -### Added -- Store allocations for which the POI has been checked -- Add subgraph deployment ID to POI disputes -- Add allocation-based receipts and query fee vouchers as an alternative to Vector. This is the default for now. Vector support can still be enabled with `--use-vector`. - -### Fixed -- Handle 'nonce has already been used' transaction failures - -## [0.13.0] - 2021-04-19 -### Changed -- Update to latest common-ts - -### Fixed -- Correctly determine the previous epoch when generating POIs - -## [0.12.0] - 2021-04-06 -### Changed -- Update common-ts and ethers - -## [0.11.0] - 2021-03-31 -### Added -- Add `--offchain-subgraphs` to index subgraph deployments that are not on chain -- Add `--poi-monitoring` (experimental) to monitor and cross-check POIs submitted in the network -- Add support for new payments system -- Add database migration to remove old state channel tables -- Resubmit transactions with higher gas price if they are not mined - -### Changed -- Update @graphprotocol/common-ts to 1.3.2 (equality fix in eventuals, latest contracts) - -## [0.10.0] - 2021-01-29 -### Changed -- Update common-ts to 1.3.0 to include new testnet contracts - -## [0.9.5] - 2021-01-16 -### Fixed -- Update ethers to 5.0.26 to avoid unresolved promise rejections (#183) - -### Changed -- Update common-ts to 1.2.1 - -## [0.9.4] - 2021-01-13 -### Fixed -- Never close allocations if the POI is zero or null (#186) -- Retry obtaining a POI ten times before giving up - -## [0.9.3] - 2021-01-11 -### Fixed -- Fix how query fee threshold is passed to claimable allocations query - -## [0.9.2] - 2021-01-09 -### Added -- Add `--allocation-claim-threshold` option for configure a GRT amount below which the agent should not attempt to claim rebate (query) rewards - -### Fixed -- Synchronize data independently using different intervals and reconcile reliably every 2 minutes -- Submit proof of indexing for the first block of the current epoch -- Reliably obtain proof of indexing by passing block number to `proofOfIndexing` API (#186) - -### Changed -- Update common-ts to 1.2.0 - -## [0.9.1] - 2020-12-31 -### Changed -- Register after having the network subgraph synced - -## [0.9.0-alpha.4] - 2020-12-20 -### Fixed -- Fix race condition between registering and pause/operator detection (#167) - -## [0.9.0-alpha.3] - 2020-12-19 -### Fixed -- Use 1.5x the estimated gas to avoid transactions running out of gas - -### Changed -- Default to mainnet instead of rinkeby in `--ethereum-network` - -### Added -- Add `--dai-contract` / `INDEXER_AGENT_DAI_CONTRACT` to set the stablecoint for `--inject-dai` - -## [0.4.5] - 2020-12-15 -### Fixed -- Retry network synchronization (#146) -- Index but don't allocate towards network subgraph - -## [0.4.4] - 2020-12-14 -### Fixed -- Allow non-HTTPS/insuecure Ethereum connections -- Catch and log unhandled promise rejections and exceptions instead of crashing - -### Added -- Allow Ethereum network to be configured, avoiding fallible network detection in ethers.js - -## [0.4.3] - 2020-12-07 -### Fixed -- Fix incorrect error code used in database migrations -- Decouple claiming rewards from updating allocations -- Don't abort reconciling if removing a deployment fails -- Never fail reconciling early -- Fix zero allocation amount log messages -- Catch more unauthorized transactions -- Only queue transactions after checking paused and operator status -- Do nothing if not an operator -- Fix indexer === operator detection -- Use StaticJsonRpcProvider to reduce Ethereum requests - -### Changed -- Lengthen network synchronization interval to 120s -- Improve log message for already closed allocations -- Add `eth_provider_requests` metric to track Ethereum requests - -## [0.4.2] - 2020-11-30 -### Fixed -- Fix signing allocation ID proofs with the corresponding private key - -## [0.4.1] - 2020-11-27 -### Fixed -- Fix GDAI token address - -## [0.4.0] - 2020-11-27 -### Added -- Add migration to reset state channels - -### Changed -- Update common-ts to 0.4.0 - -## [0.3.7-alpha.8] - 2020-11-27 -### Added -- Make use of the new indexer error codes - -## [0.3.7-alpha.7] - 2020-11-27 -### Changed -- Increase network synchronization intervals - -## [0.3.7-alpha.0] - 2020-11-17 -### Added -- Add `--restake-rewards` option for choosing what to do with indexing rewards - -### Changed -- Update `@graphprotocol/common-ts` to 0.3.13 - -## [0.3.6] - 2020-11-11 -### Changed -- Document that --index-node-ids are comma-separated -- Update network subgraph deployment - -### Fixed -- Fix caching of indexing status queries -- Fix submitting a non-zero PoI on incompatible networks - -## [0.3.4] - 2020-10-29 -### Changed -- Update and pin all dependencies - -## [0.3.3] - 2020-10-28 -### Fixed -- Fix not creating any allocations at all anymore - -### Added -- Add database migrations - -### Changed -- Rename `$DAI` injection flag to `--inject-dai` - -## [0.3.2] - 2020-10-27 -### Added -- Don't try to allocate zero or negative GRT amounts -- Submit random POI, if cannot create one, to allow testing of indexer rewards distribution on testnet -- Add optional GDAI/GRT variable automation -- Include metrics for the GRT<->DAI conversion rate in both directions - -### Fixed -- Reduce failed allocate txs by improving allocation id collision resistence -- Increase effective allocations limit (100 -> 1000) -- Validate allocation ID with contract before sending an allocate() tx - -## [0.3.1] - 2020-10-15 -### Changed -- Update common-ts to 0.3.3 - -## [0.3.0] - 2020-10-13 -### Fixed -- Fix ethers incompatibilities -- Avoid closing allocations repeatedly -- Fix `INDEXER_AGENT_INDEXER_GEO_COORDINATES` environment variable (#58) - -### Changed -- Implement reconciliation loop using eventuals -- Improve synchronization comments -- Update common-ts to 0.3.2 -- Update contracts to 0.7.5-testnet-phase2 -- Add full support for managing allocations as an operator -- Generate unique but deterministic allocation IDs - -### Added -- Handle network pausing -- Submit POI when closing allocations -- Claim rebate rewards for finalized allocations -- Log contract addresses when connecting to the network -- Add --indexer-address to declare which indexer is being operated for - -### Removed -- Remove staking (indexers need to do it, operators cannot) - -## [0.2.6] - 2020-10-13 -### Fixed -- Avoid settling allocations that are already settled on chain -- Fix input validation of geo coordinates - -### Changed -- Use new indexer-common library -- Update common-ts, server-wallet and ethers - -## [0.2.5] - 2020-09-01 -### Changed -- Depend on @graphprotocol/common-ts from npmjs.org - -## [0.2.4] - 2020-09-01 -### Added -- Support `--graph-node-admin-endpoint` over HTTPS -- Terraform: Allow to configure preemptible worker nodes - -### Fixed -- Settle allocations only after at least one epoch has passed - -### Changed -- Reconcile deployments and allocations every ~10+ seconds -- Show and use correct token/allocation amounts everywhere -- Update @graphprotocol/common-ts to 0.2.4 - -## [0.2.3] - 2020-08-27 -### Fixed -- Re-register indexer when geohash differs - -### Changed -- Update @graphprotocol/common-ts to 0.2.3 - -## 0.2.1 - 2020-08-27 -### Fixed -- Indexer agent fails to detect GRT approval - -### Changed -- Update @graphprotocol/common-ts to 0.2.2 - -[Unreleased]: https://github.com/graphprotocol/indexer/compare/v0.21.2...HEAD -[0.21.2]: https://github.com/graphprotocol/indexer/compare/v0.20.23...v0.21.2 -[0.20.23]: https://github.com/graphprotocol/indexer/compare/v0.20.22...v0.20.23 -[0.20.22]: https://github.com/graphprotocol/indexer/compare/v0.20.21...v0.20.22 -[0.20.21]: https://github.com/graphprotocol/indexer/compare/v0.20.20...v0.20.21 -[0.20.20]: https://github.com/graphprotocol/indexer/compare/v0.20.19...v0.20.20 -[0.20.19]: https://github.com/graphprotocol/indexer/compare/v0.20.18...v0.20.19 -[0.20.18]: https://github.com/graphprotocol/indexer/compare/v0.20.17...v0.20.18 -[0.20.17]: https://github.com/graphprotocol/indexer/compare/v0.20.12...v0.20.17 -[0.20.12]: https://github.com/graphprotocol/indexer/compare/v0.20.11...v0.20.12 -[0.20.11]: https://github.com/graphprotocol/indexer/compare/v0.20.9...v0.20.11 -[0.20.9]: https://github.com/graphprotocol/indexer/compare/v0.20.7...v0.20.9 -[0.20.7]: https://github.com/graphprotocol/indexer/compare/v0.20.6...v0.20.7 -[0.20.6]: https://github.com/graphprotocol/indexer/compare/v0.20.4...v0.20.6 -[0.20.4]: https://github.com/graphprotocol/indexer/compare/v0.20.3...v0.20.4 -[0.20.3]: https://github.com/graphprotocol/indexer/compare/v0.20.2...v0.20.3 -[0.20.2]: https://github.com/graphprotocol/indexer/compare/v0.20.1...v0.20.2 -[0.20.1]: https://github.com/graphprotocol/indexer/compare/v0.20.0...v0.20.1 -[0.20.0]: https://github.com/graphprotocol/indexer/compare/v0.19.3...v0.20.0 -[0.19.3]: https://github.com/graphprotocol/indexer/compare/v0.19.1...v0.19.3 -[0.19.1]: https://github.com/graphprotocol/indexer/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/graphprotocol/indexer/compare/v0.18.6...v0.19.0 -[0.18.6]: https://github.com/graphprotocol/indexer/compare/v0.18.4...v0.18.6 -[0.18.4]: https://github.com/graphprotocol/indexer/compare/v0.18.3...v0.18.4 -[0.18.3]: https://github.com/graphprotocol/indexer/compare/v0.18.2...v0.18.3 -[0.18.2]: https://github.com/graphprotocol/indexer/compare/v0.18.0...v0.18.2 -[0.18.0]: https://github.com/graphprotocol/indexer/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/graphprotocol/indexer/compare/v0.16.0...v0.17.0 -[0.16.0]: https://github.com/graphprotocol/indexer/compare/v0.15.1...v0.16.0 -[0.15.1]: https://github.com/graphprotocol/indexer/compare/v0.15.0...v0.15.1 -[0.15.0]: https://github.com/graphprotocol/indexer/compare/v0.14.0...v0.15.0 -[0.14.0]: https://github.com/graphprotocol/indexer/compare/v0.13.0...v0.14.0 -[0.13.0]: https://github.com/graphprotocol/indexer/compare/v0.12.0...v0.13.0 -[0.12.0]: https://github.com/graphprotocol/indexer/compare/v0.11.0...v0.12.0 -[0.11.0]: https://github.com/graphprotocol/indexer/compare/v0.10.0...v0.11.0 -[0.10.0]: https://github.com/graphprotocol/indexer/compare/v0.9.5...v0.10.0 -[0.9.5]: https://github.com/graphprotocol/indexer/compare/v0.9.4...v0.9.5 -[0.9.4]: https://github.com/graphprotocol/indexer/compare/v0.9.3...v0.9.4 -[0.9.3]: https://github.com/graphprotocol/indexer/compare/v0.9.2...v0.9.3 -[0.9.2]: https://github.com/graphprotocol/indexer/compare/v0.9.1...v0.9.2 -[0.9.1]: https://github.com/graphprotocol/indexer/compare/v0.9.0-alpha.4...v0.9.1 -[0.9.0-alpha.4]: https://github.com/graphprotocol/indexer/compare/v0.9.0-alpha.3...v0.9.0-alpha.4 -[0.9.0-alpha.3]: https://github.com/graphprotocol/indexer/compare/v0.4.5...v0.9.0-alpha.3 -[0.4.5]: https://github.com/graphprotocol/indexer/compare/v0.4.4...v0.4.5 -[0.4.4]: https://github.com/graphprotocol/indexer/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/graphprotocol/indexer/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/graphprotocol/indexer/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/graphprotocol/indexer/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.8...v0.4.0 -[0.3.7-alpha.8]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.7...v0.3.7-alpha.8 -[0.3.7-alpha.7]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.0...v0.3.7-alpha.7 -[0.3.7-alpha.0]: https://github.com/graphprotocol/indexer/compare/v0.3.6...v0.3.7-alpha.0 -[0.3.6]: https://github.com/graphprotocol/indexer/compare/v0.3.4...v0.3.6 -[0.3.4]: https://github.com/graphprotocol/indexer/compare/v0.3.3...v0.3.4 -[0.3.3]: https://github.com/graphprotocol/indexer/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/graphprotocol/indexer/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/graphprotocol/indexer/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/graphprotocol/indexer/compare/v0.2.6...v0.3.0 -[0.2.6]: https://github.com/graphprotocol/indexer/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/graphprotocol/indexer/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/graphprotocol/indexer/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/graphprotocol/indexer/compare/v0.2.1...v0.2.3 diff --git a/packages/indexer-agent/package.json b/packages/indexer-agent/package.json index c3068d39c..b7aa2a3a9 100644 --- a/packages/indexer-agent/package.json +++ b/packages/indexer-agent/package.json @@ -75,7 +75,7 @@ "eslint-config-prettier": "^8.5.0", "jest": "<30.0.0-0", "prettier": "3.0.3", - "ts-jest": "29.1.1", + "ts-jest": "^29.2.5", "ts-node": "10.7.0", "typechain": "8.0.0", "typescript": "5.2.2" diff --git a/packages/indexer-cli/CHANGELOG.md b/packages/indexer-cli/CHANGELOG.md deleted file mode 100644 index 3570dabb7..000000000 --- a/packages/indexer-cli/CHANGELOG.md +++ /dev/null @@ -1,246 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -- Upgraded `common-ts` dependency to v2.0.11 - -## [0.20.23] - 2023-09-29 -### Changed -- Require a `--network` option to approve actions - -## [0.20.21] - 2023-08-24 -### Changed -- Upgraded `common-ts` dependency to v2.0.3 - -## [0.20.18] - 2023-08-11 -### Added -- Most CLI commands now require the protocol network to be identified using the option `--network`. - -## [0.20.12] - 2023-02-19 -### Added -- Add `--safety` option to add extra POI correctness safety checks - -## [0.20.8] - 2022-12-21 -### Changed -- Improve actions update command: better logging, accept `0` poi - -## [0.20.6] - 2022-12-14 -### Added -- New `--filter` option to select only a subset of Actions query columns, when printing results to stdout. -- Add `cost delete ..` command for deleting one or more cost models -- Add `--fields` option to filter output of actions get command -- New `actions update` command for updating one or more actions in the queue - -### Changed -- Extend `actions delete` command to support filters to delete groups of actions -- Upgrade @graphprotocol/common-ts to v2.0.1 - -## [0.20.3] - 2022-08-31 -### Added -- Rule commands input parsing, suggest useage when unsupported value provided -- Support batch approving queued actions -- Support user defined ordering on actions get command - -## [0.20.1] - 2022-08-04 -### Added -- Option to set a global default cost model - -### Changed -- Remove colors from yalm and json outputs -- Only print identifier for offchain subgraphs -- Improve error message on indexer rules set parameter issues - -### Fixed -- Null error on ChainIndexingStatus.latestBlock - -## [0.20.0] - 2022-06-21 -### Added -- New Actions module for interacting with the actions queue - -## [0.19.3] - 2022-06-14 -### Added -- Allocations module for direct management of allocations - -### Fixed -- Status command handles unspecified indexer location -- Fix tests across version upgrade by removing tests that include version number - -### Changed -- Improve --help output for indexer commands - -## [0.19.1] - 2022-04-21 -### Added -- Include tests of cost commands - -### Changed -- Upgrade dependencies - -## [0.19.0] - 2022-02-24 -### Changed -- Upgrade dependencies - -### Added -- Reusable CLI test harness -- CLI tests for all rules commands -- Support indexer rules defined by subgraph id -- Support offchain subgraph management via indexing rules / CLI -- Manage allocation lifetimes via rules/CLI -- Support rejecting unsupported subgraphs -- Optional autorenewal of allocations - -## 0.18.6 - 2022-01-05 - -## [0.18.0] - 2021-09-07 -### Changed -- Update Ethers dependencies - -### Added -- Show the status of indexer's active allocations in `status` command output -- Show the status of indexer's subgraph deployments in `status` command output - -## [0.17.0] - 2021-07-21 -### Fixed -- Remove vestigial check for `channel-messages-inbox` endpoint - -## [0.15.0] - 2021-05-25 -### Changed -- Rename query fee related fields in database models - -## [0.14.0] - 2021-05-12 -### Added -- Add subgraph deployment ID to POI disputes - -## [0.13.0] - 2021-04-19 -### Changed -- Update to latest common-ts - -## [0.12.0] - 2021-04-06 -### Changed -- Update common-ts and ethers - -## [0.11.0] - 2021-03-31 -### Added -- Add `graph indexer disputes get` command to list potentially disputable POIs in the network. - -### Changed -- Update @graphprotocol/common-ts to 1.3.2 - -## [0.10.0] - 2021-01-29 -### Changed -- Update common-ts to 1.3.0 to include new testnet contracts - -## [0.9.5] - 2021-01-16 -### Fixed -- Update ethers to 5.0.26 to avoid unresolved promise rejections (#183) - -### Changed -- Update common-ts to 1.2.1 - -## [0.9.4] - 2021-01-13 -### Changed -- No changes - -## [0.9.3] - 2021-01-11 -### Changed -- No changes - -## [0.9.2] - 2021-01-09 -### Changed -- Update common-ts to 1.2.0 - -## [0.4.0] - 2020-11-27 -### Changed -- Update common-ts to 0.4.0 - -## [0.3.7-alpha.0] - 2020-11-17 -### Changed -- Update `@graphprotocol/common-ts` to 0.3.13 - -## [0.3.4] - 2020-10-29 -### Changed -- Update and pin all dependencies - -## [0.3.2] - 2020-10-27 -### Added -- Add 'graph indexer rules delete \' command - -## [0.3.1] - 2020-10-15 -### Changed -- Update common-ts to 0.3.3 - -## [0.3.0] - 2020-10-13 -### Changed -- Skip the scrypt dependency -- Update common-ts to 0.3.2 -- Properly support 0x- and Qm-style deployment IDs -- Format cost model variables with indentation -- Read cost models from input files instead of CLI args -- Display decisionBasis field in `graph indexer status` output - -### Added -- Allow to clear/reset all fields of a rule at once (#42) -- Add `graph indexer cost` subcommands - -## [0.2.6] - 2020-10-13 -### Changed -- Update to indexer-common - -## [0.1.4] - 2020-09-01 -### Changed -- Make indexing rules and status commands more robust -- Update @graphprotocol/common-ts to 0.2.4 - -## [0.1.3] - 2020-08-27 -### Fixed -- Always refer to `graph indexer`, not `graph indexing` - -### Changed -- Update @graphprotocol/common-ts to 0.2.3 - -### Added -- Detailed endpoint statuses and possible actions in `graph indexer status` - -## 0.1.1 - 2020-08-27 -### Fixed -- Detect indexer registration correctly - -### Changed -- Update @graphprotocol/common-ts to 0.2.2 - -[Unreleased]: https://github.com/graphprotocol/indexer/compare/v0.20.23-rc.0...HEAD -[0.20.23]: https://github.com/graphprotocol/indexer/compare/v0.20.21...v0.20.23 -[0.20.21]: https://github.com/graphprotocol/indexer/compare/v0.20.18...v0.20.21 -[0.20.18]: https://github.com/graphprotocol/indexer/compare/v0.20.12...v0.20.18 -[0.20.12]: https://github.com/graphprotocol/indexer/compare/v0.20.8...v0.20.12 -[0.20.8]: https://github.com/graphprotocol/indexer/compare/v0.20.6...v0.20.8 -[0.20.6]: https://github.com/graphprotocol/indexer/compare/v0.20.3...v0.20.6 -[0.20.3]: https://github.com/graphprotocol/indexer/compare/v0.20.1...v0.20.3 -[0.20.1]: https://github.com/graphprotocol/indexer/compare/v0.20.0...v0.20.1 -[0.20.0]: https://github.com/graphprotocol/indexer/compare/v0.19.3...v0.20.0 -[0.19.3]: https://github.com/graphprotocol/indexer/compare/v0.19.1...v0.19.3 -[0.19.1]: https://github.com/graphprotocol/indexer/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/graphprotocol/indexer/compare/v0.18.6...v0.19.0 -[0.18.0]: https://github.com/graphprotocol/indexer/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/graphprotocol/indexer/compare/v0.15.0...v0.17.0 -[0.15.0]: https://github.com/graphprotocol/indexer/compare/v0.14.0...v0.15.0 -[0.14.0]: https://github.com/graphprotocol/indexer/compare/v0.13.0...v0.14.0 -[0.13.0]: https://github.com/graphprotocol/indexer/compare/v0.12.0...v0.13.0 -[0.12.0]: https://github.com/graphprotocol/indexer/compare/v0.11.0...v0.12.0 -[0.11.0]: https://github.com/graphprotocol/indexer/compare/v0.10.0...v0.11.0 -[0.10.0]: https://github.com/graphprotocol/indexer/compare/v0.9.5...v0.10.0 -[0.9.5]: https://github.com/graphprotocol/indexer/compare/v0.9.4...v0.9.5 -[0.9.4]: https://github.com/graphprotocol/indexer/compare/v0.9.3...v0.9.4 -[0.9.3]: https://github.com/graphprotocol/indexer/compare/v0.9.2...v0.9.3 -[0.9.2]: https://github.com/graphprotocol/indexer/compare/v0.4.0...v0.9.2 -[0.4.0]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.0...v0.4.0 -[0.3.7-alpha.0]: https://github.com/graphprotocol/indexer/compare/v0.3.4...v0.3.7-alpha.0 -[0.3.4]: https://github.com/graphprotocol/indexer/compare/v0.3.2...v0.3.4 -[0.3.2]: https://github.com/graphprotocol/indexer/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/graphprotocol/indexer/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/graphprotocol/indexer/compare/v0.2.6...v0.3.0 -[0.2.6]: https://github.com/graphprotocol/indexer/compare/v0.1.4...v0.2.6 -[0.1.4]: https://github.com/graphprotocol/cli/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/graphprotocol/cli/compare/v0.1.1...v0.1.3 diff --git a/packages/indexer-cli/package.json b/packages/indexer-cli/package.json index c42eb5977..4e2cf1483 100644 --- a/packages/indexer-cli/package.json +++ b/packages/indexer-cli/package.json @@ -49,7 +49,7 @@ "eslint-config-prettier": "8.5.0", "lodash.clonedeep": "^4.5.0", "prettier": "3.0.3", - "ts-jest": "29.1.1", + "ts-jest": "^29.2.5", "typescript": "5.2.2" }, "resolutions": { diff --git a/packages/indexer-common/CHANGELOG.md b/packages/indexer-common/CHANGELOG.md deleted file mode 100644 index 6eeb535c7..000000000 --- a/packages/indexer-common/CHANGELOG.md +++ /dev/null @@ -1,330 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -- Upgraded `common-ts` dependency to v2.0.11 - -## [0.21.2] - 2024-01-18 -### Changed -- Reduce stringency of action validation when adding to queue - -## [0.20.23] - 2023-09-29 -### Fixed -- Reference SQL conflict targets when upserting `POIDisputes`. - -## [0.20.21] - 2023-08-24 -### Changed -- Upgraded `common-ts` dependency to v2.0.3 - -## [0.20.20] - 2023-08-21 -### Fixed -- Ensure some database operations run inside their transactions -- More helpful error message when parsing network specification files -- Protocol network missing when creating offchain rules and allocations via the GraphQL interface - -## [0.20.18] - 2023-08-11 -### Added -- The `Network` type now holds references to all network-specific components, such as the `NetworkMonitor` and `Contracts` classes. -- Introduced `GraphNode` class to replace `Indexer`, `Subgraph`, and `IndexingStatus` classes. -- New general purpose `parser` module, used for input validation. -- New `NetworkSpecification` type, which holds all information required to represent a protocol network. - -### Changed -- Added `protocolNetwork` field to most types. - -## [0.20.17] - 2023-06-19 -### Changed -- Check action batch feasibility at batch level only, improve batche efficiency -- Improved logging detail when queueing allocation receipts for collecting -- Update network alias value, polygon -> matic -- Update partial-vouchers encoding scheme - -## [0.20.12] - 2023-02-19 -### Added -- New `ReceiptMetrics` metric for allocation receipt collector -- Add `safety` option in indexing rules to not allocate to a deployment when its previous allocation was closed with a 0x0 POI - -### Fixed -- Fix unresolved promise warning in monitor network pause function - -### Changed -- Improve EBO missing data error log messages - -## [0.20.11] - 2023-02-01 -### Changed -- Use configured Ethereum provider for resolving protocol chain blocks (instead of graph-node) - -### Fixed -- Use parseGRT in resolveActionsDelta to parse to BigNumber - -## [0.20.10] - 2023-01-31 -### Added -- Moved GRT stake feasibility check from the action level to batch level - -## [0.20.9] - 2023-01-24 -### Changed -- Epoch block tracking is now handled by the Epoch Subgraph instead of the Epoch Manager contract -- Add CAIP-2 id map entries for: hardhat, polygon, optimism, celo, avalanche, arbitrum and arbitrum-goerli - -## [0.20.8] - 2022-12-21 -### Fixed -- Use network alias when querying blockHashFromNumber - -### Added -- Add tests for CAIP id conversion functions - -## [0.20.7] - 2022-12-20 -### Changed -- Use strict chain identifier check on \`resolveChainId() - -## [0.20.6] - 2022-12-14 -### Changed -- The `ethereum-network` is now inferred from provider's `chainId` -- Retry epoch subgraph queries -- Avoid requeueing recently failed actions -- Avoid querying block information when action is forced and poi is provided -- Avoid requeueuing recently successful actions -- Add retry loop around epoch subgraph queries -- Upgrade @graphprotocol/common-ts to v2.0.1 - -### Fixed -- Allow null IndexerDeployment.node in status responses - -## [0.20.4] - 2022-09-29 -### Fixed -- Fix signal threshold check bug in isDeploymentWorthAllocatingTowards() - -### Changed -- Remove max signal check, towards deprecating maxSignal - -## [0.20.3] - 2022-08-31 -### Changed -- Shorten failure reason: use indexer error codes - -### Added -- Track rule matching criteria per action, store in actions db -- Allow allocations with allocationAmount = 0 - -### Fixed -- Use correct allocation amount big number formatting during auto indexing rule creation -- Fix fallback to global cost model if specific cost model not set - -## [0.20.1] - 2022-08-04 -### Fixed -- Query fee runtime type check error - -## [0.20.0] - 2022-06-21 -### Added -- Action queue for managing allocations directly, batching into single tx, and providing support for 3rd party allocation decision tools - -### Changed -- Reorganize indexer management server creating separate modules for: allocations, actions, network monitoring, and rules - -## [0.19.3] - 2022-06-14 -### Added -- Allocations mutations and queries to management server for direct management of allocations - -### Changed -- Bump @graphprotocol/cost-model from 0.1.11 to 0.1.14 - -## [0.19.1] - 2022-04-21 -### Fixed -- Allow null POI dispute reference proofs -- Use consistent rule identifier formatting - -### Changed -- Upgrade dependencies - -## [0.19.0] - 2022-02-24 -### Changed -- Upgrade dependencies - -### Added -- Live metric for operator ETH balance -- Support indexer rules defined by subgraph id -- Support offchain subgraph management via indexing rules / CLI -- Manage allocation lifetimes via rules/CLI -- Support rejecting unsupported subgraphs -- Optional autorenewal of allocations¡ - -## 0.18.6 - 2022-01-05 - -## [0.18.1] - 2021-09-08 -### Changed -- Reinclude Connext vector packages to dependencies - -## [0.18.0] - 2021-09-07 -### Changed -- Update Ethers dependencies - -## [0.17.0] - 2021-07-21 -### Changed -- Optimize `/network` execution by switching to a simpler HTTP client (doesn't need to be GraphQL aware) - -## [0.15.1] - 2021-05-26 -### Added -- Add `ensureAllocationSummary` utility for agent and service to use to create allocation summaries for receipts - -## [0.15.0] - 2021-05-25 -### Fixed -- Fix bug that could cause `AsyncCache` to fail perpetually - -## [0.14.0] - 2021-05-12 -### Added -- Add subgraph deployment ID to POI disputes -- Add async cache from indexer-service -- Add database models for allocation-based receipts and query fee vouchers - -## [0.13.0] - 2021-04-19 -### Changed -- Update to latest common-ts - -## [0.12.0] - 2021-04-06 -### Changed -- Update common-ts, vector and ethers - -## [0.11.0] - 2021-03-31 -### Added -- Add POI disputes to the indexer management API -- Add support for new payments system -- Add error types for new payments system -- Add error types for POI disputes -- Add error types for transaction management - -### Changed -- Update @graphprotocol/common-ts to 1.3.2 (equality check fix in eventuals, latest contracts) - -## [0.10.0] - 2021-01-29 -### Changed -- Update common-ts to 1.3.0 to include new testnet contracts - -## [0.9.5] - 2021-01-16 -### Fixed -- Update ethers to 5.0.26 to avoid unresolved promise rejections (#183) - -### Changed -- Update common-ts to 1.2.1 - -### Added -- Validate cost models in `setCostModel` (#182) - -## [0.9.4] - 2021-01-13 -### Changed -- No changes - -## [0.9.3] - 2021-01-11 -### Changed -- No changes - -## [0.9.2] - 2021-01-09 -### Changed -- Update common-ts to 1.2.0 - -## [0.4.4] - 2020-12-14 -### Added -- Add `IE035` and `IE036` error types for unhandled promises and exceptions - -## [0.4.2] - 2020-11-30 -### Changed -- Return an allocation signer from `uniqueAllocationId` - -## [0.4.0] - 2020-11-27 -### Changed -- Update common-ts to 0.4.0 - -## [0.3.7-alpha.8] - 2020-11-27 -### Added -- Add standard indexer errors and `indexer_error` metric - -## [0.3.7-alpha.0] - 2020-11-17 -### Changed -- Update `@graphprotocol/common-ts` to 0.3.13 - -## [0.3.4] - 2020-10-29 -### Changed -- Update and pin all dependencies - -## [0.3.3] - 2020-10-28 -### Fixed -- Preserve `$DAI` on updates -- Fix injecting `$DAI` into `null` variables -- Fix adding `$DAI` to `null` cost models in `setCostModel` mutation -- Don't accidentally clear non-`$DAI` variables - -### Added -- Inject `$DAI` into new models when they are created - -### Changed -- Change cost model variable columns in the database to JSONB - -## [0.3.2] - 2020-10-27 -### Added -- Add 'deleteIndexingRules' mutation - -### Fixed -- Fix clearing of cost models - -## [0.3.1] - 2020-10-15 -### Changed -- Update common-ts to 0.3.3 - -## [0.3.0] - 2020-10-13 -### Changed -- Update common-ts to 0.3.2 - -### Added -- Add cost model management with tests -- Add helpers for allocation IDs and attestation signer keys - -## 0.2.6 - 2020-10-13 -### Added -- Move indexing rule management here from `@graphprotocol/common-ts` - -[Unreleased]: https://github.com/graphprotocol/indexer/compare/v0.21.2...HEAD -[0.21.2]: https://github.com/graphprotocol/indexer/compare/v0.20.23...v0.21.2 -[0.20.23]: https://github.com/graphprotocol/indexer/compare/v0.20.21...v0.20.23 -[0.20.21]: https://github.com/graphprotocol/indexer/compare/v0.20.20...v0.20.21 -[0.20.20]: https://github.com/graphprotocol/indexer/compare/v0.20.18...v0.20.20 -[0.20.18]: https://github.com/graphprotocol/indexer/compare/v0.20.17...v0.20.18 -[0.20.17]: https://github.com/graphprotocol/indexer/compare/v0.20.12...v0.20.17 -[0.20.12]: https://github.com/graphprotocol/indexer/compare/v0.20.11...v0.20.12 -[0.20.11]: https://github.com/graphprotocol/indexer/compare/v0.20.10...v0.20.11 -[0.20.10]: https://github.com/graphprotocol/indexer/compare/v0.20.9...v0.20.10 -[0.20.9]: https://github.com/graphprotocol/indexer/compare/v0.20.8...v0.20.9 -[0.20.8]: https://github.com/graphprotocol/indexer/compare/v0.20.7...v0.20.8 -[0.20.7]: https://github.com/graphprotocol/indexer/compare/v0.20.6...v0.20.7 -[0.20.6]: https://github.com/graphprotocol/indexer/compare/v0.20.4...v0.20.6 -[0.20.4]: https://github.com/graphprotocol/indexer/compare/v0.20.3...v0.20.4 -[0.20.3]: https://github.com/graphprotocol/indexer/compare/v0.20.1...v0.20.3 -[0.20.1]: https://github.com/graphprotocol/indexer/compare/v0.20.0...v0.20.1 -[0.20.0]: https://github.com/graphprotocol/indexer/compare/v0.19.3...v0.20.0 -[0.19.3]: https://github.com/graphprotocol/indexer/compare/v0.19.1...v0.19.3 -[0.19.1]: https://github.com/graphprotocol/indexer/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/graphprotocol/indexer/compare/v0.18.6...v0.19.0 -[0.18.1]: https://github.com/graphprotocol/indexer/compare/v0.18.0...v0.18.1 -[0.18.0]: https://github.com/graphprotocol/indexer/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/graphprotocol/indexer/compare/v0.15.1...v0.17.0 -[0.15.1]: https://github.com/graphprotocol/indexer/compare/v0.15.0...v0.15.1 -[0.15.0]: https://github.com/graphprotocol/indexer/compare/v0.14.0...v0.15.0 -[0.14.0]: https://github.com/graphprotocol/indexer/compare/v0.13.0...v0.14.0 -[0.13.0]: https://github.com/graphprotocol/indexer/compare/v0.12.0...v0.13.0 -[0.12.0]: https://github.com/graphprotocol/indexer/compare/v0.11.0...v0.12.0 -[0.11.0]: https://github.com/graphprotocol/indexer/compare/v0.10.0...v0.11.0 -[0.10.0]: https://github.com/graphprotocol/indexer/compare/v0.9.5...v0.10.0 -[0.9.5]: https://github.com/graphprotocol/indexer/compare/v0.9.4...v0.9.5 -[0.9.4]: https://github.com/graphprotocol/indexer/compare/v0.9.3...v0.9.4 -[0.9.3]: https://github.com/graphprotocol/indexer/compare/v0.9.2...v0.9.3 -[0.9.2]: https://github.com/graphprotocol/indexer/compare/v0.4.4...v0.9.2 -[0.4.4]: https://github.com/graphprotocol/indexer/compare/v0.4.2...v0.4.4 -[0.4.2]: https://github.com/graphprotocol/indexer/compare/v0.4.0...v0.4.2 -[0.4.0]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.8...v0.4.0 -[0.3.7-alpha.8]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.0...v0.3.7-alpha.8 -[0.3.7-alpha.0]: https://github.com/graphprotocol/indexer/compare/v0.3.4...v0.3.7-alpha.0 -[0.3.4]: https://github.com/graphprotocol/indexer/compare/v0.3.3...v0.3.4 -[0.3.3]: https://github.com/graphprotocol/indexer/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/graphprotocol/indexer/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/graphprotocol/indexer/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/graphprotocol/indexer/compare/v0.2.6...v0.3.0 diff --git a/packages/indexer-integration-tests/.eslintignore b/packages/indexer-integration-tests/.eslintignore deleted file mode 100644 index 24a2a2a18..000000000 --- a/packages/indexer-integration-tests/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -dist -coverage -*.js diff --git a/packages/indexer-integration-tests/.eslintrc.js b/packages/indexer-integration-tests/.eslintrc.js deleted file mode 100644 index 60edb6c8b..000000000 --- a/packages/indexer-integration-tests/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'] -} diff --git a/packages/indexer-integration-tests/.prettierrc.json b/packages/indexer-integration-tests/.prettierrc.json deleted file mode 100644 index ed58ece3f..000000000 --- a/packages/indexer-integration-tests/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "trailingComma": "all", - "tabWidth": 2, - "semi": false, - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/packages/indexer-integration-tests/LICENSE b/packages/indexer-integration-tests/LICENSE deleted file mode 100644 index 0cc620d5c..000000000 --- a/packages/indexer-integration-tests/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2020 The Graph Foundation - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/indexer-integration-tests/README.md b/packages/indexer-integration-tests/README.md deleted file mode 100644 index f5eb00660..000000000 --- a/packages/indexer-integration-tests/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Indexer Integration Tests - -This package contains integration tests for the indexer. The tests are written in typescript and use the [jest](https://jestjs.io/) testing framework. - -They also depend on the `local-network` repository to run a full local network with indexer components. - -## Getting started - -Dependencies: - -- node.js -- yarn -- docker -- docker-compose - -## Running the tests - -To run the tests, you need to have the `local-network` repository cloned and running. Follow the instructions in the `local-network` repository to set up the local network using docker compose. diff --git a/packages/indexer-integration-tests/jest.config.js b/packages/indexer-integration-tests/jest.config.js deleted file mode 100644 index b9f8bcb23..000000000 --- a/packages/indexer-integration-tests/jest.config.js +++ /dev/null @@ -1,20 +0,0 @@ -// until we find a way to avoid `punycode` we suppress the warnings in tests -process.env.NODE_NO_WARNINGS = '1' - -module.exports = { - collectCoverage: true, - forceExit: true, - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc'], - roots: ['/tests'], - transform: { - '^.+\\.ts?$': 'ts-jest', - }, - setupFilesAfterEnv: ['jest-extended'], - globals: { - 'ts-jest': { tsconfig: 'tsconfig.json' }, - }, - globalSetup: '/src/global-setup.ts', - globalTeardown: '/src/global-teardown.ts', -} diff --git a/packages/indexer-integration-tests/package-lock.json b/packages/indexer-integration-tests/package-lock.json deleted file mode 100644 index f76e2c913..000000000 --- a/packages/indexer-integration-tests/package-lock.json +++ /dev/null @@ -1,3232 +0,0 @@ -{ - "name": "indexer-integration-tests", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "indexer-integration-tests", - "version": "0.0.1", - "dependencies": { - "jest": "^29.7.0" - }, - "devDependencies": { - "jest-extended": "^4.0.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", - "dependencies": { - "@babel/types": "^7.24.5", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", - "dependencies": { - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", - "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@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.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", - "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/node": { - "version": "20.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", - "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001616", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz", - "integrity": "sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.759", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.759.tgz", - "integrity": "sha512-qZJc+zsuI+/5UjOSFnpkJBwwLMH1AZgyKqJ7LUNnRsB7v/cDjMu9DvXgp9kH6PTTZxjnPXGp2Uhurw+2Ll4Hjg==" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", - "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-extended": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jest-extended/-/jest-extended-4.0.2.tgz", - "integrity": "sha512-FH7aaPgtGYHc9mRjriS0ZEHYM5/W69tLrFTIdzm+yJgeoCmmrSB/luSfMSqWP9O29QWHPEmJ4qmU6EwsZideog==", - "dev": true, - "dependencies": { - "jest-diff": "^29.0.0", - "jest-get-type": "^29.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "jest": ">=27.2.5" - }, - "peerDependenciesMeta": { - "jest": { - "optional": true - } - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", - "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", - "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/update-browserslist-db": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz", - "integrity": "sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/packages/indexer-integration-tests/package.json b/packages/indexer-integration-tests/package.json deleted file mode 100644 index 2fe6a7456..000000000 --- a/packages/indexer-integration-tests/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "indexer-integration-tests", - "version": "0.0.1", - "description": "Integration tests for the indexer components.", - "main": "index.js", - "repository": "https://github.com/graphprotocol/indexer", - "author": "Graph Protocol", - "scripts": { - "integration-test": "jest" - }, - "dependencies": { - "jest": "^29.7.0" - }, - "devDependencies": { - "jest-extended": "^4.0.2" - } -} diff --git a/packages/indexer-integration-tests/src/global-setup.ts b/packages/indexer-integration-tests/src/global-setup.ts deleted file mode 100644 index e56d7b24d..000000000 --- a/packages/indexer-integration-tests/src/global-setup.ts +++ /dev/null @@ -1,4 +0,0 @@ - -export default async function globalSetup(){ - console.log('global setup') -} \ No newline at end of file diff --git a/packages/indexer-integration-tests/src/global-teardown.ts b/packages/indexer-integration-tests/src/global-teardown.ts deleted file mode 100644 index 82c6a15f1..000000000 --- a/packages/indexer-integration-tests/src/global-teardown.ts +++ /dev/null @@ -1,4 +0,0 @@ - -export default async function globalTeardown(){ - console.log('global teardown') -} \ No newline at end of file diff --git a/packages/indexer-integration-tests/tests/bootstrap.spec.ts b/packages/indexer-integration-tests/tests/bootstrap.spec.ts deleted file mode 100644 index b66ff9712..000000000 --- a/packages/indexer-integration-tests/tests/bootstrap.spec.ts +++ /dev/null @@ -1,5 +0,0 @@ -describe("bootstrapTest", () => { - it("should bootstrap the test", async () => { - expect(true).toBe(true); - }); -}); \ No newline at end of file diff --git a/packages/indexer-integration-tests/tsconfig.json b/packages/indexer-integration-tests/tsconfig.json deleted file mode 100644 index 2a02004a6..000000000 --- a/packages/indexer-integration-tests/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "tests", - "outDir": "dist", - "target": "es2020", - "module": "commonjs", - "declaration": true, - "sourceMap": true, - "esModuleInterop": true, - "strict": true, - "composite": true, - "lib": ["es2015", "es6", "esnext.asynciterable", "dom", "ES2020.Promise"] - }, - "include": ["tests/**/*.ts", "tests/**/*.d.ts"], - "exclude": ["tests/**/__tests__/*.ts"], - "references": [{ "path": "../indexer-common" }] -} diff --git a/packages/indexer-native/.eslintignore b/packages/indexer-native/.eslintignore deleted file mode 100644 index 0e75fe557..000000000 --- a/packages/indexer-native/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -dist -coverage diff --git a/packages/indexer-native/.eslintrc.js b/packages/indexer-native/.eslintrc.js deleted file mode 100644 index 53c6b717a..000000000 --- a/packages/indexer-native/.eslintrc.js +++ /dev/null @@ -1,13 +0,0 @@ -module.exports = { - root: true, - "parserOptions": { - "ecmaVersion": 2020 - }, - "env": { - "node": true, - "commonjs": true, - "es6": true, - "jest": true - }, - extends: ['eslint:recommended', 'prettier'] -} diff --git a/packages/indexer-native/.gitignore b/packages/indexer-native/.gitignore deleted file mode 100644 index efda3b4fc..000000000 --- a/packages/indexer-native/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -native/target -native/artifacts.json -binary/index.node -**/*~ -**/node_modules -**/.DS_Store diff --git a/packages/indexer-native/CHANGELOG.md b/packages/indexer-native/CHANGELOG.md deleted file mode 100644 index 6cf196387..000000000 --- a/packages/indexer-native/CHANGELOG.md +++ /dev/null @@ -1,65 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -- Upgraded `common-ts` dependency to v2.0.11 - -## [0.20.6] - 2022-12-14 -### Changed -- Upgrade @graphprotocol/common-ts to v2.0.1 - -## [0.20.1] - 2022-08-04 -### Changed -- Upgrade @graphprotocol/common-ts - -## [0.19.3] - 2022-06-14 -### Changed -- Use ubuntu-18.04 machine to precompile binaries for linux targets - -## [0.19.2] - 2022-04-29 -### Changed -- Host precompiled binaries on release page - -## [0.19.1] - 2022-04-21 -### Added -- Use prettier and eslint to validate and format .js code - -## [0.19.0] - 2022-02-24 -### Changed -- Upgrade dependencies - -## 0.18.6 - 2022-01-05 - -## [0.18.0] - 2021-09-07 -### Changed -- Update Ethers dependencies - -## [0.17.0] - 2021-07-21 -### Fixed -- Fix build for Node v16 by upgrading neon-sys dependency - -## [0.14.0] - 2021-05-12 -### Changed -- Use verify instead of recover for signatures when possible -- Build native module in release mode for better performance - -### Fixed -- Fix logging native signers usefully - -## 0.13.0 - 2021-04-19 -### Added -- Add package for native attestation signing and receipt signature verification - -[Unreleased]: https://github.com/graphprotocol/indexer/compare/v0.20.6...HEAD -[0.20.6]: https://github.com/graphprotocol/indexer/compare/v0.20.1...v0.20.6 -[0.20.1]: https://github.com/graphprotocol/indexer/compare/v0.19.3...v0.20.1 -[0.19.3]: https://github.com/graphprotocol/indexer/compare/v0.19.2...v0.19.3 -[0.19.2]: https://github.com/graphprotocol/indexer/compare/v0.19.1...v0.19.2 -[0.19.1]: https://github.com/graphprotocol/indexer/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/graphprotocol/indexer/compare/v0.18.6...v0.19.0 -[0.18.0]: https://github.com/graphprotocol/indexer/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/graphprotocol/indexer/compare/v0.14.0...v0.17.0 -[0.14.0]: https://github.com/graphprotocol/indexer/compare/v0.13.0...v0.14.0 diff --git a/packages/indexer-native/README.md b/packages/indexer-native/README.md deleted file mode 100644 index 4ba0a28e9..000000000 --- a/packages/indexer-native/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# indexer-native - -Performance sensitive indexer code diff --git a/packages/indexer-native/jest.config.js b/packages/indexer-native/jest.config.js deleted file mode 100644 index 11770c10c..000000000 --- a/packages/indexer-native/jest.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// until we find a way to avoid `punycode` we suppress the warnings in tests -process.env.NODE_NO_WARNINGS = "1"; - -module.exports = { - collectCoverage: true, - testEnvironment: "node", - testPathIgnorePatterns: ["/node_modules/", "/dist/", ".yalc"], -}; diff --git a/packages/indexer-native/lib/index.d.ts b/packages/indexer-native/lib/index.d.ts deleted file mode 100644 index 37f601e46..000000000 --- a/packages/indexer-native/lib/index.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - Verifies messages are signed by the same address. - This API may seem strange compared to the relatively straightforward alternative: - verify(address, message, signature): Promise. - - But, making the API this way allows for some optimizations: - * The address is not repeatedly marshalled across the Rust/JS boundary - * The PublicKey to Address conversion is cached, saving a keccak hash -*/ -export class NativeSignatureVerifier { - public readonly address: string; - - constructor(address: string); - /* - Verifies that the message was signed by the address this verifier - was constructed with. - */ - async verify(message: string, signature: string): Promise; -} - -export type Attestation = { - requestCID: string; - responseCID: string; - subgraphDeploymentID: string; - v: number; - r: string; - s: string; -}; - -/* - Signs attestations using the given signing data -*/ -export class NativeAttestationSigner { - constructor( - chainId: string | number, - disputeManagerAddress: string, - privateKey: string, - /// Bytes32 - subgraphDeploymentId: string - ); - /* - Signs an attestation using the data given in the constructor - */ - async createAttestation( - request: string, - response: string - ): Promise; -} diff --git a/packages/indexer-native/lib/index.js b/packages/indexer-native/lib/index.js deleted file mode 100644 index 9274dd56f..000000000 --- a/packages/indexer-native/lib/index.js +++ /dev/null @@ -1,41 +0,0 @@ -var addon = require("../binary/index.node"); - -class NativeSignatureVerifier { - constructor(address) { - this.address = address; - this._native = addon.signature_verifier_new(address); - } - - verify(message, signature) { - return addon.signature_verifier_verify(this._native, message, signature); - } -} - -class NativeAttestationSigner { - constructor( - chainId, - disputeManagerAddress, - privateKey, - subgraphDeploymentId, - ) { - this._native = addon.attestation_signer_new( - chainId, - disputeManagerAddress, - privateKey, - subgraphDeploymentId, - ); - } - - createAttestation(request, response) { - return addon.attestation_signer_create_attestation( - this._native, - request, - response, - ); - } -} - -module.exports = { - NativeSignatureVerifier, - NativeAttestationSigner, -}; diff --git a/packages/indexer-native/lib/index.test.js b/packages/indexer-native/lib/index.test.js deleted file mode 100644 index af51d6107..000000000 --- a/packages/indexer-native/lib/index.test.js +++ /dev/null @@ -1,106 +0,0 @@ -const { NativeSignatureVerifier, NativeAttestationSigner } = require("."); -const { utils, Wallet } = require("ethers"); -const bs58 = require("bs58"); - -describe("Native Functions", () => { - test("Signatures", () => { - let address = "0xc61127cdfb5380df4214b0200b9a07c7c49d34f9"; - let native = new NativeSignatureVerifier(address); - - // Taken from the indexer-service code matching - // the Scalar format. - let verifyReceipt = (receipt) => { - const message = receipt.slice(64, 136); - const signature = receipt.slice(136, 266); - return native.verify(message, signature); - }; - - // Testing multiple true/false values in this order on the same NativeSignatureVerifier - // instance is important because it verifies different paths for the cached/uncached internals. - // These resolve in this order: - // False on uncached - // True on uncached - // True on cached - // False on cached - // Values generated by Scalar test code - let receipt0________ = - "6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001c7cb128b1f0c35ebcfda82da63fb149773d26a5665ae70db6c0c0f61e362d5320f18c77a0907fd6b1565e8734bd4f893d2a0c5dfd34878ee4bd634c99297db091c"; - let receipt0Tampered = - "6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000001c7cb128b1f0c35ebcfda82da63fb149773d26a5665ae70db6c0c0f61e362d5320f18c77a0907fd6b1565e8734bd4f893d2a0c5dfd34878ee4bd634c99297db091c"; - let receipt1________ = - "640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000259d1189ce128a2a3b4786035aed37cca0968c638c67e73ed1496a50fbda043d5553a7702bb8b0f71409dd0199533161e322b17826a91236cfb22504a093d0a451c"; - let receipt1Tampered = - "640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000259d1189ce128a2a3b4786035aed37cca0968c638c67e73ed1496a50fbda043d5553a7702bb8b0f71409dd0199533161e322b17826a91236cfb22504a093d0a451c"; - // The awaits give time for each previous task to resolve, ensuring that the - // fast path is taken for subsequent runs. - expect(verifyReceipt(receipt0Tampered)).toEqual(false); - expect(verifyReceipt(receipt0________)).toEqual(true); - expect(verifyReceipt(receipt1________)).toEqual(true); - expect(verifyReceipt(receipt1Tampered)).toEqual(false); - // When running the tests locally with some debug information, to ensure - // that the fast path was transitioned to it only printed 3/4 messages. - // Adding this redundant test printed 4/5 messages. Assuming the problem - // is just flushing output. - expect(verifyReceipt(receipt1Tampered)).toEqual(false); - }); - - test("Create attestation", async () => { - // Taken from the attestation test in common-ts - const mnemonic = - "coyote tattoo slush ball cluster culture bleak news when action cover effort"; - - const subgraphDeploymentID = utils.hexlify( - bs58.decode("QmTXzATwNfgGVukV1fX2T6xw9f6LAYRVWpsdXyRWzUR2H9").slice(2), - ); - const privateKey = Wallet.fromMnemonic(mnemonic).privateKey; - - const chainId = 1; - const disputeManagerAddress = "0x0000000000000000000000000000000000000000"; - - const signer = new NativeAttestationSigner( - chainId, - disputeManagerAddress, - privateKey, - subgraphDeploymentID, - ); - - const expected = { - requestCID: - "0x72859a6ae50aa97f593f23df1c78bb1fd78cfc493fcef64159d6486223196833", - responseCID: - "0x448b8ad3a330cf8f269f487881b59efff721b3dfa8e61f7c8fd2480389459ed3", - subgraphDeploymentID: - "0x4d31d21d389263c98d1e83a031e8fed17cdcef15bd62ee8153f34188a83c7b1c", - v: 27, - r: "0x702af3e8dec0aab1b29e5663b7ba6843689a55c2c178a26dcce3bc1eeb3a1de9", - s: "0x7b24b529fcf92c9426179146bb7bfed6540043e2c30132e59d994a3cc718f2be", - }; - await expect(signer.createAttestation("request", "response")).toEqual( - expected, - ); - }); - - test("Fail to initialize signer", async () => { - // Taken from the attestation test in common-ts - const mnemonic = - "coyote tattoo slush ball cluster culture bleak news when action cover effort"; - - const subgraphDeploymentID = utils.hexlify( - bs58.decode("QmTXzATwNfgGVukV1fX2T6xw9f6LAYRVWpsdXyRWzUR2H9").slice(2), - ); - const privateKey = Wallet.fromMnemonic(mnemonic).privateKey; - - const chainId = 1; - - // Ensure throwing errors works at least in one case when a parameter cannot be deserialized - expect( - () => - new NativeAttestationSigner( - chainId, - "0xbad", - privateKey, - subgraphDeploymentID, - ), - ).toThrow(); - }); -}); diff --git a/packages/indexer-native/native/Cargo.lock b/packages/indexer-native/native/Cargo.lock deleted file mode 100644 index 0732e60df..000000000 --- a/packages/indexer-native/native/Cargo.lock +++ /dev/null @@ -1,907 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "alloy-primitives" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66f73f11dcfbf8bb763d88fb1d082fe7cca0a00d3227d9921bdbd52ce5e013e2" -dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "hex-literal", - "itoa", - "proptest", - "ruint", - "serde", - "tiny-keccak", -] - -[[package]] -name = "alloy-rlp" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f938f00332d63a5b0ac687bd6f46d03884638948921d9f8b50c59563d421ae25" -dependencies = [ - "arrayvec", - "bytes", - "smol_str", -] - -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - -[[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" - -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clear_on_drop" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38508a63f4979f0048febc9966fadbd48e5dab31fd0ec6a3f151bbf4a74f7423" -dependencies = [ - "cc", -] - -[[package]] -name = "const-hex" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca268df6cd88e646b564e6aff1a016834e5f42077c736ef6b6789c31ef9ec5dc" -dependencies = [ - "cfg-if", - "cpufeatures", - "hex", - "serde", -] - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - -[[package]] -name = "crypto-mac" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" -dependencies = [ - "generic-array", - "subtle", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - -[[package]] -name = "eip-712-derive" -version = "0.4.0" -source = "git+https://github.com/graphprotocol/eip-712-derive#0ce4f89c98d0b56d9d67c16b732425e7f2fd14b3" -dependencies = [ - "clear_on_drop", - "keccak-hash", - "lazy_static", - "libsecp256k1", -] - -[[package]] -name = "errno" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" - -[[package]] -name = "fixed-hash" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" - -[[package]] -name = "hmac" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" -dependencies = [ - "crypto-mac", - "digest", -] - -[[package]] -name = "hmac-drbg" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" -dependencies = [ - "digest", - "generic-array", - "hmac", -] - -[[package]] -name = "indexer-native" -version = "0.2.0" -dependencies = [ - "alloy-primitives", - "arc-swap", - "eip-712-derive", - "keccak-hash", - "lazy_static", - "neon", - "secp256k1", -] - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "keccak-hash" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b286e6b663fb926e1eeb68528e69cb70ed46c6d65871a21b2215ae8154c6d3c" -dependencies = [ - "primitive-types", - "tiny-keccak", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "libloading" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" -dependencies = [ - "cfg-if", - "windows-targets", -] - -[[package]] -name = "libm" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" - -[[package]] -name = "libsecp256k1" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" -dependencies = [ - "arrayref", - "base64", - "digest", - "hmac-drbg", - "libsecp256k1-core", - "libsecp256k1-gen-ecmult", - "libsecp256k1-gen-genmult", - "rand", - "serde", - "sha2", - "typenum", -] - -[[package]] -name = "libsecp256k1-core" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" -dependencies = [ - "crunchy", - "digest", - "subtle", -] - -[[package]] -name = "libsecp256k1-gen-ecmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "libsecp256k1-gen-genmult" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" -dependencies = [ - "libsecp256k1-core", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" - -[[package]] -name = "neon" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d75440242411c87dc39847b0e33e961ec1f10326a9d8ecf9c1ea64a3b3c13dc" -dependencies = [ - "libloading", - "neon-macros", - "once_cell", - "semver", - "send_wrapper", - "smallvec", -] - -[[package]] -name = "neon-macros" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6813fde79b646e47e7ad75f480aa80ef76a5d9599e2717407961531169ee38b" -dependencies = [ - "quote", - "syn 2.0.43", - "syn-mid", -] - -[[package]] -name = "num-traits" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" -dependencies = [ - "autocfg", - "libm", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "primitive-types" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" -dependencies = [ - "fixed-hash", - "uint", -] - -[[package]] -name = "proc-macro2" -version = "1.0.86" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "proptest" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" -dependencies = [ - "bit-set", - "bitflags 1.3.2", - "byteorder", - "lazy_static", - "num-traits", - "rand", - "rand_chacha", - "rand_xorshift", - "regex-syntax", - "rusty-fork", - "tempfile", - "unarray", -] - -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "rand_xorshift" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" -dependencies = [ - "rand_core", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "ruint" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95294d6e3a6192f3aabf91c38f56505a625aa495533442744185a36d75a790c4" -dependencies = [ - "proptest", - "rand", - "ruint-macro", - "serde", - "valuable", - "zeroize", -] - -[[package]] -name = "ruint-macro" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" -dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "rusty-fork" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" -dependencies = [ - "fnv", - "quick-error", - "tempfile", - "wait-timeout", -] - -[[package]] -name = "secp256k1" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" -dependencies = [ - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" -dependencies = [ - "cc", -] - -[[package]] -name = "semver" -version = "1.0.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" - -[[package]] -name = "send_wrapper" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" - -[[package]] -name = "serde" -version = "1.0.185" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be9b6f69f1dfd54c3b568ffa45c310d6973a5e5148fd40cf515acaf38cf5bc31" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.185" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc59dfdcbad1437773485e0367fea4b090a2e0a16d9ffc46af47764536a298ec" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.43", -] - -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer", - "cfg-if", - "cpufeatures", - "digest", - "opaque-debug", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "smol_str" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" -dependencies = [ - "serde", -] - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn-mid" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5dc35bb08dd1ca3dfb09dce91fd2d13294d6711c88897d9a9d60acf39bce049" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.43", -] - -[[package]] -name = "tempfile" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall", - "rustix", - "windows-sys", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "typenum" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" - -[[package]] -name = "uint" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" -dependencies = [ - "byteorder", - "crunchy", - "hex", - "static_assertions", -] - -[[package]] -name = "unarray" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" - -[[package]] -name = "unicode-ident" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wait-timeout" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" -dependencies = [ - "libc", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "zeroize" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" diff --git a/packages/indexer-native/native/Cargo.toml b/packages/indexer-native/native/Cargo.toml deleted file mode 100644 index ef17cd2a5..000000000 --- a/packages/indexer-native/native/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -[package] -name = "indexer-native" -version = "0.2.0" -authors = [ - "Zac Burns ", - "Theo Butler ", -] -license = "MIT" -edition = "2021" - -[lib] -name = "indexer_native" -crate-type = ["cdylib"] - -[dependencies] -alloy-primitives = "0.3.1" -arc-swap = "1.2" -eip-712-derive = { git = "https://github.com/graphprotocol/eip-712-derive" } -keccak-hash = "0.10.0" -lazy_static = "1.4" -neon = { version = "1.0.0", default-features = false, features = ["napi-6"] } -secp256k1 = { version = "0.27", features = ["recovery"] } diff --git a/packages/indexer-native/native/src/attestation.rs b/packages/indexer-native/native/src/attestation.rs deleted file mode 100644 index e53f86ba5..000000000 --- a/packages/indexer-native/native/src/attestation.rs +++ /dev/null @@ -1,92 +0,0 @@ -use std::convert::TryInto; - -use alloy_primitives::{Address, B256, U256}; -use eip_712_derive::{sign_typed, DomainSeparator, Eip712Domain, MemberVisitor, StructType}; -use keccak_hash::keccak; -use neon::prelude::Finalize; -use secp256k1::SecretKey; - -pub struct AttestationSigner { - subgraph_deployment_id: B256, - domain_separator: DomainSeparator, - signer: SecretKey, -} - -impl Finalize for AttestationSigner {} - -impl AttestationSigner { - pub fn new( - chain_id: U256, - dispute_manager: Address, - signer: SecretKey, - subgraph_deployment_id: B256, - ) -> Self { - let salt = "0xa070ffb1cd7409649bf77822cce74495468e06dbfaef09556838bf188679b9c2" - .parse::() - .unwrap(); - let domain = Eip712Domain { - name: "Graph Protocol".to_owned(), - version: "0".to_owned(), - chain_id: eip_712_derive::U256(chain_id.to_be_bytes()), - verifying_contract: eip_712_derive::Address(*dispute_manager.0), - salt: salt.0, - }; - Self { - domain_separator: DomainSeparator::new(&domain), - signer, - subgraph_deployment_id, - } - } - - pub fn create_attestation(&self, request: &str, response: &str) -> Attestation { - let request_cid = keccak(request).to_fixed_bytes().into(); - let response_cid = keccak(response).to_fixed_bytes().into(); - - let receipt = Receipt { - request_cid, - response_cid, - subgraph_deployment_id: self.subgraph_deployment_id, - }; - - // Unwrap: This can only fail if the SecretKey is invalid. - // Since it is of type SecretKey it has already been validated. - let (rs, v) = sign_typed(&self.domain_separator, &receipt, self.signer.as_ref()).unwrap(); - - let r = rs[0..32].try_into().unwrap(); - let s = rs[32..64].try_into().unwrap(); - - Attestation { - request_cid, - response_cid, - subgraph_deployment_id: self.subgraph_deployment_id, - v, - r, - s, - } - } -} - -pub struct Receipt { - request_cid: B256, - response_cid: B256, - subgraph_deployment_id: B256, -} - -impl StructType for Receipt { - const TYPE_NAME: &'static str = "Receipt"; - fn visit_members(&self, visitor: &mut T) { - visitor.visit("requestCID", &self.request_cid.0); - visitor.visit("responseCID", &self.response_cid.0); - visitor.visit("subgraphDeploymentID", &self.subgraph_deployment_id.0); - } -} - -#[derive(Debug)] -pub struct Attestation { - pub request_cid: B256, - pub response_cid: B256, - pub subgraph_deployment_id: B256, - pub v: u8, - pub r: B256, - pub s: B256, -} diff --git a/packages/indexer-native/native/src/lib.rs b/packages/indexer-native/native/src/lib.rs deleted file mode 100644 index 0a5c72d19..000000000 --- a/packages/indexer-native/native/src/lib.rs +++ /dev/null @@ -1,123 +0,0 @@ -use alloy_primitives::{Address, Bytes, FixedBytes, B256, U256}; -use neon::prelude::*; -use secp256k1::{ - ecdsa::{RecoverableSignature, RecoveryId}, - SecretKey, -}; - -mod attestation; -mod signature_verification; - -use attestation::{Attestation, AttestationSigner}; -use signature_verification::SignatureVerifier; - -pub struct SignatureVerifierProxy; - -// Lifting neon's `or_throw` extension trait pattern here. -trait ResultDbgExt { - fn or_else_throw<'a, C: Context<'a>>(self, cx: &mut C) -> NeonResult; -} -impl ResultDbgExt for Result { - fn or_else_throw<'a, C: Context<'a>>(self, cx: &mut C) -> NeonResult { - self.or_else(|err| cx.throw_error(format!("{err:?}"))) - } -} - -fn signature_verifier_new(mut cx: FunctionContext) -> JsResult> { - let address: Address = cx - .argument::(0)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - Ok(cx.boxed(SignatureVerifier::new(address))) -} - -fn signature_verifier_verify(mut cx: FunctionContext) -> JsResult { - let this = cx.argument::>(0)?; - let message: Bytes = cx - .argument::(1)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - let signature: FixedBytes<65> = cx - .argument::(2)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - let recovery_id = signature[64] as i32; - let recovery_id = match recovery_id { - 0 | 1 => RecoveryId::from_i32(recovery_id).or_else_throw(&mut cx)?, - 27 | 28 => RecoveryId::from_i32(recovery_id - 27).or_else_throw(&mut cx)?, - _ => panic!("Invalid recovery id"), - }; - let signature = - RecoverableSignature::from_compact(&signature[..64], recovery_id).or_else_throw(&mut cx)?; - let verified = this.verify(&message, &signature).or_else_throw(&mut cx)?; - Ok(cx.boolean(verified)) -} - -fn attestation_signer_new(mut cx: FunctionContext) -> JsResult> { - let chain_id = cx.argument::(0)?.value(&mut cx) as u64; - let dispute_manager: Address = cx - .argument::(1)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - let signer: B256 = cx - .argument::(2)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - let subgraph_deployment_id: B256 = cx - .argument::(3)? - .value(&mut cx) - .parse() - .or_else_throw(&mut cx)?; - Ok(cx.boxed(AttestationSigner::new( - U256::from(chain_id), - dispute_manager, - SecretKey::from_slice(signer.as_slice()).unwrap(), - subgraph_deployment_id, - ))) -} - -fn attestation_signer_create_attestation(mut cx: FunctionContext) -> JsResult { - let this = cx.argument::>(0)?; - let request: String = cx.argument::(1)?.value(&mut cx); - let response: String = cx.argument::(2)?.value(&mut cx); - let Attestation { - request_cid, - response_cid, - subgraph_deployment_id, - v, - r, - s, - } = this.create_attestation(&request, &response); - - let result = cx.empty_object(); - let request_cid = cx.string(request_cid.to_string()); - result.set(&mut cx, "requestCID", request_cid)?; - let response_cid = cx.string(response_cid.to_string()); - result.set(&mut cx, "responseCID", response_cid)?; - let subgraph_deployment_id = cx.string(subgraph_deployment_id.to_string()); - result.set(&mut cx, "subgraphDeploymentID", subgraph_deployment_id)?; - let v = cx.number(v); - result.set(&mut cx, "v", v)?; - let r = cx.string(r.to_string()); - result.set(&mut cx, "r", r)?; - let s = cx.string(s.to_string()); - result.set(&mut cx, "s", s)?; - Ok(result) -} - -#[neon::main] -fn main(mut cx: ModuleContext) -> NeonResult<()> { - cx.export_function("signature_verifier_new", signature_verifier_new)?; - cx.export_function("signature_verifier_verify", signature_verifier_verify)?; - cx.export_function("attestation_signer_new", attestation_signer_new)?; - cx.export_function( - "attestation_signer_create_attestation", - attestation_signer_create_attestation, - )?; - Ok(()) -} diff --git a/packages/indexer-native/native/src/signature_verification.rs b/packages/indexer-native/native/src/signature_verification.rs deleted file mode 100644 index 182a63728..000000000 --- a/packages/indexer-native/native/src/signature_verification.rs +++ /dev/null @@ -1,68 +0,0 @@ -use std::sync::Arc; - -use alloy_primitives::Address; -use arc_swap::ArcSwap; -use keccak_hash::keccak; -use lazy_static::lazy_static; -use neon::prelude::Finalize; -use secp256k1::{ecdsa::RecoverableSignature, Message, PublicKey, Secp256k1, VerifyOnly}; - -lazy_static! { - static ref SECP256K1: Secp256k1 = Secp256k1::verification_only(); -} - -enum Signer { - PublicKey(PublicKey), - Address(Address), -} - -impl SignatureVerifier { - pub fn new(signer: Address) -> Self { - Self { - signer: ArcSwap::from_pointee(Signer::Address(signer)), - } - } - - pub fn verify( - &self, - message: &[u8], - signature: &RecoverableSignature, - ) -> Result { - let message = Message::from_slice(&keccak(message).to_fixed_bytes()).unwrap(); - - match self.signer.load().as_ref() { - // If we already have the public key we can do the fast path. - Signer::PublicKey(signer) => Ok(SECP256K1 - .verify_ecdsa(&message, &signature.to_standard(), signer) - .is_ok()), - // If we don't have the public key, but have the address instead - // we derive the address from the recovered key. If it's a match - // then we can save the public key for the next time avoiding - // running keccak on every verification and using the much faster - // verify method instead of the slow recover method. - Signer::Address(addr) => { - let recovered_signer = SECP256K1 - .recover_ecdsa(&message, signature) - .map_err(|_| "Failed to recover signature")?; - - let ser = recovered_signer.serialize_uncompressed(); - debug_assert_eq!(ser[0], 0x04); - let pk_hash = keccak(&ser[1..]); - let equal = pk_hash[12..] == addr; - - if equal { - self.signer - .store(Arc::new(Signer::PublicKey(recovered_signer))) - } - - Ok(equal) - } - } - } -} - -pub struct SignatureVerifier { - signer: ArcSwap, -} - -impl Finalize for SignatureVerifier {} diff --git a/packages/indexer-native/package.json b/packages/indexer-native/package.json deleted file mode 100644 index bf528bc2b..000000000 --- a/packages/indexer-native/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "@graphprotocol/indexer-native", - "version": "0.21.6", - "description": "Performance sensitive indexer code", - "main": "./lib/index.js", - "types": "./lib/index.d.ts", - "files": [ - "/lib", - "/native", - "!/native/target", - "!/native/artifacts.json" - ], - "repository": { - "type": "git", - "url": "https://github.com/graphprotocol/indexer.git" - }, - "author": "Zac Burns ", - "license": "MIT", - "os": [ - "darwin", - "linux" - ], - "cpu": [ - "x64", - "arm", - "arm64" - ], - "engines": { - "node": ">=12.22.0" - }, - "scripts": { - "build": "cd native && cargo-cp-artifact -a cdylib indexer_native ../binary/index.node -- cargo build --message-format=json-render-diagnostics", - "build-debug": "yarn build --", - "build-release": "yarn build --release", - "pull-or-build": "node-pre-gyp install --fallback-to-build=false --update-binary || yarn build-release", - "package": "node-pre-gyp package", - "publish-github-draft": "node-pre-gyp-github publish", - "publish-github": "node-pre-gyp-github publish --release", - "build-test-pack-publish": "yarn build-release && yarn test && yarn package && yarn publish-github-draft", - "format": "prettier --write 'lib/**/*.js'", - "lint": "eslint .", - "prepare": "yarn format && yarn lint", - "install": "yarn pull-or-build", - "test": "yarn build && jest --colors --verbose --forceExit", - "test:ci": "yarn build && jest --verbose --ci", - "clean": "rm -rf ./node_modules ./binary ./build ./coverage ./native/target ./native/artifacts.json ./native/index.node" - }, - "dependencies": { - "@graphprotocol/common-ts": "2.0.11", - "@mapbox/node-pre-gyp": "1.0.11", - "cargo-cp-artifact": "0.1.8", - "node-pre-gyp-github": "1.4.4" - }, - "devDependencies": { - "bs58": "5.0.0", - "eslint": "8.49.0", - "eslint-config-prettier": "8.5.0", - "ethers": "5.7.0", - "jest": "<30.0.0-0", - "prettier": "3.0.3" - }, - "binary": { - "module_name": "index", - "module_path": "./binary", - "host": "https://github.com/graphprotocol/indexer/releases/download/", - "remote_path": "v{version}", - "package_name": "graphprotocol-indexer-native-v{version}-{node_abi}-{platform}-{arch}.tar.gz" - }, - "gitHead": "972ab96774007b2aee15b1da169d2ff4be9f9d27" -} diff --git a/packages/indexer-service/.eslintignore b/packages/indexer-service/.eslintignore deleted file mode 100644 index 5a19e8ace..000000000 --- a/packages/indexer-service/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -dist -coverage \ No newline at end of file diff --git a/packages/indexer-service/.eslintrc.js b/packages/indexer-service/.eslintrc.js deleted file mode 100644 index 60edb6c8b..000000000 --- a/packages/indexer-service/.eslintrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - plugins: ['@typescript-eslint'], - extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'] -} diff --git a/packages/indexer-service/.prettierrc.json b/packages/indexer-service/.prettierrc.json deleted file mode 100644 index dce2fc206..000000000 --- a/packages/indexer-service/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "printWidth": 90, - "singleQuote": true, - "arrowParens": "avoid" -} diff --git a/packages/indexer-service/CHANGELOG.md b/packages/indexer-service/CHANGELOG.md deleted file mode 100644 index 288f00f9f..000000000 --- a/packages/indexer-service/CHANGELOG.md +++ /dev/null @@ -1,386 +0,0 @@ -# Changelog -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] -- Upgraded `common-ts` dependency to v2.0.11 -- Add ability to enable SSL to database connection with `sslEnabled` (maintain default of `false`) - -## [0.21.2] - 2024-01-18 -### Changed -- Validate operator wallet on startup - -### Added -- Add support for proxying graph-node version query - -## [0.20.23] - 2023-09-29 -### Changed -- Relax network subgraph validation during indexer-service startup - -### Fixed -- Update common-ts and other dependencies -- Update common-ts and other dependencies -- Update common-ts and other dependencies - -### Added -- Added a subgraph freshness check for the Network and Epoch subgraphs -- Added a subgraph freshness check for the Network and Epoch subgraphs - -## [0.20.21] - 2023-08-24 -### Changed -- Upgraded `common-ts` dependency to v2.0.3 - -## [0.20.20] - 2023-08-21 -### Added -- Add TRACE logs to `AllocationReceiptManager._flushOutstanding` method - -### Fixed -- Ensure some database operations run inside their transactions - -## [0.20.19] - 2023-08-12 -### Changed -- Revert indexer-native to 0.20.11 (newer builds are broken) - -## [0.20.18] - 2023-08-11 -### Changed -- Changes to support the multi-network changes from indexer-common - -## [0.20.17] - 2023-06-19 -### Changed -- Use new partial-vouchers encoding, json - -## [0.20.11] - 2023-02-01 -### Fixed -- Include yaml package as dependency - -## [0.20.9] - 2023-01-24 -### Added -- Support loading startup arguments from config file - -### Changed -- Forward graph-attestable header for free queries - -## [0.20.6] - 2022-12-14 -### Changed -- Upgrade @graphprotocol/common-ts to v2.0.1 - -## [0.20.4] - 2022-09-29 -### Changed -- Do not remove zero fee receipts in case needed later to resolve to vouchers - -## [0.20.1] - 2022-08-04 -### Added -- Option to log query details and execution times - -## [0.20.0] - 2022-06-21 -### Changed -- Include querFeesAmount in allocation queries to conform with updated SubgraphDeployment interface - -## [0.19.3] - 2022-06-14 -### Changed -- Improve Ethereum connection process and logging - -## [0.19.1] - 2022-04-21 -### Changed -- Upgrade dependencies - -## [0.19.0] - 2022-02-24 -### Added -- Rate limiting for exposed server routes -- Add /subgraphs/health/:deployment route - -### Changed -- Upgrade dependencies -- Consider subgraph up to date if <5 blocks behind - -### Fixed -- Fix tests - -## 0.18.6 - 2022-01-05 - -## [0.18.3] - 2021-11-23 -### Added -- Support unattestable query responses - -### Fixed -- Use ENTRYPOINT instead of CMD in dockerfile so users can specify command line arguments in docker run command - -## [0.18.2] - 2021-10-19 -### Changed -- Broaden scope of allocations eligible for receiving traffic to include those recently closed - -## [0.18.0] - 2021-09-07 -### Changed -- Update Ethers dependencies - -## [0.17.0] - 2021-07-21 -### Changed -- Make the `/network` endpoint optional by default and introduce a dedicated (optional) auth token for `/network` requests -- Optimize `/network` execution by switching to a simpler HTTP client (doesn't need to be GraphQL aware) -- Use `ClusterIP` in the k8s indexer service service rather than a `LoadBalalancer` since `LoadBalancer` services have been - shown to introduce extra latency - -## [0.16.0] - 2021-06-09 -### Added -- Add auth-protected `/network` endpoint, disabled by default - -## [0.15.1] - 2021-05-26 -### Changed -- Switch to `ensureAllocationSummary` utility from `@graph-protocol/indexer-common` - -## [0.15.0] - 2021-05-25 -### Changed -- Rename query fee related fields in database models -- Only sync database models in the agent to avoid race conditions -- Rename X-Graph-Payment header to Scalar-Receipt - -## [0.14.0] - 2021-05-12 -### Added -- Add allocation-based receipts and query fee vouchers as an alternative to Vector. This is the default for now. Vector support can still be enabled with `--use-vector`. - -## [0.13.0] - 2021-04-19 -### Added -- Add `--alloation-syncing-interval` option (default: 120s, previous 10s) -- Use `indexer-native` package for native attestation signing and signature verification - -### Changed -- Update to latest common-ts - -## [0.12.0] - 2021-04-06 -### Changed -- Update common-ts, vector and ethers - -## [0.11.0] - 2021-03-31 -### Added -- Add `/operator/info` endpoint for retrieving operator data such as the public key -- Add support for the new payments system - -### Changed -- Update @graphprotocol/common-ts to 1.3.2 (equality fix in eventuals, latest contracts) -- Add optional Google Cloud profiling through `--gcloud-profiling` - -## [0.10.0] - 2021-01-29 -### Changed -- Update common-ts to 1.3.0 to include new testnet contracts - -## [0.9.5] - 2021-01-16 -### Fixed -- Update ethers to 5.0.26 to avoid unresolved promise rejections (#183) - -### Changed -- Update common-ts to 1.2.1 - -## [0.9.4] - 2021-01-13 -### Changed -- No changes - -## [0.9.3] - 2021-01-11 -### Changed -- No changes - -## [0.9.2] - 2021-01-09 -### Changed -- Update common-ts to 1.2.0 - -## [0.9.1] - 2020-12-31 -### Fixed -- Fix uncaught `holdings(bytes32)` exceptions by disabling the state channels `ChainService` for now - -## [0.9.0-alpha.3] - 2020-12-19 -### Changed -- Default to mainnet instead of rinkeby in `--ethereum-network` - -### Fixed -- Fix `--ethereum-network` not being used - -## [0.4.4] - 2020-12-14 -### Fixed -- Allow non-HTTPS/insuecure Ethereum connections -- Catch and log unhandled promise rejections and exceptions instead of crashing - -### Added -- Allow Ethereum network to be configured, avoiding fallible network detection in ethers.js - -## [0.4.3] - 2020-12-07 -### Fixed -- Use StaticJsonRpcProvider to reduce Ethereum requests - -### Added -- Add `--log-level` / `INDEXER_SERVICE_LOG_LEVEL` option -- Add `--ethereum-polling-interval` / `INDEXER_SERVICE_ETHEREUM_POLLING_INTERVAL` option -- Add `eth_provider_requests` metric to track Ethereum requests - -## [0.4.0] - 2020-11-27 -### Added -- Add `--wallet-worker-threads` / `INDEXER_SERVICE_WALLET_WORKER_THREADS` to replace the old `AMOUNT_OF_WORKER_THREADS` environment variable -- Add `--wallet-skip-evm-validation` / `INDEXER_SERVICE_WALLET_SKIP_EVM_VALIDATION` to replace the `SKIP_EVM_VALIDATION` environment variable - -### Changed -- Update common-ts to 0.4.0 - -## [0.3.7-alpha.8] - 2020-11-27 -### Added -- Make use of the new indexer error codes - -## [0.3.7-alpha.7] - 2020-11-27 -### Fixed -- Fix caching of only a few attestation signers - -### Changed -- Increase network synchronization intervals - -## [0.3.7-alpha.6] - 2020-11-27 -### Changed -- Update receipt manager and receipt manager construction - -## [0.3.7-alpha.5] - 2020-11-27 -### Fixed -- Fix how queries are declined - -## [0.3.7-alpha.4] - 2020-11-27 -### Fixed -- Fix detecting and reading `package.json` (really) - -## [0.3.7-alpha.3] - 2020-11-27 -### Fixed -- Fix detecting and reading `package.json` - -## [0.3.7-alpha.2] - 2020-11-19 -### Added -- Add `/version` endpoint - -## [0.3.7-alpha.1] - 2020-11-17 -### Changed -- Update `@graphprotocol/receipt-manager` to 0.5.1 - -## [0.3.7-alpha.0] - 2020-11-17 -### Fixed -- Remove unnecessary (and duplicate) server wallet migration (the receipt manager does it for us) (#107) -- Fix typo (capital letter) in `indexer_service_channel_messages_ok` metric - -### Changed -- Use IPFS deployment IDs in all metrics -- Update `@graphprotocol/common-ts` to 0.3.13 -- Update receipt manager to latest canary release - -## [0.3.6] - 2020-11-11 -### Fixed -- Don\\'t cache network subgraph data -- Fix free query auth token detection - -### Changed -- Update common-ts to 0.3.11 -- Update receipt manager to 0.4.3 -- Skip EVM validation in state channels (for now) -- Use --frozen-lockfile for Docker image - -## [0.3.4] - 2020-10-29 -### Changed -- Update and pin all dependencies - -## [0.3.3] - 2020-10-28 -### Added -- Add `--metrics-port` / `INDEXER_SERVICE_METRICS_PORT` - -## [0.3.2] - 2020-10-27 -### Fixed -- Avoid GraphQL caching - -## [0.3.1] - 2020-10-15 -### Changed -- Update common-ts to 0.3.3 - -## [0.3.0] - 2020-10-13 -### Changed -- Move receipt manager into an external package -- Increase `/channel-messages-inbox` request size limit -- Sign attestations with allocation-specific keys -- Add --indexer-address for allocation monitoring -- Update to the latest network subgraph - -### Added -- Add /cost API -- Add server, channel message and cost API metrics - -### Fixed -- Never cache active allocation query results - -## [0.2.6] - 2020-10-13 -### Added -- Add receipt manager for managing channels and payments - -## [0.2.5] - 2020-09-01 -### Changed -- Depend on @graphprotocol/common-ts from npmjs.org - -## [0.2.4] - 2020-09-01 -### Changed -- Update @graphprotocol/common-ts to 0.2.4 - -## [0.2.3] - 2020-08-27 -### Changed -- Update @graphprotocol/common-ts to 0.2.3 - -## 0.2.1 - 2020-08-27 -### Changed -- Update @graphprotocol/common-ts to 0.2.2 - -[Unreleased]: https://github.com/graphprotocol/indexer/compare/v0.21.2...HEAD -[0.21.2]: https://github.com/graphprotocol/indexer/compare/v0.20.23...v0.21.2 -[0.20.23]: https://github.com/graphprotocol/indexer/compare/v0.20.21...v0.20.23 -[0.20.21]: https://github.com/graphprotocol/indexer/compare/v0.20.20...v0.20.21 -[0.20.20]: https://github.com/graphprotocol/indexer/compare/v0.20.19...v0.20.20 -[0.20.19]: https://github.com/graphprotocol/indexer/compare/v0.20.18...v0.20.19 -[0.20.18]: https://github.com/graphprotocol/indexer/compare/v0.20.17...v0.20.18 -[0.20.17]: https://github.com/graphprotocol/indexer/compare/v0.20.11...v0.20.17 -[0.20.11]: https://github.com/graphprotocol/indexer/compare/v0.20.9...v0.20.11 -[0.20.9]: https://github.com/graphprotocol/indexer/compare/v0.20.6...v0.20.9 -[0.20.6]: https://github.com/graphprotocol/indexer/compare/v0.20.4...v0.20.6 -[0.20.4]: https://github.com/graphprotocol/indexer/compare/v0.20.1...v0.20.4 -[0.20.1]: https://github.com/graphprotocol/indexer/compare/v0.20.0...v0.20.1 -[0.20.0]: https://github.com/graphprotocol/indexer/compare/v0.19.3...v0.20.0 -[0.19.3]: https://github.com/graphprotocol/indexer/compare/v0.19.1...v0.19.3 -[0.19.1]: https://github.com/graphprotocol/indexer/compare/v0.19.0...v0.19.1 -[0.19.0]: https://github.com/graphprotocol/indexer/compare/v0.18.6...v0.19.0 -[0.18.3]: https://github.com/graphprotocol/indexer/compare/v0.18.2...v0.18.3 -[0.18.2]: https://github.com/graphprotocol/indexer/compare/v0.18.0...v0.18.2 -[0.18.0]: https://github.com/graphprotocol/indexer/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/graphprotocol/indexer/compare/v0.16.0...v0.17.0 -[0.16.0]: https://github.com/graphprotocol/indexer/compare/v0.15.1...v0.16.0 -[0.15.1]: https://github.com/graphprotocol/indexer/compare/v0.15.0...v0.15.1 -[0.15.0]: https://github.com/graphprotocol/indexer/compare/v0.14.0...v0.15.0 -[0.14.0]: https://github.com/graphprotocol/indexer/compare/v0.13.0...v0.14.0 -[0.13.0]: https://github.com/graphprotocol/indexer/compare/v0.12.0...v0.13.0 -[0.12.0]: https://github.com/graphprotocol/indexer/compare/v0.11.0...v0.12.0 -[0.11.0]: https://github.com/graphprotocol/indexer/compare/v0.10.0...v0.11.0 -[0.10.0]: https://github.com/graphprotocol/indexer/compare/v0.9.5...v0.10.0 -[0.9.5]: https://github.com/graphprotocol/indexer/compare/v0.9.4...v0.9.5 -[0.9.4]: https://github.com/graphprotocol/indexer/compare/v0.9.3...v0.9.4 -[0.9.3]: https://github.com/graphprotocol/indexer/compare/v0.9.2...v0.9.3 -[0.9.2]: https://github.com/graphprotocol/indexer/compare/v0.9.1...v0.9.2 -[0.9.1]: https://github.com/graphprotocol/indexer/compare/v0.9.0-alpha.3...v0.9.1 -[0.9.0-alpha.3]: https://github.com/graphprotocol/indexer/compare/v0.4.4...v0.9.0-alpha.3 -[0.4.4]: https://github.com/graphprotocol/indexer/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/graphprotocol/indexer/compare/v0.4.0...v0.4.3 -[0.4.0]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.8...v0.4.0 -[0.3.7-alpha.8]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.7...v0.3.7-alpha.8 -[0.3.7-alpha.7]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.6...v0.3.7-alpha.7 -[0.3.7-alpha.6]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.5...v0.3.7-alpha.6 -[0.3.7-alpha.5]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.4...v0.3.7-alpha.5 -[0.3.7-alpha.4]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.3...v0.3.7-alpha.4 -[0.3.7-alpha.3]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.2...v0.3.7-alpha.3 -[0.3.7-alpha.2]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.1...v0.3.7-alpha.2 -[0.3.7-alpha.1]: https://github.com/graphprotocol/indexer/compare/v0.3.7-alpha.0...v0.3.7-alpha.1 -[0.3.7-alpha.0]: https://github.com/graphprotocol/indexer/compare/v0.3.6...v0.3.7-alpha.0 -[0.3.6]: https://github.com/graphprotocol/indexer/compare/v0.3.4...v0.3.6 -[0.3.4]: https://github.com/graphprotocol/indexer/compare/v0.3.3...v0.3.4 -[0.3.3]: https://github.com/graphprotocol/indexer/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/graphprotocol/indexer/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/graphprotocol/indexer/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/graphprotocol/indexer/compare/v0.2.6...v0.3.0 -[0.2.6]: https://github.com/graphprotocol/indexer/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/graphprotocol/indexer/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/graphprotocol/indexer/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/graphprotocol/indexer/compare/v0.2.1...v0.2.3 diff --git a/packages/indexer-service/LICENSE b/packages/indexer-service/LICENSE deleted file mode 100644 index 0cc620d5c..000000000 --- a/packages/indexer-service/LICENSE +++ /dev/null @@ -1,18 +0,0 @@ -Copyright 2020 The Graph Foundation - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/indexer-service/README.md b/packages/indexer-service/README.md deleted file mode 100644 index 0bef1ca02..000000000 --- a/packages/indexer-service/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Indexer Service - -## Usage - -### `graph-indexer-service start` - -``` -Start the service - -Ethereum - --network-provider, --ethereum Ethereum node or provider URL - [string] [required] - --ethereum-polling-interval Polling interval for the Ethereum provider - (ms) [number] [default: 4000] - --mnemonic Mnemonic for the operator wallet - [string] [required] - --indexer-address Ethereum address of the indexer - [string] [required] - -Indexer Infrastructure - --port Port to serve queries at[number] [default: 7600] - --metrics-port Port to serve Prometheus metrics at - [number] [default: 7300] - --graph-node-query-endpoint Graph Node endpoint to forward queries to - [string] [required] - --graph-node-status-endpoint Graph Node endpoint for indexing statuses etc. - [string] [required] - --log-level Log level [string] [default: "debug"] - --query-timing-logs Log time spent on each query received - [boolean] [default: false] - -Postgres - --postgres-host Postgres host [string] [required] - --postgres-port Postgres port [number] [default: 5432] - --postgres-username Postgres username [string] [default: "postgres"] - --postgres-password Postgres password [string] [default: ""] - --postgres-database Postgres database name [string] [required] - -Network Subgraph - --network-subgraph-deployment Network subgraph deployment [string] - --network-subgraph-endpoint Endpoint to query the network subgraph from - [string] [required] - --network-subgraph-auth-token Bearer token to require for /network queries - [string] - --serve-network-subgraph Whether to serve the network subgraph at - /network [boolean] [default: false] - --allocation-syncing-interval Interval (in ms) for syncing indexer - allocations from the network - [number] [default: 120000] - -Options: - --version Show version number [boolean] - --help Show help [boolean] - --gcloud-profiling Whether to enable Google Cloud profiling - [boolean] [default: false] - --free-query-auth-token Auth token that clients can use to query for free - [array] - --client-signer-address Address that signs query fee receipts from a known - client [string] -``` - -# Copyright - -Copyright © 2020 The Graph Foundation - -Licensed under the [MIT license](LICENSE). diff --git a/packages/indexer-service/bin/graph-indexer-service b/packages/indexer-service/bin/graph-indexer-service deleted file mode 100755 index 02a9dee33..000000000 --- a/packages/indexer-service/bin/graph-indexer-service +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -require('../dist/index') diff --git a/packages/indexer-service/config.yaml b/packages/indexer-service/config.yaml deleted file mode 100644 index 3038660ae..000000000 --- a/packages/indexer-service/config.yaml +++ /dev/null @@ -1 +0,0 @@ -log-level: "debug" diff --git a/packages/indexer-service/jest.config.js b/packages/indexer-service/jest.config.js deleted file mode 100644 index af597bae9..000000000 --- a/packages/indexer-service/jest.config.js +++ /dev/null @@ -1,39 +0,0 @@ -const bail = s => { - throw new Error(s) -} - -// until we find a way to avoid `punycode` we suppress the warnings in tests -process.env.NODE_NO_WARNINGS = '1' - -module.exports = { - collectCoverage: true, - forceExit: true, - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['/node_modules/', '/dist/', '.yalc'], - transform: { - '^.+\\.tsx?$': [ - 'ts-jest', - { - isolatedModules: true, - tsconfig: 'tsconfig.json', - }, - ], - }, - globals: { - __DATABASE__: { - host: process.env.POSTGRES_TEST_HOST || bail('POSTGRES_TEST_HOST is not defined'), - port: parseInt(process.env.POSTGRES_TEST_PORT || '5432'), - username: - process.env.POSTGRES_TEST_USERNAME || - bail('POSTGRES_TEST_USERNAME is not defined'), - password: - process.env.POSTGRES_TEST_PASSWORD || - bail('POSTGRES_TEST_PASSWORD is not defined'), - database: - process.env.POSTGRES_TEST_DATABASE || - bail('POSTGRES_TEST_DATABASE is not defined'), - }, - __LOG_LEVEL__: process.env.LOG_LEVEL || 'info', - }, -} diff --git a/packages/indexer-service/package.json b/packages/indexer-service/package.json deleted file mode 100644 index 5d62a8cce..000000000 --- a/packages/indexer-service/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "@graphprotocol/indexer-service", - "version": "0.21.9", - "description": "Indexer service", - "main": "./dist/index.js", - "types": "./dist/index.d.ts", - "files": [ - "/bin", - "/dist" - ], - "repository": "https://github.com/graphprotocol/indexer", - "author": "Graph Protocol", - "private": false, - "scripts": { - "format": "prettier --write 'src/**/*.ts'", - "lint": "eslint . --ext .ts,.tsx --fix", - "compile": "tsc --build", - "prepare": "yarn format && yarn lint && yarn compile", - "start": "node ./dist/index.js start", - "test": "jest --colors --verbose --detectOpenHandles --runInBand", - "test:ci": "jest --verbose --ci --runInBand", - "test:watch": "jest --watch --passWithNoTests --detectOpenHandles --verbose --runInBand", - "clean": "rm -rf ./node_modules ./dist ./tsconfig.tsbuildinfo" - }, - "bin": { - "graph-indexer-service": "./bin/graph-indexer-service" - }, - "resolutions": { - "ethers": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "graphql": "16.8.0" - }, - "dependencies": { - "@google-cloud/profiler": "6.0.1", - "@graphprotocol/common-ts": "2.0.11", - "@graphprotocol/indexer-common": "^0.21.9", - "@graphprotocol/indexer-native": "0.21.6", - "@graphql-tools/load": "8.0.0", - "@graphql-tools/url-loader": "8.0.0", - "@graphql-tools/wrap": "10.0.1", - "@thi.ng/cache": "1.0.94", - "@urql/core": "3.1.0", - "apollo-link-http": "1.5.17", - "axios": "0.26.1", - "body-parser": "1.20.2", - "bs58": "5.0.0", - "cors": "2.8.5", - "cross-fetch": "4.0.0", - "ethers": "5.7.0", - "evt": "1.10.1", - "express": "4.18.2", - "express-graphql": "0.12.0", - "express-rate-limit": "^7.0.1", - "graphql": "16.8.0", - "graphql-tag": "2.12.6", - "graphql-tools": "8.2.6", - "isomorphic-fetch": "3.0.0", - "merkletreejs": "^0.2.13", - "morgan": "1.9.1", - "p-map": "4.0.0", - "p-queue": "6.6.2", - "p-retry": "4.6.1", - "read-pkg": "5.2.0", - "yaml": "^2.0.0-10", - "yargs": "17.4.1" - }, - "devDependencies": { - "@types/body-parser": "1.19.3", - "@types/bs58": "4.0.1", - "@types/cors": "2.8.14", - "@types/express": "4.17.17", - "@types/isomorphic-fetch": "0.0.35", - "@types/jest": "29.5.4", - "@types/morgan": "1.9.5", - "@types/supertest": "2.0.12", - "@types/yargs": "17.0.10", - "@typescript-eslint/eslint-plugin": "6.7.0", - "@typescript-eslint/parser": "6.7.0", - "eslint": "8.49.0", - "eslint-config-prettier": "8.5.0", - "jest": "<30.0.0-0", - "nock": "13.3.3", - "prettier": "3.0.3", - "supertest": "6.3.3", - "ts-jest": "29.1.1", - "typescript": "5.2.2" - }, - "gitHead": "972ab96774007b2aee15b1da169d2ff4be9f9d27" -} diff --git a/packages/indexer-service/src/allocations.ts b/packages/indexer-service/src/allocations.ts deleted file mode 100644 index 5b6deabfe..000000000 --- a/packages/indexer-service/src/allocations.ts +++ /dev/null @@ -1,90 +0,0 @@ -import pMap from 'p-map' -import { Wallet } from 'ethers' -import { NativeAttestationSigner } from '@graphprotocol/indexer-native' - -import { Logger, Eventual } from '@graphprotocol/common-ts' - -import { LRUCache } from '@thi.ng/cache' -import { - Allocation, - allocationSignerPrivateKey, - indexerError, - IndexerErrorCode, -} from '@graphprotocol/indexer-common' - -export interface EnsureAttestationSignersOptions { - logger: Logger - allocations: Eventual - wallet: Wallet - chainId: number - disputeManagerAddress: string -} - -export type AttestationSignerCache = LRUCache -export type AttestationSignerMap = Map - -const cacheToMap = ( - cache: LRUCache, -): AttestationSignerMap => new Map([...cache.entries()].map(([k, v]) => [k, v.v])) - -export const ensureAttestationSigners = ({ - logger: parentLogger, - allocations, - wallet, - chainId, - disputeManagerAddress, -}: EnsureAttestationSignersOptions): Eventual => { - const logger = parentLogger.child({ component: 'AttestationSignerCache' }) - - const cache: AttestationSignerCache = new LRUCache() - - const signers = allocations.map(async allocations => { - logger.info(`Update attestation signers`) - - await pMap(allocations, async allocation => { - if (!cache.has(allocation.id)) { - try { - logger.info(`Identify attestation signer for allocation`, { - allocation: allocation.id, - deployment: allocation.subgraphDeployment.id.display, - }) - - // Derive an epoch and subgraph specific private key - const signerPK = allocationSignerPrivateKey(wallet, allocation) - const nativeSigner = new NativeAttestationSigner( - chainId, - disputeManagerAddress, - signerPK, - allocation.subgraphDeployment.id.bytes32, - ) - - logger.info(`Successfully identified attestation signer for allocation`, { - allocation: allocation.id, - deployment: allocation.subgraphDeployment.id.display, - }) - - // Update the cache - cache.set(allocation.id, nativeSigner) - } catch (err) { - logger.warn(`Failed to identify attestation signer for allocation`, { - allocation: allocation.id, - deployment: allocation.subgraphDeployment.id.display, - createdAtEpoch: allocation.createdAtEpoch, - err: indexerError(IndexerErrorCode.IE022, err), - }) - } - } - }) - - return cacheToMap(cache) - }) - - signers.pipe(signers => { - const attestationSigners = [...signers.keys()] - logger.info(`Cached ${attestationSigners.length} attestation signers`, { - allocations: attestationSigners, - }) - }) - - return signers -} diff --git a/packages/indexer-service/src/commands/start.ts b/packages/indexer-service/src/commands/start.ts deleted file mode 100644 index 60abe9a15..000000000 --- a/packages/indexer-service/src/commands/start.ts +++ /dev/null @@ -1,523 +0,0 @@ -import path from 'path' -import readPackage from 'read-pkg' -import { Argv } from 'yargs' -import { BigNumber, Wallet } from 'ethers' -import fs from 'fs' -import { parse as yaml_parse } from 'yaml' - -import { - AddressBook, - connectContracts, - connectDatabase, - createLogger, - createMetrics, - createMetricsServer, - NetworkContracts, - SubgraphDeploymentID, - toAddress, -} from '@graphprotocol/common-ts' -import { - createIndexerManagementClient, - defineIndexerManagementModels, - defineQueryFeeModels, - indexerError, - IndexerErrorCode, - GraphNode, - monitorEligibleAllocations, - Network, - NetworkSubgraph, - registerIndexerErrorMetrics, - resolveChainId, - validateProviderNetworkIdentifier, -} from '@graphprotocol/indexer-common' - -import { createServer } from '../server' -import { QueryProcessor } from '../queries' -import { ensureAttestationSigners } from '../allocations' -import { AllocationReceiptManager } from '../query-fees' -import pRetry from 'p-retry' - -export default { - command: 'start', - describe: 'Start the service', - builder: (yargs: Argv): Argv => { - return yargs - .option('network-provider', { - alias: 'ethereum', - description: 'Ethereum node or provider URL', - type: 'string', - required: true, - group: 'Ethereum', - }) - .option('ethereum-polling-interval', { - description: 'Polling interval for the Ethereum provider (ms)', - type: 'number', - default: 4000, - group: 'Ethereum', - }) - .option('mnemonic', { - describe: 'Mnemonic for the operator wallet', - type: 'string', - required: true, - group: 'Ethereum', - }) - .option('indexer-address', { - describe: 'Ethereum address of the indexer', - type: 'string', - required: true, - group: 'Ethereum', - }) - .option('port', { - description: 'Port to serve queries at', - type: 'number', - default: 7600, - group: 'Indexer Infrastructure', - }) - .option('metrics-port', { - description: 'Port to serve Prometheus metrics at', - type: 'number', - default: 7300, - group: 'Indexer Infrastructure', - }) - .option('gcloud-profiling', { - type: 'boolean', - description: 'Whether to enable Google Cloud profiling', - default: false, - }) - .option('graph-node-query-endpoint', { - description: 'Graph Node endpoint to forward queries to', - type: 'string', - required: true, - group: 'Indexer Infrastructure', - }) - .option('graph-node-status-endpoint', { - description: 'Graph Node endpoint for indexing statuses etc.', - type: 'string', - required: true, - group: 'Indexer Infrastructure', - }) - .option('free-query-auth-token', { - description: 'Auth token that clients can use to query for free', - type: 'array', - }) - .option('postgres-host', { - description: 'Postgres host', - type: 'string', - required: true, - group: 'Postgres', - }) - .option('postgres-port', { - description: 'Postgres port', - type: 'number', - default: 5432, - group: 'Postgres', - }) - .option('postgres-username', { - description: 'Postgres username', - type: 'string', - required: false, - default: 'postgres', - group: 'Postgres', - }) - .option('postgres-password', { - description: 'Postgres password', - type: 'string', - default: '', - required: false, - group: 'Postgres', - }) - .option('postgres-sslenabled', { - description: 'Postgres SSL Enabled', - type: 'boolean', - default: 'false', - required: false, - group: 'Postgres', - }) - .option('postgres-database', { - description: 'Postgres database name', - type: 'string', - required: true, - group: 'Postgres', - }) - .option('network-subgraph-deployment', { - description: 'Network subgraph deployment', - type: 'string', - group: 'Network Subgraph', - }) - .option('network-subgraph-endpoint', { - description: 'Endpoint to query the network subgraph from', - type: 'string', - required: true, - group: 'Network Subgraph', - }) - .option('network-subgraph-auth-token', { - description: 'Bearer token to require for /network queries', - type: 'string', - required: false, - group: 'Network Subgraph', - }) - .option('serve-network-subgraph', { - description: 'Whether to serve the network subgraph at /network', - type: 'boolean', - required: false, - default: false, - group: 'Network Subgraph', - }) - .option('log-level', { - description: 'Log level', - type: 'string', - default: 'debug', - group: 'Indexer Infrastructure', - }) - .option('query-timing-logs', { - description: 'Log time spent on each query received', - type: 'boolean', - default: false, - required: false, - group: 'Indexer Infrastructure', - }) - .option('allocation-syncing-interval', { - description: 'Interval (in ms) for syncing indexer allocations from the network', - type: 'number', - default: 120_000, - group: 'Network Subgraph', - }) - .option('client-signer-address', { - description: 'Address that signs query fee receipts from a known client', - type: 'string', - required: false, - }) - .option('address-book', { - description: 'Graph contracts address book file path', - type: 'string', - required: false, - }) - .option('info-rate-limit', { - description: - 'Max requests per minute before returning 429 status codes, applies to paths: /cost, /subgraphs/health, /operator', - type: 'number', - required: false, - default: 300, - group: 'Server options', - }) - .option('status-rate-limit', { - description: - 'Max requests per minute before returning 429 status codes, applies to paths: /status, /network', - type: 'number', - required: false, - default: 300, - group: 'Server options', - }) - .option('body-size-limit', { - description: 'Max body size per request (mb)', - type: 'number', - required: false, - default: 0.1, - group: 'Server options', - }) - - .check(argv => { - if (!argv['network-subgraph-endpoint'] && !argv['network-subgraph-deployment']) { - return `At least one of --network-subgraph-endpoint and --network-subgraph-deployment must be provided` - } - - return true - }) - .config({ - key: 'config-file', - description: 'Indexer service configuration file (YAML format)', - parseFn: function (cfgFilePath: string) { - return yaml_parse(fs.readFileSync(cfgFilePath, 'utf-8')) - }, - }) - }, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - handler: async (argv: { [key: string]: any } & Argv['argv']): Promise => { - let logger = createLogger({ - name: 'IndexerService', - async: false, - level: argv.logLevel, - }) - - process.on('unhandledRejection', err => { - logger.warn(`Unhandled promise rejection`, { - err: indexerError(IndexerErrorCode.IE035, err), - }) - }) - - process.on('uncaughtException', err => { - logger.warn(`Uncaught exception`, { - err: indexerError(IndexerErrorCode.IE036, err), - }) - }) - - const pkg = await readPackage({ cwd: path.join(__dirname, '..', '..') }) - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const dependencies = pkg.dependencies! - const release = { - version: pkg.version, - dependencies: { - '@graphprotocol/common-ts': dependencies['@graphprotocol/common-ts'], - }, - } - - logger.info('Starting up...', { version: pkg.version, deps: pkg.bundledDependencies }) - - // Enable Google Cloud profiling if enabled - if (argv.gcloudProfiling) { - try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - require('@google-cloud/profiler').start({ - serviceContext: { - service: pkg.name.split('/').pop(), - version: pkg.version, - }, - }) - } catch (err) { - logger.warn(`Failed to enable Google Cloud profiling, skipping`, { err }) - } - } - - // Spin up a metrics server - const metrics = createMetrics() - createMetricsServer({ - logger: logger.child({ component: 'MetricsServer' }), - registry: metrics.registry, - port: argv.metricsPort, - }) - - // Register indexer error metrics so we can track any errors that happen - // inside the service - registerIndexerErrorMetrics(metrics) - - const wallet = Wallet.fromMnemonic(argv.mnemonic) - const indexerAddress = toAddress(argv.indexerAddress) - - logger = logger.child({ indexer: indexerAddress, operator: wallet.address }) - - logger.info('Connect to database', { - host: argv.postgresHost, - port: argv.postgresPort, - database: argv.postgresDatabase, - }) - const sequelize = await connectDatabase({ - logging: undefined, - host: argv.postgresHost, - port: argv.postgresPort, - username: argv.postgresUsername, - password: argv.postgresPassword, - database: argv.postgresDatabase, - sslEnabled: argv.postgresSslEnabled, - }) - const queryFeeModels = defineQueryFeeModels(sequelize) - const models = defineIndexerManagementModels(sequelize) - // Note: Typically, you'd call `sequelize.sync()` here to sync the models - // to the database; however, this can cause conflicts with the migrations - // run by indexer agent. Hence we leave syncing and migrating entirely to - // the agent and assume the models are up to date in the service. - logger.info('Successfully connected to database') - - logger.info(`Connect to network subgraph`) - const graphNode = new GraphNode( - logger, - // We use a fake Graph Node admin endpoint here because we don't - // want the Indexer Service to perform management actions on - // Graph Node. - 'http://fake-graph-node-admin-endpoint', - argv.graphNodeQueryEndpoint, - argv.graphNodeStatusEndpoint, - ) - - const networkProvider = await Network.provider( - logger, - metrics, - '_', - argv.networkProvider, - argv.ethereumPollingInterval, - ) - const networkIdentifier = await networkProvider.getNetwork() - const protocolNetwork = resolveChainId(networkIdentifier.chainId) - - const networkSubgraph = await NetworkSubgraph.create({ - logger, - endpoint: argv.networkSubgraphEndpoint, - deployment: argv.networkSubgraphDeployment - ? { - graphNode, - deployment: new SubgraphDeploymentID(argv.networkSubgraphDeployment), - } - : undefined, - }) - logger.info(`Successfully connected to network subgraph`) - - // If the network subgraph deployment is present, validate if the `chainId` we get from our - // provider is consistent. - if (argv.networkSubgraphDeployment) { - try { - await validateProviderNetworkIdentifier( - protocolNetwork, - argv.networkSubgraphDeployment, - graphNode, - logger, - ) - } catch (e) { - logger.warn( - 'Failed to validate Network Subgraph on index-nodes. Will use external subgraph endpoint instead', - ) - } - } - - logger.info('Connect to contracts', { - network: networkIdentifier.name, - chainId: networkIdentifier.chainId, - }) - - let contracts: NetworkContracts | undefined = undefined - try { - const addressBook = argv.addressBook - ? (JSON.parse(fs.readFileSync(argv.addressBook).toString()) as AddressBook) - : undefined - contracts = await connectContracts( - networkProvider, - networkIdentifier.chainId, - addressBook, - ) - } catch (error) { - logger.error( - `Failed to connect to contracts, please ensure you are using the intended Ethereum Network`, - ) - throw indexerError(IndexerErrorCode.IE075, error) - } - - logger.info('Successfully connected to contracts', { - curation: contracts.curation.address, - disputeManager: contracts.disputeManager.address, - epochManager: contracts.epochManager.address, - gns: contracts.gns.address, - rewardsManager: contracts.rewardsManager.address, - serviceRegistry: contracts.serviceRegistry.address, - staking: contracts.staking.address, - token: contracts.token.address, - }) - - const receiptManager = new AllocationReceiptManager( - sequelize, - queryFeeModels, - logger, - toAddress(argv.clientSignerAddress), - protocolNetwork, - ) - - // Ensure the address is checksummed - const operatorAddress = toAddress(wallet.address) - - logger = logger.child({ - indexer: indexerAddress.toString(), - operator: operatorAddress.toString(), - }) - - logger.info('Validating operator wallet is approved to take actions for indexer') - // Validate the operator wallet matches the operator set for the indexer - if (indexerAddress === operatorAddress) { - logger.info(`Indexer and operator are identical, operator status granted`) - } else { - const isOperator = await pRetry( - async () => - contracts!.staking.isOperator( - wallet.address.toString(), - indexerAddress.toString(), - ), - { - retries: 10, - maxTimeout: 10000, - onFailedAttempt: err => { - logger.warn( - `contracts.staking.isOperator(${wallet.address.toString()}, ${indexerAddress.toString()}) failed`, - { - attempt: err.attemptNumber, - retriesLeft: err.retriesLeft, - err: err.message, - }, - ) - }, - } as pRetry.Options, - ) - - if (isOperator == false) { - logger.error( - 'Operator wallet is not allowed for indexer, please see attached debug suggestions', - { - debugSuggestion1: 'verify that operator wallet is set for indexer account', - debugSuggestion2: - 'verify that service and agent are both using correct operator wallet mnemonic', - }, - ) - throw indexerError( - IndexerErrorCode.IE034, - `contracts.staking.isOperator returned 'False'`, - ) - } - } - - // Monitor indexer allocations that we may receive traffic for - const allocations = monitorEligibleAllocations({ - indexer: indexerAddress, - logger, - networkSubgraph, - protocolNetwork, - interval: argv.allocationSyncingInterval, - }) - - // Ensure there is an attestation signer for every allocation - const signers = ensureAttestationSigners({ - logger, - allocations, - wallet, - chainId: networkIdentifier.chainId, - disputeManagerAddress: contracts.disputeManager.address, - }) - - // Create a query processor for paid queries - const queryProcessor = new QueryProcessor({ - logger: logger.child({ component: 'QueryProcessor' }), - graphNode: argv.graphNodeQueryEndpoint, - metrics, - receiptManager, - signers, - queryTimingLogs: argv.queryTimingLogs, - }) - - const indexerManagementClient = await createIndexerManagementClient({ - models, - graphNode, - logger, - defaults: { - // This is just a dummy, since we're never writing to the management - // client from the indexer service. - globalIndexingRule: { - allocationAmount: BigNumber.from('0'), - }, - }, - multiNetworks: undefined, - }) - - // Spin up a basic webserver - await createServer({ - logger: logger.child({ component: 'Server' }), - port: argv.port, - queryProcessor, - metrics, - graphNodeStatusEndpoint: argv.graphNodeStatusEndpoint, - freeQueryAuthToken: argv.freeQueryAuthToken, - indexerManagementClient, - release, - operatorPublicKey: wallet.publicKey, - networkSubgraph, - networkSubgraphAuthToken: argv.networkSubgraphAuthToken, - serveNetworkSubgraph: argv.serveNetworkSubgraph, - infoRateLimit: argv.infoRateLimit, - statusRateLimit: argv.statusRateLimit, - bodySizeLimit: argv.bodySizeLimit, - }) - }, -} diff --git a/packages/indexer-service/src/index.ts b/packages/indexer-service/src/index.ts deleted file mode 100644 index 7add4940b..000000000 --- a/packages/indexer-service/src/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as yargs from 'yargs' - -import start from './commands/start' - -yargs - .scriptName('indexer-service') - .env('INDEXER_SERVICE') - .command(start) - .demandCommand(1, 'Choose a command from the above list') - .help().argv diff --git a/packages/indexer-service/src/queries.ts b/packages/indexer-service/src/queries.ts deleted file mode 100644 index 931796880..000000000 --- a/packages/indexer-service/src/queries.ts +++ /dev/null @@ -1,170 +0,0 @@ -import axios, { AxiosInstance, AxiosResponse, AxiosRequestConfig } from 'axios' - -import { Logger, Metrics, Eventual } from '@graphprotocol/common-ts' -import { - QueryProcessor as QueryProcessorInterface, - PaidQuery, - QueryResult, - UnattestedQueryResult, - Response, - FreeQuery, -} from './types' -import { AttestationSignerMap } from './allocations' -import { ReceiptManager } from './query-fees' - -export interface PaidQueryProcessorOptions { - logger: Logger - metrics: Metrics - graphNode: string - signers: Eventual - receiptManager: ReceiptManager - queryTimingLogs: boolean -} - -interface AxiosRequestConfigWithTime extends AxiosRequestConfig { - meta?: { requestStartedAt?: number } -} - -interface AxiosResponseWithTime extends AxiosResponse { - responseTime?: number - config: AxiosRequestConfigWithTime -} - -export class QueryProcessor implements QueryProcessorInterface { - logger: Logger - metrics: Metrics - graphNode: AxiosInstance - signers: Eventual - receiptManager: ReceiptManager - queryTimingLogs: boolean - - constructor({ - logger, - metrics, - graphNode, - receiptManager, - signers, - queryTimingLogs, - }: PaidQueryProcessorOptions) { - this.logger = logger - this.queryTimingLogs = queryTimingLogs - this.metrics = metrics - this.signers = signers - this.graphNode = axios.create({ - baseURL: graphNode, - - headers: { 'content-type': 'application/json' }, - - // Prevent responses to be deserialized into JSON - responseType: 'text', - - // Don't transform the response in any way - transformResponse: data => data, - - // Don't throw on bad responses - validateStatus: () => true, - }) - - if (this.queryTimingLogs) { - // Set up Axios for request response time measurement - // https://sabljakovich.medium.com/axios-response-time-capture-and-log-8ff54a02275d - this.graphNode.interceptors.request.use(function (x: AxiosRequestConfigWithTime) { - // to avoid overwriting if another interceptor - // already defined the same object (meta) - x.meta = x.meta || {} - x.meta.requestStartedAt = new Date().getTime() - return x - }) - this.graphNode.interceptors.response.use( - function (x: AxiosResponseWithTime) { - if (x.config.meta?.requestStartedAt !== undefined) { - x.responseTime = new Date().getTime() - x.config.meta?.requestStartedAt - } - return x - }, - // Handle 4xx & 5xx responses - function (x: AxiosResponseWithTime) { - if (x.config.meta?.requestStartedAt !== undefined) { - x.responseTime = new Date().getTime() - x.config.meta.requestStartedAt - } - throw x - }, - ) - } - - this.receiptManager = receiptManager - } - - async executeFreeQuery(query: FreeQuery): Promise> { - const { subgraphDeploymentID } = query - - // Execute query in the Graph Node - const response = await this.graphNode.post( - `/subgraphs/id/${subgraphDeploymentID.ipfsHash}`, - query.query, - ) - - return { - status: 200, - result: { - graphQLResponse: response.data, - attestable: response.headers['graph-attestable'] === 'true', - }, - } - } - - async executePaidQuery(paidQuery: PaidQuery): Promise> { - const { subgraphDeploymentID, receipt, query } = paidQuery - - this.logger.info(`Execute paid query`, { - deployment: subgraphDeploymentID.display, - receipt, - }) - - const parsedReceipt = await this.receiptManager.add(receipt) - - // Look up or derive a signer for the attestation for this query - const signer = (await this.signers.value()).get(parsedReceipt.allocation) - - // Fail query outright if we have no signer for this attestation - if (signer === undefined) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const error = Error(`Unable to sign the query response attestation`) as any - error.status = 500 - throw error - } - - let response: AxiosResponse - try { - response = await this.graphNode.post( - `/subgraphs/id/${subgraphDeploymentID.ipfsHash}`, - query, - ) - } catch (error) { - error.status = 500 - throw error - } - - let attestation = null - if (response.headers['graph-attestable'] == 'true') { - attestation = await signer.createAttestation(query, response.data) - } - - if (this.queryTimingLogs) { - this.logger.info('Done executing paid query', { - deployment: subgraphDeploymentID.ipfsHash, - fees: parsedReceipt.fees.toBigInt().toString(), - query: query, - responseTime: (response as AxiosResponseWithTime).responseTime ?? null, - }) - } - - return { - status: 200, - result: { - graphQLResponse: response.data, - attestation, - }, - } - } -} diff --git a/packages/indexer-service/src/query-fees/allocations.ts b/packages/indexer-service/src/query-fees/allocations.ts deleted file mode 100644 index cef0c00a3..000000000 --- a/packages/indexer-service/src/query-fees/allocations.ts +++ /dev/null @@ -1,264 +0,0 @@ -import { BigNumber } from 'ethers' -import { - indexerError, - IndexerErrorCode, - QueryFeeModels, - AllocationReceiptAttributes, - ensureAllocationSummary, -} from '@graphprotocol/indexer-common' -import { NativeSignatureVerifier } from '@graphprotocol/indexer-native' -import { Address, Logger, timer, toAddress } from '@graphprotocol/common-ts' -import { Sequelize, Transaction } from 'sequelize' -import pRetry from 'p-retry' -import { ReceiptManager } from '.' - -// Takes a valid big-endian hexadecimal string and parses it as a BigNumber -function readNumber(data: string, start: number, end: number): BigNumber { - return BigNumber.from('0x' + data.slice(start, end)) -} - -const allocationReceiptValidator = /^[0-9A-Fa-f]{264}$/ - -async function validateSignature( - signer: NativeSignatureVerifier, - receiptData: string, -): Promise { - const message = receiptData.slice(0, 134) - const signature = receiptData.slice(134, 264) - - if (!(await signer.verify(message, signature))) { - throw indexerError( - IndexerErrorCode.IE031, - `Invalid signature: expected signer "${signer.address}"`, - ) - } - return '0x' + signature -} - -export class AllocationReceiptManager implements ReceiptManager { - private readonly _sequelize: Sequelize - private readonly _queryFeeModels: QueryFeeModels - private readonly _cache: Map> = new Map() - private readonly _flushQueue: string[] = [] - private readonly _allocationReceiptVerifier: NativeSignatureVerifier - private readonly protocolNetwork: string - logger: Logger - - constructor( - sequelize: Sequelize, - queryFeeModels: QueryFeeModels, - logger: Logger, - clientSignerAddress: Address, - protocolNetwork: string, - ) { - this.logger = logger.child({ - component: 'ReceiptManager', - protocolNetwork, - }) - - this._sequelize = sequelize - this._queryFeeModels = queryFeeModels - this._allocationReceiptVerifier = new NativeSignatureVerifier(clientSignerAddress) - this.protocolNetwork = protocolNetwork - - timer(30_000).pipe(async () => { - try { - await this._flushOutstanding() - } catch (err) { - logger.error( - `Failed to sync receipt to the db. If this does not correct itself, revenue may be lost.`, - { err }, - ) - } - }) - } - - private _parseAllocationReceipt(receiptData: string): { - id: string - allocation: Address - fees: BigNumber - } { - return { - id: receiptData.slice(104, 134), // 15 bytes - allocation: toAddress('0x' + receiptData.slice(0, 40)), // 20 bytes - fees: readNumber(receiptData, 40, 104), // 32 bytes - } - } - - // Saves the receipt and returns the allocation for signing - async add(receiptData: string): Promise<{ - id: string - allocation: Address - fees: BigNumber - }> { - // Security: Input validation - if (!allocationReceiptValidator.test(receiptData)) { - throw indexerError(IndexerErrorCode.IE031, 'Expecting 264 hex characters') - } - - // TODO: (Security) Additional validations are required to remove trust from - // the Gateway which are deferred until we can fully remove trust which requires: - // * A receiptID based routing solution so that some invariants can be tested - // in memory instead of hitting the database for performance (eg: collateral, - // and that fees are increasing). - // * A ZKP to ensure all receipts can be collected without running out of gas. - // - // Validations include: - // * The address corresponds to an *unresolved* transfer. - // * The unresolved transfer has sufficient collateral to pay for the query. - // * Recovering the signature for the binary data in chars 20..56 = the specified address. - // * The increase in fee amount from the last known valid state covers the cost of the query - // * This receipt ID is not being "forked" by concurrent usage. - - const receipt = this._parseAllocationReceipt(receiptData) - const signature = await validateSignature( - this._allocationReceiptVerifier, - receiptData, - ) - - this._queue({ - id: receipt.id, - allocation: receipt.allocation, - fees: receipt.fees.toString(), - signature, - protocolNetwork: this.protocolNetwork, - }) - - return receipt - } - - /// Flushes all receipts that have been registered by this moment in time. - private async _flushOutstanding(): Promise { - this.logger.trace('Flushing outsdanding receipts', { - function: 'flushOutstanding', - queueLength: this._flushQueue.length, - }) - let count = this._flushQueue.length - - while (count > 0) { - count -= 1 - - // Swap and pop - const id = this._flushQueue[count] - this._flushQueue[count] = this._flushQueue[this._flushQueue.length - 1] - this._flushQueue.pop() - - // An invariant of this class is that _flushQueue indexes - // _cache. So, the ! is being used as intended. - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const receipt = this._cache.get(id)! - this._cache.delete(id) - - const logger = this.logger.child({ function: 'flushOutstanding', receipt }) - - const transact = async () => { - // Put this in a transaction because this has a write which is - // dependent on a read and must be atomic or receipt updates could be dropped. - await this._sequelize.transaction({}, async (transaction: Transaction) => { - logger.trace('Begin database transaction to process receipt') - const [summary, isNewSummary] = await ensureAllocationSummary( - this._queryFeeModels, - receipt.allocation, - transaction, - this.protocolNetwork, - ) - logger.trace('Built allocation summary', { - allocationSummary: summary, - new: isNewSummary, - }) - if (isNewSummary) { - await summary.save({ transaction }) - } - - const [state, isNew] = - await this._queryFeeModels.allocationReceipts.findOrBuild({ - where: { id: receipt.id }, - defaults: { - id: receipt.id, - allocation: receipt.allocation, - signature: receipt.signature, - fees: receipt.fees, - protocolNetwork: this.protocolNetwork, - }, - transaction, - }) - logger.trace('Built allocation receipt', { - allocationReceipt: state, - new: isNew, - relatedAllocationSummary: summary, - }) - - // Don't save if we already have a version of the receipt - // with a higher amount of fees - if (!isNew) { - const storedFees = BigNumber.from(state.getDataValue('fees')) - if (storedFees.gte(receipt.fees)) { - logger.trace( - `Stored fees found in allocation receipt are greater than the current receipt, ignoring.`, - { - storedFees, - receiptFees: receipt.fees, - allocationReceipt: state, - relatedAllocationSummary: summary, - }, - ) - return - } - } - - // Make sure the new receipt fee amount and signature are set - state.set('fees', receipt.fees) - state.set('signature', receipt.signature) - logger.trace('Saving allocation') - - // Save the new or updated receipt to the db - await state.save({ transaction }) - logger.trace('Saved allocation receipt', { - allocationReceipt: state, - relatedAllocationSummary: summary, - }) - }) - logger.trace('End database transaction to process receipt') - } - - // Save to the db - try { - await pRetry( - async () => { - try { - await transact() - } catch (err) { - // Only retry if the error is a 40001 error, aka 'could not serialize - // access due to concurrent update' - if (err.parent.code !== '40001') { - throw new pRetry.AbortError(err) - } - } - }, - { retries: 20 } as pRetry.Options, - ) - } catch (err) { - // If we fail for whatever reason, keep this data in the cache to flush - // the next time around. - // - // This needs to go back through the normal add method, - // rather than just inserting back into the queue. - // The receipt may have advanced while we were trying to flush - // it and we don't want to overwrite new data with stale data. - this._queue(receipt) - throw err - } - } - } - - _queue(receipt: AllocationReceiptAttributes): void { - // This is collision resistant only because receipts have a globally unique ID. - const latest = this._cache.get(receipt.id) - if (latest === undefined || BigNumber.from(latest.fees).lt(receipt.fees)) { - if (latest === undefined) { - this._flushQueue.push(receipt.id) - } - this._cache.set(receipt.id, receipt) - } - } -} diff --git a/packages/indexer-service/src/query-fees/index.ts b/packages/indexer-service/src/query-fees/index.ts deleted file mode 100644 index 133dd81ca..000000000 --- a/packages/indexer-service/src/query-fees/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Address } from '@graphprotocol/common-ts' -import { BigNumber } from 'ethers' - -export * from './allocations' - -export interface ReceiptManager { - // Saves the query fees and returns the allocation for signing - add(receiptData: string): Promise<{ - id: string - allocation: Address - fees: BigNumber - }> -} diff --git a/packages/indexer-service/src/server/__tests__/server.test.ts b/packages/indexer-service/src/server/__tests__/server.test.ts deleted file mode 100644 index a74dd8fc1..000000000 --- a/packages/indexer-service/src/server/__tests__/server.test.ts +++ /dev/null @@ -1,293 +0,0 @@ -/** - * Assumes a graph-node is running and is accessible at http://127.0.0.1 - */ - -import http from 'http' -import supertest from 'supertest' -import { BigNumber, Wallet } from 'ethers' -import { Sequelize } from 'sequelize' -import { Socket } from 'net' - -import { - connectContracts, - connectDatabase, - createLogger, - createMetrics, - Logger, - NetworkContracts, - toAddress, -} from '@graphprotocol/common-ts' - -import { createServer } from '..' -import { QueryProcessor } from '../../queries' -import { ensureAttestationSigners } from '../../allocations' -import { AllocationReceiptManager } from '../../query-fees' -import { - createIndexerManagementClient, - defineIndexerManagementModels, - defineQueryFeeModels, - IndexerManagementClient, - IndexerManagementModels, - monitorEligibleAllocations, - NetworkSubgraph, - QueryFeeModels, - getTestProvider, - GraphNode, -} from '@graphprotocol/indexer-common' - -// Make global Jest variable available -// eslint-disable-next-line @typescript-eslint/no-explicit-any -declare const __DATABASE__: any -declare const __LOG_LEVEL__: never - -let logger: Logger -let server: http.Server -let sockets: Socket[] = [] -let sequelize: Sequelize -let models: IndexerManagementModels -let queryFeeModels: QueryFeeModels -let address: string -let contracts: NetworkContracts -let networkSubgraph: NetworkSubgraph -let client: IndexerManagementClient -let receiptManager: AllocationReceiptManager - -const setup = async () => { - logger = createLogger({ name: 'server.test.ts', async: false, level: __LOG_LEVEL__ }) - const metrics = createMetrics() - - sequelize = await connectDatabase(__DATABASE__) - - queryFeeModels = defineQueryFeeModels(sequelize) - models = defineIndexerManagementModels(sequelize) - address = '0x90f8bf6a479f320ead074411a4b0e7944ea8c9c1' - contracts = await connectContracts(getTestProvider('sepolia'), 11155111, undefined) - sequelize = await sequelize.sync({ force: true }) - const statusEndpoint = 'http://127.0.0.1:8030/graphql' - const queryEndpoint = 'http://127.0.0.1:8000/' - - const INDEXER_TEST_API_KEY: string = process.env['INDEXER_TEST_API_KEY'] || '' - networkSubgraph = await NetworkSubgraph.create({ - logger, - endpoint: `https://gateway-arbitrum.network.thegraph.com/api/${INDEXER_TEST_API_KEY}/subgraphs/name/graphprotocol/graph-network-arbitrum-sepolia`, - deployment: undefined, - }) - - const graphNode = new GraphNode( - logger, - // We can use a fake Graph Node admin endpoint here because Indexer Service - // doesn't need to perform management actions on Graph Node. - 'http://fake-graph-node-admin-endpoint', - queryEndpoint, - statusEndpoint, - ) - client = await createIndexerManagementClient({ - models, - graphNode, - logger, - defaults: { - // This is just a dummy, since we're never writing to the management - // client from the indexer service. - globalIndexingRule: { - allocationAmount: BigNumber.from('0'), - }, - }, - multiNetworks: undefined, - }) - - receiptManager = new AllocationReceiptManager( - sequelize, - queryFeeModels, - logger, - toAddress(address), //update maybe - 'eip155:11155111', - ) - - const release = { - version: '0.0.1', - dependencies: { - '@graphprotocol/common-ts': '1.8.0', - }, - } - - // Monitor indexer allocations that we may receive traffic for - const allocations = monitorEligibleAllocations({ - protocolNetwork: 'eip155:11155111', - indexer: toAddress(address), - logger, - networkSubgraph, - interval: 120_000, - }) - const wallet = Wallet.fromMnemonic( - 'myth like bonus scare over problem client lizard pioneer submit female collect', - ) - - // Ensure there is an attestation signer for every allocation - const signers = ensureAttestationSigners({ - logger, - allocations, - wallet, - chainId: 4, - disputeManagerAddress: contracts.disputeManager.address, - }) - - const queryProcessor = new QueryProcessor({ - logger: logger.child({ component: 'QueryProcessor' }), - graphNode: 'http://127.0.0.1:8000/', - metrics, - receiptManager, - queryTimingLogs: false, - signers, - }) - - server = await createServer({ - logger: logger.child({ component: 'Server' }), - port: 9600, - queryProcessor, - graphNodeStatusEndpoint: statusEndpoint, - metrics, - freeQueryAuthToken: '', - indexerManagementClient: client, - release, - operatorPublicKey: wallet.publicKey, - networkSubgraph, - networkSubgraphAuthToken: 'superdupersecrettoken', - serveNetworkSubgraph: false, - infoRateLimit: 3, - statusRateLimit: 2, - bodySizeLimit: 0.1, - }) - server.on('connection', socket => { - logger.debug('Connection established', { socket }) - sockets.push(socket) - socket.on('close', () => (sockets = sockets.filter(curr => curr !== socket))) - }) - process.on('SIGTERM', await shutdownServer) - process.on('SIGINT', await shutdownServer) -} - -const shutdownServer = async () => { - logger.debug('Received kill signal, shutting down gracefully') - if (server) { - server.close(() => { - logger.debug('Closed out remaining connections') - }) - } - if (sockets.length > 0) { - sockets.forEach(socket => socket.destroy()) - } -} - -const teardown = async () => { - await shutdownServer() - await sequelize.drop({}) -} - -// Helpers for sending test requests -const testGetRequest = async ( - path: string, - expectedStatusCode: number, - expectedResponse: object | string, -) => { - const response = await supertest(server).get(path) - expect(response.status).toEqual(expectedStatusCode) - if ((response.status === 429) | (response.status === 500)) { - expect(response.text).toEqual(expectedResponse) - } else if (response.status === 200) { - expect(response.body).toEqual(expectedResponse) - } -} - -const testGraphQLRequest = async ( - path: string, - query: object, - expectedStatusCode: number, - expectedResponse: object | string, -) => { - const response = await supertest(server) - .post(path) - .send(query) - .set('Accept', 'application/json') - - expect(response.status).toEqual(expectedStatusCode) - if ((response.status === 429) | (response.status === 500)) { - expect(response.text).toEqual(expectedResponse) - } else if (response.status === 200) { - expect(response.body).toEqual(expectedResponse) - } -} - -describe('Server', () => { - beforeAll(setup) - afterAll(teardown) - - it('is ready to roll', done => { - supertest(server).get('/').expect(200, done) - }) - - it('Operator info endpoint returns expected data', async () => { - const expectedResponses: [number, object | string][] = [ - [ - 200, - { - publicKey: - '0x04e68acfc0253a10620dff706b0a1b1f1f5833ea3beb3bde2250d5f271f3563606672ebc45e0b7ea2e816ecb70ca03137b1c9476eec63d4632e990020b7b6fba39', - }, - ], - ] - for (const [expectedStatus, expectedResponse] of expectedResponses) { - await testGetRequest('/operator/info', expectedStatus, expectedResponse) - } - }) - - it('Subgraph deployment health endpoint returns expected data', async () => { - const expectedResponses: [number, string][] = [[500, 'Invalid indexing status']] - for (const [expectedStatus, expectedResponse] of expectedResponses) { - await testGetRequest( - '/subgraphs/health/Qmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', - expectedStatus, - expectedResponse, - ) - } - }) - - // Note: the rate limiting part of this test assumes the tests are run in sequence (suggest using --runInBand) - it('Cost endpoint returns expected data and is rate limited correctly', async () => { - const expectedResponses: [number, object | string][] = [ - [200, { data: { costModels: [] } }], - [429, 'Too many requests, please try again later.'], - ] - - for (const [expectedStatus, expectedResponse] of expectedResponses) { - await testGraphQLRequest( - '/cost', - { - query: - '{costModels(deployments: ["Qmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]){ deployment model } }', - }, - expectedStatus, - expectedResponse, - ) - } - }) - - it('Status endpoint returns expected data and is rate limited correctly', async () => { - const expectedResponses: [number, object | string][] = [ - [200, { data: { indexingStatuses: [] } }], - [200, { data: { indexingStatuses: [] } }], - [429, 'Too many requests, please try again later.'], - ] - - for (const [expectedStatus, expectedResponse] of expectedResponses) { - await testGraphQLRequest( - '/status', - { - query: - '{indexingStatuses(subgraphs: ["Qmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]){ subgraph health } }', - }, - expectedStatus, - expectedResponse, - ) - } - }) -}) diff --git a/packages/indexer-service/src/server/cost.ts b/packages/indexer-service/src/server/cost.ts deleted file mode 100644 index 1b288733c..000000000 --- a/packages/indexer-service/src/server/cost.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { graphqlHTTP } from 'express-graphql' -import { Request, Response } from 'express' -import { makeExecutableSchema } from '@graphql-tools/schema' -import { IndexerManagementClient } from '@graphprotocol/indexer-common' -import gql from 'graphql-tag' -import { Metrics, SubgraphDeploymentID } from '@graphprotocol/common-ts' - -export interface GraphQLServerOptions { - indexerManagementClient: IndexerManagementClient - metrics: Metrics -} - -interface Context { - client: IndexerManagementClient -} - -interface CostModelsArgs { - deployments: string[] -} - -interface CostModelArgs { - deployment: string -} - -export const createCostServer = async ({ - indexerManagementClient, - metrics, -}: GraphQLServerOptions): Promise< - (request: Request, response: Response) => Promise -> => { - const resolverMetrics = { - costModelQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_queries_total', - help: 'Queries for individual cost models', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - invalidCostModelQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_queries_invalid', - help: 'Invalid queries for individual cost models', - registers: [metrics.registry], - labelNames: [], - }), - - failedCostModelQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_queries_failed', - help: 'Failed queries for individual cost models', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - costModelQueryDuration: new metrics.client.Histogram({ - name: 'indexer_service_cost_model_query_duration', - help: 'Duration of processing queries for individual cost models', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - costModelBatchQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_batch_queries', - help: 'Queries for batches of cost models', - registers: [metrics.registry], - }), - - invalidCostModelBatchQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_batch_queries_invalid', - help: 'Invalid queries for batches of cost models', - registers: [metrics.registry], - }), - - failedCostModelBatchQueries: new metrics.client.Counter({ - name: 'indexer_service_cost_model_batch_queries_failed', - help: 'Failed queries for batches of cost models', - registers: [metrics.registry], - }), - - costModelBatchQueryDuration: new metrics.client.Histogram({ - name: 'indexer_service_cost_model_batch_query_duration', - help: 'Duration of processing batch queries for cost models', - registers: [metrics.registry], - }), - - costModelBatchQuerySize: new metrics.client.Histogram({ - name: 'indexer_service_cost_model_batch_query_size', - help: 'Number of cost models requested per batch query', - registers: [metrics.registry], - }), - } - - const executableSchema = makeExecutableSchema({ - typeDefs: gql` - type CostModel { - deployment: String! - model: String - variables: String - } - - type Query { - costModels(deployments: [String!]!): [CostModel!]! - costModel(deployment: String!): CostModel - } - `, - - resolvers: { - Query: { - costModels: async (parent, args: CostModelsArgs, context: Context) => { - resolverMetrics.costModelBatchQueries.inc() - - if (!args.deployments) { - resolverMetrics.invalidCostModelBatchQueries.inc() - throw new Error( - `Argument "deployments" must be an array of subgraph deployment IDs`, - ) - } - - resolverMetrics.costModelBatchQuerySize.observe(args.deployments.length) - - const stopTimer = resolverMetrics.costModelBatchQueryDuration.startTimer() - try { - const result = await context.client - .query( - gql` - query costModels($deployments: [String!]) { - costModels(deployments: $deployments) { - deployment - model - variables - } - } - `, - { - deployments: args.deployments - ? args.deployments.map(s => new SubgraphDeploymentID(s).bytes32) - : null, - }, - ) - .toPromise() - - if (result.error) { - throw result.error - } - - return result.data.costModels - } catch (error) { - resolverMetrics.failedCostModelBatchQueries.inc() - throw error - } finally { - stopTimer() - } - }, - - costModel: async (parent, args: CostModelArgs, context: Context) => { - const deployment = new SubgraphDeploymentID(args.deployment).bytes32 - - if (!deployment) { - resolverMetrics.invalidCostModelQueries.inc() - throw new Error(`Argument "deployment" must be a subgraph deployment ID`) - } - - resolverMetrics.costModelQueries.inc({ deployment }) - - const stopTimer = resolverMetrics.costModelQueryDuration.startTimer({ - deployment, - }) - try { - const result = await context.client - .query( - gql` - query costModel($deployment: String!) { - costModel(deployment: $deployment) { - deployment - model - variables - } - } - `, - { deployment }, - ) - .toPromise() - - if (result.error) { - throw result.error - } - - return result.data.costModel - } catch (error) { - resolverMetrics.failedCostModelQueries.inc({ deployment }) - throw error - } finally { - stopTimer() - } - }, - }, - }, - }) - - return graphqlHTTP({ - schema: executableSchema, - graphiql: false, - context: { client: indexerManagementClient }, - }) -} diff --git a/packages/indexer-service/src/server/deployment-health.ts b/packages/indexer-service/src/server/deployment-health.ts deleted file mode 100644 index 33cf02b91..000000000 --- a/packages/indexer-service/src/server/deployment-health.ts +++ /dev/null @@ -1,85 +0,0 @@ -import fetch from 'cross-fetch' -import { Router } from 'express' - -export interface DeploymentHealthServerOptions { - graphNodeStatusEndpoint: string -} - -export const createDeploymentHealthServer = ({ - graphNodeStatusEndpoint, -}: DeploymentHealthServerOptions): Router => { - const router = Router() - - // This route returns an HTTP 200 response if the deployment in question - // has not failed and is caught up with the chain head; otherwise an - // HTTP 500 is returned - router.get('/:deployment', async (req, res) => { - // Query indexing status for this particular deployment - const response = await fetch(graphNodeStatusEndpoint, { - method: 'POST', - headers: { - 'content-type': 'application/json', - }, - body: JSON.stringify({ - query: `query indexingStatus($subgraphs: [String!]!) { - indexingStatuses(subgraphs: $subgraphs) { - health - chains { - network - ... on EthereumIndexingStatus { - latestBlock { number hash } - chainHeadBlock { number hash } - } - } - } -}`, - variables: { - subgraphs: [req.params.deployment], - }, - }), - }) - - // We couldn't get a good HTTP response from Graph Node - if (!response.ok) { - return res.status(500).send('Unknown error') - } - - // Assert that we got JSON back - let data - try { - data = await response.json() - } catch (err) { - return res.status(500).send('Malformatted indexing status') - } - - // Assert that we got a valid indexing status back - if ( - !data.data || - data.errors || - !data.data.indexingStatuses || - !Array.isArray(data.data.indexingStatuses) || - data.data.indexingStatuses.length < 1 - ) { - return res.status(500).send('Invalid indexing status') - } - - // We can safely access this, thanks to the previous check - const status = data.data.indexingStatuses[0] - - if (status.health === 'failed') { - return res.status(500).send('Subgraph deployment has failed') - } - - const latestBlock = status.chains[0]?.latestBlock - const headBlock = status.chains[0]?.chainHeadBlock - - // Check whether the subgraph is caught up with the chain head - if (latestBlock?.number > headBlock?.number - 5) { - return res.status(200).send('Subgraph deployment is up to date') - } else { - return res.status(500).send('Subgraph deployment is lagging behind') - } - }) - - return router -} diff --git a/packages/indexer-service/src/server/index.ts b/packages/indexer-service/src/server/index.ts deleted file mode 100644 index 68db157cd..000000000 --- a/packages/indexer-service/src/server/index.ts +++ /dev/null @@ -1,405 +0,0 @@ -import express from 'express' -import cors from 'cors' -import bodyParser from 'body-parser' -import morgan from 'morgan' -import { Stream } from 'stream' -import { QueryProcessor } from '../types' -import { createStatusServer } from './status' -import { createDeploymentHealthServer } from './deployment-health' -import { - Logger, - Metrics, - SubgraphDeploymentID, - secureExpressApp, -} from '@graphprotocol/common-ts' -import { - indexerError, - IndexerErrorCode, - IndexerManagementClient, - NetworkSubgraph, -} from '@graphprotocol/indexer-common' -import { createCostServer } from './cost' -import { createOperatorServer } from './operator' -import rateLimit from 'express-rate-limit' -import http from 'http' - -export interface ServerOptions { - logger: Logger - metrics: Metrics - port?: number - queryProcessor: QueryProcessor - freeQueryAuthToken: string | undefined - graphNodeStatusEndpoint: string - indexerManagementClient: IndexerManagementClient - release: { - version: string - dependencies: { [key: string]: string } - } - operatorPublicKey: string - networkSubgraph: NetworkSubgraph - networkSubgraphAuthToken: string | undefined - serveNetworkSubgraph: boolean - infoRateLimit: number - statusRateLimit: number - bodySizeLimit: number -} - -export const createApp = async ({ - logger, - queryProcessor, - freeQueryAuthToken, - graphNodeStatusEndpoint, - indexerManagementClient, - metrics, - release, - operatorPublicKey, - networkSubgraph, - networkSubgraphAuthToken, - serveNetworkSubgraph, - infoRateLimit, - statusRateLimit, - bodySizeLimit, -}: ServerOptions): Promise => { - // Install metrics for incoming queries - const serverMetrics = { - queries: new metrics.client.Counter({ - name: 'indexer_service_queries_total', - help: 'Incoming queries', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - successfulQueries: new metrics.client.Counter({ - name: 'indexer_service_queries_ok', - help: 'Successfully executed queries', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - failedQueries: new metrics.client.Counter({ - name: 'indexer_service_queries_failed', - help: 'Queries that failed to execute', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - queriesWithInvalidReceiptHeader: new metrics.client.Counter({ - name: 'indexer_service_queries_with_invalid_receipt_header', - help: 'Queries that failed executing because they came with an invalid receipt header', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - queriesWithInvalidReceiptValue: new metrics.client.Counter({ - name: 'indexer_service_queries_with_invalid_receipt_value', - help: 'Queries that failed executing because they came with an invalid receipt value', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - queriesWithoutReceipt: new metrics.client.Counter({ - name: 'indexer_service_queries_without_receipt', - help: 'Queries that failed executing because they came without a receipt', - registers: [metrics.registry], - labelNames: ['deployment'], - }), - - queryDuration: new metrics.client.Histogram({ - name: 'indexer_service_query_duration', - help: 'Duration of processing a query from start to end', - labelNames: ['name', 'deployment'], - registers: [metrics.registry], - }), - - channelMessages: new metrics.client.Counter({ - name: 'indexer_service_channel_messages_total', - help: 'Incoming channel messages', - registers: [metrics.registry], - labelNames: [], - }), - - successfulChannelMessages: new metrics.client.Counter({ - name: 'indexer_service_channel_messages_ok', - help: 'Successfully handled channel messages', - registers: [metrics.registry], - labelNames: [], - }), - - failedChannelMessages: new metrics.client.Counter({ - name: 'indexer_service_channel_messages_failed', - help: 'Failed channel messages', - registers: [metrics.registry], - labelNames: [], - }), - - channelMessageDuration: new metrics.client.Histogram({ - name: 'indexer_service_channel_message_duration', - help: 'Duration of processing channel messages', - registers: [metrics.registry], - labelNames: [], - }), - } - - const loggerStream = new Stream.Writable() - loggerStream._write = (chunk, _, next) => { - logger.debug(chunk.toString().trim()) - next() - } - - const app = express() - - // Body parsers - const bodySizeLimitString = `${bodySizeLimit}mb` - const jsonParser = bodyParser.json({ limit: bodySizeLimitString }) - const rawParser = bodyParser.raw({ - limit: bodySizeLimitString, - type: 'application/json', - }) - - // Limit status requests - const slowLimiter = rateLimit({ - windowMs: 60 * 1000, // 1 minute - max: infoRateLimit, - }) - - // Limit network requests per minute - const networkLimiter = rateLimit({ - windowMs: 60 * 1000, // 1 minute - max: statusRateLimit, - }) - - // Log requests to the logger stream - // eslint-disable-next-line @typescript-eslint/no-explicit-any - app.use(morgan('tiny', { stream: loggerStream }) as any) - app.use(cors()) - - // Security - secureExpressApp(app) - - // Endpoint for health checks - app.get('/', (_, res) => { - res.status(200).send('Ready to roll!') - }) - - // Endpoint for version - app.use('/version', (_, res) => { - res.status(200).send({ ...release }) - }) - - // Endpoint for the public status API - app.use( - '/status', - networkLimiter, - jsonParser, - await createStatusServer({ graphNodeStatusEndpoint }), - ) - - // Endpoint for subgraph health checks - app.use( - '/subgraphs/health', - slowLimiter, - createDeploymentHealthServer({ graphNodeStatusEndpoint }), - ) - - // Endpoint for the public cost API - app.use( - '/cost', - slowLimiter, - jsonParser, - await createCostServer({ indexerManagementClient, metrics }), - ) - - // Endpoint for operator information - app.use( - '/operator', - slowLimiter, - jsonParser, - await createOperatorServer({ operatorPublicKey }), - ) - - let freeQueryAuthValue: string | undefined - if (freeQueryAuthToken) { - freeQueryAuthValue = `Bearer ${freeQueryAuthToken}` - } - - if (serveNetworkSubgraph) { - // Endpoint for network subgraph queries - app.post(`/network`, networkLimiter, rawParser, async (req, res) => { - try { - logger.info(`Handle network subgraph query`) - - let networkSubgraphAuthValue: string | undefined - if (networkSubgraphAuthToken) { - networkSubgraphAuthValue = `Bearer ${networkSubgraphAuthToken}` - } - - if ( - networkSubgraphAuthValue && - req.headers['authorization'] !== networkSubgraphAuthValue - ) { - throw new Error(`Invalid auth token`) - } - - const result = await networkSubgraph.queryRaw(req.body) - res.status(200).contentType('application/json').send(result.data) - } catch (err) { - logger.warn(`Failed to handle network subgraph query`, { err }) - return res.status(200).send({ errors: [{ message: err.message }] }) - } - }) - } - - // Endpoint for subgraph queries - app.post( - '/subgraphs/id/:id', - - // Accept JSON but don't parse it - rawParser, - - async (req, res) => { - const { id } = req.params - const query = req.body.toString() - - const subgraphDeploymentID = new SubgraphDeploymentID(id) - - const stopQueryTimer = serverMetrics.queryDuration.startTimer({ - deployment: subgraphDeploymentID.ipfsHash, - }) - serverMetrics.queries.inc({ deployment: subgraphDeploymentID.ipfsHash }) - - try { - // Extract the receipt - const receipt = req.headers['scalar-receipt'] - if (receipt !== undefined && typeof receipt !== 'string') { - logger.info(`Query has invalid receipt`, { - deployment: subgraphDeploymentID.display, - receipt, - }) - serverMetrics.queriesWithInvalidReceiptHeader.inc({ - deployment: subgraphDeploymentID.ipfsHash, - }) - const err = indexerError(IndexerErrorCode.IE029) - return res - .status(402) - .contentType('application/json') - .send({ error: err.message }) - } - - // Trusted indexer scenario: if the sender provides the free - // query auth token, we do not require a receipt - let receiptRequired = true - if (freeQueryAuthValue && req.headers['authorization'] === freeQueryAuthValue) { - receiptRequired = false - } - - if (receiptRequired) { - // Regular scenario: a receipt is required; fail if no state channel - // is specified - if (receipt === undefined) { - logger.info(`Query is missing a receipt`, { - deployment: subgraphDeploymentID.display, - }) - serverMetrics.queriesWithoutReceipt.inc({ - deployment: subgraphDeploymentID.ipfsHash, - }) - const err = indexerError(IndexerErrorCode.IE030) - return res - .status(402) - .contentType('application/json') - .send({ error: err.message }) - } - - logger.info(`Received paid query`, { - deployment: subgraphDeploymentID.display, - receipt: receipt, - }) - - try { - const response = await queryProcessor.executePaidQuery({ - subgraphDeploymentID, - receipt, - query, - }) - serverMetrics.successfulQueries.inc({ - deployment: subgraphDeploymentID.ipfsHash, - }) - res - .status(response.status || 200) - .contentType('application/json') - .send(response.result) - } catch (error) { - const err = indexerError(IndexerErrorCode.IE032, error) - logger.error(`Failed to handle paid query`, { err }) - serverMetrics.failedQueries.inc({ deployment: subgraphDeploymentID.ipfsHash }) - res = res.status(error.status || 500).contentType('application/json') - res.send({ error: `${err.message}` }) - } - } else { - logger.info(`Received free query`, { deployment: subgraphDeploymentID.display }) - - try { - const response = await queryProcessor.executeFreeQuery({ - subgraphDeploymentID, - query, - }) - res - .status(response.status || 200) - .contentType('application/json') - .setHeader('graph-attestable', response.result.attestable.toString()) - .send({ graphQLResponse: response.result.graphQLResponse }) - } catch (error) { - const err = indexerError(IndexerErrorCode.IE033, error) - logger.error(`Failed to handle free query`, { err }) - res - .status(error.status || 500) - .contentType('application/json') - .send({ error: `${err.message}` }) - } - } - } finally { - stopQueryTimer() - } - }, - ) - - return app -} - -export const createServer = async ({ - logger, - port, - queryProcessor, - freeQueryAuthToken, - graphNodeStatusEndpoint, - indexerManagementClient, - metrics, - release, - operatorPublicKey, - networkSubgraph, - networkSubgraphAuthToken, - serveNetworkSubgraph, - infoRateLimit, - statusRateLimit, - bodySizeLimit, -}: ServerOptions): Promise => { - const app = await createApp({ - logger, - queryProcessor, - freeQueryAuthToken, - graphNodeStatusEndpoint, - indexerManagementClient, - metrics, - release, - operatorPublicKey, - networkSubgraph, - networkSubgraphAuthToken, - serveNetworkSubgraph, - infoRateLimit, - statusRateLimit, - bodySizeLimit, - }) - - return app.listen(port, () => { - logger.debug(`Listening on port ${port}`) - }) -} diff --git a/packages/indexer-service/src/server/operator.ts b/packages/indexer-service/src/server/operator.ts deleted file mode 100644 index 89d3bb25e..000000000 --- a/packages/indexer-service/src/server/operator.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Router } from 'express' - -export interface OperatorServerOptions { - operatorPublicKey: string -} - -export const createOperatorServer = async ( - options: OperatorServerOptions, -): Promise => { - const router = Router() - - router.get('/info', (req, res) => { - res.send({ publicKey: options.operatorPublicKey }) - }) - - return router -} diff --git a/packages/indexer-service/src/server/status.ts b/packages/indexer-service/src/server/status.ts deleted file mode 100644 index 23d25af44..000000000 --- a/packages/indexer-service/src/server/status.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { graphqlHTTP } from 'express-graphql' -import fetch from 'cross-fetch' -import { loadSchema } from '@graphql-tools/load' -import { UrlLoader } from '@graphql-tools/url-loader' -import { wrapSchema, FilterRootFields } from '@graphql-tools/wrap' -import { Request, Response } from 'express' - -export interface StatusServerOptions { - graphNodeStatusEndpoint: string -} - -export const createStatusServer = async ({ - graphNodeStatusEndpoint, -}: StatusServerOptions): Promise< - (request: Request, response: Response) => Promise -> => { - const schema = await loadSchema(graphNodeStatusEndpoint, { - loaders: [new UrlLoader()], - headers: { - Accept: 'application/json', - }, - method: 'POST', - fetch, - }) - - // Filtering the index-node server schema to the queries we want to expose externally - // indexingStatuses - needed by gateways, and explorer - // others are used for debugging data discrepancies - const supportedRootFields = [ - 'indexingStatuses', - 'publicProofsOfIndexing', - 'entityChangesInBlock', - 'blockData', - 'cachedEthereumCalls', - 'subgraphFeatures', - 'apiVersions', - 'version', - ] - const filteredSchema = wrapSchema({ - schema, - transforms: [ - new FilterRootFields( - (_operation: 'Query' | 'Mutation' | 'Subscription', rootFieldName: string) => - supportedRootFields.some(rootField => rootField === rootFieldName), - ), - ], - }) - - return graphqlHTTP({ - schema: filteredSchema, - graphiql: true, - }) -} diff --git a/packages/indexer-service/src/types.ts b/packages/indexer-service/src/types.ts deleted file mode 100644 index 81500d92f..000000000 --- a/packages/indexer-service/src/types.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable @typescript-eslint/explicit-module-boundary-types */ - -import { SubgraphDeploymentID } from '@graphprotocol/common-ts' - -export interface Signature { - v: number - r: string - s: string -} - -export interface QueryResult { - graphQLResponse: string - attestation: Signature | null -} - -export interface UnattestedQueryResult { - graphQLResponse: string - attestable: boolean -} - -export type Response = { - result: T - status: number -} - -export interface FreeQuery { - subgraphDeploymentID: SubgraphDeploymentID - query: string -} - -export type PaidQuery = FreeQuery & { - receipt: string -} - -export interface QueryProcessor { - executeFreeQuery(query: FreeQuery): Promise> - executePaidQuery(query: PaidQuery): Promise> -} - -export class QueryError extends Error { - status: number - - constructor(message: string, status?: number) { - super(message) - - this.status = status || 500 - - // Manually set the prototype, following the recommendation on - // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work - Object.setPrototypeOf(this, QueryError.prototype) - } -} diff --git a/packages/indexer-service/tsconfig.json b/packages/indexer-service/tsconfig.json deleted file mode 100644 index 1c17ae737..000000000 --- a/packages/indexer-service/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "rootDir": "src", - "outDir": "dist", - "target": "es2020", - "module": "commonjs", - "declaration": true, - "sourceMap": true, - "esModuleInterop": true, - "strict": true, - "composite": true, - "lib": ["es2015", "es6", "esnext.asynciterable", "dom"], - "downlevelIteration": true - }, - "include": ["src/**/*.ts"], - "exclude": ["src/**/__tests__/*.ts"], - "references": [{ "path": "../indexer-common" }] -} diff --git a/scripts/release.sh b/scripts/release.sh deleted file mode 100755 index 2401774c6..000000000 --- a/scripts/release.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -x - -VERSION="$1" - -if [[ -z "$VERSION" ]]; then - echo "Usage: $0 " - exit 1 -fi - -for package in packages/*; do - pushd $package - chan release --allow-prerelease "$VERSION" || true - popd -done - -( - git add packages/*/CHANGELOG.md \ - && git commit -m "*: Update changelogs ahead of release" -) || true - -# Publish to NPM -# export NODE_ENV=production -yarn clean # clean all packages before releasing -yarn --registry https://registry.npmjs.org/ -yarn config set registry https://registry.npmjs.org/ -lerna publish "$VERSION" diff --git a/yarn.lock b/yarn.lock index 91e522701..12cf163fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,31 +10,6 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@apollo/client@~3.2.5 || ~3.3.0 || ~3.4.0 || ~3.5.0": - version "3.5.10" - resolved "https://registry.npmjs.org/@apollo/client/-/client-3.5.10.tgz" - integrity sha512-tL3iSpFe9Oldq7gYikZK1dcYxp1c01nlSwtsMz75382HcI6fvQXyFXUCJTTK3wgO2/ckaBvRGw7VqjFREdVoRw== - dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@wry/context" "^0.6.0" - "@wry/equality" "^0.5.0" - "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" - hoist-non-react-statics "^3.3.2" - optimism "^0.16.1" - prop-types "^15.7.2" - symbol-observable "^4.0.0" - ts-invariant "^0.9.4" - tslib "^2.3.0" - zen-observable-ts "^1.2.0" - -"@ardatan/sync-fetch@^0.0.1": - version "0.0.1" - resolved "https://registry.npmjs.org/@ardatan/sync-fetch/-/sync-fetch-0.0.1.tgz" - integrity sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA== - dependencies: - node-fetch "^2.6.1" - "@babel/code-frame@^7.0.0": version "7.22.13" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz" @@ -208,11 +183,6 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== -"@babel/parser@^7.20.15": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -408,20 +378,6 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== - -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== - dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" - "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" @@ -794,105 +750,6 @@ resolved "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== -"@google-cloud/common@^4.0.0": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-4.0.3.tgz#d4324ac83087385d727593f7e1b6d81ee66442cf" - integrity sha512-fUoMo5b8iAKbrYpneIRV3z95AlxVJPrjpevxs4SKoclngWZvTXBSGpNisF5+x5m+oNGve7jfB1e6vNBZBUs7Fw== - dependencies: - "@google-cloud/projectify" "^3.0.0" - "@google-cloud/promisify" "^3.0.0" - arrify "^2.0.1" - duplexify "^4.1.1" - ent "^2.2.0" - extend "^3.0.2" - google-auth-library "^8.0.2" - retry-request "^5.0.0" - teeny-request "^8.0.0" - -"@google-cloud/common@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/common/-/common-5.0.2.tgz#423ad94b125d44263cbed2b5eb1ce1d4d53dc038" - integrity sha512-V7bmBKYQyu0eVG2BFejuUjlBt+zrya6vtsKdY+JxMM/dNntPF41vZ9+LhOshEUH01zOHEqBSvI7Dad7ZS6aUeA== - dependencies: - "@google-cloud/projectify" "^4.0.0" - "@google-cloud/promisify" "^4.0.0" - arrify "^2.0.1" - duplexify "^4.1.1" - extend "^3.0.2" - google-auth-library "^9.0.0" - html-entities "^2.5.2" - retry-request "^7.0.0" - teeny-request "^9.0.0" - -"@google-cloud/logging-min@^10.0.0": - version "10.4.0" - resolved "https://registry.yarnpkg.com/@google-cloud/logging-min/-/logging-min-10.4.0.tgz#1a2f5e898d26156a6dddfa9c55a2e47a4908689e" - integrity sha512-TcblDYAATO9hHcDcWYFh+vqt3pAV7Qddaih1JK3cpkzLa+BWjD5gAVAWww8W9Wr5yxOX+8CkssanH/xSS4n76Q== - dependencies: - "@google-cloud/common" "^4.0.0" - "@google-cloud/paginator" "^4.0.0" - "@google-cloud/projectify" "^3.0.0" - "@google-cloud/promisify" "^3.0.0" - arrify "^2.0.1" - dot-prop "^6.0.0" - eventid "^2.0.0" - extend "^3.0.2" - gcp-metadata "^4.0.0" - google-auth-library "^8.0.2" - google-gax "^3.5.2" - on-finished "^2.3.0" - pumpify "^2.0.1" - stream-events "^1.0.5" - uuid "^9.0.0" - -"@google-cloud/paginator@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-4.0.1.tgz#5fb8793d4f84d18c50a6f2fad3dadab8d2c533ef" - integrity sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ== - dependencies: - arrify "^2.0.0" - extend "^3.0.2" - -"@google-cloud/profiler@6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/profiler/-/profiler-6.0.1.tgz#c0e19a80ad4d50d30956bbfcfb27962e16d47bc2" - integrity sha512-woLpexIb/Q1a89gC2ugixv4VU3HuvqEijA7ds+wcFofpjdnAgYLHU4stkK14zUog+Iwot+PMuFIwb+nnEMZpcA== - dependencies: - "@google-cloud/common" "^5.0.0" - "@google-cloud/logging-min" "^10.0.0" - "@types/console-log-level" "^1.4.0" - "@types/semver" "^7.0.0" - console-log-level "^1.4.0" - delay "^5.0.0" - extend "^3.0.2" - gcp-metadata "^6.0.0" - parse-duration "^1.0.0" - pprof "4.0.0" - pretty-ms "^7.0.0" - protobufjs "~7.2.4" - semver "^7.0.0" - teeny-request "^9.0.0" - -"@google-cloud/projectify@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-3.0.0.tgz#302b25f55f674854dce65c2532d98919b118a408" - integrity sha512-HRkZsNmjScY6Li8/kb70wjGlDDyLkVk3KvoEo9uIoxSjYLJasGiCch9+PqRVDOCGUFvEIqyogl+BeqILL4OJHA== - -"@google-cloud/projectify@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be" - integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA== - -"@google-cloud/promisify@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-3.0.1.tgz#8d724fb280f47d1ff99953aee0c1669b25238c2e" - integrity sha512-z1CjRjtQyBOYL+5Qr9DdYIfrdLBe746jRTYfaYU6MeXkqp7UfYs/jX16lFFVzZ7PGEJvqZNqYUEtb1mvDww4pA== - -"@google-cloud/promisify@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1" - integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== - "@graphprotocol/common-ts@2.0.11": version "2.0.11" resolved "https://registry.yarnpkg.com/@graphprotocol/common-ts/-/common-ts-2.0.11.tgz#29f92e7a9666a6b8baccd15e51281d87658978c9" @@ -946,190 +803,6 @@ split2 "^3.1.1" through2 "^3.0.1" -"@graphql-tools/batch-execute@^9.0.1": - version "9.0.2" - resolved "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-9.0.2.tgz" - integrity sha512-Y2uwdZI6ZnatopD/SYfZ1eGuQFI7OU2KGZ2/B/7G9ISmgMl5K+ZZWz/PfIEXeiHirIDhyk54s4uka5rj2xwKqQ== - dependencies: - "@graphql-tools/utils" "^10.0.5" - dataloader "^2.2.2" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/delegate@^10.0.0", "@graphql-tools/delegate@^10.0.3": - version "10.0.3" - resolved "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-10.0.3.tgz" - integrity sha512-Jor9oazZ07zuWkykD3OOhT/2XD74Zm6Ar0ENZMk75MDD51wB2UWUIMljtHxbJhV5A6UBC2v8x6iY0xdCGiIlyw== - dependencies: - "@graphql-tools/batch-execute" "^9.0.1" - "@graphql-tools/executor" "^1.0.0" - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.5" - dataloader "^2.2.2" - tslib "^2.5.0" - -"@graphql-tools/executor-graphql-ws@^1.0.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-1.1.0.tgz" - integrity sha512-yM67SzwE8rYRpm4z4AuGtABlOp9mXXVy6sxXnTJRoYIdZrmDbKVfIY+CpZUJCqS0FX3xf2+GoHlsj7Qswaxgcg== - dependencies: - "@graphql-tools/utils" "^10.0.2" - "@types/ws" "^8.0.0" - graphql-ws "^5.14.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - ws "^8.13.0" - -"@graphql-tools/executor-http@^1.0.0": - version "1.0.2" - resolved "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-1.0.2.tgz" - integrity sha512-JKTB4E3kdQM2/1NEcyrVPyQ8057ZVthCV5dFJiKktqY9IdmF00M8gupFcW3jlbM/Udn78ickeUBsUzA3EouqpA== - dependencies: - "@graphql-tools/utils" "^10.0.2" - "@repeaterjs/repeater" "^3.0.4" - "@whatwg-node/fetch" "^0.9.0" - extract-files "^11.0.0" - meros "^1.2.1" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/executor-legacy-ws@^1.0.0": - version "1.0.3" - resolved "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.0.3.tgz" - integrity sha512-rr3IDeO9Dh+8u8KIro++5kzJJYPHkcrIAWzqXtN663nhInC85iW7Ko91yOYwf7ovBci/7s+4Rqe4ZRyca1LGjQ== - dependencies: - "@graphql-tools/utils" "^10.0.0" - "@types/ws" "^8.0.0" - isomorphic-ws "5.0.0" - tslib "^2.4.0" - ws "8.14.1" - -"@graphql-tools/executor@^1.0.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@graphql-tools/executor/-/executor-1.2.0.tgz" - integrity sha512-SKlIcMA71Dha5JnEWlw4XxcaJ+YupuXg0QCZgl2TOLFz4SkGCwU/geAsJvUJFwK2RbVLpQv/UMq67lOaBuwDtg== - dependencies: - "@graphql-tools/utils" "^10.0.0" - "@graphql-typed-document-node/core" "3.2.0" - "@repeaterjs/repeater" "^3.0.4" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/load@8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@graphql-tools/load/-/load-8.0.0.tgz" - integrity sha512-Cy874bQJH0FP2Az7ELPM49iDzOljQmK1PPH6IuxsWzLSTxwTqd8dXA09dcVZrI7/LsN26heTY2R8q2aiiv0GxQ== - dependencies: - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.0" - p-limit "3.1.0" - tslib "^2.4.0" - -"@graphql-tools/merge@8.2.8": - version "8.2.8" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.8.tgz" - integrity sha512-e4kpzgEIlA0sC0NjJlMwUL73Iz/HoP2OgAUReDDsupvWCqW3PMxjNoviS8xmcklVnv1w8Vmr8U2tao+x40ypLA== - dependencies: - "@graphql-tools/utils" "8.6.7" - tslib "~2.3.0" - -"@graphql-tools/merge@^9.0.0": - version "9.0.0" - resolved "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.0.0.tgz" - integrity sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q== - dependencies: - "@graphql-tools/utils" "^10.0.0" - tslib "^2.4.0" - -"@graphql-tools/schema@8.3.8": - version "8.3.8" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.8.tgz" - integrity sha512-Bba60ali4fLOKJz/Kk39RcBrDUBtu0Wy7pjpIOmFIKQKwUBNNB0eAmfpvrjnFhRAVdO2kOkPpc8DQY+SCG+lWw== - dependencies: - "@graphql-tools/merge" "8.2.8" - "@graphql-tools/utils" "8.6.7" - tslib "~2.3.0" - value-or-promise "1.0.11" - -"@graphql-tools/schema@^10.0.0": - version "10.0.0" - resolved "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.0.0.tgz" - integrity sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg== - dependencies: - "@graphql-tools/merge" "^9.0.0" - "@graphql-tools/utils" "^10.0.0" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-tools/url-loader@8.0.0": - version "8.0.0" - resolved "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-8.0.0.tgz" - integrity sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA== - dependencies: - "@ardatan/sync-fetch" "^0.0.1" - "@graphql-tools/delegate" "^10.0.0" - "@graphql-tools/executor-graphql-ws" "^1.0.0" - "@graphql-tools/executor-http" "^1.0.0" - "@graphql-tools/executor-legacy-ws" "^1.0.0" - "@graphql-tools/utils" "^10.0.0" - "@graphql-tools/wrap" "^10.0.0" - "@types/ws" "^8.0.0" - "@whatwg-node/fetch" "^0.9.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - value-or-promise "^1.0.11" - ws "^8.12.0" - -"@graphql-tools/utils@8.6.7": - version "8.6.7" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.7.tgz" - integrity sha512-Qi3EN95Rt3hb8CyDKpPKFWOPrnc00P18cpVTXEgtKxetSP39beJBeEEtLB0R53eP/6IolsyTZOTgkET1EaERaw== - dependencies: - tslib "~2.3.0" - -"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.0.2", "@graphql-tools/utils@^10.0.5": - version "10.0.6" - resolved "https://registry.npmjs.org/@graphql-tools/utils/-/utils-10.0.6.tgz" - integrity sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ== - dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - dset "^3.1.2" - tslib "^2.4.0" - -"@graphql-tools/wrap@10.0.1", "@graphql-tools/wrap@^10.0.0": - version "10.0.1" - resolved "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-10.0.1.tgz" - integrity sha512-Cw6hVrKGM2OKBXeuAGltgy4tzuqQE0Nt7t/uAqnuokSXZhMHXJUb124Bnvxc2gPZn5chfJSDafDe4Cp8ZAVJgg== - dependencies: - "@graphql-tools/delegate" "^10.0.3" - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.0" - tslib "^2.4.0" - value-or-promise "^1.0.12" - -"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.0.0", "@graphql-typed-document-node/core@^3.1.1": - version "3.2.0" - resolved "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz" - integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== - -"@grpc/grpc-js@~1.8.0": - version "1.8.22" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.22.tgz#847930c9af46e14df05b57fc12325db140ceff1d" - integrity sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA== - dependencies: - "@grpc/proto-loader" "^0.7.0" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.7.0": - version "0.7.10" - resolved "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz" - integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.4" - yargs "^17.7.2" - "@humanwhocodes/config-array@^0.11.11", "@humanwhocodes/config-array@^0.11.13": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1416,13 +1089,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@jsdoc/salty@^0.2.1": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.8.tgz#8d29923a9429694a437a50ab75004b576131d597" - integrity sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg== - dependencies: - lodash "^4.17.21" - "@lerna/add@6.1.0": version "6.1.0" resolved "https://registry.npmjs.org/@lerna/add/-/add-6.1.0.tgz" @@ -2107,7 +1773,7 @@ npmlog "^6.0.2" write-file-atomic "^4.0.1" -"@mapbox/node-pre-gyp@1.0.11", "@mapbox/node-pre-gyp@^1.0.9": +"@mapbox/node-pre-gyp@1.0.11": version "1.0.11" resolved "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz" integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== @@ -2122,23 +1788,6 @@ semver "^7.3.5" tar "^6.1.11" -"@noble/curves@1.1.0", "@noble/curves@~1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.1.0.tgz" - integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== - dependencies: - "@noble/hashes" "1.3.1" - -"@noble/hashes@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.1.tgz" - integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== - -"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": - version "1.3.2" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -2371,7 +2020,7 @@ dependencies: nx "15.9.7" -"@octokit/auth-token@^2.4.0", "@octokit/auth-token@^2.4.4": +"@octokit/auth-token@^2.4.0": version "2.5.0" resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== @@ -2395,19 +2044,6 @@ before-after-hook "^2.1.0" universal-user-agent "^6.0.0" -"@octokit/core@^3.5.1": - version "3.6.0" - resolved "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz" - integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.6.3" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - "@octokit/core@^4.2.1": version "4.2.4" resolved "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz" @@ -2439,7 +2075,7 @@ is-plain-object "^5.0.0" universal-user-agent "^6.0.0" -"@octokit/graphql@^4.3.1", "@octokit/graphql@^4.5.8": +"@octokit/graphql@^4.3.1": version "4.8.0" resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== @@ -2472,13 +2108,6 @@ resolved "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz" integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== -"@octokit/plugin-paginate-rest@^2.16.8": - version "2.21.3" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz" - integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== - dependencies: - "@octokit/types" "^6.40.0" - "@octokit/plugin-paginate-rest@^6.1.2": version "6.1.2" resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz" @@ -2492,14 +2121,6 @@ resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== -"@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.16.2" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz" - integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== - dependencies: - "@octokit/types" "^6.39.0" - deprecation "^2.3.1" - "@octokit/plugin-rest-endpoint-methods@^7.1.2": version "7.2.3" resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz" @@ -2507,7 +2128,7 @@ dependencies: "@octokit/types" "^10.0.0" -"@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": +"@octokit/request-error@^2.1.0": version "2.1.0" resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== @@ -2525,7 +2146,7 @@ deprecation "^2.0.0" once "^1.4.0" -"@octokit/request@^5.4.0", "@octokit/request@^5.6.0", "@octokit/request@^5.6.3": +"@octokit/request@^5.4.0", "@octokit/request@^5.6.0": version "5.6.3" resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz" integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== @@ -2549,16 +2170,6 @@ node-fetch "^2.6.7" universal-user-agent "^6.0.0" -"@octokit/rest@18.12.0": - version "18.12.0" - resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== - dependencies: - "@octokit/core" "^3.5.1" - "@octokit/plugin-paginate-rest" "^2.16.8" - "@octokit/plugin-request-log" "^1.0.4" - "@octokit/plugin-rest-endpoint-methods" "^5.12.0" - "@octokit/rest@^19.0.3": version "19.0.13" resolved "https://registry.npmjs.org/@octokit/rest/-/rest-19.0.13.tgz" @@ -2588,7 +2199,7 @@ dependencies: "@types/node" ">= 8" -"@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": +"@octokit/types@^6.0.3", "@octokit/types@^6.16.1": version "6.41.0" resolved "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz" integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== @@ -2615,64 +2226,6 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@repeaterjs/repeater@^3.0.4": - version "3.0.4" - resolved "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz" - integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== - "@rushstack/ts-command-line@^4.7.7": version "4.16.0" resolved "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.16.0.tgz" @@ -2683,28 +2236,6 @@ colors "~1.2.1" string-argv "~0.3.1" -"@scure/base@~1.1.0": - version "1.1.3" - resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz" - integrity sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q== - -"@scure/bip32@1.3.1": - version "1.3.1" - resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.1.tgz" - integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== - dependencies: - "@noble/curves" "~1.1.0" - "@noble/hashes" "~1.3.1" - "@scure/base" "~1.1.0" - -"@scure/bip39@1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz" - integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== - dependencies: - "@noble/hashes" "~1.3.0" - "@scure/base" "~1.1.0" - "@semiotic-labs/tap-contracts-bindings@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@semiotic-labs/tap-contracts-bindings/-/tap-contracts-bindings-1.2.1.tgz#4aa0b009b761bbb9aafb1ea0cbd89ccf7a7cb801" @@ -2818,15 +2349,6 @@ "@thi.ng/errors" "^1.3.4" "@thi.ng/random" "^2.4.8" -"@thi.ng/cache@1.0.94": - version "1.0.94" - resolved "https://registry.npmjs.org/@thi.ng/cache/-/cache-1.0.94.tgz" - integrity sha512-4APqEYyPnicFsljO5XRQWallT+v9IZLW10GZu7JUXcC9vqbWK0WP04ynLRnHK/ELKfshB9McEx3ogf8457W8Tg== - dependencies: - "@thi.ng/api" "^7.2.0" - "@thi.ng/dcons" "^2.3.34" - "@thi.ng/transducers" "^7.9.2" - "@thi.ng/checks@^2.9.11": version "2.9.11" resolved "https://registry.npmjs.org/@thi.ng/checks/-/checks-2.9.11.tgz" @@ -3012,14 +2534,6 @@ "@types/connect" "*" "@types/node" "*" -"@types/body-parser@1.19.3": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" - integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== - dependencies: - "@types/connect" "*" - "@types/node" "*" - "@types/bs58@4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" @@ -3027,11 +2541,6 @@ dependencies: base-x "^3.0.6" -"@types/caseless@*": - version "0.12.5" - resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" - integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== - "@types/connect@*": version "3.4.38" resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" @@ -3046,16 +2555,6 @@ dependencies: "@types/node" "*" -"@types/console-log-level@^1.4.0": - version "1.4.3" - resolved "https://registry.npmjs.org/@types/console-log-level/-/console-log-level-1.4.3.tgz" - integrity sha512-B6Mzad6H4RugduMX84ehFVvGM/JRAd9lZQk4a6dztB4+zcIUehIjKrbWH/nHO2+0wwx05rgyqjXBvOjAv0uL6A== - -"@types/cookiejar@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@types/cookiejar/-/cookiejar-2.1.5.tgz#14a3e83fa641beb169a2dd8422d91c3c345a9a78" - integrity sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q== - "@types/cors@2.8.14": version "2.8.14" resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.14.tgz#94eeb1c95eda6a8ab54870a3bf88854512f43a92" @@ -3100,14 +2599,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/glob@*": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== - dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" - "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -3120,11 +2611,6 @@ resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== -"@types/isomorphic-fetch@0.0.35": - version "0.0.35" - resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.35.tgz#c1c0d402daac324582b6186b91f8905340ea3361" - integrity sha512-DaZNUvLDCAnCTjgwxgiL1eQdxIKEpNLOlTNtAgnZc50bG2copGhRrFN9/PxPBuJe+tZVLCbQ7ls0xveXVRPkvw== - "@types/isomorphic-fetch@0.0.36": version "0.0.36" resolved "https://registry.yarnpkg.com/@types/isomorphic-fetch/-/isomorphic-fetch-0.0.36.tgz#3a6d8f63974baf26b10fd1314db910633108a769" @@ -3162,11 +2648,6 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/linkify-it@^5": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" - integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== - "@types/lodash.clonedeep@^4.5.7": version "4.5.7" resolved "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.7.tgz" @@ -3228,29 +2709,6 @@ resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz" integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg== -"@types/long@^4.0.0": - version "4.0.2" - resolved "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/markdown-it@^14.1.1": - version "14.1.1" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-14.1.1.tgz#06bafb7a4e3f77b62b1f308acf7df76687887e0b" - integrity sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg== - dependencies: - "@types/linkify-it" "^5" - "@types/mdurl" "^2" - -"@types/mdurl@^2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" - integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== - -"@types/methods@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@types/methods/-/methods-1.1.4.tgz#d3b7ac30ac47c91054ea951ce9eed07b1051e547" - integrity sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ== - "@types/mime@^1": version "1.3.2" resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" @@ -3261,11 +2719,6 @@ resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/minimist@^1.2.0": version "1.2.2" resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" @@ -3288,7 +2741,7 @@ resolved "https://registry.yarnpkg.com/@types/ngeohash/-/ngeohash-0.6.4.tgz#a1ba2c25c4d1ef71f067de247a61490019ea0757" integrity sha512-rr20mmx41OkWx4q5du2dv2sESR/6xH2tzScUQXwO8SiaQWa6PYTuan1nqBtA76FR9qkVfZY7nwQwZNC9StX/Ww== -"@types/node@*", "@types/node@>= 8", "@types/node@>=12.12.47", "@types/node@>=13.7.0": +"@types/node@*", "@types/node@>= 8": version "20.6.2" resolved "https://registry.npmjs.org/@types/node/-/node-20.6.2.tgz" integrity sha512-Y+/1vGBHV/cYk6OI1Na/LHzwnlNCAfU3ZNGrc1LdRe/LAIbdDPTTv/HU3M7yXN448aTVDq3eKRm2cg7iKLb8gw== @@ -3333,34 +2786,11 @@ resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== -"@types/request@^2.48.8": - version "2.48.12" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.12.tgz#0f590f615a10f87da18e9790ac94c29ec4c5ef30" - integrity sha512-G3sY+NpsA9jnwm0ixhAFQSJ3Q9JkpLZpJbI3GMv0mIAT0y3mRabYeINzal5WOChIiaTEGQYlHOKgkaM9EisWHw== - dependencies: - "@types/caseless" "*" - "@types/node" "*" - "@types/tough-cookie" "*" - form-data "^2.5.0" - "@types/retry@^0.12.0": version "0.12.2" resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz" integrity sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow== -"@types/rimraf@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8" - integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ== - dependencies: - "@types/glob" "*" - "@types/node" "*" - -"@types/semver@^7.0.0": - version "7.5.2" - resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz" - integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw== - "@types/semver@^7.5.0": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" @@ -3388,27 +2818,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/superagent@*": - version "8.1.7" - resolved "https://registry.yarnpkg.com/@types/superagent/-/superagent-8.1.7.tgz#1153819ed4db34427409a1cc58f3e2f13eeec862" - integrity sha512-NmIsd0Yj4DDhftfWvvAku482PZum4DBW7U51OvS8gvOkDDY0WT1jsVyDV3hK+vplrsYw8oDwi9QxOM7U68iwww== - dependencies: - "@types/cookiejar" "^2.1.5" - "@types/methods" "^1.1.4" - "@types/node" "*" - -"@types/supertest@2.0.12": - version "2.0.12" - resolved "https://registry.yarnpkg.com/@types/supertest/-/supertest-2.0.12.tgz#ddb4a0568597c9aadff8dbec5b2e8fddbe8692fc" - integrity sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ== - dependencies: - "@types/superagent" "*" - -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - "@types/validator@^13.7.17": version "13.11.1" resolved "https://registry.npmjs.org/@types/validator/-/validator-13.11.1.tgz" @@ -3426,13 +2835,6 @@ dependencies: "@types/node" "*" -"@types/ws@^8.0.0": - version "8.5.5" - resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== - dependencies: - "@types/node" "*" - "@types/yargs-parser@*": version "21.0.3" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" @@ -3660,65 +3062,6 @@ "@urql/core" ">=3.1.0" wonka "^6.0.0" -"@whatwg-node/events@^0.1.0": - version "0.1.1" - resolved "https://registry.npmjs.org/@whatwg-node/events/-/events-0.1.1.tgz" - integrity sha512-AyQEn5hIPV7Ze+xFoXVU3QTHXVbWPrzaOkxtENMPMuNL6VVHrp4hHfDt9nrQpjO7BgvuM95dMtkycX5M/DZR3w== - -"@whatwg-node/fetch@^0.9.0": - version "0.9.13" - resolved "https://registry.npmjs.org/@whatwg-node/fetch/-/fetch-0.9.13.tgz" - integrity sha512-PPtMwhjtS96XROnSpowCQM85gCUG2m7AXZFw0PZlGbhzx2GK7f2iOXilfgIJ0uSlCuuGbOIzfouISkA7C4FJOw== - dependencies: - "@whatwg-node/node-fetch" "^0.4.17" - urlpattern-polyfill "^9.0.0" - -"@whatwg-node/node-fetch@^0.4.17": - version "0.4.19" - resolved "https://registry.npmjs.org/@whatwg-node/node-fetch/-/node-fetch-0.4.19.tgz" - integrity sha512-AW7/m2AuweAoSXmESrYQr/KBafueScNbn2iNO0u6xFr2JZdPmYsSm5yvAXYk6yDLv+eDmSSKrf7JnFZ0CsJIdA== - dependencies: - "@whatwg-node/events" "^0.1.0" - busboy "^1.6.0" - fast-querystring "^1.1.1" - fast-url-parser "^1.1.3" - tslib "^2.3.1" - -"@wry/context@^0.6.0": - version "0.6.1" - resolved "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz" - integrity sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw== - dependencies: - tslib "^2.3.0" - -"@wry/context@^0.7.0": - version "0.7.3" - resolved "https://registry.npmjs.org/@wry/context/-/context-0.7.3.tgz" - integrity sha512-Nl8WTesHp89RF803Se9X3IiHjdmLBrIvPMaJkl+rKVJAYyPsz1TEUbu89943HpvujtSJgDUx9W4vZw3K1Mr3sA== - dependencies: - tslib "^2.3.0" - -"@wry/equality@^0.1.2": - version "0.1.11" - resolved "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz" - integrity sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA== - dependencies: - tslib "^1.9.3" - -"@wry/equality@^0.5.0": - version "0.5.6" - resolved "https://registry.npmjs.org/@wry/equality/-/equality-0.5.6.tgz" - integrity sha512-D46sfMTngaYlrH+OspKf8mIJETntFnf6Hsjb0V41jAXJ7Bx2kB8Rv8RCUujuVWYttFtHkUNp7g+FwxNQAr6mXA== - dependencies: - tslib "^2.3.0" - -"@wry/trie@^0.3.0": - version "0.3.2" - resolved "https://registry.npmjs.org/@wry/trie/-/trie-0.3.2.tgz" - integrity sha512-yRTyhWSls2OY/pYLfwff867r8ekooZ4UI+/gxot5Wj8EFwSf2rG+n+Mo/6LoLQm1TKA4GRj2+LCpbfS937dClQ== - dependencies: - tslib "^2.3.0" - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" @@ -3757,19 +3100,12 @@ abitype@^0.10.3: resolved "https://registry.npmjs.org/abitype/-/abitype-0.10.3.tgz" integrity sha512-tRN+7XIa7J9xugdbRzFv/95ka5ivR/sRe01eiWvM0HWWjHuigSZEACgKa0sj4wGuekTDtghCx+5Izk/cOi78pQ== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - abstract-logging@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz" integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== -accepts@^1.3.7, accepts@~1.3.8: +accepts@~1.3.8: version "1.3.8" resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -3809,13 +3145,6 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" -agent-base@^7.0.2: - version "7.1.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" - agentkeepalive@^4.2.1: version "4.5.0" resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz" @@ -3940,44 +3269,6 @@ apisauce@^2.0.1: dependencies: axios "^0.21.4" -apollo-link-http-common@^0.2.16: - version "0.2.16" - resolved "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz" - integrity sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg== - dependencies: - apollo-link "^1.2.14" - ts-invariant "^0.4.0" - tslib "^1.9.3" - -apollo-link-http@1.5.17: - version "1.5.17" - resolved "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz" - integrity sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg== - dependencies: - apollo-link "^1.2.14" - apollo-link-http-common "^0.2.16" - tslib "^1.9.3" - -apollo-link@^1.2.14: - version "1.2.14" - resolved "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz" - integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== - dependencies: - apollo-utilities "^1.3.0" - ts-invariant "^0.4.0" - tslib "^1.9.3" - zen-observable-ts "^0.8.21" - -apollo-utilities@^1.3.0: - version "1.3.4" - resolved "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz" - integrity sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig== - dependencies: - "@wry/equality" "^0.1.2" - fast-json-stable-stringify "^2.0.0" - ts-invariant "^0.4.0" - tslib "^1.10.0" - app-module-path@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz" @@ -4093,7 +3384,7 @@ arrify@^1.0.1: resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== -arrify@^2.0.0, arrify@^2.0.1: +arrify@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== @@ -4423,7 +3714,7 @@ base-x@^4.0.0: resolved "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz" integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== -base64-js@^1.3.0, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4441,7 +3732,7 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -basic-auth@~2.0.0, basic-auth@~2.0.1: +basic-auth@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== @@ -4463,11 +3754,6 @@ big.js@^5.2.2: resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^9.0.0, bignumber.js@^9.0.1: - version "9.1.2" - resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - bin-links@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/bin-links/-/bin-links-3.0.3.tgz" @@ -4485,7 +3771,7 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== -bindings@^1.2.1, bindings@^1.5.0: +bindings@^1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -4506,16 +3792,6 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" - integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== - bn.js@^4.11.9: version "4.12.0" resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" @@ -4624,7 +3900,7 @@ browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" -bs-logger@0.x: +bs-logger@0.x, bs-logger@^0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== @@ -4645,21 +3921,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-equal-constant-time@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-reverse@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" - integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== - buffer-writer@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz" @@ -4685,13 +3951,6 @@ builtins@^5.0.0: dependencies: semver "^7.0.0" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - byte-size@^7.0.0: version "7.0.1" resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" @@ -4767,17 +4026,6 @@ call-bind@^1.0.0: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" @@ -4812,13 +4060,6 @@ cargo-cp-artifact@0.1.8: resolved "https://registry.npmjs.org/cargo-cp-artifact/-/cargo-cp-artifact-0.1.8.tgz" integrity sha512-3j4DaoTrsCD1MRkTF2Soacii0Nx7UHCce0EwUf4fHnggwiE4fbmF2AbnfzayR36DF8KGadfh7M/Yfy625kgPlA== -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" @@ -5052,7 +4293,7 @@ columnify@^1.6.0: strip-ansi "^6.0.1" wcwidth "^1.0.0" -combined-stream@^1.0.6, combined-stream@^1.0.8: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -5079,11 +4320,6 @@ command-line-usage@^6.1.0: table-layout "^1.0.2" typical "^5.2.0" -commander@7.2.0: - version "7.2.0" - resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^2.11.0, commander@^2.20.3: version "2.20.3" resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" @@ -5102,7 +4338,7 @@ compare-func@^2.0.0: array-ify "^1.0.0" dot-prop "^5.1.0" -component-emitter@^1.2.1, component-emitter@^1.3.0: +component-emitter@^1.2.1: version "1.3.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== @@ -5135,11 +4371,6 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0: resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== -console-log-level@^1.4.0: - version "1.4.1" - resolved "https://registry.npmjs.org/console-log-level/-/console-log-level-1.4.1.tgz" - integrity sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ== - console-table-printer@^2.11.1: version "2.11.2" resolved "https://registry.npmjs.org/console-table-printer/-/console-table-printer-2.11.2.tgz" @@ -5154,7 +4385,7 @@ content-disposition@0.5.4: dependencies: safe-buffer "5.2.1" -content-type@^1.0.4, content-type@~1.0.4, content-type@~1.0.5: +content-type@~1.0.4, content-type@~1.0.5: version "1.0.5" resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== @@ -5266,11 +4497,6 @@ cookie@^0.4.1: resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== -cookiejar@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" - integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== - copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -5350,21 +4576,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypto-js@^3.1.9-1: - version "3.3.0" - resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz" - integrity sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q== - dargs@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz" integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== -dataloader@^2.2.2: - version "2.2.2" - resolved "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz" - integrity sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g== - dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" @@ -5427,7 +4643,7 @@ deep-extend@~0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@^0.1.3, deep-is@~0.1.3: +deep-is@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== @@ -5444,15 +4660,6 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" @@ -5500,12 +4707,7 @@ depd@2.0.0, depd@~2.0.0: resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -deprecation@^2.0.0, deprecation@^2.3.1: +deprecation@^2.0.0: version "2.3.1" resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== @@ -5542,7 +4744,7 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -dezalgo@^1.0.0, dezalgo@^1.0.4: +dezalgo@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== @@ -5586,7 +4788,7 @@ dot-prop@^5.1.0: dependencies: is-obj "^2.0.0" -dot-prop@^6.0.0, dot-prop@^6.0.1: +dot-prop@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== @@ -5603,17 +4805,12 @@ dottie@^2.0.6: resolved "https://registry.npmjs.org/dottie/-/dottie-2.0.6.tgz" integrity sha512-iGCHkfUc5kFekGiqhe8B/mdaurD+lakO9txNnTvKtA6PISrw86LgqHvRzWYPyoE2Ph5aMIrCw9/uko6XHTKCwA== -dset@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz" - integrity sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^4.0.0, duplexify@^4.1.1, duplexify@^4.1.2: +duplexify@^4.1.1, duplexify@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== @@ -5628,13 +4825,6 @@ eastasianwidth@^0.2.0: resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" @@ -5645,6 +4835,13 @@ ejs@^2.6.1: resolved "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz" integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + ejs@^3.1.7: version "3.1.9" resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" @@ -5723,16 +4920,6 @@ enquirer@~2.3.6: dependencies: ansi-colors "^4.1.1" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz" - integrity sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA== - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - env-paths@2.2.1, env-paths@^2.2.0: version "2.2.1" resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" @@ -5755,18 +4942,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" @@ -5809,18 +4984,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^1.13.0: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" @@ -5936,7 +5099,7 @@ eslint@8.55.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: +espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -5945,7 +5108,7 @@ espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -5964,11 +5127,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" @@ -5984,23 +5142,6 @@ etag@~1.8.1: resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: - version "2.1.2" - resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz" - integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== - dependencies: - "@noble/curves" "1.1.0" - "@noble/hashes" "1.3.1" - "@scure/bip32" "1.3.1" - "@scure/bip39" "1.2.1" - ethers@5.7.0, ethers@^5.6.0: version "5.7.0" resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.0.tgz" @@ -6037,31 +5178,11 @@ ethers@5.7.0, ethers@^5.6.0: "@ethersproject/web" "5.7.0" "@ethersproject/wordlists" "5.7.0" -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" - integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -eventid@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/eventid/-/eventid-2.0.1.tgz" - integrity sha512-sPNTqiMokAvV048P2c9+foqVJzk49o6d4e0D/sq5jog3pw+4kBgyR0gaM1FM7Mx6Kzd9dztesh9oYz1LWWOpzw== - dependencies: - uuid "^8.0.0" - evt@1.10.1: version "1.10.1" resolved "https://registry.npmjs.org/evt/-/evt-1.10.1.tgz" @@ -6157,21 +5278,6 @@ exponential-backoff@^3.1.1: resolved "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz" integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== -express-graphql@0.12.0: - version "0.12.0" - resolved "https://registry.npmjs.org/express-graphql/-/express-graphql-0.12.0.tgz" - integrity sha512-DwYaJQy0amdy3pgNtiTDuGGM2BLdj+YO2SgbKoLliCfuHv3VVTt7vNG/ZqK2hRYjtYHE2t2KB705EU94mE64zg== - dependencies: - accepts "^1.3.7" - content-type "^1.0.4" - http-errors "1.8.0" - raw-body "^2.4.1" - -express-rate-limit@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.0.1.tgz" - integrity sha512-oTIPm094gh8c7nbShl4TNLqnayzOcbDGY7dCRnFqUAvptyb0pp5231LaH34JtvVEbZlOJMiixikU5AVK8VN3FA== - express@4.18.2: version "4.18.2" resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" @@ -6224,11 +5330,6 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - external-editor@^3.0.3: version "3.1.0" resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" @@ -6259,11 +5360,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-files@^11.0.0: - version "11.0.0" - resolved "https://registry.npmjs.org/extract-files/-/extract-files-11.0.0.tgz" - integrity sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ== - extsprintf@^1.2.0: version "1.4.1" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz" @@ -6321,40 +5417,21 @@ fast-json-stringify@^2.5.2: rfdc "^1.2.0" string-similarity "^4.0.1" -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-querystring@^1.1.1: - version "1.1.2" - resolved "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz" - integrity sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg== - dependencies: - fast-decode-uri-component "^1.0.1" - fast-redact@^3.0.0: version "3.3.0" resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz" integrity sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ== -fast-safe-stringify@^2.0.8, fast-safe-stringify@^2.1.1: +fast-safe-stringify@^2.0.8: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fast-text-encoding@^1.0.0, fast-text-encoding@^1.0.3: - version "1.0.6" - resolved "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz" - integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== - -fast-url-parser@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz" - integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== - dependencies: - punycode "^1.3.2" - fastify-error@^0.3.0: version "0.3.1" resolved "https://registry.npmjs.org/fastify-error/-/fastify-error-0.3.1.tgz" @@ -6512,11 +5589,6 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" -findit2@^2.2.3: - version "2.2.3" - resolved "https://registry.npmjs.org/findit2/-/findit2-2.2.3.tgz" - integrity sha512-lg/Moejf4qXovVutL0Lz4IsaPoNYMuxt4PA0nGqFxnJ1CTTGGlEO2wKgoDpwknhvZ8k4Q2F+eesgkLbG2Mxfog== - flat-cache@^3.0.4: version "3.2.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" @@ -6566,15 +5638,6 @@ foreground-child@^3.1.0: cross-spawn "^7.0.0" signal-exit "^4.0.1" -form-data@^2.5.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" - integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - form-data@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" @@ -6584,16 +5647,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -formidable@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-2.1.2.tgz#fa973a2bec150e4ce7cac15589d7a25fc30ebd89" - integrity sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g== - dependencies: - dezalgo "^1.0.4" - hexoid "^1.0.0" - once "^1.4.0" - qs "^6.11.0" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" @@ -6731,62 +5784,6 @@ gauge@^4.0.3: strip-ansi "^6.0.1" wide-align "^1.1.5" -gaxios@^4.0.0: - version "4.3.3" - resolved "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz" - integrity sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA== - dependencies: - abort-controller "^3.0.0" - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.7" - -gaxios@^5.0.0, gaxios@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-5.1.3.tgz#f7fa92da0fe197c846441e5ead2573d4979e9013" - integrity sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA== - dependencies: - extend "^3.0.2" - https-proxy-agent "^5.0.0" - is-stream "^2.0.0" - node-fetch "^2.6.9" - -gaxios@^6.0.0, gaxios@^6.1.1: - version "6.7.0" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.0.tgz#37b7c5961cb67d8d4b0ae8110dcd83cc6791eb6d" - integrity sha512-DSrkyMTfAnAm4ks9Go20QGOcXEyW/NmZhvTYBU2rb4afBB393WIMQPWPEDMl/k8xqiNN9HYq2zao3oWXsdl2Tg== - dependencies: - extend "^3.0.2" - https-proxy-agent "^7.0.1" - is-stream "^2.0.0" - node-fetch "^2.6.9" - uuid "^10.0.0" - -gcp-metadata@^4.0.0: - version "4.3.1" - resolved "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz" - integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== - dependencies: - gaxios "^4.0.0" - json-bigint "^1.0.0" - -gcp-metadata@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-5.3.0.tgz#6f45eb473d0cb47d15001476b48b663744d25408" - integrity sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w== - dependencies: - gaxios "^5.0.0" - json-bigint "^1.0.0" - -gcp-metadata@^6.0.0, gcp-metadata@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.0.tgz#9b0dd2b2445258e7597f2024332d20611cbd6b8c" - integrity sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg== - dependencies: - gaxios "^6.0.0" - json-bigint "^1.0.0" - gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -6807,17 +5804,6 @@ get-intrinsic@^1.0.2: has-proto "^1.0.1" has-symbols "^1.0.3" -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -6980,7 +5966,7 @@ glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.0, glob@^8.0.1: +glob@^8.0.1: version "8.1.0" resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== @@ -7065,69 +6051,7 @@ gluegun@4.7.0: which "^2.0.0" yargs-parser "^16.1.0" -google-auth-library@^8.0.2: - version "8.9.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-8.9.0.tgz#15a271eb2ec35d43b81deb72211bd61b1ef14dd0" - integrity sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg== - dependencies: - arrify "^2.0.0" - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - fast-text-encoding "^1.0.0" - gaxios "^5.0.0" - gcp-metadata "^5.3.0" - gtoken "^6.1.0" - jws "^4.0.0" - lru-cache "^6.0.0" - -google-auth-library@^9.0.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.11.0.tgz#bd6da364bcde4e0cc4ed70a0e0df5112b6a671dd" - integrity sha512-epX3ww/mNnhl6tL45EQ/oixsY8JLEgUFoT4A5E/5iAR4esld9Kqv6IJGk7EmGuOgDvaarwF95hU2+v7Irql9lw== - dependencies: - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - gaxios "^6.1.1" - gcp-metadata "^6.1.0" - gtoken "^7.0.0" - jws "^4.0.0" - -google-gax@^3.5.2: - version "3.6.1" - resolved "https://registry.yarnpkg.com/google-gax/-/google-gax-3.6.1.tgz#02c78fc496f5adf86f2ca9145545f4b6575f6118" - integrity sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w== - dependencies: - "@grpc/grpc-js" "~1.8.0" - "@grpc/proto-loader" "^0.7.0" - "@types/long" "^4.0.0" - "@types/rimraf" "^3.0.2" - abort-controller "^3.0.0" - duplexify "^4.0.0" - fast-text-encoding "^1.0.3" - google-auth-library "^8.0.2" - is-stream-ended "^0.1.4" - node-fetch "^2.6.1" - object-hash "^3.0.0" - proto3-json-serializer "^1.0.0" - protobufjs "7.2.4" - protobufjs-cli "1.1.1" - retry-request "^5.0.0" - -google-p12-pem@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-4.0.1.tgz#82841798253c65b7dc2a4e5fe9df141db670172a" - integrity sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ== - dependencies: - node-forge "^1.3.1" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.4, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -7137,50 +6061,18 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -graphql-tag@2.12.6, graphql-tag@^2.12.3: +graphql-tag@2.12.6: version "2.12.6" resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" -graphql-tools@8.2.6: - version "8.2.6" - resolved "https://registry.npmjs.org/graphql-tools/-/graphql-tools-8.2.6.tgz" - integrity sha512-nbEbzkD/z8dmPxa+VlmP4+KmNl3wDXjsWEBHo8VZInEsHDk6w8Cm7lfy1lOlNe30ZXi7T4+fvqLIMQ2gSse+1Q== - dependencies: - "@graphql-tools/schema" "8.3.8" - tslib "~2.3.0" - optionalDependencies: - "@apollo/client" "~3.2.5 || ~3.3.0 || ~3.4.0 || ~3.5.0" - -graphql-ws@^5.14.0: - version "5.14.0" - resolved "https://registry.npmjs.org/graphql-ws/-/graphql-ws-5.14.0.tgz" - integrity sha512-itrUTQZP/TgswR4GSSYuwWUzrE/w5GhbwM2GX3ic2U7aw33jgEsayfIlvaj7/GcIvZgNMzsPTrE5hqPuFUiE5g== - graphql@16.8.0: version "16.8.0" resolved "https://registry.npmjs.org/graphql/-/graphql-16.8.0.tgz" integrity sha512-0oKGaR+y3qcS5mCu1vb7KG+a89vjn06C7Ihq/dDl3jA+A8B3TKomvi3CiEcVLJQGalbu8F52LxkOym7U5sSfbg== -gtoken@^6.1.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-6.1.2.tgz#aeb7bdb019ff4c3ba3ac100bbe7b6e74dce0e8bc" - integrity sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ== - dependencies: - gaxios "^5.0.1" - google-p12-pem "^4.0.0" - jws "^4.0.0" - -gtoken@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" - integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== - dependencies: - gaxios "^6.0.0" - jws "^4.0.0" - handlebars@^4.7.7: version "4.7.8" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" @@ -7215,13 +6107,6 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - has-proto@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" @@ -7295,11 +6180,6 @@ helmet@7.0.0: resolved "https://registry.npmjs.org/helmet/-/helmet-7.0.0.tgz" integrity sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ== -hexoid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18" - integrity sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g== - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" @@ -7309,13 +6189,6 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoist-non-react-statics@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -7350,11 +6223,6 @@ hosted-git-info@^5.0.0: dependencies: lru-cache "^7.5.1" -html-entities@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -7365,17 +6233,6 @@ http-cache-semantics@^4.1.0, http-cache-semantics@^4.1.1: resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== -http-errors@1.8.0: - version "1.8.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz" - integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" @@ -7404,14 +6261,6 @@ https-proxy-agent@^5.0.0: agent-base "6" debug "4" -https-proxy-agent@^7.0.1: - version "7.0.5" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== - dependencies: - agent-base "^7.0.2" - debug "4" - human-signals@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" @@ -7704,11 +6553,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: dependencies: is-extglob "^2.1.1" -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" - integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== - is-interactive@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" @@ -7792,11 +6636,6 @@ is-ssh@^1.4.0: dependencies: protocols "^2.0.1" -is-stream-ended@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz" - integrity sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" @@ -7861,11 +6700,6 @@ isomorphic-fetch@3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isomorphic-ws@5.0.0, isomorphic-ws@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz" - integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== - isomorphic-ws@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz" @@ -8352,39 +7186,11 @@ js-yaml@^3.10.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js2xmlparser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" - integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== - dependencies: - xmlcreate "^2.0.4" - jsbi@^3.1.1: version "3.2.5" resolved "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz" integrity sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ== -jsdoc@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.3.tgz#bfee86c6a82f6823e12b5e8be698fd99ae46c061" - integrity sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw== - dependencies: - "@babel/parser" "^7.20.15" - "@jsdoc/salty" "^0.2.1" - "@types/markdown-it" "^14.1.1" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.2" - klaw "^3.0.0" - markdown-it "^14.1.0" - markdown-it-anchor "^8.6.7" - marked "^4.0.10" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - underscore "~1.13.2" - jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -8395,13 +7201,6 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz" - integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== - dependencies: - bignumber.js "^9.0.0" - json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -8488,23 +7287,6 @@ just-diff@^5.0.1: resolved "https://registry.npmjs.org/just-diff/-/just-diff-5.2.0.tgz" integrity sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw== -jwa@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/jwa/-/jwa-2.0.0.tgz" - integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== - dependencies: - buffer-equal-constant-time "1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - keyv@^4.5.3: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" @@ -8531,13 +7313,6 @@ kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -8585,14 +7360,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - libnpmaccess@^6.0.3: version "6.0.4" resolved "https://registry.npmjs.org/libnpmaccess/-/libnpmaccess-6.0.4.tgz" @@ -8634,13 +7401,6 @@ lines-and-columns@~2.0.3: resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz" integrity sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w== -linkify-it@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" - integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== - dependencies: - uc.micro "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" @@ -8728,7 +7488,7 @@ lodash.mapvalues@^4.6.0: resolved "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz" integrity sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ== -lodash.memoize@4.x: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== @@ -8763,11 +7523,6 @@ lodash.snakecase@^4.1.1: resolved "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz" integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - lodash.startcase@^4.4.0: version "4.4.0" resolved "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz" @@ -8833,12 +7588,7 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -long@^5.0.0: - version "5.2.3" - resolved "https://registry.npmjs.org/long/-/long-5.2.3.tgz" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -loose-envify@^1.0.0, loose-envify@^1.4.0: +loose-envify@^1.0.0: version "1.4.0" resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -8896,7 +7646,7 @@ make-dir@^4.0.0: dependencies: semver "^7.5.3" -make-error@1.x, make-error@^1.1.1: +make-error@1.x, make-error@^1.1.1, make-error@^1.3.6: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== @@ -8973,38 +7723,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" -markdown-it-anchor@^8.6.7: - version "8.6.7" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz#ee6926daf3ad1ed5e4e3968b1740eef1c6399634" - integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== - -markdown-it@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" - integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== - dependencies: - argparse "^2.0.1" - entities "^4.4.0" - linkify-it "^5.0.0" - mdurl "^2.0.0" - punycode.js "^2.3.1" - uc.micro "^2.1.0" - -marked@^4.0.10: - version "4.3.0" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" - integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== - math-random@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== -mdurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" - integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== - media-typer@0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" @@ -9042,32 +7765,11 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkletreejs@^0.2.13: - version "0.2.32" - resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.2.32.tgz" - integrity sha512-TostQBiwYRIwSE5++jGmacu3ODcKAgqb0Y/pnIohXS7sWxh1gCkSptbmF1a43faehRDpcHf7J/kv0Ml2D/zblQ== - dependencies: - bignumber.js "^9.0.1" - buffer-reverse "^1.0.1" - crypto-js "^3.1.9-1" - treeify "^1.1.0" - web3-utils "^1.3.4" - -meros@^1.2.1: - version "1.3.0" - resolved "https://registry.npmjs.org/meros/-/meros-1.3.0.tgz" - integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== - -methods@^1.1.2, methods@~1.1.2: +methods@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -9131,11 +7833,6 @@ mime@1.6.0: resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -mime@2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" @@ -9350,17 +8047,6 @@ morgan@1.10.0: on-finished "~2.3.0" on-headers "~1.0.2" -morgan@1.9.1: - version "1.9.1" - resolved "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz" - integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA== - dependencies: - basic-auth "~2.0.0" - debug "2.6.9" - depd "~1.1.2" - on-finished "~2.3.0" - on-headers "~1.0.1" - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -9397,11 +8083,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== -nan@^2.17.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3" - integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9439,33 +8120,18 @@ ngeohash@0.6.3: resolved "https://registry.npmjs.org/ngeohash/-/ngeohash-0.6.3.tgz" integrity sha512-kltF0cOxgx1AbmVzKxYZaoB0aj7mOxZeHaerEtQV0YaqnkXNq26WWqMmJ6lTqShYxVRWZ/mwvvTrNeOwdslWiw== -nock@13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.3.3.tgz#179759c07d3f88ad3e794ace885629c1adfd3fe7" - integrity sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - lodash "^4.17.21" - propagate "^2.0.0" - node-addon-api@^3.2.1: version "3.2.1" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.6.9: +node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" -node-forge@^1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" - integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== - node-gyp-build@^4.3.0: version "4.6.1" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz" @@ -9493,14 +8159,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-pre-gyp-github@1.4.4: - version "1.4.4" - resolved "https://registry.npmjs.org/node-pre-gyp-github/-/node-pre-gyp-github-1.4.4.tgz" - integrity sha512-oE9JD1aXRi4+1jSH7Q+ybEhfujW5bJ66n4YMGpaUp/k2/X/8i09ouK1seznf3wOagcKjytRJCkf71DdEJx2zhA== - dependencies: - "@octokit/rest" "18.12.0" - commander "7.2.0" - node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -9672,14 +8330,6 @@ npmlog@^6.0.0, npmlog@^6.0.2: gauge "^4.0.3" set-blocking "^2.0.0" -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" - integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - nx@15.9.7, "nx@>=14.8.6 < 16": version "15.9.7" resolved "https://registry.npmjs.org/nx/-/nx-15.9.7.tgz" @@ -9745,16 +8395,6 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - object-inspect@^1.9.0: version "1.12.3" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" @@ -9787,7 +8427,7 @@ on-exit-leak-free@^0.2.0: resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz" integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== -on-finished@2.4.1, on-finished@^2.3.0: +on-finished@2.4.1: version "2.4.1" resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== @@ -9801,7 +8441,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -on-headers@~1.0.1, on-headers@~1.0.2: +on-headers@~1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== @@ -9829,26 +8469,6 @@ open@^8.4.0: is-docker "^2.1.1" is-wsl "^2.2.0" -optimism@^0.16.1: - version "0.16.2" - resolved "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz" - integrity sha512-zWNbgWj+3vLEjZNIh/okkY2EUfX+vB9TJopzIZwT1xxaMqC5hRLLraePod4c5n4He08xuXNH+zhKFFCu390wiQ== - dependencies: - "@wry/context" "^0.7.0" - "@wry/trie" "^0.3.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - optionator@^0.9.3: version "0.9.4" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" @@ -9926,13 +8546,6 @@ p-finally@^2.0.0: resolved "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz" integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== -p-limit@3.1.0, p-limit@^3.0.0, p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" @@ -9947,6 +8560,13 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" @@ -10088,11 +8708,6 @@ parse-conflict-json@^2.0.1: just-diff "^5.0.1" just-diff-apply "^5.2.0" -parse-duration@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz" - integrity sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ== - parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" @@ -10121,11 +8736,6 @@ parse-json@^5.0.0, parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse-ms@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz" - integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== - parse-path@^7.0.0: version "7.0.0" resolved "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz" @@ -10415,31 +9025,11 @@ postgres-interval@^1.1.0: dependencies: xtend "^4.0.0" -pprof@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pprof/-/pprof-4.0.0.tgz#81c94be27aa8da44e4941f2592a8225359df006e" - integrity sha512-Yhfk7Y0G1MYsy97oXxmSG5nvbM1sCz9EALiNhW/isAv5Xf7svzP+1RfGeBlS6mLSgRJvgSLh6Mi5DaisQuPttw== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.9" - bindings "^1.2.1" - delay "^5.0.0" - findit2 "^2.2.3" - nan "^2.17.0" - p-limit "^3.0.0" - protobufjs "~7.2.4" - source-map "~0.8.0-beta.0" - split "^1.0.1" - prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" @@ -10464,13 +9054,6 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-ms@^7.0.0: - version "7.0.1" - resolved "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz" - integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== - dependencies: - parse-ms "^2.1.0" - private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -10541,120 +9124,11 @@ promzard@^0.3.0: dependencies: read "1" -prop-types@^15.7.2: - version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - proto-list@~1.2.1: version "1.2.4" resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== -proto3-json-serializer@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/proto3-json-serializer/-/proto3-json-serializer-1.1.1.tgz#1b5703152b6ce811c5cdcc6468032caf53521331" - integrity sha512-AwAuY4g9nxx0u52DnSMkqqgyLHaW/XaPLtaAo3y/ZCfeaQB/g4YDH4kb8Wc/mWzWvu0YjOznVnfn373MVZZrgw== - dependencies: - protobufjs "^7.0.0" - -protobufjs-cli@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/protobufjs-cli/-/protobufjs-cli-1.1.1.tgz#f531201b1c8c7772066aa822bf9a08318b24a704" - integrity sha512-VPWMgIcRNyQwWUv8OLPyGQ/0lQY/QTQAVN5fh+XzfDwsVw1FZ2L3DM/bcBf8WPiRz2tNpaov9lPZfNcmNo6LXA== - dependencies: - chalk "^4.0.0" - escodegen "^1.13.0" - espree "^9.0.0" - estraverse "^5.1.0" - glob "^8.0.0" - jsdoc "^4.0.0" - minimist "^1.2.0" - semver "^7.1.2" - tmp "^0.2.1" - uglify-js "^3.7.7" - -protobufjs@7.2.4: - version "7.2.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae" - integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -protobufjs@^7.0.0: - version "7.3.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -protobufjs@^7.2.4: - version "7.2.5" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz" - integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -protobufjs@~7.2.4: - version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - protocols@^2.0.0, protocols@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz" @@ -10690,12 +9164,7 @@ pumpify@^2.0.1: inherits "^2.0.3" pump "^3.0.0" -punycode.js@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" - integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== - -punycode@2.3.1, punycode@^1.3.2, punycode@^2.1.0: +punycode@2.3.1, punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== @@ -10717,13 +9186,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.11.0: - version "6.12.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" - integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== - dependencies: - side-channel "^1.0.6" - queue-microtask@^1.1.2, queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -10760,13 +9222,6 @@ randomatic@^3.0.0: kind-of "^6.0.0" math-random "^1.0.1" -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" @@ -10782,7 +9237,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2, raw-body@^2.4.1: +raw-body@2.5.2: version "2.5.2" resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -10792,11 +9247,6 @@ raw-body@2.5.2, raw-body@^2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - react-is@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" @@ -10842,16 +9292,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@5.2.0, read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" @@ -10861,6 +9301,16 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + read@1, read@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/read/-/read-1.0.7.tgz" @@ -10984,13 +9434,6 @@ require-from-string@^2.0.2: resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -requizzle@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" - integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== - dependencies: - lodash "^4.17.21" - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -11059,23 +9502,6 @@ retry-as-promised@^7.0.4: resolved "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-7.0.4.tgz" integrity sha512-XgmCoxKWkDofwH8WddD0w85ZfqYz+ZHlr5yo+3YUCfycWawU56T5ckWXsScsj5B8tqUcIG67DxXByo3VUgiAdA== -retry-request@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-5.0.2.tgz#143d85f90c755af407fcc46b7166a4ba520e44da" - integrity sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ== - dependencies: - debug "^4.1.1" - extend "^3.0.2" - -retry-request@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.2.tgz#60bf48cfb424ec01b03fca6665dee91d06dd95f3" - integrity sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== - dependencies: - "@types/request" "^2.48.8" - extend "^3.0.2" - teeny-request "^9.0.0" - retry@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz" @@ -11141,7 +9567,7 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -11202,16 +9628,16 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.1.2: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.3.8, semver@^7.5.3: +semver@^7.5.3: version "7.6.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.1.tgz#60bfe090bf907a25aa8119a72b9f90ef7ca281b2" integrity sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA== +semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + send@0.18.0: version "0.18.0" resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" @@ -11278,18 +9704,6 @@ set-cookie-parser@^2.4.1: resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz" integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ== -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -11333,16 +9747,6 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -side-channel@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -11499,18 +9903,11 @@ source-map@^0.5.6, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@~0.8.0-beta.0: - version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" - integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== - dependencies: - whatwg-url "^7.0.0" - spdx-correct@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" @@ -11556,7 +9953,7 @@ split2@^4.0.0, split2@^4.1.0: resolved "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== -split@^1.0.0, split@^1.0.1: +split@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== @@ -11602,28 +9999,11 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.5.0 < 2": - version "1.5.0" - resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -stream-events@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz" - integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== - dependencies: - stubs "^3.0.0" - stream-shift@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - string-argv@~0.3.1: version "0.3.2" resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" @@ -11746,13 +10126,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" - integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== - dependencies: - is-hex-prefixed "1.0.0" - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" @@ -11760,7 +10133,7 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -11774,35 +10147,6 @@ strong-log-transformer@^2.1.0: minimist "^1.2.0" through "^2.3.4" -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz" - integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== - -superagent@^8.0.5: - version "8.1.2" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-8.1.2.tgz#03cb7da3ec8b32472c9d20f6c2a57c7f3765f30b" - integrity sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA== - dependencies: - component-emitter "^1.3.0" - cookiejar "^2.1.4" - debug "^4.3.4" - fast-safe-stringify "^2.1.1" - form-data "^4.0.0" - formidable "^2.1.2" - methods "^1.1.2" - mime "2.6.0" - qs "^6.11.0" - semver "^7.3.8" - -supertest@6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/supertest/-/supertest-6.3.3.tgz#42f4da199fee656106fd422c094cf6c9578141db" - integrity sha512-EMCG6G8gDu5qEqRQ3JjjPs6+FYT1a7Hv5ApHvtSghmOFJYtsU5S+pSb6Y2EUeCEY3CmEL3mmQ8YWlPOzQomabA== - dependencies: - methods "^1.1.2" - superagent "^8.0.5" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -11834,11 +10178,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-observable@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz" - integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== - table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -11890,28 +10229,6 @@ tdigest@^0.1.1: dependencies: bintrees "1.0.2" -teeny-request@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-8.0.3.tgz#5cb9c471ef5e59f2fca8280dc3c5909595e6ca24" - integrity sha512-jJZpA5He2y52yUhA7pyAGZlgQpcB+xLjcN0eUFxr9c8hP/H7uOXbBNVo/O0C/xVfJLJs680jvkFgVJEEvk9+ww== - dependencies: - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.1" - stream-events "^1.0.5" - uuid "^9.0.0" - -teeny-request@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" - integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== - dependencies: - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.9" - stream-events "^1.0.5" - uuid "^9.0.0" - temp-dir@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" @@ -12000,11 +10317,6 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -tmp@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== - tmp@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" @@ -12064,11 +10376,6 @@ toformat@^2.0.0: resolved "https://registry.npmjs.org/toformat/-/toformat-2.0.0.tgz" integrity sha512-03SWBVop6nU8bpyZCx7SodpYznbZF5R4ljwNLBcTQzKOD9xuihRo/psX58llS1BMFhhAI08H3luot5GoXJz2pQ== -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - toidentifier@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" @@ -12079,23 +10386,11 @@ toposort-class@^1.0.1: resolved "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" integrity sha512-OsLcGGbYF3rMjPUf8oKktyvCiUxSbqMMS39m33MAjLTC1DVIH6x3WSt63/M77ihI09+Sdfk1AXvfhCEeUmC7mg== -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== - dependencies: - punycode "^2.1.0" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -treeify@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" - integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== - treeverse@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/treeverse/-/treeverse-2.0.0.tgz" @@ -12136,20 +10431,6 @@ ts-essentials@^7.0.1: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== -ts-invariant@^0.4.0: - version "0.4.4" - resolved "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz" - integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== - dependencies: - tslib "^1.9.3" - -ts-invariant@^0.9.4: - version "0.9.4" - resolved "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.9.4.tgz" - integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== - dependencies: - tslib "^2.1.0" - ts-jest@29.1.1: version "29.1.1" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" @@ -12164,6 +10445,21 @@ ts-jest@29.1.1: semver "^7.5.3" yargs-parser "^21.0.1" +ts-jest@^29.2.5: + version "29.2.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" + integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== + dependencies: + bs-logger "^0.2.6" + ejs "^3.1.10" + fast-json-stable-stringify "^2.1.0" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "^4.1.2" + make-error "^1.3.6" + semver "^7.6.3" + yargs-parser "^21.1.1" + ts-node@10.7.0: version "10.7.0" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" @@ -12192,21 +10488,16 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.10.0, tslib@^1.9.3: +tslib@^1.9.3: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.5.0: +tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0: version "2.6.2" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -tslib@~2.3.0: - version "2.3.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -12214,13 +10505,6 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" @@ -12317,21 +10601,11 @@ typical@^5.2.0: resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== -uc.micro@^2.0.0, uc.micro@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" - integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== - uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -uglify-js@^3.7.7: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - umzug@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/umzug/-/umzug-3.0.0.tgz" @@ -12345,7 +10619,7 @@ umzug@3.0.0: type-fest "^2.0.0" verror "^1.10.0" -underscore@^1.13.1, underscore@~1.13.2: +underscore@^1.13.1: version "1.13.6" resolved "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== @@ -12441,11 +10715,6 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== -urlpattern-polyfill@^9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-9.0.0.tgz" - integrity sha512-WHN8KDQblxd32odxeIgo83rdVDE2bvdkb86it7bMhYZwWKJz0+O0RK/eZiHYnM+zgt/U7hAHOlCQGfjjvSkw2g== - use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" @@ -12456,11 +10725,6 @@ user-home@^1.1.1: resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" integrity sha512-aggiKfEEubv3UwRNqTzLInZpAOmKzwdHqEBmW/hBA/mt99eg+b4VrX6i+IRLxU8+WJYfa33rGwRseg4eElUgsQ== -utf8@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" @@ -12471,21 +10735,11 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - -uuid@^8.0.0, uuid@^8.3.2: +uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - v8-compile-cache-lib@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" @@ -12539,16 +10793,6 @@ validator@^13.9.0: resolved "https://registry.npmjs.org/validator/-/validator-13.11.0.tgz" integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== -value-or-promise@1.0.11: - version "1.0.11" - resolved "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz" - integrity sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg== - -value-or-promise@^1.0.11, value-or-promise@^1.0.12: - version "1.0.12" - resolved "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.12.tgz" - integrity sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q== - vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" @@ -12582,30 +10826,11 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -web3-utils@^1.3.4: - version "1.10.2" - resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.2.tgz" - integrity sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow== - dependencies: - "@ethereumjs/util" "^8.1.0" - bn.js "^5.2.1" - ethereum-bloom-filters "^1.0.6" - ethereum-cryptography "^2.1.2" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== - whatwg-fetch@^3.4.1: version "3.6.19" resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz" @@ -12619,15 +10844,6 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" - which@^2.0.0, which@^2.0.1, which@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" @@ -12654,7 +10870,7 @@ wonka@^6.0.0, wonka@^6.1.2: resolved "https://registry.yarnpkg.com/wonka/-/wonka-6.3.4.tgz#76eb9316e3d67d7febf4945202b5bdb2db534594" integrity sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg== -word-wrap@^1.2.5, word-wrap@~1.2.3: +word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== @@ -12778,26 +10994,11 @@ ws@7.4.6: resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@8.14.1: - version "8.14.1" - resolved "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz" - integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== - ws@^7.4.5: version "7.5.9" resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== -ws@^8.12.0, ws@^8.13.0: - version "8.14.2" - resolved "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz" - integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== - -xmlcreate@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" - integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== - xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" @@ -12882,7 +11083,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.6.2, yargs@^17.7.2: +yargs@^17.3.1, yargs@^17.6.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -12905,26 +11106,6 @@ yocto-queue@^0.1.0: resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zen-observable-ts@^0.8.21: - version "0.8.21" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz" - integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== - dependencies: - tslib "^1.9.3" - zen-observable "^0.8.0" - -zen-observable-ts@^1.2.0: - version "1.2.5" - resolved "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz" - integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== - dependencies: - zen-observable "0.8.15" - -zen-observable@0.8.15, zen-observable@^0.8.0: - version "0.8.15" - resolved "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz" - integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== - zod-validation-error@^1.3.0: version "1.5.0" resolved "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-1.5.0.tgz"