diff --git a/.github/workflows/check-build-test.yaml b/.github/workflows/check-build-test.yaml index 63c6e8a..ce237a5 100644 --- a/.github/workflows/check-build-test.yaml +++ b/.github/workflows/check-build-test.yaml @@ -15,44 +15,31 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: extractions/setup-just@v2 - uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' - run: npm ci - - run: just check + - run: npx prettier -c "**/*.(js|jsx|mjs|ts|tsx)" + - run: npx tsc -p client-vms/tsconfig.json + - run: npx eslint -c eslint.config.mjs - test: + test-client-vms: + if: false needs: check runs-on: ubuntu-latest - strategy: - matrix: - package: [ client-core, client-payments, client-vms ] steps: - uses: actions/checkout@v4 - uses: extractions/setup-just@v2 - uses: actions/setup-node@v4 with: - node-version: '22.5' + node-version: '22' cache: 'npm' - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - - uses: browser-actions/setup-chrome@v1 - - name: Install dependencies - run: | - sudo apt update - sudo apt install -y protobuf-compiler curl - npm ci - uses: NillionNetwork/nillion-setup-action@main with: version: 'latest' - run: | - just test-${{ matrix.package }}-ci - - uses: actions/upload-artifact@v3 - if: ${{ always() }} - with: - name: ${{ matrix.package }}-logs - path: packages/fixture/logs - retention-days: 4 + nillion-devnet --seed test-fixture & + sleep 10 + just test-client-vms + killall -9 nillion-devnet diff --git a/.gitignore b/.gitignore index c873cc2..9306200 100644 --- a/.gitignore +++ b/.gitignore @@ -2,17 +2,13 @@ .idea .vscode -packages/client-payments/src/proto/nilchain.ts # generated protobuf codec -!packages/client-wasm/dist -docs -logs +packages/**/gen-proto +!client-wasm/dist -# npm related artefacts node_modules dist -dist-test +**/coverage .next -# python related artefacts __pycache__ venv diff --git a/.prettierignore b/.prettierignore index a44cd3e..45dca51 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ -packages/wasm/dist -packages/client-payments/src/gen-proto +**/dist +**/gen-proto +**/coverage diff --git a/packages/client-core/LICENSE b/client-react-hooks/LICENSE similarity index 100% rename from packages/client-core/LICENSE rename to client-react-hooks/LICENSE diff --git a/packages/client-react-hooks/README.md b/client-react-hooks/README.md similarity index 100% rename from packages/client-react-hooks/README.md rename to client-react-hooks/README.md diff --git a/packages/client-react-hooks/esbuild.config.mjs b/client-react-hooks/esbuild.config.mjs similarity index 79% rename from packages/client-react-hooks/esbuild.config.mjs rename to client-react-hooks/esbuild.config.mjs index 9fe5ae8..4a2ae70 100644 --- a/packages/client-react-hooks/esbuild.config.mjs +++ b/client-react-hooks/esbuild.config.mjs @@ -1,4 +1,4 @@ -import { main } from "../resources/esbuild.base.config.mjs"; +import { main } from "../esbuild.base.config.mjs"; const config = { bundle: true, diff --git a/packages/client-react-hooks/package.json b/client-react-hooks/package.json similarity index 100% rename from packages/client-react-hooks/package.json rename to client-react-hooks/package.json diff --git a/packages/client-react-hooks/src/cache-key.ts b/client-react-hooks/src/cache-key.ts similarity index 100% rename from packages/client-react-hooks/src/cache-key.ts rename to client-react-hooks/src/cache-key.ts diff --git a/packages/client-react-hooks/src/index.ts b/client-react-hooks/src/index.ts similarity index 100% rename from packages/client-react-hooks/src/index.ts rename to client-react-hooks/src/index.ts diff --git a/packages/client-react-hooks/src/logging.ts b/client-react-hooks/src/logging.ts similarity index 100% rename from packages/client-react-hooks/src/logging.ts rename to client-react-hooks/src/logging.ts diff --git a/packages/client-react-hooks/src/nil-hook-base.ts b/client-react-hooks/src/nil-hook-base.ts similarity index 100% rename from packages/client-react-hooks/src/nil-hook-base.ts rename to client-react-hooks/src/nil-hook-base.ts diff --git a/packages/client-react-hooks/src/nillion-provider.tsx b/client-react-hooks/src/nillion-provider.tsx similarity index 98% rename from packages/client-react-hooks/src/nillion-provider.tsx rename to client-react-hooks/src/nillion-provider.tsx index 44361e3..dcd751e 100644 --- a/packages/client-react-hooks/src/nillion-provider.tsx +++ b/client-react-hooks/src/nillion-provider.tsx @@ -87,7 +87,7 @@ export const NillionProvider: React.FC< }, []); const context: NillionContext = { - client: nillionClient, + chainClient: nillionClient, logout: async () => { await nillionClient.disconnect(); }, diff --git a/packages/client-react-hooks/src/use-nil-compute-output.ts b/client-react-hooks/src/use-nil-compute-output.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-compute-output.ts rename to client-react-hooks/src/use-nil-compute-output.ts diff --git a/packages/client-react-hooks/src/use-nil-compute.ts b/client-react-hooks/src/use-nil-compute.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-compute.ts rename to client-react-hooks/src/use-nil-compute.ts diff --git a/packages/client-react-hooks/src/use-nil-delete-value.ts b/client-react-hooks/src/use-nil-delete-value.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-delete-value.ts rename to client-react-hooks/src/use-nil-delete-value.ts diff --git a/packages/client-react-hooks/src/use-nil-fetch-store-acl.ts b/client-react-hooks/src/use-nil-fetch-store-acl.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-fetch-store-acl.ts rename to client-react-hooks/src/use-nil-fetch-store-acl.ts diff --git a/packages/client-react-hooks/src/use-nil-fetch-value.ts b/client-react-hooks/src/use-nil-fetch-value.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-fetch-value.ts rename to client-react-hooks/src/use-nil-fetch-value.ts diff --git a/packages/client-react-hooks/src/use-nil-set-store-acl.ts b/client-react-hooks/src/use-nil-set-store-acl.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-set-store-acl.ts rename to client-react-hooks/src/use-nil-set-store-acl.ts diff --git a/packages/client-react-hooks/src/use-nil-store-program.ts b/client-react-hooks/src/use-nil-store-program.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-store-program.ts rename to client-react-hooks/src/use-nil-store-program.ts diff --git a/packages/client-react-hooks/src/use-nil-store-value.ts b/client-react-hooks/src/use-nil-store-value.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-store-value.ts rename to client-react-hooks/src/use-nil-store-value.ts diff --git a/packages/client-react-hooks/src/use-nil-store-values.ts b/client-react-hooks/src/use-nil-store-values.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-store-values.ts rename to client-react-hooks/src/use-nil-store-values.ts diff --git a/packages/client-react-hooks/src/use-nil-update-value.ts b/client-react-hooks/src/use-nil-update-value.ts similarity index 100% rename from packages/client-react-hooks/src/use-nil-update-value.ts rename to client-react-hooks/src/use-nil-update-value.ts diff --git a/packages/client-react-hooks/src/use-nillion-auth.ts b/client-react-hooks/src/use-nillion-auth.ts similarity index 100% rename from packages/client-react-hooks/src/use-nillion-auth.ts rename to client-react-hooks/src/use-nillion-auth.ts diff --git a/packages/client-react-hooks/src/use-nillion.ts b/client-react-hooks/src/use-nillion.ts similarity index 100% rename from packages/client-react-hooks/src/use-nillion.ts rename to client-react-hooks/src/use-nillion.ts diff --git a/packages/client-react-hooks/tsconfig.json b/client-react-hooks/tsconfig.json similarity index 54% rename from packages/client-react-hooks/tsconfig.json rename to client-react-hooks/tsconfig.json index 036e1a9..45f003b 100644 --- a/packages/client-react-hooks/tsconfig.json +++ b/client-react-hooks/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "jsx": "react" } diff --git a/client-vms/.env b/client-vms/.env new file mode 100644 index 0000000..e0746ee --- /dev/null +++ b/client-vms/.env @@ -0,0 +1,20 @@ +NILLION_CLUSTER_ID=e0bbd78d-4b10-4fb0-b40a-70f895d2db43 +NILLION_BOOTNODE_MULTIADDRESS=/ip4/127.0.0.1/tcp/56033/p2p/12D3KooWNQ3aNWQ4syzxrzZvC8PA2sH3DhYCfLePog2miw16UCA9 +NILLION_BOOTNODE_WEBSOCKET=/ip4/127.0.0.1/tcp/38874/ws/p2p/12D3KooWNQ3aNWQ4syzxrzZvC8PA2sH3DhYCfLePog2miw16UCA9 +NILLION_BOOTNODE_URL=http://localhost:56033 +NILLION_NILCHAIN_CHAIN_ID=nillion-chain-devnet +NILLION_NILCHAIN_JSON_RPC=http://127.0.0.1:48102 +NILLION_NILCHAIN_REST_API=http://localhost:26650 +NILLION_NILCHAIN_GRPC=localhost:26649 +NILLION_NILCHAIN_PRIVATE_KEY_0=9a975f567428d054f2bf3092812e6c42f901ce07d9711bc77ee2cd81101f42c5 +NILLION_NILCHAIN_PRIVATE_KEY_1=1e491133b9408b39572a29f91644873decea554224b20e2b0b923aeb860a1c18 +NILLION_NILCHAIN_PRIVATE_KEY_2=980488572f235316cdb330191f8bafe4e635efbe88b3a40f5bee9bd21047c059 +NILLION_NILCHAIN_PRIVATE_KEY_3=612bb5173dc60d9e91404fcc0d1f1847fb4459a7d5160d63d84e91aacbf2ab2f +NILLION_NILCHAIN_PRIVATE_KEY_4=04f5a984eeea9dce4e5e907da69c01a61568e3071b1a91cbed89225f9fd913b5 +NILLION_NILCHAIN_PRIVATE_KEY_5=5f992c58921f4af83b4c6b650c4914626664cd02020577b0ada49cfa00d2c8a4 +NILLION_NILCHAIN_PRIVATE_KEY_6=8f0297d3bb647eb59b95b29550b2aebbedd9be2c954b000e772efe8c9318a42d +NILLION_NILCHAIN_PRIVATE_KEY_7=c395243df9bb68dc809668efe4125f0eb017771ed8e3747b8d6860551913fecb +NILLION_NILCHAIN_PRIVATE_KEY_8=4bb5eaa799e24ae2b48545c41331921afe7e6a8dd7a850f5fbeb20a8226664ec +NILLION_NILCHAIN_PRIVATE_KEY_9=ef4b944d4fdb0077057925fe2dde365dfa2c83cf320463b14589feccd1b2b938 +NILLION_USER_SEED=test-fixture +NILLION_TEST_PROGRAMS_NAMESPACE= diff --git a/packages/client-payments/LICENSE b/client-vms/LICENSE similarity index 100% rename from packages/client-payments/LICENSE rename to client-vms/LICENSE diff --git a/packages/client-payments/buf.gen.yaml b/client-vms/buf.gen.yaml similarity index 100% rename from packages/client-payments/buf.gen.yaml rename to client-vms/buf.gen.yaml diff --git a/packages/client-payments/buf.yaml b/client-vms/buf.yaml similarity index 100% rename from packages/client-payments/buf.yaml rename to client-vms/buf.yaml diff --git a/packages/client-core/esbuild.config.mjs b/client-vms/esbuild.config.mjs similarity index 74% rename from packages/client-core/esbuild.config.mjs rename to client-vms/esbuild.config.mjs index 44c9bc7..3d17423 100644 --- a/packages/client-core/esbuild.config.mjs +++ b/client-vms/esbuild.config.mjs @@ -1,4 +1,4 @@ -import { main } from "../resources/esbuild.base.config.mjs"; +import { main } from "../esbuild.base.config.mjs"; const config = { bundle: true, diff --git a/client-vms/jest.config.ts b/client-vms/jest.config.ts new file mode 100644 index 0000000..fc6be01 --- /dev/null +++ b/client-vms/jest.config.ts @@ -0,0 +1,22 @@ +import "dotenv/config"; + +import { type JestConfigWithTsJest } from "ts-jest"; + +const config: JestConfigWithTsJest = { + preset: "ts-jest/presets/default-esm", + testEnvironment: "node", + transform: { + "^.+\\.(ts|tsx|js|jsx|mjs)$": [ + "ts-jest", + { + useESM: true, + }, + ], + }, + moduleNameMapper: { + "^@nillion/client-vms/(.*)$": "/src/$1", + "^@nillion/client-wasm": "/../client-wasm/dist", + }, +}; + +export default config; diff --git a/client-vms/package.json b/client-vms/package.json new file mode 100644 index 0000000..e7b5014 --- /dev/null +++ b/client-vms/package.json @@ -0,0 +1,53 @@ +{ + "name": "@nillion/client-vms", + "license": "MIT", + "author": "devsupport@nillion.com", + "version": "0.2.0-rc.0", + "repository": "https://github.com/NillionNetwork/client-ts", + "type": "module", + "exports": { + ".": { + "types": "./src/index.ts", + "import": "./dist/index.mjs" + } + }, + "scripts": { + "clean": "rm -rf dist dist-test", + "build": "node esbuild.config.mjs", + "build:watch": "node esbuild.config.mjs --watch", + "build:proto": "npx buf generate", + "test": "node --experimental-vm-modules --no-warnings ../node_modules/jest/bin/jest.js" + }, + "dependencies": { + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "^2.0.0-beta.1", + "@connectrpc/connect-web": "^2.0.0-beta.1", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@nillion/client-wasm": "0.2.0-rc.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@noble/secp256k1": "^2.1.0", + "bs58": "^6.0.0", + "debug": "^4.3.7", + "uuid": "^10.0.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@bufbuild/buf": "^1.45.0", + "@bufbuild/protoc-gen-es": "^2.2.0", + "@jest/globals": "^29.7.0", + "@keplr-wallet/types": "^0.12.141", + "@types/debug": "^4.1.12", + "@types/uuid": "^10.0.0", + "browserslist": "^4.24.0", + "dotenv": "^16.4.5", + "esbuild-plugin-browserslist": "^0.15.0", + "jest": "^29.7.0", + "ts-jest": "^29.2.5" + }, + "files": [ + "dist", + "src" + ] +} diff --git a/client-vms/proto/nillion/auth/v1/public_key.proto b/client-vms/proto/nillion/auth/v1/public_key.proto new file mode 100644 index 0000000..42f6a3a --- /dev/null +++ b/client-vms/proto/nillion/auth/v1/public_key.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package nillion.auth.v1.public_key; + +// A public key. +// +// Signatures associated to this public key must be a 64 bytes long sequence which is the result of the +// concatenation of the `r` and `s` scalars in the signature, each encoded in big endian. +message PublicKey { + // The type of this public key. + PublicKeyType key_type = 1; + + // The contents of this key. + // + // This is dependent on the `key_type` in this key: + // + // * For ED25519 it should be the curve point in its 32 byte compressed form. + // * For SECP256K1 it should be the curve point in its 33 byte compressed form. + bytes contents = 2; +} + +// A public key type. +enum PublicKeyType { + // An ED25519 public key. + ED25519 = 0; + + // A SECP256K1 public key. + SECP256K1 = 1; +} + diff --git a/client-vms/proto/nillion/auth/v1/token.proto b/client-vms/proto/nillion/auth/v1/token.proto new file mode 100644 index 0000000..38ff309 --- /dev/null +++ b/client-vms/proto/nillion/auth/v1/token.proto @@ -0,0 +1,38 @@ +syntax = "proto3"; + +package nillion.auth.v1.token; + +import "google/protobuf/timestamp.proto"; +import "nillion/auth/v1/public_key.proto"; + +// A signed authentication token. +message SignedToken { + // A `Token` serialized into bytes. + bytes serialized_token = 1; + + // The public key for the private key this token is signed with. + nillion.auth.v1.public_key.PublicKey public_key = 2; + + // The serialized token signature. + // + // The signature must be generated using the private key corresponding to the `public_key` field + // over `sha256(serialized_token)`. + bytes signature = 3; +} + +// A token. +message Token { + // A nonce that adds entropy to this token. + // + // The nonce must be 32 bytes long and will be considered invalid otherwise. + bytes nonce = 1; + + // The identifier of the node this token is meant to be used against. + // + // This needs to match the target node's identity for the token to be considered valid, and is used to prevent + // a node from taking the token and impersonating the user. + bytes target_identity = 2; + + // The timestamp at which this token expires. + google.protobuf.Timestamp expires_at = 3; +} diff --git a/client-vms/proto/nillion/compute/v1/invoke.proto b/client-vms/proto/nillion/compute/v1/invoke.proto new file mode 100644 index 0000000..5d5ebc0 --- /dev/null +++ b/client-vms/proto/nillion/compute/v1/invoke.proto @@ -0,0 +1,49 @@ +syntax = "proto3"; + +package nillion.compute.v1.invoke; + +import "nillion/payments/v1/receipt.proto"; + +// A request to invoke a computation. +message InvokeComputeRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `InvokeCompute` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + + // The value ids for previously stored values being used as parameters to this compute operation. + repeated bytes value_ids = 2; + + // The values being used as compute-time parameters, encoded in bincode format. + bytes bincode_values = 3; + + // The bindings that define which input party in the program is which user in the network. + repeated InputPartyBinding input_bindings = 4; + + // The bindings that define which output party in the program is which users in the network. + repeated OutputPartyBinding output_bindings = 5; +} + +// A response to a request to invoke a computation. +message InvokeComputeResponse { + // An identifier for the execution of the computation. + bytes compute_id = 1; +} + +// The bindings for input parties in this program. +message InputPartyBinding { + // The name of the party as defined in the program. + string party_name = 1; + + // The user identity this party is being bound to. + string user_id = 2; +} + +// The bindings for output parties in this program. +message OutputPartyBinding { + // The name of the party as defined in the program. + string party_name = 1; + + // The user identities this party is being bound to. + repeated string user_ids = 2; +} diff --git a/client-vms/proto/nillion/compute/v1/retrieve.proto b/client-vms/proto/nillion/compute/v1/retrieve.proto new file mode 100644 index 0000000..9e35d2c --- /dev/null +++ b/client-vms/proto/nillion/compute/v1/retrieve.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +package nillion.compute.v1.retrieve; + +import "google/protobuf/empty.proto"; + +// A request to retrieve the results of a computation. +message RetrieveResultsRequest { + // The instance of the computation to retrieve results for. + bytes compute_id = 1; +} + +// The response to a request to retrieve the results of a computation. +message RetrieveResultsResponse { + oneof state { + // The node is waiting for the computation to end. + // + // This message may be sent 0+ times in a row until a `result` is sent. + google.protobuf.Empty waiting_computation = 1; + + // The computation finished successfully and yielded these results. + ComputationResult success = 2; + + // The error message if any. + string error = 3; + } +} + +// The result of a computation. +message ComputationResult { + // The computation results, encoded in bincode. + bytes bincode_values = 1; +} diff --git a/client-vms/proto/nillion/compute/v1/service.proto b/client-vms/proto/nillion/compute/v1/service.proto new file mode 100644 index 0000000..e646e73 --- /dev/null +++ b/client-vms/proto/nillion/compute/v1/service.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package nillion.compute.v1; + +import "google/protobuf/empty.proto"; +import "nillion/compute/v1/invoke.proto"; +import "nillion/compute/v1/stream.proto"; +import "nillion/compute/v1/retrieve.proto"; + +// A service to perform compute operations. +service Compute { + // Invoke a computation. + rpc InvokeCompute(invoke.InvokeComputeRequest) returns (invoke.InvokeComputeResponse); + + // Start a stream of message for a specific instance of a computation. + // + // This is meant to be used internally by nodes in the network. + rpc StreamCompute(stream stream.ComputeStreamMessage) returns (google.protobuf.Empty); + + // Retrieve the result of a computation. + // + // The user invoking this operation must have been defined as an output party in the program + // the execution was tied to. + // + // This call will wait for the program execution to end if it hasn't done so already. Clients must + // wait until either a result or failure message is sent, ignoring any `Waiting` messages sent until + // that happens. + rpc RetrieveResults(retrieve.RetrieveResultsRequest) returns (stream retrieve.RetrieveResultsResponse); +} + diff --git a/client-vms/proto/nillion/compute/v1/stream.proto b/client-vms/proto/nillion/compute/v1/stream.proto new file mode 100644 index 0000000..9be840f --- /dev/null +++ b/client-vms/proto/nillion/compute/v1/stream.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package nillion.compute.v1.stream; + +// A message for a compute stream. +message ComputeStreamMessage { + // An identifier for the computation instance. + // + // Only the first ever message on the stream requires having this attribute set. Any subsequent message will + // have this field ignored. + bytes compute_id = 1; + + // The VM message in bincode format. + bytes bincode_message = 2; +} diff --git a/client-vms/proto/nillion/leader_queries/v1/pool_status.proto b/client-vms/proto/nillion/leader_queries/v1/pool_status.proto new file mode 100644 index 0000000..c298b67 --- /dev/null +++ b/client-vms/proto/nillion/leader_queries/v1/pool_status.proto @@ -0,0 +1,37 @@ +syntax = "proto3"; + +package nillion.leader_queries.v1.pool_status; + +import "nillion/preprocessing/v1/element.proto"; +import "nillion/payments/v1/receipt.proto"; + +// A request to get the preprocessing pool status. +message PoolStatusRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `PoolStatus` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; +} + +// A response for the request to get the status of the preprocessing pool. +message PoolStatusResponse { + // The offset ranges for each preprocessing element. + repeated PreprocessingOffsets offsets = 1; + + // Whether preprocessing is active (at least one element type is being generated). + bool preprocessing_active = 2; +} + +// The offsets for a preprocessing element. +// +// This is closed-open set, e.g. [start, end) +message PreprocessingOffsets { + // The preprocessing element. + nillion.preprocessing.v1.element.PreprocessingElement element = 1; + + // The first offset in the range. + uint64 start = 2; + + // The one-past-the-end offset in this range. + uint64 end = 3; +} diff --git a/client-vms/proto/nillion/leader_queries/v1/service.proto b/client-vms/proto/nillion/leader_queries/v1/service.proto new file mode 100644 index 0000000..fbc3060 --- /dev/null +++ b/client-vms/proto/nillion/leader_queries/v1/service.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package nillion.leader_queries.v1; + +import "nillion/leader_queries/v1/pool_status.proto"; + +// A service that allows performing queries against the leader of the cluster. +service LeaderQueries { + // Get the status of the preprocessing pool. + rpc PoolStatus(pool_status.PoolStatusRequest) returns (pool_status.PoolStatusResponse); +} + + diff --git a/client-vms/proto/nillion/membership/v1/cluster.proto b/client-vms/proto/nillion/membership/v1/cluster.proto new file mode 100644 index 0000000..05c1086 --- /dev/null +++ b/client-vms/proto/nillion/membership/v1/cluster.proto @@ -0,0 +1,67 @@ +syntax = "proto3"; + +package nillion.membership.v1.cluster; + +import "nillion/auth/v1/public_key.proto"; + +// The definition of a cluster. +message Cluster { + // The members of this cluster. + repeated ClusterMember members = 1; + + // The leader of this cluster. + ClusterMember leader = 2; + + // The prime number this cluster uses. + Prime prime = 3; + + // The polynomial degree used in this cluster. + uint32 polynomial_degree = 4; + + // The security parameter kappa used in this cluster. + uint32 kappa = 5; +} + +// A cluster member. +message ClusterMember { + // The identity for this member. + // + // This is a unique identifier derived from the public key. + bytes identity = 1; + + // The public key for this member. + // + // **This field is deprecated**. `public_keys.authentication` should be used instead. + nillion.auth.v1.public_key.PublicKey public_key = 2; + + // The gRPC endpoint this member can be reached at. + string grpc_endpoint = 3; + + // The public keys for a cluster member. + PublicKeys public_keys = 4; +} + +// The public keys for a cluster member. +message PublicKeys { + // The authentication public key for this member. + nillion.auth.v1.public_key.PublicKey authentication = 1; +} + +// A prime number. +enum Prime { + // A safe 64 bit prime number. + // + // This is prime number 18446744072637906947. + SAFE_64_BITS = 0; + + // A safe 128 bit prime number. + // + // This is prime number 340282366920938463463374607429104828419. + SAFE_128_BITS = 1; + + // A safe 256 bit prime number. + // + // This is prime number 115792089237316195423570985008687907853269984665640564039457584007911397392387. + SAFE_256_BITS = 2; +} + diff --git a/client-vms/proto/nillion/membership/v1/service.proto b/client-vms/proto/nillion/membership/v1/service.proto new file mode 100644 index 0000000..0e64747 --- /dev/null +++ b/client-vms/proto/nillion/membership/v1/service.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package nillion.membership.v1; + +import "google/protobuf/empty.proto"; +import "nillion/membership/v1/cluster.proto"; + +// Exposes information about a node's membership. +service Membership { + // Get the definition of the cluster the node queried is part of. + rpc Cluster(google.protobuf.Empty) returns (cluster.Cluster); +} + diff --git a/packages/client-payments/proto/nillion/meta/v1/msg_pay_for.proto b/client-vms/proto/nillion/meta/v1/msg_pay_for.proto similarity index 100% rename from packages/client-payments/proto/nillion/meta/v1/msg_pay_for.proto rename to client-vms/proto/nillion/meta/v1/msg_pay_for.proto diff --git a/client-vms/proto/nillion/payments/v1/quote.proto b/client-vms/proto/nillion/payments/v1/quote.proto new file mode 100644 index 0000000..d1edaa8 --- /dev/null +++ b/client-vms/proto/nillion/payments/v1/quote.proto @@ -0,0 +1,182 @@ +syntax = "proto3"; + +package nillion.payments.v1.quote; + +import "google/protobuf/empty.proto"; +import "google/protobuf/timestamp.proto"; +import "nillion/preprocessing/v1/element.proto"; + +// A price quote request. +message PriceQuoteRequest { + oneof operation { + // A pool status operation. + google.protobuf.Empty pool_status = 1; + + // A store program operation. + StoreProgram store_program = 2; + + // A retrieve values operation. + RetrieveValues retrieve_values = 3; + + // A retrieve permissions operation. + RetrievePermissions retrieve_permissions = 4; + + // A store values operation. + StoreValues store_values = 5; + + // A invoke compute operation. + InvokeCompute invoke_compute = 6; + + // A retrieve permissions operation. + UpdatePermissions update_permissions = 7; + } +} + +// A quote signed by the node that generated it. +message SignedQuote { + // The serialized `PriceQuote`. + bytes quote = 1; + + // The signature for this quote. + bytes signature = 2; +} + +// A price quote. +message PriceQuote { + // A nonce that uniquely identifies this quote. + bytes nonce = 1; + + // The fees for this quote. + QuoteFees fees = 2; + + // The request that this quote is for. + PriceQuoteRequest request = 3; + + // The point in time at which this quote is no longer valid. + google.protobuf.Timestamp expires_at = 4; + + // The preprocessing requirements for this operation. + repeated PreprocessingRequirement preprocessing_requirements = 5; +} + +// The fees associated with a quote. +// +// All fees are in "unil" units. +message QuoteFees { + // The sum of all the fees. + uint64 total = 1; + + // The base fee. + // + // This is a flat fee based on the operation being ran. + uint64 base = 2; + + // The congestion fee. + // + // This depends on how congested the network is. + uint64 congestion = 3; + + // The storage fee. + // + // This depends on how much data is being stored, in case the operation being quoted stores data. + uint64 storage = 4; + + // The preprocessing fee. + // + // This is only valid for compute operations and accounts for any preprocessing material needed + // to execute the program being invoked. + uint64 preprocessing = 5; + + // The compute fee. + // + // This fee is only valid for compute operations and depends on the complexity of the program + // being invoked. + uint64 compute = 6; +} + +// A store program operation. +message StoreProgram { + // The program's metadata. + ProgramMetadata metadata = 1; + + // A sha256 hash of the compiled program. + bytes contents_sha256 = 2; + + // The program's name. + string name = 3; +} + +// The metadata about a program being stored. +message ProgramMetadata { + // The size of the program in bytes. + uint64 program_size = 1; + + // The amount of memory needed by the program. + uint64 memory_size = 2; + + // The total number of instructions in the program. + uint64 instruction_count = 3; + + // The number of instructions per type. + map instructions = 4; + + // The preprocessing requirements. + repeated PreprocessingRequirement preprocessing_requirements = 5; +} + +// A number of preprocessing elements required for a program. +message PreprocessingRequirement { + // The preprocessing element. + nillion.preprocessing.v1.element.PreprocessingElement element = 1; + + // The total number of elements of this type needed. + uint64 count = 2; +} + +// A retrieve values operation. +message RetrieveValues { + // The identifier to be retrieved. + bytes values_id = 1; +} + +// A retrieve permissions operation. +message RetrievePermissions { + // The identifier of the values entity to be retrieved. + bytes values_id = 1; +} + +// An update permissions operation. +message UpdatePermissions { + // The identifier of the values entity whose permissions are to be updated. + bytes values_id = 1; +} + +// A store values operation. +message StoreValues { + // The number of particles being stored. + uint64 particles_count = 1; + + // The number of secret shared secrets being stored. + // + // This is the number of secrets in secret shared form being stored, not the total number of shares. e.g. + // for a 5 node network a single secret shared secret requires value `1` here rather than `5`. + uint64 secret_shared_count = 2; + + // The number of public values being stored. + uint64 public_values_count = 3; + + // The number of days to persist these secrets for. + uint32 ttl_days = 4; + + // The size of the payload to be stored. + uint64 payload_size = 5; +} + +// An invoke compute operation. +message InvokeCompute { + // The program to be invoked. + string program_id = 1; + + // The size of the compute time values being sent as part of this operation. + uint64 values_payload_size = 2; +} diff --git a/client-vms/proto/nillion/payments/v1/receipt.proto b/client-vms/proto/nillion/payments/v1/receipt.proto new file mode 100644 index 0000000..707581e --- /dev/null +++ b/client-vms/proto/nillion/payments/v1/receipt.proto @@ -0,0 +1,94 @@ +syntax = "proto3"; + +package nillion.payments.v1.receipt; + +import "google/protobuf/timestamp.proto"; +import "google/protobuf/empty.proto"; +import "nillion/payments/v1/quote.proto"; +import "nillion/preprocessing/v1/element.proto"; + +// A request to get a payment receipt for a paid operation. +message PaymentReceiptRequest { + // The quote that the user paid for. + quote.SignedQuote signed_quote = 1; + + // The nilchain transaction hash that proves this payment was made. + string tx_hash = 2; +} + +// A signed receipt that indicates the user paid. +message SignedReceipt { + // The serialized `Receipt`. + bytes receipt = 1; + + // The signature for this receipt. + bytes signature = 2; +} + +// A receipt for an operation that the user paid for. +message Receipt { + // A unique identifier for this operation. + // + // This allows nodes to independently identify this operation and ensure no receipt is used more than once. + bytes identifier = 1; + + // The metadata for this receipt; + OperationMetadata metadata = 2; + + // The point in time at which this receipt expires and can no longer be used to invoke the associated + // operation in the network. + google.protobuf.Timestamp expires_at = 3; +} + +// The metadata associated with the operation this receipt is for. +message OperationMetadata { + oneof operation { + // A preprocessing pool status operation. + google.protobuf.Empty pool_status = 1; + + // A store program operation. + quote.StoreProgram store_program = 2; + + // A retrieve values operation. + quote.RetrieveValues retrieve_values = 3; + + // A retrieve permissions operation. + quote.RetrievePermissions retrieve_permissions = 4; + + // A store values operation. + quote.StoreValues store_values = 5; + + // An invoke compute operation. + InvokeComputeMetadata invoke_compute = 6; + + // An update permissions operation. + quote.UpdatePermissions update_permissions = 7; + } +} + +// The metadata for an invoke compute operation. +message InvokeComputeMetadata { + // The invoke compute quote. + quote.InvokeCompute quote = 1; + + // The selected preprocessing offsets for this operation. + repeated SelectedPreprocessingOffsets offsets = 2; +} + +// The selected offsets for a preprocessing element. +// +// This is closed-open set, e.g. [start, end) +message SelectedPreprocessingOffsets { + // The preprocessing element. + nillion.preprocessing.v1.element.PreprocessingElement element = 1; + + // The first offset in the range. + uint64 start = 2; + + // The one-past-the-end offset in this range. + uint64 end = 3; + + // The size of all batches involved in the selected range. + uint64 batch_size = 4; +} + diff --git a/client-vms/proto/nillion/payments/v1/service.proto b/client-vms/proto/nillion/payments/v1/service.proto new file mode 100644 index 0000000..ce3ce43 --- /dev/null +++ b/client-vms/proto/nillion/payments/v1/service.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package nillion.payments.v1; + +import "nillion/payments/v1/quote.proto"; +import "nillion/payments/v1/receipt.proto"; + +// Payments API. +service Payments { + // Generate a price quote for an operation. + rpc PriceQuote(quote.PriceQuoteRequest) returns (quote.SignedQuote); + + // Get a payment receipt for a paid operation. + rpc PaymentReceipt(receipt.PaymentReceiptRequest) returns (receipt.SignedReceipt); +} + + diff --git a/client-vms/proto/nillion/permissions/v1/permissions.proto b/client-vms/proto/nillion/permissions/v1/permissions.proto new file mode 100644 index 0000000..ede8304 --- /dev/null +++ b/client-vms/proto/nillion/permissions/v1/permissions.proto @@ -0,0 +1,32 @@ +syntax = "proto3"; + +package nillion.permissions.v1.permissions; + +// The permissions for a set of stored values. +message Permissions { + // The user id for the owner of these values. + string owner_user_id = 1; + + // The list of user ids that are allowed to retrieve the stored values. + repeated string retrieve_allowed_user_ids = 2; + + // The list of user ids that are allowed to update the stored values. + repeated string update_allowed_user_ids = 3; + + // The list of user ids that are allowed to delete the stored values. + repeated string delete_allowed_user_ids = 4; + + // The list of compute permissions. + repeated ComputePermissions compute_permissions = 5; +} + +// The permissions to execute a program. +message ComputePermissions { + // The user id we're granting permissions to. + string user_id = 1; + + // The program ids this user is allowed to use the stored values in. + repeated string program_ids = 2; +} + + diff --git a/client-vms/proto/nillion/permissions/v1/retrieve.proto b/client-vms/proto/nillion/permissions/v1/retrieve.proto new file mode 100644 index 0000000..3b63d25 --- /dev/null +++ b/client-vms/proto/nillion/permissions/v1/retrieve.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package nillion.permissions.v1.retrieve; + +import "nillion/payments/v1/receipt.proto"; + +// A request to retrieve the permissions associated with a set of previously stored values. +message RetrievePermissionsRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `RetrievePermissions` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; +} diff --git a/client-vms/proto/nillion/permissions/v1/service.proto b/client-vms/proto/nillion/permissions/v1/service.proto new file mode 100644 index 0000000..7571234 --- /dev/null +++ b/client-vms/proto/nillion/permissions/v1/service.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package nillion.permissions.v1; + +import "google/protobuf/empty.proto"; +import "nillion/permissions/v1/permissions.proto"; +import "nillion/permissions/v1/retrieve.proto"; +import "nillion/permissions/v1/update.proto"; + +// A service to interact with permissions. +service Permissions { + // Retrieve the permissions for a set of values. + rpc RetrievePermissions(retrieve.RetrievePermissionsRequest) returns (permissions.Permissions); + + // Update the permissions for a set of values. + rpc UpdatePermissions(update.UpdatePermissionsRequest) returns (google.protobuf.Empty); +} diff --git a/client-vms/proto/nillion/permissions/v1/update.proto b/client-vms/proto/nillion/permissions/v1/update.proto new file mode 100644 index 0000000..d9b9538 --- /dev/null +++ b/client-vms/proto/nillion/permissions/v1/update.proto @@ -0,0 +1,16 @@ +syntax = "proto3"; + +package nillion.permissions.v1.update; + +import "nillion/payments/v1/receipt.proto"; +import "nillion/permissions/v1/permissions.proto"; + +// A request to update the permissions associated with a set of previously stored values. +message UpdatePermissionsRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `UpdatePermissions` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + + nillion.permissions.v1.permissions.Permissions permissions = 2; +} diff --git a/client-vms/proto/nillion/preprocessing/v1/cleanup.proto b/client-vms/proto/nillion/preprocessing/v1/cleanup.proto new file mode 100644 index 0000000..43d2a83 --- /dev/null +++ b/client-vms/proto/nillion/preprocessing/v1/cleanup.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package nillion.preprocessing.v1.cleanup; + +import "nillion/preprocessing/v1/element.proto"; + +// A request to cleanup used preprocessing elements. +message CleanupUsedElementsRequest { + // The element to be cleanedup. + element.PreprocessingElement element = 1; + + // The first chunk to be deleted. + uint64 start_chunk = 2; + + // The one-past-the-end chunk index to be deleted. + uint64 end_chunk = 3; +} + diff --git a/client-vms/proto/nillion/preprocessing/v1/element.proto b/client-vms/proto/nillion/preprocessing/v1/element.proto new file mode 100644 index 0000000..bb316f2 --- /dev/null +++ b/client-vms/proto/nillion/preprocessing/v1/element.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package nillion.preprocessing.v1.element; + +// A preprocessing element. +enum PreprocessingElement { + ALPHA = 0; + LAMBDA = 1; + COMPARE = 2; + DIVISION_SECRET_DIVISOR = 3; + EQUALITY_SECRET_OUTPUT = 4; + EQUALITY_PUBLIC_OUTPUT = 5; + SHARE_TO_PARTICLE = 6; + MODULO = 7; + TRUNC = 8; + TRUNC_PR = 9; +} + diff --git a/client-vms/proto/nillion/preprocessing/v1/generate.proto b/client-vms/proto/nillion/preprocessing/v1/generate.proto new file mode 100644 index 0000000..5869b5f --- /dev/null +++ b/client-vms/proto/nillion/preprocessing/v1/generate.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package nillion.preprocessing.v1.generate; + +import "nillion/preprocessing/v1/element.proto"; + +// A request to generate preprocessing material. +message GeneratePreprocessingRequest { + // An identifier for this generation instance. + bytes generation_id = 1; + + // The batch id that is being generated. + // + // This is a sequential number per preprocessing element. + uint64 batch_id = 2; + + // The number of elements being generated. + uint32 batch_size = 3; + + // The preprocessing element being generated. + element.PreprocessingElement element = 4; +} + +// A response to a request to generate preprocessing material. +message GeneratePreprocessingResponse { + // The status of the preprocessing protocol. + PreprocessingProtocolStatus status = 1; +} + +// The status of a preprocessing protocol execution. +enum PreprocessingProtocolStatus { + // The protocol is waiting for peer initialization. + WAITING_PEERS = 0; + + // The protocol finished successfully. + FINISHED_SUCCESS = 1; + + // The protocol finished with an error. + FINISHED_FAILURE = 2; +} diff --git a/client-vms/proto/nillion/preprocessing/v1/service.proto b/client-vms/proto/nillion/preprocessing/v1/service.proto new file mode 100644 index 0000000..dee3c2f --- /dev/null +++ b/client-vms/proto/nillion/preprocessing/v1/service.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package nillion.preprocessing.v1; + +import "google/protobuf/empty.proto"; +import "nillion/preprocessing/v1/generate.proto"; +import "nillion/preprocessing/v1/stream.proto"; +import "nillion/preprocessing/v1/cleanup.proto"; + +// A service to run preprocessing related actions. +service Preprocessing { + // Trigger the generation of preprocessing material. + rpc GeneratePreprocessing(generate.GeneratePreprocessingRequest) returns (stream generate.GeneratePreprocessingResponse); + + // Open a stream to generate a preprocessing element. + rpc StreamPreprocessing(stream stream.PreprocessingStreamMessage) returns (google.protobuf.Empty); + + // Cleanup used preprocessing chunks. + rpc CleanupUsedElements(cleanup.CleanupUsedElementsRequest) returns (google.protobuf.Empty); +} + + diff --git a/client-vms/proto/nillion/preprocessing/v1/stream.proto b/client-vms/proto/nillion/preprocessing/v1/stream.proto new file mode 100644 index 0000000..ce570fb --- /dev/null +++ b/client-vms/proto/nillion/preprocessing/v1/stream.proto @@ -0,0 +1,24 @@ +syntax = "proto3"; + +package nillion.preprocessing.v1.stream; + +import "nillion/preprocessing/v1/element.proto"; + +// A message sent between nodes during the execution of a preprocessing protocol. +message PreprocessingStreamMessage { + // An identifier for the instance of the generation being ran. + // + // Only the first ever message on the stream requires having this attribute set. Any subsequent message will + // have this field ignored. + bytes generation_id = 1; + + // The element being generated. + // + // Only the first ever message on the stream requires having this attribute set. Any subsequent message will + // have this field ignored. + nillion.preprocessing.v1.element.PreprocessingElement element = 2; + + // The preprocessing message in bincode format. + bytes bincode_message = 3; +} + diff --git a/client-vms/proto/nillion/programs/v1/service.proto b/client-vms/proto/nillion/programs/v1/service.proto new file mode 100644 index 0000000..37a8dc7 --- /dev/null +++ b/client-vms/proto/nillion/programs/v1/service.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; + +package nillion.programs.v1; + +import "nillion/programs/v1/store.proto"; + +// A service to manage programs. +service Programs { + // Store a program in the network. + rpc StoreProgram(store.StoreProgramRequest) returns (store.StoreProgramResponse); +} + diff --git a/client-vms/proto/nillion/programs/v1/store.proto b/client-vms/proto/nillion/programs/v1/store.proto new file mode 100644 index 0000000..33b714f --- /dev/null +++ b/client-vms/proto/nillion/programs/v1/store.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package nillion.programs.v1.store; + +import "nillion/payments/v1/receipt.proto"; + +// A request to store a program in the network. +message StoreProgramRequest { + // The contents of the program. + bytes program = 1; + + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `StoreProgram` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 2; +} + +// A response to a request to store a program in the network. +message StoreProgramResponse { + // The program identifier. + string program_id = 1; +} diff --git a/client-vms/proto/nillion/values/v1/delete.proto b/client-vms/proto/nillion/values/v1/delete.proto new file mode 100644 index 0000000..68e9c8b --- /dev/null +++ b/client-vms/proto/nillion/values/v1/delete.proto @@ -0,0 +1,9 @@ +syntax = "proto3"; + +package nillion.values.v1.delete; + +// A request to delete a previously stored set of values. +message DeleteValuesRequest { + // The identifier of the values entity to be deleted. + bytes values_id = 1; +} diff --git a/client-vms/proto/nillion/values/v1/retrieve.proto b/client-vms/proto/nillion/values/v1/retrieve.proto new file mode 100644 index 0000000..dafee1e --- /dev/null +++ b/client-vms/proto/nillion/values/v1/retrieve.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; + +package nillion.values.v1.retrieve; + +import "nillion/payments/v1/receipt.proto"; + +// A request to retrieve a set of stored values. +message RetrieveValuesRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `RetrieveValues` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; +} + +// A response to a request to retrieve values stored in the network. +message RetrieveValuesResponse { + // The values encoded in bincode format. + bytes bincode_values = 1; +} diff --git a/client-vms/proto/nillion/values/v1/service.proto b/client-vms/proto/nillion/values/v1/service.proto new file mode 100644 index 0000000..5b28880 --- /dev/null +++ b/client-vms/proto/nillion/values/v1/service.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package nillion.values.v1; + +import "google/protobuf/empty.proto"; +import "nillion/values/v1/delete.proto"; +import "nillion/values/v1/retrieve.proto"; +import "nillion/values/v1/store.proto"; + +// A service to interact with values (secrets, public values, etc). +service Values { + // Store values in the network. + rpc StoreValues(store.StoreValuesRequest) returns (store.StoreValuesResponse); + + // Retrieve values from the network. + rpc RetrieveValues(retrieve.RetrieveValuesRequest) returns (retrieve.RetrieveValuesResponse); + + // Delete values from the network. + rpc DeleteValues(delete.DeleteValuesRequest) returns (google.protobuf.Empty); +} + diff --git a/client-vms/proto/nillion/values/v1/store.proto b/client-vms/proto/nillion/values/v1/store.proto new file mode 100644 index 0000000..ea678a9 --- /dev/null +++ b/client-vms/proto/nillion/values/v1/store.proto @@ -0,0 +1,39 @@ +syntax = "proto3"; + +package nillion.values.v1.store; + +import "nillion/payments/v1/receipt.proto"; +import "nillion/permissions/v1/permissions.proto"; + +// A request to store a set of values. +message StoreValuesRequest { + // The receipt that proves this operation was paid for. + // + // The receipt must be for a `StoreValues` operation. + nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + + // The values encoded in bincode format. + bytes bincode_values = 2; + + // The permissions to set for these values. + // + // Permissions are required when storing values and optional when updating them. That is, + // if `update_identifier` is set then this attribute is optional. + nillion.permissions.v1.permissions.Permissions permissions = 3; + + // The optional values identifier to use when storing these values. + // + // The given identifier must be a valid values identifier that the invoking user has update permissions + // on for this operation to be considered valid. + // + // Setting this identifier will effectively turn this operation into an update for an existing set of + // values. + bytes update_identifier = 4; +} + +// A response to a request to store values the network. +message StoreValuesResponse { + // The identifier of the store values. + bytes values_id = 1; +} + diff --git a/client-vms/src/auth.test.ts b/client-vms/src/auth.test.ts new file mode 100644 index 0000000..074d998 --- /dev/null +++ b/client-vms/src/auth.test.ts @@ -0,0 +1,66 @@ +import { create, fromBinary, toBinary } from "@bufbuild/protobuf"; +import { timestampFromDate } from "@bufbuild/protobuf/wkt"; +import { describe, it } from "@jest/globals"; + +import { TokenAuthManager } from "@nillion/client-vms/auth"; +import { + SignedToken, + TokenSchema, +} from "@nillion/client-vms/gen-proto/nillion/auth/v1/token_pb"; +import { PartyId } from "@nillion/client-vms/types"; + +describe("TokenManager", () => { + const manager = TokenAuthManager.fromSeed("test"); + const nodeId = PartyId.from(Uint8Array.from([1, 2, 3])); + const token = create(TokenSchema, { + nonce: new Uint8Array(32).fill(1), + targetIdentity: Uint8Array.from([1, 2, 3]), + expiresAt: timestampFromDate(new Date("2024-10-15T10:00:00.000Z")), + }); + let signedToken: SignedToken; + let signature: Uint8Array; + // From signing and serialising token above with the 'test' seed + const serialized = + "Ci8KIAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBEgMBAgMaBgig+ri4BhIlCAESIQJfgZVtWCa619MNrtK1yMmOcgRsHsgyPaM2RFR2GD+3yhpAmbvCdxsuz0If2N+rtASR4CPAerKLNg+hOzZeobXaZ0F/ESGyJ309foWA0WMMhAGe3it3MZk+omJ3I6ZWRiAXtg=="; + + it("can generate a token", () => { + const token = manager.generateToken(nodeId); + expect(manager.isTokenExpired(token)).toBeFalsy(); + expect(token.targetIdentity).toEqual(nodeId.inner); + }); + + it("can sign a token", () => { + const data = toBinary(TokenSchema, token); + signature = manager.sign(data); + expect(signature).toBeTruthy(); + }); + + it("can create a signed token", () => { + signedToken = manager.signToken(token); + expect(signedToken.signature).toEqual(signature); + }); + + it("can verify a signed token", () => { + expect(manager.verify(signedToken)).toBeTruthy(); + }); + + it("can serialize as base 64", () => { + const actual = manager.serialize(signedToken); + expect(actual).toEqual(serialized); + }); + + it("can deserialize from base 64", () => { + const actualSignedToken = manager.deserialize(serialized); + expect(signedToken).toEqual(actualSignedToken); + expect(manager.verify(actualSignedToken)).toBeTruthy(); + }); + + it("can deserialize the inner token", () => { + const binary = signedToken.serializedToken; + const actualToken = fromBinary(TokenSchema, binary); + + expect(actualToken.targetIdentity).toEqual(token.targetIdentity); + expect(actualToken.expiresAt).toEqual(token.expiresAt); + expect(actualToken.nonce).toEqual(token.nonce); + }); +}); diff --git a/client-vms/src/auth.ts b/client-vms/src/auth.ts new file mode 100644 index 0000000..77a6ff0 --- /dev/null +++ b/client-vms/src/auth.ts @@ -0,0 +1,119 @@ +import { create, fromBinary, toBinary } from "@bufbuild/protobuf"; +import { timestampDate, timestampFromDate } from "@bufbuild/protobuf/wkt"; +import type { Interceptor } from "@connectrpc/connect"; +import { secp256k1 } from "@noble/curves/secp256k1"; +import { sha256 } from "@noble/hashes/sha2"; +import { randomBytes } from "@noble/hashes/utils"; + +import { + PublicKey, + PublicKeySchema, + PublicKeyType, +} from "@nillion/client-vms/gen-proto/nillion/auth/v1/public_key_pb"; +import { + SignedToken, + SignedTokenSchema, + Token, + TokenSchema, +} from "@nillion/client-vms/gen-proto/nillion/auth/v1/token_pb"; +import { PartyId } from "@nillion/client-vms/types"; + +const HEADER_NAME_BASE64_AUTH = "x-nillion-token"; +const NONCE_LENGTH = 32; +const TOKEN_TTL_IN_SECS = 60; + +export const createAuthInterceptor = ( + auth: TokenAuthManager, + node: PartyId, +): Interceptor => { + return (next) => async (req) => { + const headers = new Headers(req.header); + + const token = auth.generateToken(node); + const signedToken = auth.signToken(token); + const serialized = auth.serialize(signedToken); + + headers.set(HEADER_NAME_BASE64_AUTH, serialized); + + const authenticatedReq = { + ...req, + header: headers, + }; + + return next(authenticatedReq); + }; +}; + +export class TokenAuthManager { + public publicKey: PublicKey; + + constructor(public privateKey: Uint8Array) { + this.publicKey = create(PublicKeySchema, { + keyType: PublicKeyType.SECP256K1, + contents: secp256k1.getPublicKey(this.privateKey, true), + }); + } + + public generateToken(id: PartyId): Token { + const expires = new Date(Date.now() + TOKEN_TTL_IN_SECS * 1000); + const expiresAt = timestampFromDate(expires); + + return create(TokenSchema, { + nonce: randomBytes(NONCE_LENGTH), + targetIdentity: id.inner, + expiresAt, + }); + } + + public signToken(token: Token): SignedToken { + const serializedToken = toBinary(TokenSchema, token); + const signature = this.sign(serializedToken); + + return create(SignedTokenSchema, { + serializedToken, + publicKey: this.publicKey, + signature, + }); + } + + sign(data: Uint8Array): Uint8Array { + const hash = sha256(data); + return secp256k1.sign(hash, this.privateKey).toCompactRawBytes(); + } + + public isTokenExpired(token: Token): boolean { + if (token.expiresAt) { + const expires = timestampDate(token.expiresAt); + const now = new Date(); + return expires < now; + } else { + return false; + } + } + + verify(signed: SignedToken): boolean { + const signature = secp256k1.Signature.fromCompact(signed.signature); + const hash = sha256(signed.serializedToken); + // We only care about token validity from the token manager's perspective and so + // here we're not verifying against singed.publicKey.contents + return secp256k1.verify(signature, hash, this.publicKey.contents); + } + + serialize(signed: SignedToken): string { + const binary = toBinary(SignedTokenSchema, signed); + return btoa(String.fromCharCode(...binary)); + } + + deserialize(data: string): SignedToken { + const bytes = atob(data) + .split("") + .map((char) => char.charCodeAt(0)); + const binary = new Uint8Array(bytes); + return fromBinary(SignedTokenSchema, binary); + } + + static fromSeed(seed: string): TokenAuthManager { + const privateKey = sha256(seed); + return new TokenAuthManager(privateKey); + } +} diff --git a/client-vms/src/gen-proto/nillion/auth/v1/public_key_pb.ts b/client-vms/src/gen-proto/nillion/auth/v1/public_key_pb.ts new file mode 100644 index 0000000..0f70fac --- /dev/null +++ b/client-vms/src/gen-proto/nillion/auth/v1/public_key_pb.ts @@ -0,0 +1,77 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/auth/v1/public_key.proto (package nillion.auth.v1.public_key, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/auth/v1/public_key.proto. + */ +export const file_nillion_auth_v1_public_key: GenFile = /*@__PURE__*/ + fileDesc("CiBuaWxsaW9uL2F1dGgvdjEvcHVibGljX2tleS5wcm90bxIabmlsbGlvbi5hdXRoLnYxLnB1YmxpY19rZXkiWgoJUHVibGljS2V5EjsKCGtleV90eXBlGAEgASgOMikubmlsbGlvbi5hdXRoLnYxLnB1YmxpY19rZXkuUHVibGljS2V5VHlwZRIQCghjb250ZW50cxgCIAEoDCorCg1QdWJsaWNLZXlUeXBlEgsKB0VEMjU1MTkQABINCglTRUNQMjU2SzEQAUK4AQoeY29tLm5pbGxpb24uYXV0aC52MS5wdWJsaWNfa2V5Qg5QdWJsaWNLZXlQcm90b1ABogIETkFWUKoCGU5pbGxpb24uQXV0aC5WMS5QdWJsaWNLZXnKAhlOaWxsaW9uXEF1dGhcVjFcUHVibGljS2V54gIlTmlsbGlvblxBdXRoXFYxXFB1YmxpY0tleVxHUEJNZXRhZGF0YeoCHE5pbGxpb246OkF1dGg6OlYxOjpQdWJsaWNLZXliBnByb3RvMw"); + +/** + * A public key. + * + * Signatures associated to this public key must be a 64 bytes long sequence which is the result of the + * concatenation of the `r` and `s` scalars in the signature, each encoded in big endian. + * + * @generated from message nillion.auth.v1.public_key.PublicKey + */ +export type PublicKey = Message<"nillion.auth.v1.public_key.PublicKey"> & { + /** + * The type of this public key. + * + * @generated from field: nillion.auth.v1.public_key.PublicKeyType key_type = 1; + */ + keyType: PublicKeyType; + + /** + * The contents of this key. + * + * This is dependent on the `key_type` in this key: + * + * * For ED25519 it should be the curve point in its 32 byte compressed form. + * * For SECP256K1 it should be the curve point in its 33 byte compressed form. + * + * @generated from field: bytes contents = 2; + */ + contents: Uint8Array; +}; + +/** + * Describes the message nillion.auth.v1.public_key.PublicKey. + * Use `create(PublicKeySchema)` to create a new message. + */ +export const PublicKeySchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_auth_v1_public_key, 0); + +/** + * A public key type. + * + * @generated from enum nillion.auth.v1.public_key.PublicKeyType + */ +export enum PublicKeyType { + /** + * An ED25519 public key. + * + * @generated from enum value: ED25519 = 0; + */ + ED25519 = 0, + + /** + * A SECP256K1 public key. + * + * @generated from enum value: SECP256K1 = 1; + */ + SECP256K1 = 1, +} + +/** + * Describes the enum nillion.auth.v1.public_key.PublicKeyType. + */ +export const PublicKeyTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_nillion_auth_v1_public_key, 0); + diff --git a/client-vms/src/gen-proto/nillion/auth/v1/token_pb.ts b/client-vms/src/gen-proto/nillion/auth/v1/token_pb.ts new file mode 100644 index 0000000..94db069 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/auth/v1/token_pb.ts @@ -0,0 +1,96 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/auth/v1/token.proto (package nillion.auth.v1.token, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { PublicKey } from "./public_key_pb"; +import { file_nillion_auth_v1_public_key } from "./public_key_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/auth/v1/token.proto. + */ +export const file_nillion_auth_v1_token: GenFile = /*@__PURE__*/ + fileDesc("ChtuaWxsaW9uL2F1dGgvdjEvdG9rZW4ucHJvdG8SFW5pbGxpb24uYXV0aC52MS50b2tlbiJ1CgtTaWduZWRUb2tlbhIYChBzZXJpYWxpemVkX3Rva2VuGAEgASgMEjkKCnB1YmxpY19rZXkYAiABKAsyJS5uaWxsaW9uLmF1dGgudjEucHVibGljX2tleS5QdWJsaWNLZXkSEQoJc2lnbmF0dXJlGAMgASgMIl8KBVRva2VuEg0KBW5vbmNlGAEgASgMEhcKD3RhcmdldF9pZGVudGl0eRgCIAEoDBIuCgpleHBpcmVzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEKfAQoZY29tLm5pbGxpb24uYXV0aC52MS50b2tlbkIKVG9rZW5Qcm90b1ABogIETkFWVKoCFU5pbGxpb24uQXV0aC5WMS5Ub2tlbsoCFU5pbGxpb25cQXV0aFxWMVxUb2tlbuICIU5pbGxpb25cQXV0aFxWMVxUb2tlblxHUEJNZXRhZGF0YeoCGE5pbGxpb246OkF1dGg6OlYxOjpUb2tlbmIGcHJvdG8z", [file_google_protobuf_timestamp, file_nillion_auth_v1_public_key]); + +/** + * A signed authentication token. + * + * @generated from message nillion.auth.v1.token.SignedToken + */ +export type SignedToken = Message<"nillion.auth.v1.token.SignedToken"> & { + /** + * A `Token` serialized into bytes. + * + * @generated from field: bytes serialized_token = 1; + */ + serializedToken: Uint8Array; + + /** + * The public key for the private key this token is signed with. + * + * @generated from field: nillion.auth.v1.public_key.PublicKey public_key = 2; + */ + publicKey?: PublicKey; + + /** + * The serialized token signature. + * + * The signature must be generated using the private key corresponding to the `public_key` field + * over `sha256(serialized_token)`. + * + * @generated from field: bytes signature = 3; + */ + signature: Uint8Array; +}; + +/** + * Describes the message nillion.auth.v1.token.SignedToken. + * Use `create(SignedTokenSchema)` to create a new message. + */ +export const SignedTokenSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_auth_v1_token, 0); + +/** + * A token. + * + * @generated from message nillion.auth.v1.token.Token + */ +export type Token = Message<"nillion.auth.v1.token.Token"> & { + /** + * A nonce that adds entropy to this token. + * + * The nonce must be 32 bytes long and will be considered invalid otherwise. + * + * @generated from field: bytes nonce = 1; + */ + nonce: Uint8Array; + + /** + * The identifier of the node this token is meant to be used against. + * + * This needs to match the target node's identity for the token to be considered valid, and is used to prevent + * a node from taking the token and impersonating the user. + * + * @generated from field: bytes target_identity = 2; + */ + targetIdentity: Uint8Array; + + /** + * The timestamp at which this token expires. + * + * @generated from field: google.protobuf.Timestamp expires_at = 3; + */ + expiresAt?: Timestamp; +}; + +/** + * Describes the message nillion.auth.v1.token.Token. + * Use `create(TokenSchema)` to create a new message. + */ +export const TokenSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_auth_v1_token, 1); + diff --git a/client-vms/src/gen-proto/nillion/compute/v1/invoke_pb.ts b/client-vms/src/gen-proto/nillion/compute/v1/invoke_pb.ts new file mode 100644 index 0000000..9ad9748 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/compute/v1/invoke_pb.ts @@ -0,0 +1,144 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/compute/v1/invoke.proto (package nillion.compute.v1.invoke, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/compute/v1/invoke.proto. + */ +export const file_nillion_compute_v1_invoke: GenFile = /*@__PURE__*/ + fileDesc("Ch9uaWxsaW9uL2NvbXB1dGUvdjEvaW52b2tlLnByb3RvEhluaWxsaW9uLmNvbXB1dGUudjEuaW52b2tlIpMCChRJbnZva2VDb21wdXRlUmVxdWVzdBJCCg5zaWduZWRfcmVjZWlwdBgBIAEoCzIqLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5TaWduZWRSZWNlaXB0EhEKCXZhbHVlX2lkcxgCIAMoDBIWCg5iaW5jb2RlX3ZhbHVlcxgDIAEoDBJECg5pbnB1dF9iaW5kaW5ncxgEIAMoCzIsLm5pbGxpb24uY29tcHV0ZS52MS5pbnZva2UuSW5wdXRQYXJ0eUJpbmRpbmcSRgoPb3V0cHV0X2JpbmRpbmdzGAUgAygLMi0ubmlsbGlvbi5jb21wdXRlLnYxLmludm9rZS5PdXRwdXRQYXJ0eUJpbmRpbmciKwoVSW52b2tlQ29tcHV0ZVJlc3BvbnNlEhIKCmNvbXB1dGVfaWQYASABKAwiOAoRSW5wdXRQYXJ0eUJpbmRpbmcSEgoKcGFydHlfbmFtZRgBIAEoCRIPCgd1c2VyX2lkGAIgASgJIjoKEk91dHB1dFBhcnR5QmluZGluZxISCgpwYXJ0eV9uYW1lGAEgASgJEhAKCHVzZXJfaWRzGAIgAygJQrQBCh1jb20ubmlsbGlvbi5jb21wdXRlLnYxLmludm9rZUILSW52b2tlUHJvdG9QAaICBE5DVkmqAhlOaWxsaW9uLkNvbXB1dGUuVjEuSW52b2tlygIZTmlsbGlvblxDb21wdXRlXFYxXEludm9rZeICJU5pbGxpb25cQ29tcHV0ZVxWMVxJbnZva2VcR1BCTWV0YWRhdGHqAhxOaWxsaW9uOjpDb21wdXRlOjpWMTo6SW52b2tlYgZwcm90bzM", [file_nillion_payments_v1_receipt]); + +/** + * A request to invoke a computation. + * + * @generated from message nillion.compute.v1.invoke.InvokeComputeRequest + */ +export type InvokeComputeRequest = Message<"nillion.compute.v1.invoke.InvokeComputeRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `InvokeCompute` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; + + /** + * The value ids for previously stored values being used as parameters to this compute operation. + * + * @generated from field: repeated bytes value_ids = 2; + */ + valueIds: Uint8Array[]; + + /** + * The values being used as compute-time parameters, encoded in bincode format. + * + * @generated from field: bytes bincode_values = 3; + */ + bincodeValues: Uint8Array; + + /** + * The bindings that define which input party in the program is which user in the network. + * + * @generated from field: repeated nillion.compute.v1.invoke.InputPartyBinding input_bindings = 4; + */ + inputBindings: InputPartyBinding[]; + + /** + * The bindings that define which output party in the program is which users in the network. + * + * @generated from field: repeated nillion.compute.v1.invoke.OutputPartyBinding output_bindings = 5; + */ + outputBindings: OutputPartyBinding[]; +}; + +/** + * Describes the message nillion.compute.v1.invoke.InvokeComputeRequest. + * Use `create(InvokeComputeRequestSchema)` to create a new message. + */ +export const InvokeComputeRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_invoke, 0); + +/** + * A response to a request to invoke a computation. + * + * @generated from message nillion.compute.v1.invoke.InvokeComputeResponse + */ +export type InvokeComputeResponse = Message<"nillion.compute.v1.invoke.InvokeComputeResponse"> & { + /** + * An identifier for the execution of the computation. + * + * @generated from field: bytes compute_id = 1; + */ + computeId: Uint8Array; +}; + +/** + * Describes the message nillion.compute.v1.invoke.InvokeComputeResponse. + * Use `create(InvokeComputeResponseSchema)` to create a new message. + */ +export const InvokeComputeResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_invoke, 1); + +/** + * The bindings for input parties in this program. + * + * @generated from message nillion.compute.v1.invoke.InputPartyBinding + */ +export type InputPartyBinding = Message<"nillion.compute.v1.invoke.InputPartyBinding"> & { + /** + * The name of the party as defined in the program. + * + * @generated from field: string party_name = 1; + */ + partyName: string; + + /** + * The user identity this party is being bound to. + * + * @generated from field: string user_id = 2; + */ + userId: string; +}; + +/** + * Describes the message nillion.compute.v1.invoke.InputPartyBinding. + * Use `create(InputPartyBindingSchema)` to create a new message. + */ +export const InputPartyBindingSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_invoke, 2); + +/** + * The bindings for output parties in this program. + * + * @generated from message nillion.compute.v1.invoke.OutputPartyBinding + */ +export type OutputPartyBinding = Message<"nillion.compute.v1.invoke.OutputPartyBinding"> & { + /** + * The name of the party as defined in the program. + * + * @generated from field: string party_name = 1; + */ + partyName: string; + + /** + * The user identities this party is being bound to. + * + * @generated from field: repeated string user_ids = 2; + */ + userIds: string[]; +}; + +/** + * Describes the message nillion.compute.v1.invoke.OutputPartyBinding. + * Use `create(OutputPartyBindingSchema)` to create a new message. + */ +export const OutputPartyBindingSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_invoke, 3); + diff --git a/client-vms/src/gen-proto/nillion/compute/v1/retrieve_pb.ts b/client-vms/src/gen-proto/nillion/compute/v1/retrieve_pb.ts new file mode 100644 index 0000000..483eb9a --- /dev/null +++ b/client-vms/src/gen-proto/nillion/compute/v1/retrieve_pb.ts @@ -0,0 +1,103 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/compute/v1/retrieve.proto (package nillion.compute.v1.retrieve, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Empty } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/compute/v1/retrieve.proto. + */ +export const file_nillion_compute_v1_retrieve: GenFile = /*@__PURE__*/ + fileDesc("CiFuaWxsaW9uL2NvbXB1dGUvdjEvcmV0cmlldmUucHJvdG8SG25pbGxpb24uY29tcHV0ZS52MS5yZXRyaWV2ZSIsChZSZXRyaWV2ZVJlc3VsdHNSZXF1ZXN0EhIKCmNvbXB1dGVfaWQYASABKAwirQEKF1JldHJpZXZlUmVzdWx0c1Jlc3BvbnNlEjUKE3dhaXRpbmdfY29tcHV0YXRpb24YASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABJBCgdzdWNjZXNzGAIgASgLMi4ubmlsbGlvbi5jb21wdXRlLnYxLnJldHJpZXZlLkNvbXB1dGF0aW9uUmVzdWx0SAASDwoFZXJyb3IYAyABKAlIAEIHCgVzdGF0ZSIrChFDb21wdXRhdGlvblJlc3VsdBIWCg5iaW5jb2RlX3ZhbHVlcxgBIAEoDELAAQofY29tLm5pbGxpb24uY29tcHV0ZS52MS5yZXRyaWV2ZUINUmV0cmlldmVQcm90b1ABogIETkNWUqoCG05pbGxpb24uQ29tcHV0ZS5WMS5SZXRyaWV2ZcoCG05pbGxpb25cQ29tcHV0ZVxWMVxSZXRyaWV2ZeICJ05pbGxpb25cQ29tcHV0ZVxWMVxSZXRyaWV2ZVxHUEJNZXRhZGF0YeoCHk5pbGxpb246OkNvbXB1dGU6OlYxOjpSZXRyaWV2ZWIGcHJvdG8z", [file_google_protobuf_empty]); + +/** + * A request to retrieve the results of a computation. + * + * @generated from message nillion.compute.v1.retrieve.RetrieveResultsRequest + */ +export type RetrieveResultsRequest = Message<"nillion.compute.v1.retrieve.RetrieveResultsRequest"> & { + /** + * The instance of the computation to retrieve results for. + * + * @generated from field: bytes compute_id = 1; + */ + computeId: Uint8Array; +}; + +/** + * Describes the message nillion.compute.v1.retrieve.RetrieveResultsRequest. + * Use `create(RetrieveResultsRequestSchema)` to create a new message. + */ +export const RetrieveResultsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_retrieve, 0); + +/** + * The response to a request to retrieve the results of a computation. + * + * @generated from message nillion.compute.v1.retrieve.RetrieveResultsResponse + */ +export type RetrieveResultsResponse = Message<"nillion.compute.v1.retrieve.RetrieveResultsResponse"> & { + /** + * @generated from oneof nillion.compute.v1.retrieve.RetrieveResultsResponse.state + */ + state: { + /** + * The node is waiting for the computation to end. + * + * This message may be sent 0+ times in a row until a `result` is sent. + * + * @generated from field: google.protobuf.Empty waiting_computation = 1; + */ + value: Empty; + case: "waitingComputation"; + } | { + /** + * The computation finished successfully and yielded these results. + * + * @generated from field: nillion.compute.v1.retrieve.ComputationResult success = 2; + */ + value: ComputationResult; + case: "success"; + } | { + /** + * The error message if any. + * + * @generated from field: string error = 3; + */ + value: string; + case: "error"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message nillion.compute.v1.retrieve.RetrieveResultsResponse. + * Use `create(RetrieveResultsResponseSchema)` to create a new message. + */ +export const RetrieveResultsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_retrieve, 1); + +/** + * The result of a computation. + * + * @generated from message nillion.compute.v1.retrieve.ComputationResult + */ +export type ComputationResult = Message<"nillion.compute.v1.retrieve.ComputationResult"> & { + /** + * The computation results, encoded in bincode. + * + * @generated from field: bytes bincode_values = 1; + */ + bincodeValues: Uint8Array; +}; + +/** + * Describes the message nillion.compute.v1.retrieve.ComputationResult. + * Use `create(ComputationResultSchema)` to create a new message. + */ +export const ComputationResultSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_retrieve, 2); + diff --git a/client-vms/src/gen-proto/nillion/compute/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/compute/v1/service_pb.ts new file mode 100644 index 0000000..121a034 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/compute/v1/service_pb.ts @@ -0,0 +1,69 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/compute/v1/service.proto (package nillion.compute.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { EmptySchema } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { InvokeComputeRequestSchema, InvokeComputeResponseSchema } from "./invoke_pb"; +import { file_nillion_compute_v1_invoke } from "./invoke_pb"; +import type { ComputeStreamMessageSchema } from "./stream_pb"; +import { file_nillion_compute_v1_stream } from "./stream_pb"; +import type { RetrieveResultsRequestSchema, RetrieveResultsResponseSchema } from "./retrieve_pb"; +import { file_nillion_compute_v1_retrieve } from "./retrieve_pb"; + +/** + * Describes the file nillion/compute/v1/service.proto. + */ +export const file_nillion_compute_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiBuaWxsaW9uL2NvbXB1dGUvdjEvc2VydmljZS5wcm90bxISbmlsbGlvbi5jb21wdXRlLnYxMtkCCgdDb21wdXRlEnIKDUludm9rZUNvbXB1dGUSLy5uaWxsaW9uLmNvbXB1dGUudjEuaW52b2tlLkludm9rZUNvbXB1dGVSZXF1ZXN0GjAubmlsbGlvbi5jb21wdXRlLnYxLmludm9rZS5JbnZva2VDb21wdXRlUmVzcG9uc2USWgoNU3RyZWFtQ29tcHV0ZRIvLm5pbGxpb24uY29tcHV0ZS52MS5zdHJlYW0uQ29tcHV0ZVN0cmVhbU1lc3NhZ2UaFi5nb29nbGUucHJvdG9idWYuRW1wdHkoARJ+Cg9SZXRyaWV2ZVJlc3VsdHMSMy5uaWxsaW9uLmNvbXB1dGUudjEucmV0cmlldmUuUmV0cmlldmVSZXN1bHRzUmVxdWVzdBo0Lm5pbGxpb24uY29tcHV0ZS52MS5yZXRyaWV2ZS5SZXRyaWV2ZVJlc3VsdHNSZXNwb25zZTABQpABChZjb20ubmlsbGlvbi5jb21wdXRlLnYxQgxTZXJ2aWNlUHJvdG9QAaICA05DWKoCEk5pbGxpb24uQ29tcHV0ZS5WMcoCEk5pbGxpb25cQ29tcHV0ZVxWMeICHk5pbGxpb25cQ29tcHV0ZVxWMVxHUEJNZXRhZGF0YeoCFE5pbGxpb246OkNvbXB1dGU6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_nillion_compute_v1_invoke, file_nillion_compute_v1_stream, file_nillion_compute_v1_retrieve]); + +/** + * A service to perform compute operations. + * + * @generated from service nillion.compute.v1.Compute + */ +export const Compute: GenService<{ + /** + * Invoke a computation. + * + * @generated from rpc nillion.compute.v1.Compute.InvokeCompute + */ + invokeCompute: { + methodKind: "unary"; + input: typeof InvokeComputeRequestSchema; + output: typeof InvokeComputeResponseSchema; + }, + /** + * Start a stream of message for a specific instance of a computation. + * + * This is meant to be used internally by nodes in the network. + * + * @generated from rpc nillion.compute.v1.Compute.StreamCompute + */ + streamCompute: { + methodKind: "client_streaming"; + input: typeof ComputeStreamMessageSchema; + output: typeof EmptySchema; + }, + /** + * Retrieve the result of a computation. + * + * The user invoking this operation must have been defined as an output party in the program + * the execution was tied to. + * + * This call will wait for the program execution to end if it hasn't done so already. Clients must + * wait until either a result or failure message is sent, ignoring any `Waiting` messages sent until + * that happens. + * + * @generated from rpc nillion.compute.v1.Compute.RetrieveResults + */ + retrieveResults: { + methodKind: "server_streaming"; + input: typeof RetrieveResultsRequestSchema; + output: typeof RetrieveResultsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_compute_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/compute/v1/stream_pb.ts b/client-vms/src/gen-proto/nillion/compute/v1/stream_pb.ts new file mode 100644 index 0000000..b4c44ed --- /dev/null +++ b/client-vms/src/gen-proto/nillion/compute/v1/stream_pb.ts @@ -0,0 +1,45 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/compute/v1/stream.proto (package nillion.compute.v1.stream, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/compute/v1/stream.proto. + */ +export const file_nillion_compute_v1_stream: GenFile = /*@__PURE__*/ + fileDesc("Ch9uaWxsaW9uL2NvbXB1dGUvdjEvc3RyZWFtLnByb3RvEhluaWxsaW9uLmNvbXB1dGUudjEuc3RyZWFtIkMKFENvbXB1dGVTdHJlYW1NZXNzYWdlEhIKCmNvbXB1dGVfaWQYASABKAwSFwoPYmluY29kZV9tZXNzYWdlGAIgASgMQrQBCh1jb20ubmlsbGlvbi5jb21wdXRlLnYxLnN0cmVhbUILU3RyZWFtUHJvdG9QAaICBE5DVlOqAhlOaWxsaW9uLkNvbXB1dGUuVjEuU3RyZWFtygIZTmlsbGlvblxDb21wdXRlXFYxXFN0cmVhbeICJU5pbGxpb25cQ29tcHV0ZVxWMVxTdHJlYW1cR1BCTWV0YWRhdGHqAhxOaWxsaW9uOjpDb21wdXRlOjpWMTo6U3RyZWFtYgZwcm90bzM"); + +/** + * A message for a compute stream. + * + * @generated from message nillion.compute.v1.stream.ComputeStreamMessage + */ +export type ComputeStreamMessage = Message<"nillion.compute.v1.stream.ComputeStreamMessage"> & { + /** + * An identifier for the computation instance. + * + * Only the first ever message on the stream requires having this attribute set. Any subsequent message will + * have this field ignored. + * + * @generated from field: bytes compute_id = 1; + */ + computeId: Uint8Array; + + /** + * The VM message in bincode format. + * + * @generated from field: bytes bincode_message = 2; + */ + bincodeMessage: Uint8Array; +}; + +/** + * Describes the message nillion.compute.v1.stream.ComputeStreamMessage. + * Use `create(ComputeStreamMessageSchema)` to create a new message. + */ +export const ComputeStreamMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_compute_v1_stream, 0); + diff --git a/client-vms/src/gen-proto/nillion/leader_queries/v1/pool_status_pb.ts b/client-vms/src/gen-proto/nillion/leader_queries/v1/pool_status_pb.ts new file mode 100644 index 0000000..9be2330 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/leader_queries/v1/pool_status_pb.ts @@ -0,0 +1,106 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/leader_queries/v1/pool_status.proto (package nillion.leader_queries.v1.pool_status, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PreprocessingElement } from "../../preprocessing/v1/element_pb"; +import { file_nillion_preprocessing_v1_element } from "../../preprocessing/v1/element_pb"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/leader_queries/v1/pool_status.proto. + */ +export const file_nillion_leader_queries_v1_pool_status: GenFile = /*@__PURE__*/ + fileDesc("CituaWxsaW9uL2xlYWRlcl9xdWVyaWVzL3YxL3Bvb2xfc3RhdHVzLnByb3RvEiVuaWxsaW9uLmxlYWRlcl9xdWVyaWVzLnYxLnBvb2xfc3RhdHVzIlcKEVBvb2xTdGF0dXNSZXF1ZXN0EkIKDnNpZ25lZF9yZWNlaXB0GAEgASgLMioubmlsbGlvbi5wYXltZW50cy52MS5yZWNlaXB0LlNpZ25lZFJlY2VpcHQigAEKElBvb2xTdGF0dXNSZXNwb25zZRJMCgdvZmZzZXRzGAEgAygLMjsubmlsbGlvbi5sZWFkZXJfcXVlcmllcy52MS5wb29sX3N0YXR1cy5QcmVwcm9jZXNzaW5nT2Zmc2V0cxIcChRwcmVwcm9jZXNzaW5nX2FjdGl2ZRgCIAEoCCJ7ChRQcmVwcm9jZXNzaW5nT2Zmc2V0cxJHCgdlbGVtZW50GAEgASgOMjYubmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmVsZW1lbnQuUHJlcHJvY2Vzc2luZ0VsZW1lbnQSDQoFc3RhcnQYAiABKAQSCwoDZW5kGAMgASgEQuwBCiljb20ubmlsbGlvbi5sZWFkZXJfcXVlcmllcy52MS5wb29sX3N0YXR1c0IPUG9vbFN0YXR1c1Byb3RvUAGiAgROTFZQqgIjTmlsbGlvbi5MZWFkZXJRdWVyaWVzLlYxLlBvb2xTdGF0dXPKAiNOaWxsaW9uXExlYWRlclF1ZXJpZXNcVjFcUG9vbFN0YXR1c+ICL05pbGxpb25cTGVhZGVyUXVlcmllc1xWMVxQb29sU3RhdHVzXEdQQk1ldGFkYXRh6gImTmlsbGlvbjo6TGVhZGVyUXVlcmllczo6VjE6OlBvb2xTdGF0dXNiBnByb3RvMw", [file_nillion_preprocessing_v1_element, file_nillion_payments_v1_receipt]); + +/** + * A request to get the preprocessing pool status. + * + * @generated from message nillion.leader_queries.v1.pool_status.PoolStatusRequest + */ +export type PoolStatusRequest = Message<"nillion.leader_queries.v1.pool_status.PoolStatusRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `PoolStatus` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; +}; + +/** + * Describes the message nillion.leader_queries.v1.pool_status.PoolStatusRequest. + * Use `create(PoolStatusRequestSchema)` to create a new message. + */ +export const PoolStatusRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_leader_queries_v1_pool_status, 0); + +/** + * A response for the request to get the status of the preprocessing pool. + * + * @generated from message nillion.leader_queries.v1.pool_status.PoolStatusResponse + */ +export type PoolStatusResponse = Message<"nillion.leader_queries.v1.pool_status.PoolStatusResponse"> & { + /** + * The offset ranges for each preprocessing element. + * + * @generated from field: repeated nillion.leader_queries.v1.pool_status.PreprocessingOffsets offsets = 1; + */ + offsets: PreprocessingOffsets[]; + + /** + * Whether preprocessing is active (at least one element type is being generated). + * + * @generated from field: bool preprocessing_active = 2; + */ + preprocessingActive: boolean; +}; + +/** + * Describes the message nillion.leader_queries.v1.pool_status.PoolStatusResponse. + * Use `create(PoolStatusResponseSchema)` to create a new message. + */ +export const PoolStatusResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_leader_queries_v1_pool_status, 1); + +/** + * The offsets for a preprocessing element. + * + * This is closed-open set, e.g. [start, end) + * + * @generated from message nillion.leader_queries.v1.pool_status.PreprocessingOffsets + */ +export type PreprocessingOffsets = Message<"nillion.leader_queries.v1.pool_status.PreprocessingOffsets"> & { + /** + * The preprocessing element. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 1; + */ + element: PreprocessingElement; + + /** + * The first offset in the range. + * + * @generated from field: uint64 start = 2; + */ + start: bigint; + + /** + * The one-past-the-end offset in this range. + * + * @generated from field: uint64 end = 3; + */ + end: bigint; +}; + +/** + * Describes the message nillion.leader_queries.v1.pool_status.PreprocessingOffsets. + * Use `create(PreprocessingOffsetsSchema)` to create a new message. + */ +export const PreprocessingOffsetsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_leader_queries_v1_pool_status, 2); + diff --git a/client-vms/src/gen-proto/nillion/leader_queries/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/leader_queries/v1/service_pb.ts new file mode 100644 index 0000000..f241f9c --- /dev/null +++ b/client-vms/src/gen-proto/nillion/leader_queries/v1/service_pb.ts @@ -0,0 +1,34 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/leader_queries/v1/service.proto (package nillion.leader_queries.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PoolStatusRequestSchema, PoolStatusResponseSchema } from "./pool_status_pb"; +import { file_nillion_leader_queries_v1_pool_status } from "./pool_status_pb"; + +/** + * Describes the file nillion/leader_queries/v1/service.proto. + */ +export const file_nillion_leader_queries_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiduaWxsaW9uL2xlYWRlcl9xdWVyaWVzL3YxL3NlcnZpY2UucHJvdG8SGW5pbGxpb24ubGVhZGVyX3F1ZXJpZXMudjEykwEKDUxlYWRlclF1ZXJpZXMSgQEKClBvb2xTdGF0dXMSOC5uaWxsaW9uLmxlYWRlcl9xdWVyaWVzLnYxLnBvb2xfc3RhdHVzLlBvb2xTdGF0dXNSZXF1ZXN0GjkubmlsbGlvbi5sZWFkZXJfcXVlcmllcy52MS5wb29sX3N0YXR1cy5Qb29sU3RhdHVzUmVzcG9uc2VCrwEKHWNvbS5uaWxsaW9uLmxlYWRlcl9xdWVyaWVzLnYxQgxTZXJ2aWNlUHJvdG9QAaICA05MWKoCGE5pbGxpb24uTGVhZGVyUXVlcmllcy5WMcoCGE5pbGxpb25cTGVhZGVyUXVlcmllc1xWMeICJE5pbGxpb25cTGVhZGVyUXVlcmllc1xWMVxHUEJNZXRhZGF0YeoCGk5pbGxpb246OkxlYWRlclF1ZXJpZXM6OlYxYgZwcm90bzM", [file_nillion_leader_queries_v1_pool_status]); + +/** + * A service that allows performing queries against the leader of the cluster. + * + * @generated from service nillion.leader_queries.v1.LeaderQueries + */ +export const LeaderQueries: GenService<{ + /** + * Get the status of the preprocessing pool. + * + * @generated from rpc nillion.leader_queries.v1.LeaderQueries.PoolStatus + */ + poolStatus: { + methodKind: "unary"; + input: typeof PoolStatusRequestSchema; + output: typeof PoolStatusResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_leader_queries_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/membership/v1/cluster_pb.ts b/client-vms/src/gen-proto/nillion/membership/v1/cluster_pb.ts new file mode 100644 index 0000000..80f1205 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/membership/v1/cluster_pb.ts @@ -0,0 +1,172 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/membership/v1/cluster.proto (package nillion.membership.v1.cluster, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PublicKey } from "../../auth/v1/public_key_pb"; +import { file_nillion_auth_v1_public_key } from "../../auth/v1/public_key_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/membership/v1/cluster.proto. + */ +export const file_nillion_membership_v1_cluster: GenFile = /*@__PURE__*/ + fileDesc("CiNuaWxsaW9uL21lbWJlcnNoaXAvdjEvY2x1c3Rlci5wcm90bxIdbmlsbGlvbi5tZW1iZXJzaGlwLnYxLmNsdXN0ZXIi5QEKB0NsdXN0ZXISPQoHbWVtYmVycxgBIAMoCzIsLm5pbGxpb24ubWVtYmVyc2hpcC52MS5jbHVzdGVyLkNsdXN0ZXJNZW1iZXISPAoGbGVhZGVyGAIgASgLMiwubmlsbGlvbi5tZW1iZXJzaGlwLnYxLmNsdXN0ZXIuQ2x1c3Rlck1lbWJlchIzCgVwcmltZRgDIAEoDjIkLm5pbGxpb24ubWVtYmVyc2hpcC52MS5jbHVzdGVyLlByaW1lEhkKEXBvbHlub21pYWxfZGVncmVlGAQgASgNEg0KBWthcHBhGAUgASgNIrMBCg1DbHVzdGVyTWVtYmVyEhAKCGlkZW50aXR5GAEgASgMEjkKCnB1YmxpY19rZXkYAiABKAsyJS5uaWxsaW9uLmF1dGgudjEucHVibGljX2tleS5QdWJsaWNLZXkSFQoNZ3JwY19lbmRwb2ludBgDIAEoCRI+CgtwdWJsaWNfa2V5cxgEIAEoCzIpLm5pbGxpb24ubWVtYmVyc2hpcC52MS5jbHVzdGVyLlB1YmxpY0tleXMiSwoKUHVibGljS2V5cxI9Cg5hdXRoZW50aWNhdGlvbhgBIAEoCzIlLm5pbGxpb24uYXV0aC52MS5wdWJsaWNfa2V5LlB1YmxpY0tleSo/CgVQcmltZRIQCgxTQUZFXzY0X0JJVFMQABIRCg1TQUZFXzEyOF9CSVRTEAESEQoNU0FGRV8yNTZfQklUUxACQskBCiFjb20ubmlsbGlvbi5tZW1iZXJzaGlwLnYxLmNsdXN0ZXJCDENsdXN0ZXJQcm90b1ABogIETk1WQ6oCHU5pbGxpb24uTWVtYmVyc2hpcC5WMS5DbHVzdGVyygIdTmlsbGlvblxNZW1iZXJzaGlwXFYxXENsdXN0ZXLiAilOaWxsaW9uXE1lbWJlcnNoaXBcVjFcQ2x1c3RlclxHUEJNZXRhZGF0YeoCIE5pbGxpb246Ok1lbWJlcnNoaXA6OlYxOjpDbHVzdGVyYgZwcm90bzM", [file_nillion_auth_v1_public_key]); + +/** + * The definition of a cluster. + * + * @generated from message nillion.membership.v1.cluster.Cluster + */ +export type Cluster = Message<"nillion.membership.v1.cluster.Cluster"> & { + /** + * The members of this cluster. + * + * @generated from field: repeated nillion.membership.v1.cluster.ClusterMember members = 1; + */ + members: ClusterMember[]; + + /** + * The leader of this cluster. + * + * @generated from field: nillion.membership.v1.cluster.ClusterMember leader = 2; + */ + leader?: ClusterMember; + + /** + * The prime number this cluster uses. + * + * @generated from field: nillion.membership.v1.cluster.Prime prime = 3; + */ + prime: Prime; + + /** + * The polynomial degree used in this cluster. + * + * @generated from field: uint32 polynomial_degree = 4; + */ + polynomialDegree: number; + + /** + * The security parameter kappa used in this cluster. + * + * @generated from field: uint32 kappa = 5; + */ + kappa: number; +}; + +/** + * Describes the message nillion.membership.v1.cluster.Cluster. + * Use `create(ClusterSchema)` to create a new message. + */ +export const ClusterSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_membership_v1_cluster, 0); + +/** + * A cluster member. + * + * @generated from message nillion.membership.v1.cluster.ClusterMember + */ +export type ClusterMember = Message<"nillion.membership.v1.cluster.ClusterMember"> & { + /** + * The identity for this member. + * + * This is a unique identifier derived from the public key. + * + * @generated from field: bytes identity = 1; + */ + identity: Uint8Array; + + /** + * The public key for this member. + * + * **This field is deprecated**. `public_keys.authentication` should be used instead. + * + * @generated from field: nillion.auth.v1.public_key.PublicKey public_key = 2; + */ + publicKey?: PublicKey; + + /** + * The gRPC endpoint this member can be reached at. + * + * @generated from field: string grpc_endpoint = 3; + */ + grpcEndpoint: string; + + /** + * The public keys for a cluster member. + * + * @generated from field: nillion.membership.v1.cluster.PublicKeys public_keys = 4; + */ + publicKeys?: PublicKeys; +}; + +/** + * Describes the message nillion.membership.v1.cluster.ClusterMember. + * Use `create(ClusterMemberSchema)` to create a new message. + */ +export const ClusterMemberSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_membership_v1_cluster, 1); + +/** + * The public keys for a cluster member. + * + * @generated from message nillion.membership.v1.cluster.PublicKeys + */ +export type PublicKeys = Message<"nillion.membership.v1.cluster.PublicKeys"> & { + /** + * The authentication public key for this member. + * + * @generated from field: nillion.auth.v1.public_key.PublicKey authentication = 1; + */ + authentication?: PublicKey; +}; + +/** + * Describes the message nillion.membership.v1.cluster.PublicKeys. + * Use `create(PublicKeysSchema)` to create a new message. + */ +export const PublicKeysSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_membership_v1_cluster, 2); + +/** + * A prime number. + * + * @generated from enum nillion.membership.v1.cluster.Prime + */ +export enum Prime { + /** + * A safe 64 bit prime number. + * + * This is prime number 18446744072637906947. + * + * @generated from enum value: SAFE_64_BITS = 0; + */ + SAFE_64_BITS = 0, + + /** + * A safe 128 bit prime number. + * + * This is prime number 340282366920938463463374607429104828419. + * + * @generated from enum value: SAFE_128_BITS = 1; + */ + SAFE_128_BITS = 1, + + /** + * A safe 256 bit prime number. + * + * This is prime number 115792089237316195423570985008687907853269984665640564039457584007911397392387. + * + * @generated from enum value: SAFE_256_BITS = 2; + */ + SAFE_256_BITS = 2, +} + +/** + * Describes the enum nillion.membership.v1.cluster.Prime. + */ +export const PrimeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_nillion_membership_v1_cluster, 0); + diff --git a/client-vms/src/gen-proto/nillion/membership/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/membership/v1/service_pb.ts new file mode 100644 index 0000000..2d2118d --- /dev/null +++ b/client-vms/src/gen-proto/nillion/membership/v1/service_pb.ts @@ -0,0 +1,36 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/membership/v1/service.proto (package nillion.membership.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { EmptySchema } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { ClusterSchema } from "./cluster_pb"; +import { file_nillion_membership_v1_cluster } from "./cluster_pb"; + +/** + * Describes the file nillion/membership/v1/service.proto. + */ +export const file_nillion_membership_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiNuaWxsaW9uL21lbWJlcnNoaXAvdjEvc2VydmljZS5wcm90bxIVbmlsbGlvbi5tZW1iZXJzaGlwLnYxMlcKCk1lbWJlcnNoaXASSQoHQ2x1c3RlchIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRomLm5pbGxpb24ubWVtYmVyc2hpcC52MS5jbHVzdGVyLkNsdXN0ZXJCnwEKGWNvbS5uaWxsaW9uLm1lbWJlcnNoaXAudjFCDFNlcnZpY2VQcm90b1ABogIDTk1YqgIVTmlsbGlvbi5NZW1iZXJzaGlwLlYxygIVTmlsbGlvblxNZW1iZXJzaGlwXFYx4gIhTmlsbGlvblxNZW1iZXJzaGlwXFYxXEdQQk1ldGFkYXRh6gIXTmlsbGlvbjo6TWVtYmVyc2hpcDo6VjFiBnByb3RvMw", [file_google_protobuf_empty, file_nillion_membership_v1_cluster]); + +/** + * Exposes information about a node's membership. + * + * @generated from service nillion.membership.v1.Membership + */ +export const Membership: GenService<{ + /** + * Get the definition of the cluster the node queried is part of. + * + * @generated from rpc nillion.membership.v1.Membership.Cluster + */ + cluster: { + methodKind: "unary"; + input: typeof EmptySchema; + output: typeof ClusterSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_membership_v1_service, 0); + diff --git a/packages/client-payments/src/gen-proto/nillion/meta/v1/msg_pay_for_pb.ts b/client-vms/src/gen-proto/nillion/meta/v1/msg_pay_for_pb.ts similarity index 100% rename from packages/client-payments/src/gen-proto/nillion/meta/v1/msg_pay_for_pb.ts rename to client-vms/src/gen-proto/nillion/meta/v1/msg_pay_for_pb.ts diff --git a/client-vms/src/gen-proto/nillion/payments/v1/quote_pb.ts b/client-vms/src/gen-proto/nillion/payments/v1/quote_pb.ts new file mode 100644 index 0000000..07dec9e --- /dev/null +++ b/client-vms/src/gen-proto/nillion/payments/v1/quote_pb.ts @@ -0,0 +1,495 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/payments/v1/quote.proto (package nillion.payments.v1.quote, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Empty, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { PreprocessingElement } from "../../preprocessing/v1/element_pb"; +import { file_nillion_preprocessing_v1_element } from "../../preprocessing/v1/element_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/payments/v1/quote.proto. + */ +export const file_nillion_payments_v1_quote: GenFile = /*@__PURE__*/ + fileDesc("Ch9uaWxsaW9uL3BheW1lbnRzL3YxL3F1b3RlLnByb3RvEhluaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlIvcDChFQcmljZVF1b3RlUmVxdWVzdBItCgtwb29sX3N0YXR1cxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEkAKDXN0b3JlX3Byb2dyYW0YAiABKAsyJy5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlN0b3JlUHJvZ3JhbUgAEkQKD3JldHJpZXZlX3ZhbHVlcxgDIAEoCzIpLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuUmV0cmlldmVWYWx1ZXNIABJOChRyZXRyaWV2ZV9wZXJtaXNzaW9ucxgEIAEoCzIuLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuUmV0cmlldmVQZXJtaXNzaW9uc0gAEj4KDHN0b3JlX3ZhbHVlcxgFIAEoCzImLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuU3RvcmVWYWx1ZXNIABJCCg5pbnZva2VfY29tcHV0ZRgGIAEoCzIoLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuSW52b2tlQ29tcHV0ZUgAEkoKEnVwZGF0ZV9wZXJtaXNzaW9ucxgHIAEoCzIsLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuVXBkYXRlUGVybWlzc2lvbnNIAEILCglvcGVyYXRpb24iLwoLU2lnbmVkUXVvdGUSDQoFcXVvdGUYASABKAwSEQoJc2lnbmF0dXJlGAIgASgMIpcCCgpQcmljZVF1b3RlEg0KBW5vbmNlGAEgASgMEjIKBGZlZXMYAiABKAsyJC5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlF1b3RlRmVlcxI9CgdyZXF1ZXN0GAMgASgLMiwubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5QcmljZVF1b3RlUmVxdWVzdBIuCgpleHBpcmVzX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBJXChpwcmVwcm9jZXNzaW5nX3JlcXVpcmVtZW50cxgFIAMoCzIzLm5pbGxpb24ucGF5bWVudHMudjEucXVvdGUuUHJlcHJvY2Vzc2luZ1JlcXVpcmVtZW50InUKCVF1b3RlRmVlcxINCgV0b3RhbBgBIAEoBBIMCgRiYXNlGAIgASgEEhIKCmNvbmdlc3Rpb24YAyABKAQSDwoHc3RvcmFnZRgEIAEoBBIVCg1wcmVwcm9jZXNzaW5nGAUgASgEEg8KB2NvbXB1dGUYBiABKAQicwoMU3RvcmVQcm9ncmFtEjwKCG1ldGFkYXRhGAEgASgLMioubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5Qcm9ncmFtTWV0YWRhdGESFwoPY29udGVudHNfc2hhMjU2GAIgASgMEgwKBG5hbWUYAyABKAkiuQIKD1Byb2dyYW1NZXRhZGF0YRIUCgxwcm9ncmFtX3NpemUYASABKAQSEwoLbWVtb3J5X3NpemUYAiABKAQSGQoRaW5zdHJ1Y3Rpb25fY291bnQYAyABKAQSUgoMaW5zdHJ1Y3Rpb25zGAQgAygLMjwubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5Qcm9ncmFtTWV0YWRhdGEuSW5zdHJ1Y3Rpb25zRW50cnkSVwoacHJlcHJvY2Vzc2luZ19yZXF1aXJlbWVudHMYBSADKAsyMy5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlByZXByb2Nlc3NpbmdSZXF1aXJlbWVudBozChFJbnN0cnVjdGlvbnNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAQ6AjgBInIKGFByZXByb2Nlc3NpbmdSZXF1aXJlbWVudBJHCgdlbGVtZW50GAEgASgOMjYubmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmVsZW1lbnQuUHJlcHJvY2Vzc2luZ0VsZW1lbnQSDQoFY291bnQYAiABKAQiIwoOUmV0cmlldmVWYWx1ZXMSEQoJdmFsdWVzX2lkGAEgASgMIigKE1JldHJpZXZlUGVybWlzc2lvbnMSEQoJdmFsdWVzX2lkGAEgASgMIiYKEVVwZGF0ZVBlcm1pc3Npb25zEhEKCXZhbHVlc19pZBgBIAEoDCKIAQoLU3RvcmVWYWx1ZXMSFwoPcGFydGljbGVzX2NvdW50GAEgASgEEhsKE3NlY3JldF9zaGFyZWRfY291bnQYAiABKAQSGwoTcHVibGljX3ZhbHVlc19jb3VudBgDIAEoBBIQCgh0dGxfZGF5cxgEIAEoDRIUCgxwYXlsb2FkX3NpemUYBSABKAQiQAoNSW52b2tlQ29tcHV0ZRISCgpwcm9ncmFtX2lkGAEgASgJEhsKE3ZhbHVlc19wYXlsb2FkX3NpemUYAiABKARCswEKHWNvbS5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlQgpRdW90ZVByb3RvUAGiAgROUFZRqgIZTmlsbGlvbi5QYXltZW50cy5WMS5RdW90ZcoCGU5pbGxpb25cUGF5bWVudHNcVjFcUXVvdGXiAiVOaWxsaW9uXFBheW1lbnRzXFYxXFF1b3RlXEdQQk1ldGFkYXRh6gIcTmlsbGlvbjo6UGF5bWVudHM6OlYxOjpRdW90ZWIGcHJvdG8z", [file_google_protobuf_empty, file_google_protobuf_timestamp, file_nillion_preprocessing_v1_element]); + +/** + * A price quote request. + * + * @generated from message nillion.payments.v1.quote.PriceQuoteRequest + */ +export type PriceQuoteRequest = Message<"nillion.payments.v1.quote.PriceQuoteRequest"> & { + /** + * @generated from oneof nillion.payments.v1.quote.PriceQuoteRequest.operation + */ + operation: { + /** + * A pool status operation. + * + * @generated from field: google.protobuf.Empty pool_status = 1; + */ + value: Empty; + case: "poolStatus"; + } | { + /** + * A store program operation. + * + * @generated from field: nillion.payments.v1.quote.StoreProgram store_program = 2; + */ + value: StoreProgram; + case: "storeProgram"; + } | { + /** + * A retrieve values operation. + * + * @generated from field: nillion.payments.v1.quote.RetrieveValues retrieve_values = 3; + */ + value: RetrieveValues; + case: "retrieveValues"; + } | { + /** + * A retrieve permissions operation. + * + * @generated from field: nillion.payments.v1.quote.RetrievePermissions retrieve_permissions = 4; + */ + value: RetrievePermissions; + case: "retrievePermissions"; + } | { + /** + * A store values operation. + * + * @generated from field: nillion.payments.v1.quote.StoreValues store_values = 5; + */ + value: StoreValues; + case: "storeValues"; + } | { + /** + * A invoke compute operation. + * + * @generated from field: nillion.payments.v1.quote.InvokeCompute invoke_compute = 6; + */ + value: InvokeCompute; + case: "invokeCompute"; + } | { + /** + * A retrieve permissions operation. + * + * @generated from field: nillion.payments.v1.quote.UpdatePermissions update_permissions = 7; + */ + value: UpdatePermissions; + case: "updatePermissions"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message nillion.payments.v1.quote.PriceQuoteRequest. + * Use `create(PriceQuoteRequestSchema)` to create a new message. + */ +export const PriceQuoteRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 0); + +/** + * A quote signed by the node that generated it. + * + * @generated from message nillion.payments.v1.quote.SignedQuote + */ +export type SignedQuote = Message<"nillion.payments.v1.quote.SignedQuote"> & { + /** + * The serialized `PriceQuote`. + * + * @generated from field: bytes quote = 1; + */ + quote: Uint8Array; + + /** + * The signature for this quote. + * + * @generated from field: bytes signature = 2; + */ + signature: Uint8Array; +}; + +/** + * Describes the message nillion.payments.v1.quote.SignedQuote. + * Use `create(SignedQuoteSchema)` to create a new message. + */ +export const SignedQuoteSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 1); + +/** + * A price quote. + * + * @generated from message nillion.payments.v1.quote.PriceQuote + */ +export type PriceQuote = Message<"nillion.payments.v1.quote.PriceQuote"> & { + /** + * A nonce that uniquely identifies this quote. + * + * @generated from field: bytes nonce = 1; + */ + nonce: Uint8Array; + + /** + * The fees for this quote. + * + * @generated from field: nillion.payments.v1.quote.QuoteFees fees = 2; + */ + fees?: QuoteFees; + + /** + * The request that this quote is for. + * + * @generated from field: nillion.payments.v1.quote.PriceQuoteRequest request = 3; + */ + request?: PriceQuoteRequest; + + /** + * The point in time at which this quote is no longer valid. + * + * @generated from field: google.protobuf.Timestamp expires_at = 4; + */ + expiresAt?: Timestamp; + + /** + * The preprocessing requirements for this operation. + * + * @generated from field: repeated nillion.payments.v1.quote.PreprocessingRequirement preprocessing_requirements = 5; + */ + preprocessingRequirements: PreprocessingRequirement[]; +}; + +/** + * Describes the message nillion.payments.v1.quote.PriceQuote. + * Use `create(PriceQuoteSchema)` to create a new message. + */ +export const PriceQuoteSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 2); + +/** + * The fees associated with a quote. + * + * All fees are in "unil" units. + * + * @generated from message nillion.payments.v1.quote.QuoteFees + */ +export type QuoteFees = Message<"nillion.payments.v1.quote.QuoteFees"> & { + /** + * The sum of all the fees. + * + * @generated from field: uint64 total = 1; + */ + total: bigint; + + /** + * The base fee. + * + * This is a flat fee based on the operation being ran. + * + * @generated from field: uint64 base = 2; + */ + base: bigint; + + /** + * The congestion fee. + * + * This depends on how congested the network is. + * + * @generated from field: uint64 congestion = 3; + */ + congestion: bigint; + + /** + * The storage fee. + * + * This depends on how much data is being stored, in case the operation being quoted stores data. + * + * @generated from field: uint64 storage = 4; + */ + storage: bigint; + + /** + * The preprocessing fee. + * + * This is only valid for compute operations and accounts for any preprocessing material needed + * to execute the program being invoked. + * + * @generated from field: uint64 preprocessing = 5; + */ + preprocessing: bigint; + + /** + * The compute fee. + * + * This fee is only valid for compute operations and depends on the complexity of the program + * being invoked. + * + * @generated from field: uint64 compute = 6; + */ + compute: bigint; +}; + +/** + * Describes the message nillion.payments.v1.quote.QuoteFees. + * Use `create(QuoteFeesSchema)` to create a new message. + */ +export const QuoteFeesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 3); + +/** + * A store program operation. + * + * @generated from message nillion.payments.v1.quote.StoreProgram + */ +export type StoreProgram = Message<"nillion.payments.v1.quote.StoreProgram"> & { + /** + * The program's metadata. + * + * @generated from field: nillion.payments.v1.quote.ProgramMetadata metadata = 1; + */ + metadata?: ProgramMetadata; + + /** + * A sha256 hash of the compiled program. + * + * @generated from field: bytes contents_sha256 = 2; + */ + contentsSha256: Uint8Array; + + /** + * The program's name. + * + * @generated from field: string name = 3; + */ + name: string; +}; + +/** + * Describes the message nillion.payments.v1.quote.StoreProgram. + * Use `create(StoreProgramSchema)` to create a new message. + */ +export const StoreProgramSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 4); + +/** + * The metadata about a program being stored. + * + * @generated from message nillion.payments.v1.quote.ProgramMetadata + */ +export type ProgramMetadata = Message<"nillion.payments.v1.quote.ProgramMetadata"> & { + /** + * The size of the program in bytes. + * + * @generated from field: uint64 program_size = 1; + */ + programSize: bigint; + + /** + * The amount of memory needed by the program. + * + * @generated from field: uint64 memory_size = 2; + */ + memorySize: bigint; + + /** + * The total number of instructions in the program. + * + * @generated from field: uint64 instruction_count = 3; + */ + instructionCount: bigint; + + /** + * The number of instructions per type. + * + * @generated from field: map instructions = 4; + */ + instructions: { [key: string]: bigint }; + + /** + * The preprocessing requirements. + * + * @generated from field: repeated nillion.payments.v1.quote.PreprocessingRequirement preprocessing_requirements = 5; + */ + preprocessingRequirements: PreprocessingRequirement[]; +}; + +/** + * Describes the message nillion.payments.v1.quote.ProgramMetadata. + * Use `create(ProgramMetadataSchema)` to create a new message. + */ +export const ProgramMetadataSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 5); + +/** + * A number of preprocessing elements required for a program. + * + * @generated from message nillion.payments.v1.quote.PreprocessingRequirement + */ +export type PreprocessingRequirement = Message<"nillion.payments.v1.quote.PreprocessingRequirement"> & { + /** + * The preprocessing element. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 1; + */ + element: PreprocessingElement; + + /** + * The total number of elements of this type needed. + * + * @generated from field: uint64 count = 2; + */ + count: bigint; +}; + +/** + * Describes the message nillion.payments.v1.quote.PreprocessingRequirement. + * Use `create(PreprocessingRequirementSchema)` to create a new message. + */ +export const PreprocessingRequirementSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 6); + +/** + * A retrieve values operation. + * + * @generated from message nillion.payments.v1.quote.RetrieveValues + */ +export type RetrieveValues = Message<"nillion.payments.v1.quote.RetrieveValues"> & { + /** + * The identifier to be retrieved. + * + * @generated from field: bytes values_id = 1; + */ + valuesId: Uint8Array; +}; + +/** + * Describes the message nillion.payments.v1.quote.RetrieveValues. + * Use `create(RetrieveValuesSchema)` to create a new message. + */ +export const RetrieveValuesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 7); + +/** + * A retrieve permissions operation. + * + * @generated from message nillion.payments.v1.quote.RetrievePermissions + */ +export type RetrievePermissions = Message<"nillion.payments.v1.quote.RetrievePermissions"> & { + /** + * The identifier of the values entity to be retrieved. + * + * @generated from field: bytes values_id = 1; + */ + valuesId: Uint8Array; +}; + +/** + * Describes the message nillion.payments.v1.quote.RetrievePermissions. + * Use `create(RetrievePermissionsSchema)` to create a new message. + */ +export const RetrievePermissionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 8); + +/** + * An update permissions operation. + * + * @generated from message nillion.payments.v1.quote.UpdatePermissions + */ +export type UpdatePermissions = Message<"nillion.payments.v1.quote.UpdatePermissions"> & { + /** + * The identifier of the values entity whose permissions are to be updated. + * + * @generated from field: bytes values_id = 1; + */ + valuesId: Uint8Array; +}; + +/** + * Describes the message nillion.payments.v1.quote.UpdatePermissions. + * Use `create(UpdatePermissionsSchema)` to create a new message. + */ +export const UpdatePermissionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 9); + +/** + * A store values operation. + * + * @generated from message nillion.payments.v1.quote.StoreValues + */ +export type StoreValues = Message<"nillion.payments.v1.quote.StoreValues"> & { + /** + * The number of particles being stored. + * + * @generated from field: uint64 particles_count = 1; + */ + particlesCount: bigint; + + /** + * The number of secret shared secrets being stored. + * + * This is the number of secrets in secret shared form being stored, not the total number of shares. e.g. + * for a 5 node network a single secret shared secret requires value `1` here rather than `5`. + * + * @generated from field: uint64 secret_shared_count = 2; + */ + secretSharedCount: bigint; + + /** + * The number of public values being stored. + * + * @generated from field: uint64 public_values_count = 3; + */ + publicValuesCount: bigint; + + /** + * The number of days to persist these secrets for. + * + * @generated from field: uint32 ttl_days = 4; + */ + ttlDays: number; + + /** + * The size of the payload to be stored. + * + * @generated from field: uint64 payload_size = 5; + */ + payloadSize: bigint; +}; + +/** + * Describes the message nillion.payments.v1.quote.StoreValues. + * Use `create(StoreValuesSchema)` to create a new message. + */ +export const StoreValuesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 10); + +/** + * An invoke compute operation. + * + * @generated from message nillion.payments.v1.quote.InvokeCompute + */ +export type InvokeCompute = Message<"nillion.payments.v1.quote.InvokeCompute"> & { + /** + * The program to be invoked. + * + * @generated from field: string program_id = 1; + */ + programId: string; + + /** + * The size of the compute time values being sent as part of this operation. + * + * @generated from field: uint64 values_payload_size = 2; + */ + valuesPayloadSize: bigint; +}; + +/** + * Describes the message nillion.payments.v1.quote.InvokeCompute. + * Use `create(InvokeComputeSchema)` to create a new message. + */ +export const InvokeComputeSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_quote, 11); + diff --git a/client-vms/src/gen-proto/nillion/payments/v1/receipt_pb.ts b/client-vms/src/gen-proto/nillion/payments/v1/receipt_pb.ts new file mode 100644 index 0000000..fb76349 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/payments/v1/receipt_pb.ts @@ -0,0 +1,261 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/payments/v1/receipt.proto (package nillion.payments.v1.receipt, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Empty, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { InvokeCompute, RetrievePermissions, RetrieveValues, SignedQuote, StoreProgram, StoreValues, UpdatePermissions } from "./quote_pb"; +import { file_nillion_payments_v1_quote } from "./quote_pb"; +import type { PreprocessingElement } from "../../preprocessing/v1/element_pb"; +import { file_nillion_preprocessing_v1_element } from "../../preprocessing/v1/element_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/payments/v1/receipt.proto. + */ +export const file_nillion_payments_v1_receipt: GenFile = /*@__PURE__*/ + fileDesc("CiFuaWxsaW9uL3BheW1lbnRzL3YxL3JlY2VpcHQucHJvdG8SG25pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdCJmChVQYXltZW50UmVjZWlwdFJlcXVlc3QSPAoMc2lnbmVkX3F1b3RlGAEgASgLMiYubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5TaWduZWRRdW90ZRIPCgd0eF9oYXNoGAIgASgJIjMKDVNpZ25lZFJlY2VpcHQSDwoHcmVjZWlwdBgBIAEoDBIRCglzaWduYXR1cmUYAiABKAwijwEKB1JlY2VpcHQSEgoKaWRlbnRpZmllchgBIAEoDBJACghtZXRhZGF0YRgCIAEoCzIuLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5PcGVyYXRpb25NZXRhZGF0YRIuCgpleHBpcmVzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKBBAoRT3BlcmF0aW9uTWV0YWRhdGESLQoLcG9vbF9zdGF0dXMYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABJACg1zdG9yZV9wcm9ncmFtGAIgASgLMicubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5TdG9yZVByb2dyYW1IABJECg9yZXRyaWV2ZV92YWx1ZXMYAyABKAsyKS5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlJldHJpZXZlVmFsdWVzSAASTgoUcmV0cmlldmVfcGVybWlzc2lvbnMYBCABKAsyLi5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlJldHJpZXZlUGVybWlzc2lvbnNIABI+CgxzdG9yZV92YWx1ZXMYBSABKAsyJi5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlN0b3JlVmFsdWVzSAASTAoOaW52b2tlX2NvbXB1dGUYBiABKAsyMi5uaWxsaW9uLnBheW1lbnRzLnYxLnJlY2VpcHQuSW52b2tlQ29tcHV0ZU1ldGFkYXRhSAASSgoSdXBkYXRlX3Blcm1pc3Npb25zGAcgASgLMiwubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5VcGRhdGVQZXJtaXNzaW9uc0gAQgsKCW9wZXJhdGlvbiKcAQoVSW52b2tlQ29tcHV0ZU1ldGFkYXRhEjcKBXF1b3RlGAEgASgLMigubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5JbnZva2VDb21wdXRlEkoKB29mZnNldHMYAiADKAsyOS5uaWxsaW9uLnBheW1lbnRzLnYxLnJlY2VpcHQuU2VsZWN0ZWRQcmVwcm9jZXNzaW5nT2Zmc2V0cyKXAQocU2VsZWN0ZWRQcmVwcm9jZXNzaW5nT2Zmc2V0cxJHCgdlbGVtZW50GAEgASgOMjYubmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmVsZW1lbnQuUHJlcHJvY2Vzc2luZ0VsZW1lbnQSDQoFc3RhcnQYAiABKAQSCwoDZW5kGAMgASgEEhIKCmJhdGNoX3NpemUYBCABKARCvwEKH2NvbS5uaWxsaW9uLnBheW1lbnRzLnYxLnJlY2VpcHRCDFJlY2VpcHRQcm90b1ABogIETlBWUqoCG05pbGxpb24uUGF5bWVudHMuVjEuUmVjZWlwdMoCG05pbGxpb25cUGF5bWVudHNcVjFcUmVjZWlwdOICJ05pbGxpb25cUGF5bWVudHNcVjFcUmVjZWlwdFxHUEJNZXRhZGF0YeoCHk5pbGxpb246OlBheW1lbnRzOjpWMTo6UmVjZWlwdGIGcHJvdG8z", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_nillion_payments_v1_quote, file_nillion_preprocessing_v1_element]); + +/** + * A request to get a payment receipt for a paid operation. + * + * @generated from message nillion.payments.v1.receipt.PaymentReceiptRequest + */ +export type PaymentReceiptRequest = Message<"nillion.payments.v1.receipt.PaymentReceiptRequest"> & { + /** + * The quote that the user paid for. + * + * @generated from field: nillion.payments.v1.quote.SignedQuote signed_quote = 1; + */ + signedQuote?: SignedQuote; + + /** + * The nilchain transaction hash that proves this payment was made. + * + * @generated from field: string tx_hash = 2; + */ + txHash: string; +}; + +/** + * Describes the message nillion.payments.v1.receipt.PaymentReceiptRequest. + * Use `create(PaymentReceiptRequestSchema)` to create a new message. + */ +export const PaymentReceiptRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 0); + +/** + * A signed receipt that indicates the user paid. + * + * @generated from message nillion.payments.v1.receipt.SignedReceipt + */ +export type SignedReceipt = Message<"nillion.payments.v1.receipt.SignedReceipt"> & { + /** + * The serialized `Receipt`. + * + * @generated from field: bytes receipt = 1; + */ + receipt: Uint8Array; + + /** + * The signature for this receipt. + * + * @generated from field: bytes signature = 2; + */ + signature: Uint8Array; +}; + +/** + * Describes the message nillion.payments.v1.receipt.SignedReceipt. + * Use `create(SignedReceiptSchema)` to create a new message. + */ +export const SignedReceiptSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 1); + +/** + * A receipt for an operation that the user paid for. + * + * @generated from message nillion.payments.v1.receipt.Receipt + */ +export type Receipt = Message<"nillion.payments.v1.receipt.Receipt"> & { + /** + * A unique identifier for this operation. + * + * This allows nodes to independently identify this operation and ensure no receipt is used more than once. + * + * @generated from field: bytes identifier = 1; + */ + identifier: Uint8Array; + + /** + * The metadata for this receipt; + * + * @generated from field: nillion.payments.v1.receipt.OperationMetadata metadata = 2; + */ + metadata?: OperationMetadata; + + /** + * The point in time at which this receipt expires and can no longer be used to invoke the associated + * operation in the network. + * + * @generated from field: google.protobuf.Timestamp expires_at = 3; + */ + expiresAt?: Timestamp; +}; + +/** + * Describes the message nillion.payments.v1.receipt.Receipt. + * Use `create(ReceiptSchema)` to create a new message. + */ +export const ReceiptSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 2); + +/** + * The metadata associated with the operation this receipt is for. + * + * @generated from message nillion.payments.v1.receipt.OperationMetadata + */ +export type OperationMetadata = Message<"nillion.payments.v1.receipt.OperationMetadata"> & { + /** + * @generated from oneof nillion.payments.v1.receipt.OperationMetadata.operation + */ + operation: { + /** + * A preprocessing pool status operation. + * + * @generated from field: google.protobuf.Empty pool_status = 1; + */ + value: Empty; + case: "poolStatus"; + } | { + /** + * A store program operation. + * + * @generated from field: nillion.payments.v1.quote.StoreProgram store_program = 2; + */ + value: StoreProgram; + case: "storeProgram"; + } | { + /** + * A retrieve values operation. + * + * @generated from field: nillion.payments.v1.quote.RetrieveValues retrieve_values = 3; + */ + value: RetrieveValues; + case: "retrieveValues"; + } | { + /** + * A retrieve permissions operation. + * + * @generated from field: nillion.payments.v1.quote.RetrievePermissions retrieve_permissions = 4; + */ + value: RetrievePermissions; + case: "retrievePermissions"; + } | { + /** + * A store values operation. + * + * @generated from field: nillion.payments.v1.quote.StoreValues store_values = 5; + */ + value: StoreValues; + case: "storeValues"; + } | { + /** + * An invoke compute operation. + * + * @generated from field: nillion.payments.v1.receipt.InvokeComputeMetadata invoke_compute = 6; + */ + value: InvokeComputeMetadata; + case: "invokeCompute"; + } | { + /** + * An update permissions operation. + * + * @generated from field: nillion.payments.v1.quote.UpdatePermissions update_permissions = 7; + */ + value: UpdatePermissions; + case: "updatePermissions"; + } | { case: undefined; value?: undefined }; +}; + +/** + * Describes the message nillion.payments.v1.receipt.OperationMetadata. + * Use `create(OperationMetadataSchema)` to create a new message. + */ +export const OperationMetadataSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 3); + +/** + * The metadata for an invoke compute operation. + * + * @generated from message nillion.payments.v1.receipt.InvokeComputeMetadata + */ +export type InvokeComputeMetadata = Message<"nillion.payments.v1.receipt.InvokeComputeMetadata"> & { + /** + * The invoke compute quote. + * + * @generated from field: nillion.payments.v1.quote.InvokeCompute quote = 1; + */ + quote?: InvokeCompute; + + /** + * The selected preprocessing offsets for this operation. + * + * @generated from field: repeated nillion.payments.v1.receipt.SelectedPreprocessingOffsets offsets = 2; + */ + offsets: SelectedPreprocessingOffsets[]; +}; + +/** + * Describes the message nillion.payments.v1.receipt.InvokeComputeMetadata. + * Use `create(InvokeComputeMetadataSchema)` to create a new message. + */ +export const InvokeComputeMetadataSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 4); + +/** + * The selected offsets for a preprocessing element. + * + * This is closed-open set, e.g. [start, end) + * + * @generated from message nillion.payments.v1.receipt.SelectedPreprocessingOffsets + */ +export type SelectedPreprocessingOffsets = Message<"nillion.payments.v1.receipt.SelectedPreprocessingOffsets"> & { + /** + * The preprocessing element. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 1; + */ + element: PreprocessingElement; + + /** + * The first offset in the range. + * + * @generated from field: uint64 start = 2; + */ + start: bigint; + + /** + * The one-past-the-end offset in this range. + * + * @generated from field: uint64 end = 3; + */ + end: bigint; + + /** + * The size of all batches involved in the selected range. + * + * @generated from field: uint64 batch_size = 4; + */ + batchSize: bigint; +}; + +/** + * Describes the message nillion.payments.v1.receipt.SelectedPreprocessingOffsets. + * Use `create(SelectedPreprocessingOffsetsSchema)` to create a new message. + */ +export const SelectedPreprocessingOffsetsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_payments_v1_receipt, 5); + diff --git a/client-vms/src/gen-proto/nillion/payments/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/payments/v1/service_pb.ts new file mode 100644 index 0000000..1aa73f0 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/payments/v1/service_pb.ts @@ -0,0 +1,46 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/payments/v1/service.proto (package nillion.payments.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PriceQuoteRequestSchema, SignedQuoteSchema } from "./quote_pb"; +import { file_nillion_payments_v1_quote } from "./quote_pb"; +import type { PaymentReceiptRequestSchema, SignedReceiptSchema } from "./receipt_pb"; +import { file_nillion_payments_v1_receipt } from "./receipt_pb"; + +/** + * Describes the file nillion/payments/v1/service.proto. + */ +export const file_nillion_payments_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiFuaWxsaW9uL3BheW1lbnRzL3YxL3NlcnZpY2UucHJvdG8SE25pbGxpb24ucGF5bWVudHMudjEy4AEKCFBheW1lbnRzEmIKClByaWNlUXVvdGUSLC5uaWxsaW9uLnBheW1lbnRzLnYxLnF1b3RlLlByaWNlUXVvdGVSZXF1ZXN0GiYubmlsbGlvbi5wYXltZW50cy52MS5xdW90ZS5TaWduZWRRdW90ZRJwCg5QYXltZW50UmVjZWlwdBIyLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5QYXltZW50UmVjZWlwdFJlcXVlc3QaKi5uaWxsaW9uLnBheW1lbnRzLnYxLnJlY2VpcHQuU2lnbmVkUmVjZWlwdEKVAQoXY29tLm5pbGxpb24ucGF5bWVudHMudjFCDFNlcnZpY2VQcm90b1ABogIDTlBYqgITTmlsbGlvbi5QYXltZW50cy5WMcoCE05pbGxpb25cUGF5bWVudHNcVjHiAh9OaWxsaW9uXFBheW1lbnRzXFYxXEdQQk1ldGFkYXRh6gIVTmlsbGlvbjo6UGF5bWVudHM6OlYxYgZwcm90bzM", [file_nillion_payments_v1_quote, file_nillion_payments_v1_receipt]); + +/** + * Payments API. + * + * @generated from service nillion.payments.v1.Payments + */ +export const Payments: GenService<{ + /** + * Generate a price quote for an operation. + * + * @generated from rpc nillion.payments.v1.Payments.PriceQuote + */ + priceQuote: { + methodKind: "unary"; + input: typeof PriceQuoteRequestSchema; + output: typeof SignedQuoteSchema; + }, + /** + * Get a payment receipt for a paid operation. + * + * @generated from rpc nillion.payments.v1.Payments.PaymentReceipt + */ + paymentReceipt: { + methodKind: "unary"; + input: typeof PaymentReceiptRequestSchema; + output: typeof SignedReceiptSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_payments_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/permissions/v1/permissions_pb.ts b/client-vms/src/gen-proto/nillion/permissions/v1/permissions_pb.ts new file mode 100644 index 0000000..ce694f5 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/permissions/v1/permissions_pb.ts @@ -0,0 +1,91 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/permissions/v1/permissions.proto (package nillion.permissions.v1.permissions, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/permissions/v1/permissions.proto. + */ +export const file_nillion_permissions_v1_permissions: GenFile = /*@__PURE__*/ + fileDesc("CihuaWxsaW9uL3Blcm1pc3Npb25zL3YxL3Blcm1pc3Npb25zLnByb3RvEiJuaWxsaW9uLnBlcm1pc3Npb25zLnYxLnBlcm1pc3Npb25zIt4BCgtQZXJtaXNzaW9ucxIVCg1vd25lcl91c2VyX2lkGAEgASgJEiEKGXJldHJpZXZlX2FsbG93ZWRfdXNlcl9pZHMYAiADKAkSHwoXdXBkYXRlX2FsbG93ZWRfdXNlcl9pZHMYAyADKAkSHwoXZGVsZXRlX2FsbG93ZWRfdXNlcl9pZHMYBCADKAkSUwoTY29tcHV0ZV9wZXJtaXNzaW9ucxgFIAMoCzI2Lm5pbGxpb24ucGVybWlzc2lvbnMudjEucGVybWlzc2lvbnMuQ29tcHV0ZVBlcm1pc3Npb25zIjoKEkNvbXB1dGVQZXJtaXNzaW9ucxIPCgd1c2VyX2lkGAEgASgJEhMKC3Byb2dyYW1faWRzGAIgAygJQuYBCiZjb20ubmlsbGlvbi5wZXJtaXNzaW9ucy52MS5wZXJtaXNzaW9uc0IQUGVybWlzc2lvbnNQcm90b1ABogIETlBWUKoCIk5pbGxpb24uUGVybWlzc2lvbnMuVjEuUGVybWlzc2lvbnPKAiJOaWxsaW9uXFBlcm1pc3Npb25zXFYxXFBlcm1pc3Npb25z4gIuTmlsbGlvblxQZXJtaXNzaW9uc1xWMVxQZXJtaXNzaW9uc1xHUEJNZXRhZGF0YeoCJU5pbGxpb246OlBlcm1pc3Npb25zOjpWMTo6UGVybWlzc2lvbnNiBnByb3RvMw"); + +/** + * The permissions for a set of stored values. + * + * @generated from message nillion.permissions.v1.permissions.Permissions + */ +export type Permissions = Message<"nillion.permissions.v1.permissions.Permissions"> & { + /** + * The user id for the owner of these values. + * + * @generated from field: string owner_user_id = 1; + */ + ownerUserId: string; + + /** + * The list of user ids that are allowed to retrieve the stored values. + * + * @generated from field: repeated string retrieve_allowed_user_ids = 2; + */ + retrieveAllowedUserIds: string[]; + + /** + * The list of user ids that are allowed to update the stored values. + * + * @generated from field: repeated string update_allowed_user_ids = 3; + */ + updateAllowedUserIds: string[]; + + /** + * The list of user ids that are allowed to delete the stored values. + * + * @generated from field: repeated string delete_allowed_user_ids = 4; + */ + deleteAllowedUserIds: string[]; + + /** + * The list of compute permissions. + * + * @generated from field: repeated nillion.permissions.v1.permissions.ComputePermissions compute_permissions = 5; + */ + computePermissions: ComputePermissions[]; +}; + +/** + * Describes the message nillion.permissions.v1.permissions.Permissions. + * Use `create(PermissionsSchema)` to create a new message. + */ +export const PermissionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_permissions_v1_permissions, 0); + +/** + * The permissions to execute a program. + * + * @generated from message nillion.permissions.v1.permissions.ComputePermissions + */ +export type ComputePermissions = Message<"nillion.permissions.v1.permissions.ComputePermissions"> & { + /** + * The user id we're granting permissions to. + * + * @generated from field: string user_id = 1; + */ + userId: string; + + /** + * The program ids this user is allowed to use the stored values in. + * + * @generated from field: repeated string program_ids = 2; + */ + programIds: string[]; +}; + +/** + * Describes the message nillion.permissions.v1.permissions.ComputePermissions. + * Use `create(ComputePermissionsSchema)` to create a new message. + */ +export const ComputePermissionsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_permissions_v1_permissions, 1); + diff --git a/client-vms/src/gen-proto/nillion/permissions/v1/retrieve_pb.ts b/client-vms/src/gen-proto/nillion/permissions/v1/retrieve_pb.ts new file mode 100644 index 0000000..e6d5f7f --- /dev/null +++ b/client-vms/src/gen-proto/nillion/permissions/v1/retrieve_pb.ts @@ -0,0 +1,39 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/permissions/v1/retrieve.proto (package nillion.permissions.v1.retrieve, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/permissions/v1/retrieve.proto. + */ +export const file_nillion_permissions_v1_retrieve: GenFile = /*@__PURE__*/ + fileDesc("CiVuaWxsaW9uL3Blcm1pc3Npb25zL3YxL3JldHJpZXZlLnByb3RvEh9uaWxsaW9uLnBlcm1pc3Npb25zLnYxLnJldHJpZXZlImAKGlJldHJpZXZlUGVybWlzc2lvbnNSZXF1ZXN0EkIKDnNpZ25lZF9yZWNlaXB0GAEgASgLMioubmlsbGlvbi5wYXltZW50cy52MS5yZWNlaXB0LlNpZ25lZFJlY2VpcHRC1AEKI2NvbS5uaWxsaW9uLnBlcm1pc3Npb25zLnYxLnJldHJpZXZlQg1SZXRyaWV2ZVByb3RvUAGiAgROUFZSqgIfTmlsbGlvbi5QZXJtaXNzaW9ucy5WMS5SZXRyaWV2ZcoCH05pbGxpb25cUGVybWlzc2lvbnNcVjFcUmV0cmlldmXiAitOaWxsaW9uXFBlcm1pc3Npb25zXFYxXFJldHJpZXZlXEdQQk1ldGFkYXRh6gIiTmlsbGlvbjo6UGVybWlzc2lvbnM6OlYxOjpSZXRyaWV2ZWIGcHJvdG8z", [file_nillion_payments_v1_receipt]); + +/** + * A request to retrieve the permissions associated with a set of previously stored values. + * + * @generated from message nillion.permissions.v1.retrieve.RetrievePermissionsRequest + */ +export type RetrievePermissionsRequest = Message<"nillion.permissions.v1.retrieve.RetrievePermissionsRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `RetrievePermissions` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; +}; + +/** + * Describes the message nillion.permissions.v1.retrieve.RetrievePermissionsRequest. + * Use `create(RetrievePermissionsRequestSchema)` to create a new message. + */ +export const RetrievePermissionsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_permissions_v1_retrieve, 0); + diff --git a/client-vms/src/gen-proto/nillion/permissions/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/permissions/v1/service_pb.ts new file mode 100644 index 0000000..71807ba --- /dev/null +++ b/client-vms/src/gen-proto/nillion/permissions/v1/service_pb.ts @@ -0,0 +1,50 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/permissions/v1/service.proto (package nillion.permissions.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { EmptySchema } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { PermissionsSchema } from "./permissions_pb"; +import { file_nillion_permissions_v1_permissions } from "./permissions_pb"; +import type { RetrievePermissionsRequestSchema } from "./retrieve_pb"; +import { file_nillion_permissions_v1_retrieve } from "./retrieve_pb"; +import type { UpdatePermissionsRequestSchema } from "./update_pb"; +import { file_nillion_permissions_v1_update } from "./update_pb"; + +/** + * Describes the file nillion/permissions/v1/service.proto. + */ +export const file_nillion_permissions_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiRuaWxsaW9uL3Blcm1pc3Npb25zL3YxL3NlcnZpY2UucHJvdG8SFm5pbGxpb24ucGVybWlzc2lvbnMudjEy+QEKC1Blcm1pc3Npb25zEoMBChNSZXRyaWV2ZVBlcm1pc3Npb25zEjsubmlsbGlvbi5wZXJtaXNzaW9ucy52MS5yZXRyaWV2ZS5SZXRyaWV2ZVBlcm1pc3Npb25zUmVxdWVzdBovLm5pbGxpb24ucGVybWlzc2lvbnMudjEucGVybWlzc2lvbnMuUGVybWlzc2lvbnMSZAoRVXBkYXRlUGVybWlzc2lvbnMSNy5uaWxsaW9uLnBlcm1pc3Npb25zLnYxLnVwZGF0ZS5VcGRhdGVQZXJtaXNzaW9uc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHlCpAEKGmNvbS5uaWxsaW9uLnBlcm1pc3Npb25zLnYxQgxTZXJ2aWNlUHJvdG9QAaICA05QWKoCFk5pbGxpb24uUGVybWlzc2lvbnMuVjHKAhZOaWxsaW9uXFBlcm1pc3Npb25zXFYx4gIiTmlsbGlvblxQZXJtaXNzaW9uc1xWMVxHUEJNZXRhZGF0YeoCGE5pbGxpb246OlBlcm1pc3Npb25zOjpWMWIGcHJvdG8z", [file_google_protobuf_empty, file_nillion_permissions_v1_permissions, file_nillion_permissions_v1_retrieve, file_nillion_permissions_v1_update]); + +/** + * A service to interact with permissions. + * + * @generated from service nillion.permissions.v1.Permissions + */ +export const Permissions: GenService<{ + /** + * Retrieve the permissions for a set of values. + * + * @generated from rpc nillion.permissions.v1.Permissions.RetrievePermissions + */ + retrievePermissions: { + methodKind: "unary"; + input: typeof RetrievePermissionsRequestSchema; + output: typeof PermissionsSchema; + }, + /** + * Update the permissions for a set of values. + * + * @generated from rpc nillion.permissions.v1.Permissions.UpdatePermissions + */ + updatePermissions: { + methodKind: "unary"; + input: typeof UpdatePermissionsRequestSchema; + output: typeof EmptySchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_permissions_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/permissions/v1/update_pb.ts b/client-vms/src/gen-proto/nillion/permissions/v1/update_pb.ts new file mode 100644 index 0000000..8cdeb71 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/permissions/v1/update_pb.ts @@ -0,0 +1,46 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/permissions/v1/update.proto (package nillion.permissions.v1.update, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Permissions } from "./permissions_pb"; +import { file_nillion_permissions_v1_permissions } from "./permissions_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/permissions/v1/update.proto. + */ +export const file_nillion_permissions_v1_update: GenFile = /*@__PURE__*/ + fileDesc("CiNuaWxsaW9uL3Blcm1pc3Npb25zL3YxL3VwZGF0ZS5wcm90bxIdbmlsbGlvbi5wZXJtaXNzaW9ucy52MS51cGRhdGUipAEKGFVwZGF0ZVBlcm1pc3Npb25zUmVxdWVzdBJCCg5zaWduZWRfcmVjZWlwdBgBIAEoCzIqLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5TaWduZWRSZWNlaXB0EkQKC3Blcm1pc3Npb25zGAIgASgLMi8ubmlsbGlvbi5wZXJtaXNzaW9ucy52MS5wZXJtaXNzaW9ucy5QZXJtaXNzaW9uc0LIAQohY29tLm5pbGxpb24ucGVybWlzc2lvbnMudjEudXBkYXRlQgtVcGRhdGVQcm90b1ABogIETlBWVaoCHU5pbGxpb24uUGVybWlzc2lvbnMuVjEuVXBkYXRlygIdTmlsbGlvblxQZXJtaXNzaW9uc1xWMVxVcGRhdGXiAilOaWxsaW9uXFBlcm1pc3Npb25zXFYxXFVwZGF0ZVxHUEJNZXRhZGF0YeoCIE5pbGxpb246OlBlcm1pc3Npb25zOjpWMTo6VXBkYXRlYgZwcm90bzM", [file_nillion_payments_v1_receipt, file_nillion_permissions_v1_permissions]); + +/** + * A request to update the permissions associated with a set of previously stored values. + * + * @generated from message nillion.permissions.v1.update.UpdatePermissionsRequest + */ +export type UpdatePermissionsRequest = Message<"nillion.permissions.v1.update.UpdatePermissionsRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `UpdatePermissions` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; + + /** + * @generated from field: nillion.permissions.v1.permissions.Permissions permissions = 2; + */ + permissions?: Permissions; +}; + +/** + * Describes the message nillion.permissions.v1.update.UpdatePermissionsRequest. + * Use `create(UpdatePermissionsRequestSchema)` to create a new message. + */ +export const UpdatePermissionsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_permissions_v1_update, 0); + diff --git a/client-vms/src/gen-proto/nillion/preprocessing/v1/cleanup_pb.ts b/client-vms/src/gen-proto/nillion/preprocessing/v1/cleanup_pb.ts new file mode 100644 index 0000000..f02c9a2 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/preprocessing/v1/cleanup_pb.ts @@ -0,0 +1,51 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/preprocessing/v1/cleanup.proto (package nillion.preprocessing.v1.cleanup, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PreprocessingElement } from "./element_pb"; +import { file_nillion_preprocessing_v1_element } from "./element_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/preprocessing/v1/cleanup.proto. + */ +export const file_nillion_preprocessing_v1_cleanup: GenFile = /*@__PURE__*/ + fileDesc("CiZuaWxsaW9uL3ByZXByb2Nlc3NpbmcvdjEvY2xlYW51cC5wcm90bxIgbmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmNsZWFudXAijQEKGkNsZWFudXBVc2VkRWxlbWVudHNSZXF1ZXN0EkcKB2VsZW1lbnQYASABKA4yNi5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuZWxlbWVudC5QcmVwcm9jZXNzaW5nRWxlbWVudBITCgtzdGFydF9jaHVuaxgCIAEoBBIRCgllbmRfY2h1bmsYAyABKARC2AEKJGNvbS5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuY2xlYW51cEIMQ2xlYW51cFByb3RvUAGiAgROUFZDqgIgTmlsbGlvbi5QcmVwcm9jZXNzaW5nLlYxLkNsZWFudXDKAiBOaWxsaW9uXFByZXByb2Nlc3NpbmdcVjFcQ2xlYW51cOICLE5pbGxpb25cUHJlcHJvY2Vzc2luZ1xWMVxDbGVhbnVwXEdQQk1ldGFkYXRh6gIjTmlsbGlvbjo6UHJlcHJvY2Vzc2luZzo6VjE6OkNsZWFudXBiBnByb3RvMw", [file_nillion_preprocessing_v1_element]); + +/** + * A request to cleanup used preprocessing elements. + * + * @generated from message nillion.preprocessing.v1.cleanup.CleanupUsedElementsRequest + */ +export type CleanupUsedElementsRequest = Message<"nillion.preprocessing.v1.cleanup.CleanupUsedElementsRequest"> & { + /** + * The element to be cleanedup. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 1; + */ + element: PreprocessingElement; + + /** + * The first chunk to be deleted. + * + * @generated from field: uint64 start_chunk = 2; + */ + startChunk: bigint; + + /** + * The one-past-the-end chunk index to be deleted. + * + * @generated from field: uint64 end_chunk = 3; + */ + endChunk: bigint; +}; + +/** + * Describes the message nillion.preprocessing.v1.cleanup.CleanupUsedElementsRequest. + * Use `create(CleanupUsedElementsRequestSchema)` to create a new message. + */ +export const CleanupUsedElementsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_preprocessing_v1_cleanup, 0); + diff --git a/client-vms/src/gen-proto/nillion/preprocessing/v1/element_pb.ts b/client-vms/src/gen-proto/nillion/preprocessing/v1/element_pb.ts new file mode 100644 index 0000000..04ffd1c --- /dev/null +++ b/client-vms/src/gen-proto/nillion/preprocessing/v1/element_pb.ts @@ -0,0 +1,76 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/preprocessing/v1/element.proto (package nillion.preprocessing.v1.element, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc } from "@bufbuild/protobuf/codegenv1"; + +/** + * Describes the file nillion/preprocessing/v1/element.proto. + */ +export const file_nillion_preprocessing_v1_element: GenFile = /*@__PURE__*/ + fileDesc("CiZuaWxsaW9uL3ByZXByb2Nlc3NpbmcvdjEvZWxlbWVudC5wcm90bxIgbmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmVsZW1lbnQqywEKFFByZXByb2Nlc3NpbmdFbGVtZW50EgkKBUFMUEhBEAASCgoGTEFNQkRBEAESCwoHQ09NUEFSRRACEhsKF0RJVklTSU9OX1NFQ1JFVF9ESVZJU09SEAMSGgoWRVFVQUxJVFlfU0VDUkVUX09VVFBVVBAEEhoKFkVRVUFMSVRZX1BVQkxJQ19PVVRQVVQQBRIVChFTSEFSRV9UT19QQVJUSUNMRRAGEgoKBk1PRFVMTxAHEgkKBVRSVU5DEAgSDAoIVFJVTkNfUFIQCULYAQokY29tLm5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5lbGVtZW50QgxFbGVtZW50UHJvdG9QAaICBE5QVkWqAiBOaWxsaW9uLlByZXByb2Nlc3NpbmcuVjEuRWxlbWVudMoCIE5pbGxpb25cUHJlcHJvY2Vzc2luZ1xWMVxFbGVtZW504gIsTmlsbGlvblxQcmVwcm9jZXNzaW5nXFYxXEVsZW1lbnRcR1BCTWV0YWRhdGHqAiNOaWxsaW9uOjpQcmVwcm9jZXNzaW5nOjpWMTo6RWxlbWVudGIGcHJvdG8z"); + +/** + * A preprocessing element. + * + * @generated from enum nillion.preprocessing.v1.element.PreprocessingElement + */ +export enum PreprocessingElement { + /** + * @generated from enum value: ALPHA = 0; + */ + ALPHA = 0, + + /** + * @generated from enum value: LAMBDA = 1; + */ + LAMBDA = 1, + + /** + * @generated from enum value: COMPARE = 2; + */ + COMPARE = 2, + + /** + * @generated from enum value: DIVISION_SECRET_DIVISOR = 3; + */ + DIVISION_SECRET_DIVISOR = 3, + + /** + * @generated from enum value: EQUALITY_SECRET_OUTPUT = 4; + */ + EQUALITY_SECRET_OUTPUT = 4, + + /** + * @generated from enum value: EQUALITY_PUBLIC_OUTPUT = 5; + */ + EQUALITY_PUBLIC_OUTPUT = 5, + + /** + * @generated from enum value: SHARE_TO_PARTICLE = 6; + */ + SHARE_TO_PARTICLE = 6, + + /** + * @generated from enum value: MODULO = 7; + */ + MODULO = 7, + + /** + * @generated from enum value: TRUNC = 8; + */ + TRUNC = 8, + + /** + * @generated from enum value: TRUNC_PR = 9; + */ + TRUNC_PR = 9, +} + +/** + * Describes the enum nillion.preprocessing.v1.element.PreprocessingElement. + */ +export const PreprocessingElementSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_nillion_preprocessing_v1_element, 0); + diff --git a/client-vms/src/gen-proto/nillion/preprocessing/v1/generate_pb.ts b/client-vms/src/gen-proto/nillion/preprocessing/v1/generate_pb.ts new file mode 100644 index 0000000..7142be6 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/preprocessing/v1/generate_pb.ts @@ -0,0 +1,115 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/preprocessing/v1/generate.proto (package nillion.preprocessing.v1.generate, syntax proto3) +/* eslint-disable */ + +import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PreprocessingElement } from "./element_pb"; +import { file_nillion_preprocessing_v1_element } from "./element_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/preprocessing/v1/generate.proto. + */ +export const file_nillion_preprocessing_v1_generate: GenFile = /*@__PURE__*/ + fileDesc("CiduaWxsaW9uL3ByZXByb2Nlc3NpbmcvdjEvZ2VuZXJhdGUucHJvdG8SIW5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5nZW5lcmF0ZSKkAQocR2VuZXJhdGVQcmVwcm9jZXNzaW5nUmVxdWVzdBIVCg1nZW5lcmF0aW9uX2lkGAEgASgMEhAKCGJhdGNoX2lkGAIgASgEEhIKCmJhdGNoX3NpemUYAyABKA0SRwoHZWxlbWVudBgEIAEoDjI2Lm5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5lbGVtZW50LlByZXByb2Nlc3NpbmdFbGVtZW50Im8KHUdlbmVyYXRlUHJlcHJvY2Vzc2luZ1Jlc3BvbnNlEk4KBnN0YXR1cxgBIAEoDjI+Lm5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5nZW5lcmF0ZS5QcmVwcm9jZXNzaW5nUHJvdG9jb2xTdGF0dXMqXAobUHJlcHJvY2Vzc2luZ1Byb3RvY29sU3RhdHVzEhEKDVdBSVRJTkdfUEVFUlMQABIUChBGSU5JU0hFRF9TVUNDRVNTEAESFAoQRklOSVNIRURfRkFJTFVSRRACQt4BCiVjb20ubmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxLmdlbmVyYXRlQg1HZW5lcmF0ZVByb3RvUAGiAgROUFZHqgIhTmlsbGlvbi5QcmVwcm9jZXNzaW5nLlYxLkdlbmVyYXRlygIhTmlsbGlvblxQcmVwcm9jZXNzaW5nXFYxXEdlbmVyYXRl4gItTmlsbGlvblxQcmVwcm9jZXNzaW5nXFYxXEdlbmVyYXRlXEdQQk1ldGFkYXRh6gIkTmlsbGlvbjo6UHJlcHJvY2Vzc2luZzo6VjE6OkdlbmVyYXRlYgZwcm90bzM", [file_nillion_preprocessing_v1_element]); + +/** + * A request to generate preprocessing material. + * + * @generated from message nillion.preprocessing.v1.generate.GeneratePreprocessingRequest + */ +export type GeneratePreprocessingRequest = Message<"nillion.preprocessing.v1.generate.GeneratePreprocessingRequest"> & { + /** + * An identifier for this generation instance. + * + * @generated from field: bytes generation_id = 1; + */ + generationId: Uint8Array; + + /** + * The batch id that is being generated. + * + * This is a sequential number per preprocessing element. + * + * @generated from field: uint64 batch_id = 2; + */ + batchId: bigint; + + /** + * The number of elements being generated. + * + * @generated from field: uint32 batch_size = 3; + */ + batchSize: number; + + /** + * The preprocessing element being generated. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 4; + */ + element: PreprocessingElement; +}; + +/** + * Describes the message nillion.preprocessing.v1.generate.GeneratePreprocessingRequest. + * Use `create(GeneratePreprocessingRequestSchema)` to create a new message. + */ +export const GeneratePreprocessingRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_preprocessing_v1_generate, 0); + +/** + * A response to a request to generate preprocessing material. + * + * @generated from message nillion.preprocessing.v1.generate.GeneratePreprocessingResponse + */ +export type GeneratePreprocessingResponse = Message<"nillion.preprocessing.v1.generate.GeneratePreprocessingResponse"> & { + /** + * The status of the preprocessing protocol. + * + * @generated from field: nillion.preprocessing.v1.generate.PreprocessingProtocolStatus status = 1; + */ + status: PreprocessingProtocolStatus; +}; + +/** + * Describes the message nillion.preprocessing.v1.generate.GeneratePreprocessingResponse. + * Use `create(GeneratePreprocessingResponseSchema)` to create a new message. + */ +export const GeneratePreprocessingResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_preprocessing_v1_generate, 1); + +/** + * The status of a preprocessing protocol execution. + * + * @generated from enum nillion.preprocessing.v1.generate.PreprocessingProtocolStatus + */ +export enum PreprocessingProtocolStatus { + /** + * The protocol is waiting for peer initialization. + * + * @generated from enum value: WAITING_PEERS = 0; + */ + WAITING_PEERS = 0, + + /** + * The protocol finished successfully. + * + * @generated from enum value: FINISHED_SUCCESS = 1; + */ + FINISHED_SUCCESS = 1, + + /** + * The protocol finished with an error. + * + * @generated from enum value: FINISHED_FAILURE = 2; + */ + FINISHED_FAILURE = 2, +} + +/** + * Describes the enum nillion.preprocessing.v1.generate.PreprocessingProtocolStatus. + */ +export const PreprocessingProtocolStatusSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_nillion_preprocessing_v1_generate, 0); + diff --git a/client-vms/src/gen-proto/nillion/preprocessing/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/preprocessing/v1/service_pb.ts new file mode 100644 index 0000000..1797e6e --- /dev/null +++ b/client-vms/src/gen-proto/nillion/preprocessing/v1/service_pb.ts @@ -0,0 +1,60 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/preprocessing/v1/service.proto (package nillion.preprocessing.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { EmptySchema } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { GeneratePreprocessingRequestSchema, GeneratePreprocessingResponseSchema } from "./generate_pb"; +import { file_nillion_preprocessing_v1_generate } from "./generate_pb"; +import type { PreprocessingStreamMessageSchema } from "./stream_pb"; +import { file_nillion_preprocessing_v1_stream } from "./stream_pb"; +import type { CleanupUsedElementsRequestSchema } from "./cleanup_pb"; +import { file_nillion_preprocessing_v1_cleanup } from "./cleanup_pb"; + +/** + * Describes the file nillion/preprocessing/v1/service.proto. + */ +export const file_nillion_preprocessing_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiZuaWxsaW9uL3ByZXByb2Nlc3NpbmcvdjEvc2VydmljZS5wcm90bxIYbmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxMokDCg1QcmVwcm9jZXNzaW5nEpwBChVHZW5lcmF0ZVByZXByb2Nlc3NpbmcSPy5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuZ2VuZXJhdGUuR2VuZXJhdGVQcmVwcm9jZXNzaW5nUmVxdWVzdBpALm5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5nZW5lcmF0ZS5HZW5lcmF0ZVByZXByb2Nlc3NpbmdSZXNwb25zZTABEmwKE1N0cmVhbVByZXByb2Nlc3NpbmcSOy5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuc3RyZWFtLlByZXByb2Nlc3NpbmdTdHJlYW1NZXNzYWdlGhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5KAESawoTQ2xlYW51cFVzZWRFbGVtZW50cxI8Lm5pbGxpb24ucHJlcHJvY2Vzc2luZy52MS5jbGVhbnVwLkNsZWFudXBVc2VkRWxlbWVudHNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Qq4BChxjb20ubmlsbGlvbi5wcmVwcm9jZXNzaW5nLnYxQgxTZXJ2aWNlUHJvdG9QAaICA05QWKoCGE5pbGxpb24uUHJlcHJvY2Vzc2luZy5WMcoCGE5pbGxpb25cUHJlcHJvY2Vzc2luZ1xWMeICJE5pbGxpb25cUHJlcHJvY2Vzc2luZ1xWMVxHUEJNZXRhZGF0YeoCGk5pbGxpb246OlByZXByb2Nlc3Npbmc6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_nillion_preprocessing_v1_generate, file_nillion_preprocessing_v1_stream, file_nillion_preprocessing_v1_cleanup]); + +/** + * A service to run preprocessing related actions. + * + * @generated from service nillion.preprocessing.v1.Preprocessing + */ +export const Preprocessing: GenService<{ + /** + * Trigger the generation of preprocessing material. + * + * @generated from rpc nillion.preprocessing.v1.Preprocessing.GeneratePreprocessing + */ + generatePreprocessing: { + methodKind: "server_streaming"; + input: typeof GeneratePreprocessingRequestSchema; + output: typeof GeneratePreprocessingResponseSchema; + }, + /** + * Open a stream to generate a preprocessing element. + * + * @generated from rpc nillion.preprocessing.v1.Preprocessing.StreamPreprocessing + */ + streamPreprocessing: { + methodKind: "client_streaming"; + input: typeof PreprocessingStreamMessageSchema; + output: typeof EmptySchema; + }, + /** + * Cleanup used preprocessing chunks. + * + * @generated from rpc nillion.preprocessing.v1.Preprocessing.CleanupUsedElements + */ + cleanupUsedElements: { + methodKind: "unary"; + input: typeof CleanupUsedElementsRequestSchema; + output: typeof EmptySchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_preprocessing_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/preprocessing/v1/stream_pb.ts b/client-vms/src/gen-proto/nillion/preprocessing/v1/stream_pb.ts new file mode 100644 index 0000000..ca4cf21 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/preprocessing/v1/stream_pb.ts @@ -0,0 +1,57 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/preprocessing/v1/stream.proto (package nillion.preprocessing.v1.stream, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { PreprocessingElement } from "./element_pb"; +import { file_nillion_preprocessing_v1_element } from "./element_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/preprocessing/v1/stream.proto. + */ +export const file_nillion_preprocessing_v1_stream: GenFile = /*@__PURE__*/ + fileDesc("CiVuaWxsaW9uL3ByZXByb2Nlc3NpbmcvdjEvc3RyZWFtLnByb3RvEh9uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuc3RyZWFtIpUBChpQcmVwcm9jZXNzaW5nU3RyZWFtTWVzc2FnZRIVCg1nZW5lcmF0aW9uX2lkGAEgASgMEkcKB2VsZW1lbnQYAiABKA4yNi5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuZWxlbWVudC5QcmVwcm9jZXNzaW5nRWxlbWVudBIXCg9iaW5jb2RlX21lc3NhZ2UYAyABKAxC0gEKI2NvbS5uaWxsaW9uLnByZXByb2Nlc3NpbmcudjEuc3RyZWFtQgtTdHJlYW1Qcm90b1ABogIETlBWU6oCH05pbGxpb24uUHJlcHJvY2Vzc2luZy5WMS5TdHJlYW3KAh9OaWxsaW9uXFByZXByb2Nlc3NpbmdcVjFcU3RyZWFt4gIrTmlsbGlvblxQcmVwcm9jZXNzaW5nXFYxXFN0cmVhbVxHUEJNZXRhZGF0YeoCIk5pbGxpb246OlByZXByb2Nlc3Npbmc6OlYxOjpTdHJlYW1iBnByb3RvMw", [file_nillion_preprocessing_v1_element]); + +/** + * A message sent between nodes during the execution of a preprocessing protocol. + * + * @generated from message nillion.preprocessing.v1.stream.PreprocessingStreamMessage + */ +export type PreprocessingStreamMessage = Message<"nillion.preprocessing.v1.stream.PreprocessingStreamMessage"> & { + /** + * An identifier for the instance of the generation being ran. + * + * Only the first ever message on the stream requires having this attribute set. Any subsequent message will + * have this field ignored. + * + * @generated from field: bytes generation_id = 1; + */ + generationId: Uint8Array; + + /** + * The element being generated. + * + * Only the first ever message on the stream requires having this attribute set. Any subsequent message will + * have this field ignored. + * + * @generated from field: nillion.preprocessing.v1.element.PreprocessingElement element = 2; + */ + element: PreprocessingElement; + + /** + * The preprocessing message in bincode format. + * + * @generated from field: bytes bincode_message = 3; + */ + bincodeMessage: Uint8Array; +}; + +/** + * Describes the message nillion.preprocessing.v1.stream.PreprocessingStreamMessage. + * Use `create(PreprocessingStreamMessageSchema)` to create a new message. + */ +export const PreprocessingStreamMessageSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_preprocessing_v1_stream, 0); + diff --git a/client-vms/src/gen-proto/nillion/programs/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/programs/v1/service_pb.ts new file mode 100644 index 0000000..5827ba0 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/programs/v1/service_pb.ts @@ -0,0 +1,34 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/programs/v1/service.proto (package nillion.programs.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { StoreProgramRequestSchema, StoreProgramResponseSchema } from "./store_pb"; +import { file_nillion_programs_v1_store } from "./store_pb"; + +/** + * Describes the file nillion/programs/v1/service.proto. + */ +export const file_nillion_programs_v1_service: GenFile = /*@__PURE__*/ + fileDesc("CiFuaWxsaW9uL3Byb2dyYW1zL3YxL3NlcnZpY2UucHJvdG8SE25pbGxpb24ucHJvZ3JhbXMudjEyewoIUHJvZ3JhbXMSbwoMU3RvcmVQcm9ncmFtEi4ubmlsbGlvbi5wcm9ncmFtcy52MS5zdG9yZS5TdG9yZVByb2dyYW1SZXF1ZXN0Gi8ubmlsbGlvbi5wcm9ncmFtcy52MS5zdG9yZS5TdG9yZVByb2dyYW1SZXNwb25zZUKVAQoXY29tLm5pbGxpb24ucHJvZ3JhbXMudjFCDFNlcnZpY2VQcm90b1ABogIDTlBYqgITTmlsbGlvbi5Qcm9ncmFtcy5WMcoCE05pbGxpb25cUHJvZ3JhbXNcVjHiAh9OaWxsaW9uXFByb2dyYW1zXFYxXEdQQk1ldGFkYXRh6gIVTmlsbGlvbjo6UHJvZ3JhbXM6OlYxYgZwcm90bzM", [file_nillion_programs_v1_store]); + +/** + * A service to manage programs. + * + * @generated from service nillion.programs.v1.Programs + */ +export const Programs: GenService<{ + /** + * Store a program in the network. + * + * @generated from rpc nillion.programs.v1.Programs.StoreProgram + */ + storeProgram: { + methodKind: "unary"; + input: typeof StoreProgramRequestSchema; + output: typeof StoreProgramResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_programs_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/programs/v1/store_pb.ts b/client-vms/src/gen-proto/nillion/programs/v1/store_pb.ts new file mode 100644 index 0000000..48034ea --- /dev/null +++ b/client-vms/src/gen-proto/nillion/programs/v1/store_pb.ts @@ -0,0 +1,67 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/programs/v1/store.proto (package nillion.programs.v1.store, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/programs/v1/store.proto. + */ +export const file_nillion_programs_v1_store: GenFile = /*@__PURE__*/ + fileDesc("Ch9uaWxsaW9uL3Byb2dyYW1zL3YxL3N0b3JlLnByb3RvEhluaWxsaW9uLnByb2dyYW1zLnYxLnN0b3JlImoKE1N0b3JlUHJvZ3JhbVJlcXVlc3QSDwoHcHJvZ3JhbRgBIAEoDBJCCg5zaWduZWRfcmVjZWlwdBgCIAEoCzIqLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5TaWduZWRSZWNlaXB0IioKFFN0b3JlUHJvZ3JhbVJlc3BvbnNlEhIKCnByb2dyYW1faWQYASABKAlCswEKHWNvbS5uaWxsaW9uLnByb2dyYW1zLnYxLnN0b3JlQgpTdG9yZVByb3RvUAGiAgROUFZTqgIZTmlsbGlvbi5Qcm9ncmFtcy5WMS5TdG9yZcoCGU5pbGxpb25cUHJvZ3JhbXNcVjFcU3RvcmXiAiVOaWxsaW9uXFByb2dyYW1zXFYxXFN0b3JlXEdQQk1ldGFkYXRh6gIcTmlsbGlvbjo6UHJvZ3JhbXM6OlYxOjpTdG9yZWIGcHJvdG8z", [file_nillion_payments_v1_receipt]); + +/** + * A request to store a program in the network. + * + * @generated from message nillion.programs.v1.store.StoreProgramRequest + */ +export type StoreProgramRequest = Message<"nillion.programs.v1.store.StoreProgramRequest"> & { + /** + * The contents of the program. + * + * @generated from field: bytes program = 1; + */ + program: Uint8Array; + + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `StoreProgram` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 2; + */ + signedReceipt?: SignedReceipt; +}; + +/** + * Describes the message nillion.programs.v1.store.StoreProgramRequest. + * Use `create(StoreProgramRequestSchema)` to create a new message. + */ +export const StoreProgramRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_programs_v1_store, 0); + +/** + * A response to a request to store a program in the network. + * + * @generated from message nillion.programs.v1.store.StoreProgramResponse + */ +export type StoreProgramResponse = Message<"nillion.programs.v1.store.StoreProgramResponse"> & { + /** + * The program identifier. + * + * @generated from field: string program_id = 1; + */ + programId: string; +}; + +/** + * Describes the message nillion.programs.v1.store.StoreProgramResponse. + * Use `create(StoreProgramResponseSchema)` to create a new message. + */ +export const StoreProgramResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_programs_v1_store, 1); + diff --git a/client-vms/src/gen-proto/nillion/values/v1/delete_pb.ts b/client-vms/src/gen-proto/nillion/values/v1/delete_pb.ts new file mode 100644 index 0000000..04c724e --- /dev/null +++ b/client-vms/src/gen-proto/nillion/values/v1/delete_pb.ts @@ -0,0 +1,35 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/values/v1/delete.proto (package nillion.values.v1.delete, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/values/v1/delete.proto. + */ +export const file_nillion_values_v1_delete: GenFile = /*@__PURE__*/ + fileDesc("Ch5uaWxsaW9uL3ZhbHVlcy92MS9kZWxldGUucHJvdG8SGG5pbGxpb24udmFsdWVzLnYxLmRlbGV0ZSIoChNEZWxldGVWYWx1ZXNSZXF1ZXN0EhEKCXZhbHVlc19pZBgBIAEoDEKvAQocY29tLm5pbGxpb24udmFsdWVzLnYxLmRlbGV0ZUILRGVsZXRlUHJvdG9QAaICBE5WVkSqAhhOaWxsaW9uLlZhbHVlcy5WMS5EZWxldGXKAhhOaWxsaW9uXFZhbHVlc1xWMVxEZWxldGXiAiROaWxsaW9uXFZhbHVlc1xWMVxEZWxldGVcR1BCTWV0YWRhdGHqAhtOaWxsaW9uOjpWYWx1ZXM6OlYxOjpEZWxldGViBnByb3RvMw"); + +/** + * A request to delete a previously stored set of values. + * + * @generated from message nillion.values.v1.delete.DeleteValuesRequest + */ +export type DeleteValuesRequest = Message<"nillion.values.v1.delete.DeleteValuesRequest"> & { + /** + * The identifier of the values entity to be deleted. + * + * @generated from field: bytes values_id = 1; + */ + valuesId: Uint8Array; +}; + +/** + * Describes the message nillion.values.v1.delete.DeleteValuesRequest. + * Use `create(DeleteValuesRequestSchema)` to create a new message. + */ +export const DeleteValuesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_values_v1_delete, 0); + diff --git a/client-vms/src/gen-proto/nillion/values/v1/retrieve_pb.ts b/client-vms/src/gen-proto/nillion/values/v1/retrieve_pb.ts new file mode 100644 index 0000000..c63f7b5 --- /dev/null +++ b/client-vms/src/gen-proto/nillion/values/v1/retrieve_pb.ts @@ -0,0 +1,60 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/values/v1/retrieve.proto (package nillion.values.v1.retrieve, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/values/v1/retrieve.proto. + */ +export const file_nillion_values_v1_retrieve: GenFile = /*@__PURE__*/ + fileDesc("CiBuaWxsaW9uL3ZhbHVlcy92MS9yZXRyaWV2ZS5wcm90bxIabmlsbGlvbi52YWx1ZXMudjEucmV0cmlldmUiWwoVUmV0cmlldmVWYWx1ZXNSZXF1ZXN0EkIKDnNpZ25lZF9yZWNlaXB0GAEgASgLMioubmlsbGlvbi5wYXltZW50cy52MS5yZWNlaXB0LlNpZ25lZFJlY2VpcHQiMAoWUmV0cmlldmVWYWx1ZXNSZXNwb25zZRIWCg5iaW5jb2RlX3ZhbHVlcxgBIAEoDEK7AQoeY29tLm5pbGxpb24udmFsdWVzLnYxLnJldHJpZXZlQg1SZXRyaWV2ZVByb3RvUAGiAgROVlZSqgIaTmlsbGlvbi5WYWx1ZXMuVjEuUmV0cmlldmXKAhpOaWxsaW9uXFZhbHVlc1xWMVxSZXRyaWV2ZeICJk5pbGxpb25cVmFsdWVzXFYxXFJldHJpZXZlXEdQQk1ldGFkYXRh6gIdTmlsbGlvbjo6VmFsdWVzOjpWMTo6UmV0cmlldmViBnByb3RvMw", [file_nillion_payments_v1_receipt]); + +/** + * A request to retrieve a set of stored values. + * + * @generated from message nillion.values.v1.retrieve.RetrieveValuesRequest + */ +export type RetrieveValuesRequest = Message<"nillion.values.v1.retrieve.RetrieveValuesRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `RetrieveValues` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; +}; + +/** + * Describes the message nillion.values.v1.retrieve.RetrieveValuesRequest. + * Use `create(RetrieveValuesRequestSchema)` to create a new message. + */ +export const RetrieveValuesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_values_v1_retrieve, 0); + +/** + * A response to a request to retrieve values stored in the network. + * + * @generated from message nillion.values.v1.retrieve.RetrieveValuesResponse + */ +export type RetrieveValuesResponse = Message<"nillion.values.v1.retrieve.RetrieveValuesResponse"> & { + /** + * The values encoded in bincode format. + * + * @generated from field: bytes bincode_values = 1; + */ + bincodeValues: Uint8Array; +}; + +/** + * Describes the message nillion.values.v1.retrieve.RetrieveValuesResponse. + * Use `create(RetrieveValuesResponseSchema)` to create a new message. + */ +export const RetrieveValuesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_values_v1_retrieve, 1); + diff --git a/client-vms/src/gen-proto/nillion/values/v1/service_pb.ts b/client-vms/src/gen-proto/nillion/values/v1/service_pb.ts new file mode 100644 index 0000000..b8e832a --- /dev/null +++ b/client-vms/src/gen-proto/nillion/values/v1/service_pb.ts @@ -0,0 +1,60 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/values/v1/service.proto (package nillion.values.v1, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenService } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1"; +import type { EmptySchema } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt"; +import type { DeleteValuesRequestSchema } from "./delete_pb"; +import { file_nillion_values_v1_delete } from "./delete_pb"; +import type { RetrieveValuesRequestSchema, RetrieveValuesResponseSchema } from "./retrieve_pb"; +import { file_nillion_values_v1_retrieve } from "./retrieve_pb"; +import type { StoreValuesRequestSchema, StoreValuesResponseSchema } from "./store_pb"; +import { file_nillion_values_v1_store } from "./store_pb"; + +/** + * Describes the file nillion/values/v1/service.proto. + */ +export const file_nillion_values_v1_service: GenFile = /*@__PURE__*/ + fileDesc("Ch9uaWxsaW9uL3ZhbHVlcy92MS9zZXJ2aWNlLnByb3RvEhFuaWxsaW9uLnZhbHVlcy52MTLCAgoGVmFsdWVzEmgKC1N0b3JlVmFsdWVzEisubmlsbGlvbi52YWx1ZXMudjEuc3RvcmUuU3RvcmVWYWx1ZXNSZXF1ZXN0GiwubmlsbGlvbi52YWx1ZXMudjEuc3RvcmUuU3RvcmVWYWx1ZXNSZXNwb25zZRJ3Cg5SZXRyaWV2ZVZhbHVlcxIxLm5pbGxpb24udmFsdWVzLnYxLnJldHJpZXZlLlJldHJpZXZlVmFsdWVzUmVxdWVzdBoyLm5pbGxpb24udmFsdWVzLnYxLnJldHJpZXZlLlJldHJpZXZlVmFsdWVzUmVzcG9uc2USVQoMRGVsZXRlVmFsdWVzEi0ubmlsbGlvbi52YWx1ZXMudjEuZGVsZXRlLkRlbGV0ZVZhbHVlc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHlCiwEKFWNvbS5uaWxsaW9uLnZhbHVlcy52MUIMU2VydmljZVByb3RvUAGiAgNOVliqAhFOaWxsaW9uLlZhbHVlcy5WMcoCEU5pbGxpb25cVmFsdWVzXFYx4gIdTmlsbGlvblxWYWx1ZXNcVjFcR1BCTWV0YWRhdGHqAhNOaWxsaW9uOjpWYWx1ZXM6OlYxYgZwcm90bzM", [file_google_protobuf_empty, file_nillion_values_v1_delete, file_nillion_values_v1_retrieve, file_nillion_values_v1_store]); + +/** + * A service to interact with values (secrets, public values, etc). + * + * @generated from service nillion.values.v1.Values + */ +export const Values: GenService<{ + /** + * Store values in the network. + * + * @generated from rpc nillion.values.v1.Values.StoreValues + */ + storeValues: { + methodKind: "unary"; + input: typeof StoreValuesRequestSchema; + output: typeof StoreValuesResponseSchema; + }, + /** + * Retrieve values from the network. + * + * @generated from rpc nillion.values.v1.Values.RetrieveValues + */ + retrieveValues: { + methodKind: "unary"; + input: typeof RetrieveValuesRequestSchema; + output: typeof RetrieveValuesResponseSchema; + }, + /** + * Delete values from the network. + * + * @generated from rpc nillion.values.v1.Values.DeleteValues + */ + deleteValues: { + methodKind: "unary"; + input: typeof DeleteValuesRequestSchema; + output: typeof EmptySchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_nillion_values_v1_service, 0); + diff --git a/client-vms/src/gen-proto/nillion/values/v1/store_pb.ts b/client-vms/src/gen-proto/nillion/values/v1/store_pb.ts new file mode 100644 index 0000000..cdb020f --- /dev/null +++ b/client-vms/src/gen-proto/nillion/values/v1/store_pb.ts @@ -0,0 +1,92 @@ +// @generated by protoc-gen-es v2.2.0 with parameter "target=ts" +// @generated from file nillion/values/v1/store.proto (package nillion.values.v1.store, syntax proto3) +/* eslint-disable */ + +import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1"; +import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1"; +import type { SignedReceipt } from "../../payments/v1/receipt_pb"; +import { file_nillion_payments_v1_receipt } from "../../payments/v1/receipt_pb"; +import type { Permissions } from "../../permissions/v1/permissions_pb"; +import { file_nillion_permissions_v1_permissions } from "../../permissions/v1/permissions_pb"; +import type { Message } from "@bufbuild/protobuf"; + +/** + * Describes the file nillion/values/v1/store.proto. + */ +export const file_nillion_values_v1_store: GenFile = /*@__PURE__*/ + fileDesc("Ch1uaWxsaW9uL3ZhbHVlcy92MS9zdG9yZS5wcm90bxIXbmlsbGlvbi52YWx1ZXMudjEuc3RvcmUi0QEKElN0b3JlVmFsdWVzUmVxdWVzdBJCCg5zaWduZWRfcmVjZWlwdBgBIAEoCzIqLm5pbGxpb24ucGF5bWVudHMudjEucmVjZWlwdC5TaWduZWRSZWNlaXB0EhYKDmJpbmNvZGVfdmFsdWVzGAIgASgMEkQKC3Blcm1pc3Npb25zGAMgASgLMi8ubmlsbGlvbi5wZXJtaXNzaW9ucy52MS5wZXJtaXNzaW9ucy5QZXJtaXNzaW9ucxIZChF1cGRhdGVfaWRlbnRpZmllchgEIAEoDCIoChNTdG9yZVZhbHVlc1Jlc3BvbnNlEhEKCXZhbHVlc19pZBgBIAEoDEKpAQobY29tLm5pbGxpb24udmFsdWVzLnYxLnN0b3JlQgpTdG9yZVByb3RvUAGiAgROVlZTqgIXTmlsbGlvbi5WYWx1ZXMuVjEuU3RvcmXKAhdOaWxsaW9uXFZhbHVlc1xWMVxTdG9yZeICI05pbGxpb25cVmFsdWVzXFYxXFN0b3JlXEdQQk1ldGFkYXRh6gIaTmlsbGlvbjo6VmFsdWVzOjpWMTo6U3RvcmViBnByb3RvMw", [file_nillion_payments_v1_receipt, file_nillion_permissions_v1_permissions]); + +/** + * A request to store a set of values. + * + * @generated from message nillion.values.v1.store.StoreValuesRequest + */ +export type StoreValuesRequest = Message<"nillion.values.v1.store.StoreValuesRequest"> & { + /** + * The receipt that proves this operation was paid for. + * + * The receipt must be for a `StoreValues` operation. + * + * @generated from field: nillion.payments.v1.receipt.SignedReceipt signed_receipt = 1; + */ + signedReceipt?: SignedReceipt; + + /** + * The values encoded in bincode format. + * + * @generated from field: bytes bincode_values = 2; + */ + bincodeValues: Uint8Array; + + /** + * The permissions to set for these values. + * + * Permissions are required when storing values and optional when updating them. That is, + * if `update_identifier` is set then this attribute is optional. + * + * @generated from field: nillion.permissions.v1.permissions.Permissions permissions = 3; + */ + permissions?: Permissions; + + /** + * The optional values identifier to use when storing these values. + * + * The given identifier must be a valid values identifier that the invoking user has update permissions + * on for this operation to be considered valid. + * + * Setting this identifier will effectively turn this operation into an update for an existing set of + * values. + * + * @generated from field: bytes update_identifier = 4; + */ + updateIdentifier: Uint8Array; +}; + +/** + * Describes the message nillion.values.v1.store.StoreValuesRequest. + * Use `create(StoreValuesRequestSchema)` to create a new message. + */ +export const StoreValuesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_values_v1_store, 0); + +/** + * A response to a request to store values the network. + * + * @generated from message nillion.values.v1.store.StoreValuesResponse + */ +export type StoreValuesResponse = Message<"nillion.values.v1.store.StoreValuesResponse"> & { + /** + * The identifier of the store values. + * + * @generated from field: bytes values_id = 1; + */ + valuesId: Uint8Array; +}; + +/** + * Describes the message nillion.values.v1.store.StoreValuesResponse. + * Use `create(StoreValuesResponseSchema)` to create a new message. + */ +export const StoreValuesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_nillion_values_v1_store, 1); + diff --git a/client-vms/src/index.ts b/client-vms/src/index.ts new file mode 100644 index 0000000..d36bec2 --- /dev/null +++ b/client-vms/src/index.ts @@ -0,0 +1 @@ +export * from "./vm"; diff --git a/packages/client-vms/src/logger.ts b/client-vms/src/logger.ts similarity index 59% rename from packages/client-vms/src/logger.ts rename to client-vms/src/logger.ts index fca3347..8eeafc8 100644 --- a/packages/client-vms/src/logger.ts +++ b/client-vms/src/logger.ts @@ -1,4 +1,4 @@ import debug from "debug"; -export const Log = debug("nillion:vms"); +export const Log = debug("nillion::client"); Log.log = console.log.bind(console); diff --git a/client-vms/src/payment/builder.ts b/client-vms/src/payment/builder.ts new file mode 100644 index 0000000..b94d27e --- /dev/null +++ b/client-vms/src/payment/builder.ts @@ -0,0 +1,72 @@ +import { createClient } from "@connectrpc/connect"; +import { OfflineSigner, Registry } from "@cosmjs/proto-signing"; +import { GasPrice, SigningStargateClient } from "@cosmjs/stargate"; +import { z } from "zod"; + +import { Payments } from "@nillion/client-vms/gen-proto/nillion/payments/v1/service_pb"; +import { GrpcTransport, OfflineSignerSchema } from "@nillion/client-vms/types"; + +import { PaymentClient, PaymentClientConfig } from "./client"; +import { MsgPayForCompatWrapper } from "./grpc-compat"; +import { NilChainProtobufTypeUrl, NilToken } from "./types"; + +const PaymentClientBuilderConfig = z.object({ + signer: OfflineSignerSchema, + chainUrl: z.string().url("Invalid chain url"), + transport: GrpcTransport, +}); + +export class PaymentClientBuilder { + private _signer?: OfflineSigner; + private _chainUrl?: string; + private _transport?: GrpcTransport; + + chainUrl(url: string): this { + this._chainUrl = url; + return this; + } + + signer(signer: OfflineSigner): this { + this._signer = signer; + return this; + } + + leader(transport: GrpcTransport): this { + this._transport = transport; + return this; + } + + async build(): Promise { + const { signer, chainUrl, transport } = PaymentClientBuilderConfig.parse({ + signer: this._signer, + chainUrl: this._chainUrl, + transport: this._transport, + }); + + const registry = new Registry(); + registry.register(NilChainProtobufTypeUrl, MsgPayForCompatWrapper); + + const accounts = await signer.getAccounts(); + if (accounts.length === 0) + throw new Error("No accounts on the offline signer"); + const address = accounts[0]?.address ?? ""; + + const chain = await SigningStargateClient.connectWithSigner( + z.string().url().parse(chainUrl), + signer, + { + gasPrice: GasPrice.fromString(NilToken.asUnil(0.0)), + registry, + }, + ); + + const leader = createClient(Payments, transport); + const config = PaymentClientConfig.parse({ + address, + chain, + leader, + }); + + return new PaymentClient(config); + } +} diff --git a/client-vms/src/payment/client.ts b/client-vms/src/payment/client.ts new file mode 100644 index 0000000..7aa12a3 --- /dev/null +++ b/client-vms/src/payment/client.ts @@ -0,0 +1,92 @@ +import { create, fromBinary } from "@bufbuild/protobuf"; +import { Client } from "@connectrpc/connect"; +import { SigningStargateClient } from "@cosmjs/stargate"; +import { z } from "zod"; + +import { MsgPayForSchema } from "@nillion/client-vms/gen-proto/nillion/meta/v1/msg_pay_for_pb"; +import { + PriceQuoteRequest, + PriceQuoteSchema, +} from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { + PaymentReceiptRequestSchema, + SignedReceipt, +} from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { Payments } from "@nillion/client-vms/gen-proto/nillion/payments/v1/service_pb"; +import { Log } from "@nillion/client-vms/logger"; +import { GrpcClient, Quote } from "@nillion/client-vms/types"; + +import { + NilChainAddress, + NilChainProtobufTypeUrl, + NilToken, + TxHash, +} from "./types"; + +export const PaymentClientConfig = z.object({ + address: NilChainAddress, + chain: z.custom( + (value: unknown) => value instanceof SigningStargateClient, + ), + leader: GrpcClient, +}); + +export type PaymentClientConfig = z.infer; + +export class PaymentClient { + private readonly address: NilChainAddress; + private readonly chain: SigningStargateClient; + private readonly leader: Client; + + constructor(private readonly config: PaymentClientConfig) { + this.address = config.address; + this.chain = config.chain; + this.leader = config.leader as Client; + } + + async payForOperation(request: PriceQuoteRequest): Promise { + const quote = await this.quote(request); + const txHash = await this.payOnChain(quote); + return await this.validate(quote, txHash); + } + + async quote(request: PriceQuoteRequest): Promise { + const signed = await this.leader.priceQuote(request); + const quotePb = fromBinary(PriceQuoteSchema, signed.quote); + const quote = Quote.parse( + { ...quotePb, request, signed }, + { path: ["client.quote"] }, + ); + Log("Got quote for %s: %O", request.operation.case, quote.fees); + return quote; + } + + async payOnChain(quote: Quote): Promise { + const amount = String(quote.fees.total); + + const value = create(MsgPayForSchema, { + fromAddress: this.address, + resource: quote.nonce, + amount: [{ denom: NilToken.Unil, amount }], + }); + + const result = await this.chain.signAndBroadcast( + this.address, + [{ typeUrl: NilChainProtobufTypeUrl, value }], + "auto", + ); + const hash = TxHash.parse(result.transactionHash); + Log("Paid %d unil hash: %s", amount, hash); + return hash; + } + + async validate(quote: Quote, txHash: TxHash): Promise { + const request = create(PaymentReceiptRequestSchema, { + signedQuote: quote.signed, + txHash, + }); + const receipt = await this.leader.paymentReceipt(request); + Log("Validated payment with cluster"); + return receipt; + } +} diff --git a/packages/client-payments/src/grpc-compat.ts b/client-vms/src/payment/grpc-compat.ts similarity index 84% rename from packages/client-payments/src/grpc-compat.ts rename to client-vms/src/payment/grpc-compat.ts index 505de1a..8a97ea1 100644 --- a/packages/client-payments/src/grpc-compat.ts +++ b/client-vms/src/payment/grpc-compat.ts @@ -1,11 +1,11 @@ import { create } from "@bufbuild/protobuf"; -import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; -import { TsProtoGeneratedType } from "@cosmjs/proto-signing/build/registry"; +import { type BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; +import type { TsProtoGeneratedType } from "@cosmjs/proto-signing/build/registry"; import { - MsgPayFor, + type MsgPayFor, MsgPayForSchema, -} from "./gen-proto/nillion/meta/v1/msg_pay_for_pb"; +} from "../gen-proto/nillion/meta/v1/msg_pay_for_pb"; /** * This wrapper maintains API compatibility with the cosmjs library while using `@bufbuild/protobuf`. @@ -19,7 +19,6 @@ import { * allowing us to bypass the type check safely in this context. */ export const MsgPayForCompatWrapper: TsProtoGeneratedType = { - // @ts-expect-error see MsgPayForCompatWrapper comment encode: ( message: MsgPayFor, writer: BinaryWriter = new BinaryWriter(), @@ -42,7 +41,6 @@ export const MsgPayForCompatWrapper: TsProtoGeneratedType = { } return writer; }, - // @ts-expect-error see MsgPayForCompatWrapper comment decode: (_input: BinaryReader | Uint8Array, _length?: number): MsgPayFor => { throw new Error("MsgPayForCompatWrapper: decode not implemented"); }, diff --git a/client-vms/src/payment/index.ts b/client-vms/src/payment/index.ts new file mode 100644 index 0000000..1aeda98 --- /dev/null +++ b/client-vms/src/payment/index.ts @@ -0,0 +1,4 @@ +export * from "./builder"; +export * from "./client"; +export * from "./types"; +export * from "./wallet"; diff --git a/client-vms/src/payment/types.ts b/client-vms/src/payment/types.ts new file mode 100644 index 0000000..480748c --- /dev/null +++ b/client-vms/src/payment/types.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +export const TxHash = z.string().length(64).base64().brand<"TxHash">(); +export type TxHash = z.infer; + +export const NilChainAddressPrefix = "nillion"; +export const NilChainAddress = z + .string() + .length(46) + .startsWith(NilChainAddressPrefix) + .brand<"Address">(); +export type NilChainAddress = z.infer; + +export const NilToken = { + Unil: "unil", + asUnil: (amount: number | string) => `${String(amount)}${NilToken.Unil}`, +}; + +export const NilChainProtobufTypeUrl = "/nillion.meta.v1.MsgPayFor"; + +export const PrivateKeyBase16 = z + .string() + .length(64) + .brand<"PrivateKeyBase16">(); +export type PrivateKeyBase16 = z.infer; diff --git a/packages/client-payments/src/wallet.ts b/client-vms/src/payment/wallet.ts similarity index 81% rename from packages/client-payments/src/wallet.ts rename to client-vms/src/payment/wallet.ts index 40333b6..cf83918 100644 --- a/packages/client-payments/src/wallet.ts +++ b/client-vms/src/payment/wallet.ts @@ -1,7 +1,10 @@ -import { DirectSecp256k1Wallet, OfflineSigner } from "@cosmjs/proto-signing"; -import { Keplr, Window as KeplrWindow } from "@keplr-wallet/types"; +import { + DirectSecp256k1Wallet, + type OfflineSigner, +} from "@cosmjs/proto-signing"; +import type { Keplr, Window as KeplrWindow } from "@keplr-wallet/types"; -import { NilChainAddressPrefix, PrivateKeyBase16 } from "@nillion/client-core"; +import { NilChainAddressPrefix, type PrivateKeyBase16 } from "./types"; declare global { // eslint-disable-next-line diff --git a/client-vms/src/types/grpc.ts b/client-vms/src/types/grpc.ts new file mode 100644 index 0000000..93a3aad --- /dev/null +++ b/client-vms/src/types/grpc.ts @@ -0,0 +1,29 @@ +import type { DescService } from "@bufbuild/protobuf"; +import { Client, Transport } from "@connectrpc/connect"; +import { OfflineSigner } from "@cosmjs/proto-signing"; +import { z } from "zod"; + +export const GrpcTransport = z.custom((value: unknown) => + Boolean(value), +); +export type GrpcTransport = z.infer; + +export const AuthenticatedGrpcTransport = z.custom( + (value: unknown) => Boolean(value), +); +export type AuthenticatedGrpcTransport = z.infer< + typeof AuthenticatedGrpcTransport +>; + +export const GrpcClient = z.custom>( + (value: unknown) => value !== null && typeof value === "object", +); + +export const OfflineSignerSchema = z.custom((value: unknown) => { + return ( + value !== null && + typeof value === "object" && + "getAccounts" in value && + "signDirect" in value + ); +}); diff --git a/client-vms/src/types/index.ts b/client-vms/src/types/index.ts new file mode 100644 index 0000000..a401fe0 --- /dev/null +++ b/client-vms/src/types/index.ts @@ -0,0 +1,2 @@ +export * from "./grpc"; +export * from "./types"; diff --git a/client-vms/src/types/types.ts b/client-vms/src/types/types.ts new file mode 100644 index 0000000..0bca7cf --- /dev/null +++ b/client-vms/src/types/types.ts @@ -0,0 +1,89 @@ +import { Timestamp, timestampDate } from "@bufbuild/protobuf/wkt"; +import { z } from "zod"; + +import type { + PriceQuoteRequest, + QuoteFees, + SignedQuote, +} from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { PartyId as WasmPartyId } from "@nillion/client-wasm"; + +export const TimestampToDateSchema = z + .custom( + (value: unknown) => + value !== null && + typeof value === "object" && + "seconds" in value && + "nanos" in value && + "$typeName" in value && + value.$typeName === "google.protobuf.Timestamp", + ) + .transform((timestamp) => timestampDate(timestamp)); + +export const Quote = z.object({ + nonce: z.custom(), + fees: z.custom(), + expiresAt: TimestampToDateSchema, + request: z.custom(), + signed: z.custom((value: unknown) => { + return ( + value !== null && + typeof value === "object" && + "quote" in value && + "signature" in value + ); + }), +}); + +export type Quote = z.infer; + +export class PartyId { + constructor(public readonly inner: Uint8Array) {} + + toBase64(): string { + return btoa(String.fromCharCode(...this.inner)); + } + + toWasm(): WasmPartyId { + return new WasmPartyId(this.inner); + } + + static from(id: Uint8Array): PartyId { + return new PartyId(id); + } +} + +export const Uuid = z.string().uuid(); +export type Uuid = z.infer; + +export const TtlDays = z.number().positive(); +export type TtlDays = z.infer; + +export const UserId = z.string().min(87).max(89).regex(new RegExp(`^\\w+$`)); +export type UserId = z.infer; + +export const PartyName = z.string().min(1); +export type PartyName = z.infer; + +export const ProgramId = z.string().min(90).regex(new RegExp(`^\\w+/.+$`)); +export type ProgramId = z.infer; + +export const InputBindings = z.object({ + party: PartyName, + user: UserId, +}); +export type InputBindings = z.infer; + +export const OutputBindings = z.object({ + party: PartyName, + users: z.array(UserId), +}); +export type OutputBindings = z.infer; + +export const NadaValuesRecord = z.record( + z.object({ + type: z.string(), + value: z.string(), + }), +); +export type NadaValuesRecord = z.infer; diff --git a/client-vms/src/util.ts b/client-vms/src/util.ts new file mode 100644 index 0000000..8ac076e --- /dev/null +++ b/client-vms/src/util.ts @@ -0,0 +1,13 @@ +export const collapse = (list: T[]): T | never => { + if (list.length === 0) { + throw new Error("Cannot collapse empty list"); + } + + return list.reduce((acc, cur) => { + if (acc === undefined) return cur; + // TODO: serialized to account for objects but could be improved + if (JSON.stringify(acc) !== JSON.stringify(cur)) + throw new Error(`Element mismatch: ${JSON.stringify(list)}`); + return cur; + }); +}; diff --git a/client-vms/src/vm/builder.ts b/client-vms/src/vm/builder.ts new file mode 100644 index 0000000..a1ed9c2 --- /dev/null +++ b/client-vms/src/vm/builder.ts @@ -0,0 +1,151 @@ +import { createClient } from "@connectrpc/connect"; +import { createGrpcWebTransport } from "@connectrpc/connect-web"; +import { OfflineSigner } from "@cosmjs/proto-signing"; +import { sha512 } from "@noble/hashes/sha2"; +import bs58 from "bs58"; +import { z } from "zod"; + +import { + createAuthInterceptor, + TokenAuthManager, +} from "@nillion/client-vms/auth"; +import { Prime } from "@nillion/client-vms/gen-proto/nillion/membership/v1/cluster_pb"; +import { Membership } from "@nillion/client-vms/gen-proto/nillion/membership/v1/service_pb"; +import { PaymentClientBuilder } from "@nillion/client-vms/payment"; +import { PartyId } from "@nillion/client-vms/types"; +import { OfflineSignerSchema } from "@nillion/client-vms/types"; +import { VmClient, VmClientConfig } from "@nillion/client-vms/vm/client"; +import { SecretMasker } from "@nillion/client-wasm"; + +const VmClientBuilderConfig = z.object({ + bootnodeUrl: z.string().url("Invalid bootnode url"), + chainUrl: z.string().url("Invalid chain url"), + signer: OfflineSignerSchema, + seed: z.string().min(1), + authTokenTtl: z.number(), +}); + +export class VmClientBuilder { + private _bootnodeUrl?: string; + private _chainUrl?: string; + private _signer?: OfflineSigner; + private _seed?: string; + private _authTokenTtl?: number; + + bootnodeUrl(url: string): this { + this._bootnodeUrl = url; + return this; + } + + chainUrl(url: string): this { + this._chainUrl = url; + return this; + } + + signer(signer: OfflineSigner): this { + this._signer = signer; + return this; + } + + seed(seed: string): this { + this._seed = seed; + return this; + } + + authTokenTtl(ttl: number): this { + this._authTokenTtl = ttl; + return this; + } + + async build(): Promise { + const { bootnodeUrl, chainUrl, signer, seed } = VmClientBuilderConfig.parse( + { + bootnodeUrl: this._bootnodeUrl, + chainUrl: this._chainUrl, + signer: this._signer, + seed: this._seed, + authTokenTtl: this._authTokenTtl, + }, + ); + + const tokenAuthManager = TokenAuthManager.fromSeed(seed); + + const cluster = await fetchClusterDetails(bootnodeUrl); + + // eslint-disable-next-line + const id = PartyId.from(cluster.leader?.identity!); + const leader = { + id, + transport: createGrpcWebTransport({ + // eslint-disable-next-line + baseUrl: cluster.leader?.grpcEndpoint!, + useBinaryFormat: true, + interceptors: [createAuthInterceptor(tokenAuthManager, id)], + }), + }; + + const nodes = cluster.members.map((node) => { + const id = PartyId.from(node.identity); + return { + id, + transport: createGrpcWebTransport({ + baseUrl: node.grpcEndpoint, + useBinaryFormat: true, + interceptors: [createAuthInterceptor(tokenAuthManager, id)], + }), + }; + }); + + let masker: SecretMasker; + const polynomialDegree = BigInt(cluster.polynomialDegree); + const partyIds = nodes.map((node) => node.id.toWasm()); + switch (cluster.prime) { + case Prime.SAFE_64_BITS: { + masker = SecretMasker.new_64_bit_safe_prime(polynomialDegree, partyIds); + break; + } + case Prime.SAFE_128_BITS: { + masker = SecretMasker.new_128_bit_safe_prime( + polynomialDegree, + partyIds, + ); + break; + } + case Prime.SAFE_256_BITS: { + masker = SecretMasker.new_256_bit_safe_prime( + polynomialDegree, + partyIds, + ); + break; + } + default: { + throw new Error(`Unsupported cluster prime: {cluster.prime}`); + } + } + + const payer = await new PaymentClientBuilder() + .chainUrl(chainUrl) + .signer(signer) + .leader(leader.transport) + .build(); + + const config = VmClientConfig.parse({ + id: bs58.encode(sha512(tokenAuthManager.publicKey.contents)), + payer, + masker, + leader, + nodes, + }); + return new VmClient(config); + } +} + +export const fetchClusterDetails = (bootnodeUrl: string) => { + return createClient( + Membership, + createGrpcWebTransport({ + baseUrl: bootnodeUrl, + useBinaryFormat: true, + }), + ).cluster({}); +}; diff --git a/client-vms/src/vm/client.ts b/client-vms/src/vm/client.ts new file mode 100644 index 0000000..d281404 --- /dev/null +++ b/client-vms/src/vm/client.ts @@ -0,0 +1,93 @@ +import { z } from "zod"; + +import { PoolStatusResponse } from "@nillion/client-vms/gen-proto/nillion/leader_queries/v1/pool_status_pb"; +import { PaymentClient } from "@nillion/client-vms/payment"; +import { GrpcTransport, PartyId, UserId } from "@nillion/client-vms/types"; +import { InvokeComputeBuilder } from "@nillion/client-vms/vm/operation/invoke-compute"; +import { RetrieveComputeResultBuilder } from "@nillion/client-vms/vm/operation/retrieve-compute-result"; +import { UpdatePermissionsBuilder } from "@nillion/client-vms/vm/operation/update-permissions"; +import { SecretMasker } from "@nillion/client-wasm"; + +import { + DeleteValuesBuilder, + QueryPoolStatusBuilder, + RetrievePermissionsBuilder, + RetrieveValuesBuilder, + StoreProgramBuilder, + StoreValuesBuilder, +} from "./operation"; + +export const NodeConfig = z.object({ + id: z.instanceof(PartyId), + transport: GrpcTransport, +}); +export type NodeConfig = z.infer; + +export const VmClientConfig = z.object({ + id: UserId, + payer: z.instanceof(PaymentClient), + masker: z.instanceof(SecretMasker), + leader: NodeConfig, + nodes: z.array(NodeConfig), +}); +export type VmClientConfig = z.infer; + +export class VmClient { + constructor(readonly config: VmClientConfig) {} + + get id(): UserId { + return this.config.id; + } + + get leader(): NodeConfig { + return this.config.leader; + } + + get nodes(): NodeConfig[] { + return this.config.nodes; + } + + get payer(): PaymentClient { + return this.config.payer; + } + + get masker(): SecretMasker { + return this.config.masker; + } + + queryPoolStatus(): Promise { + return QueryPoolStatusBuilder.init(this).build().invoke(); + } + + storeValues(): StoreValuesBuilder { + return StoreValuesBuilder.init(this); + } + + retrieveValues(): RetrieveValuesBuilder { + return RetrieveValuesBuilder.init(this); + } + + deleteValues(): DeleteValuesBuilder { + return DeleteValuesBuilder.init(this); + } + + retrievePermissions(): RetrievePermissionsBuilder { + return RetrievePermissionsBuilder.init(this); + } + + updatePermissions(): UpdatePermissionsBuilder { + return UpdatePermissionsBuilder.init(this); + } + + storeProgram(): StoreProgramBuilder { + return StoreProgramBuilder.init(this); + } + + invokeCompute(): InvokeComputeBuilder { + return InvokeComputeBuilder.init(this); + } + + retrieveComputeResult(): RetrieveComputeResultBuilder { + return RetrieveComputeResultBuilder.init(this); + } +} diff --git a/client-vms/src/vm/index.ts b/client-vms/src/vm/index.ts new file mode 100644 index 0000000..5e7e022 --- /dev/null +++ b/client-vms/src/vm/index.ts @@ -0,0 +1,2 @@ +export * from "./builder"; +export * from "./client"; diff --git a/client-vms/src/vm/operation/delete-values.ts b/client-vms/src/vm/operation/delete-values.ts new file mode 100644 index 0000000..2bae310 --- /dev/null +++ b/client-vms/src/vm/operation/delete-values.ts @@ -0,0 +1,71 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid } from "uuid"; +import { z } from "zod"; + +import { DeleteValuesRequestSchema } from "@nillion/client-vms/gen-proto/nillion/values/v1/delete_pb"; +import { Values } from "@nillion/client-vms/gen-proto/nillion/values/v1/service_pb"; +import { Uuid } from "@nillion/client-vms/types"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; + +export const DeleteValuesConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid, +}); +export type DeleteValuesConfig = z.infer; + +export class DeleteValues implements Operation { + private constructor(private readonly config: DeleteValuesConfig) {} + + async invoke(): Promise { + const { + vm: { nodes }, + id, + } = this.config; + + const valuesId = parseUuid(id); + + const promises = nodes.map((node) => { + const client = createClient(Values, node.transport); + return client.deleteValues( + create(DeleteValuesRequestSchema, { + valuesId, + }), + ); + }); + + const results = await Promise.all(promises); + if (results.length !== nodes.length) + throw new Error("Results length does not match nodes length"); + + return id; + } + + static new(config: DeleteValuesConfig): DeleteValues { + return new DeleteValues(config); + } +} + +export class DeleteValuesBuilder { + private _id?: Uuid; + + private constructor(private readonly vm: VmClient) {} + + id(value: Uuid): this { + this._id = value; + return this; + } + + build(): DeleteValues { + const config = DeleteValuesConfig.parse({ + vm: this.vm, + id: this._id, + }); + return DeleteValues.new(config); + } + + static init = (vm: VmClient): DeleteValuesBuilder => + new DeleteValuesBuilder(vm); +} diff --git a/client-vms/src/vm/operation/index.ts b/client-vms/src/vm/operation/index.ts new file mode 100644 index 0000000..346e146 --- /dev/null +++ b/client-vms/src/vm/operation/index.ts @@ -0,0 +1,8 @@ +export * from "./delete-values"; +export * from "./operation"; +export * from "./query-pool-status"; +export * from "./retrieve-permissions"; +export * from "./retrieve-values"; +export * from "./store-program"; +export * from "./store-values"; +export * from "./values-permissions-builder"; diff --git a/client-vms/src/vm/operation/invoke-compute.ts b/client-vms/src/vm/operation/invoke-compute.ts new file mode 100644 index 0000000..bb182aa --- /dev/null +++ b/client-vms/src/vm/operation/invoke-compute.ts @@ -0,0 +1,166 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid, stringify as stringifyUuid } from "uuid"; +import { z } from "zod"; + +import { + InputPartyBindingSchema, + InvokeComputeRequestSchema, + OutputPartyBindingSchema, +} from "@nillion/client-vms/gen-proto/nillion/compute/v1/invoke_pb"; +import { Compute } from "@nillion/client-vms/gen-proto/nillion/compute/v1/service_pb"; +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { + InputBindings, + OutputBindings, + PartyId, + ProgramId, + UserId, + Uuid, +} from "@nillion/client-vms/types"; +import { collapse } from "@nillion/client-vms/util"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; +import { + compute_values_size, + encode_values, + NadaValue, + NadaValues, +} from "@nillion/client-wasm"; + +export const InvokeComputeConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + programId: ProgramId, + computeTimeValues: z.instanceof(NadaValues), + valueIds: z.array(Uuid), + inputBindings: z.array(InputBindings), + outputBindings: z.array(OutputBindings), +}); +export type InvokeComputeConfig = z.infer; + +export class InvokeCompute implements Operation { + private constructor(private readonly config: InvokeComputeConfig) {} + + async invoke(): Promise { + const { nodes, masker } = this.config.vm; + + const signedReceipt = await this.pay(); + const shares = masker.mask(this.config.computeTimeValues).map((share) => ({ + node: PartyId.from(share.party.to_byte_array()), + bincodeValues: encode_values(share.shares), + })); + const valueIds = this.config.valueIds.map(parseUuid); + + const inputBindings = this.config.inputBindings.map((bindings) => + create(InputPartyBindingSchema, { + partyName: bindings.party, + userId: bindings.user, + }), + ); + + const outputBindings = this.config.outputBindings.map((bindings) => + create(OutputPartyBindingSchema, { + partyName: bindings.party, + userIds: bindings.users, + }), + ); + + const promises = nodes.map((node) => { + const client = createClient(Compute, node.transport); + const share = shares.find( + (share) => share.node.toBase64() === node.id.toBase64(), + ); + + if (!share) + throw new Error("Failed to match share.party with a known node.id"); + + return client.invokeCompute( + create(InvokeComputeRequestSchema, { + signedReceipt, + valueIds, + bincodeValues: share.bincodeValues, + inputBindings, + outputBindings, + }), + ); + }); + + const results = (await Promise.all(promises)).map((e) => e.computeId); + return stringifyUuid(collapse(results)); + } + + private async pay(): Promise { + const { + programId, + computeTimeValues, + vm: { payer }, + } = this.config; + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "invokeCompute", + value: { + programId, + valuesPayloadSize: compute_values_size(computeTimeValues), + }, + }, + }), + ); + } + + static new(config: InvokeComputeConfig): InvokeCompute { + return new InvokeCompute(config); + } +} + +export class InvokeComputeBuilder { + private _programId?: ProgramId; + private _computeTimeValues = new NadaValues(); + private _valueIds: Uuid[] = []; + private _inputBindings: InputBindings[] = []; + private _outputBindings: OutputBindings[] = []; + private constructor(private readonly vm: VmClient) {} + + program(id: ProgramId): this { + this._programId = id; + return this; + } + + computeTimeValues(name: string, value: NadaValue): this { + this._computeTimeValues.insert(name, value); + return this; + } + + valueIds(...ids: Uuid[]): this { + this._valueIds.push(...ids); + return this; + } + + inputParty(party: string, user: UserId): this { + this._inputBindings.push({ party, user }); + return this; + } + + outputParty(party: string, users: UserId[]): this { + this._outputBindings.push({ party, users }); + return this; + } + + build(): InvokeCompute { + const config = InvokeComputeConfig.parse({ + vm: this.vm, + programId: this._programId, + computeTimeValues: this._computeTimeValues, + valueIds: this._valueIds, + inputBindings: this._inputBindings, + outputBindings: this._outputBindings, + }); + return InvokeCompute.new(config); + } + + static init = (vm: VmClient): InvokeComputeBuilder => + new InvokeComputeBuilder(vm); +} diff --git a/client-vms/src/vm/operation/operation.ts b/client-vms/src/vm/operation/operation.ts new file mode 100644 index 0000000..598c2c5 --- /dev/null +++ b/client-vms/src/vm/operation/operation.ts @@ -0,0 +1,3 @@ +export interface Operation { + invoke: () => Promise; +} diff --git a/client-vms/src/vm/operation/query-pool-status.ts b/client-vms/src/vm/operation/query-pool-status.ts new file mode 100644 index 0000000..0f79ddf --- /dev/null +++ b/client-vms/src/vm/operation/query-pool-status.ts @@ -0,0 +1,56 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { z } from "zod"; + +import { PoolStatusResponse } from "@nillion/client-vms/gen-proto/nillion/leader_queries/v1/pool_status_pb"; +import { LeaderQueries } from "@nillion/client-vms/gen-proto/nillion/leader_queries/v1/service_pb"; +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; + +export const QueryPoolStatusConfig = z.object({ + vm: z.custom(), +}); +export type QueryPoolStatusConfig = z.infer; + +export class QueryPoolStatus implements Operation { + private constructor(private readonly config: QueryPoolStatusConfig) {} + + async invoke(): Promise { + const client = createClient(LeaderQueries, this.config.vm.leader.transport); + const signedReceipt = await this.pay(); + return client.poolStatus({ + signedReceipt, + }); + } + + pay(): Promise { + return this.config.vm.payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "poolStatus", + value: {}, + }, + }), + ); + } + + static new(config: QueryPoolStatusConfig): QueryPoolStatus { + return new QueryPoolStatus(config); + } +} + +export class QueryPoolStatusBuilder { + private constructor(private readonly vm: VmClient) {} + + build(): QueryPoolStatus { + const config = QueryPoolStatusConfig.parse({ + vm: this.vm, + }); + return QueryPoolStatus.new(config); + } + + static init = (vm: VmClient): QueryPoolStatusBuilder => + new QueryPoolStatusBuilder(vm); +} diff --git a/client-vms/src/vm/operation/retrieve-compute-result.ts b/client-vms/src/vm/operation/retrieve-compute-result.ts new file mode 100644 index 0000000..3b27fea --- /dev/null +++ b/client-vms/src/vm/operation/retrieve-compute-result.ts @@ -0,0 +1,82 @@ +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid } from "uuid"; +import { z } from "zod"; + +import { Compute } from "@nillion/client-vms/gen-proto/nillion/compute/v1/service_pb"; +import { Log } from "@nillion/client-vms/logger"; +import { NadaValuesRecord, Uuid } from "@nillion/client-vms/types"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; +import { decode_values, PartyShares } from "@nillion/client-wasm"; + +export const RetrieveComputeResultConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid, +}); +export type RetrieveComputeResultConfig = z.infer< + typeof RetrieveComputeResultConfig +>; + +export class RetrieveComputeResult implements Operation { + private constructor(private readonly config: RetrieveComputeResultConfig) {} + + async invoke(): Promise { + const { nodes, masker } = this.config.vm; + const computeId = parseUuid(this.config.id); + + const promises = nodes.map(async (node) => { + const client = createClient(Compute, node.transport); + const asyncIterable = client.retrieveResults({ + computeId, + }); + + for await (const response of asyncIterable) { + if (response.state.case === "success") { + return new PartyShares( + node.id.toWasm(), + decode_values(response.state.value.bincodeValues), + ); + } else if (response.state.case === "waitingComputation") { + Log("Waiting for compute result from: %s", node.id.toBase64()); + } else { + throw new Error("Compute result failure from node", { + cause: response, + }); + } + } + }); + + const results = (await Promise.all(promises)) as PartyShares[]; + const shares = results.map((values) => values); + const values = masker.unmask(shares); + + const record = values.to_record() as unknown; + return NadaValuesRecord.parse(record); + } + + static new(config: RetrieveComputeResultConfig): RetrieveComputeResult { + return new RetrieveComputeResult(config); + } +} + +export class RetrieveComputeResultBuilder { + private _id?: Uuid; + private constructor(private readonly vm: VmClient) {} + + id(value: Uuid): this { + this._id = value; + return this; + } + + build(): RetrieveComputeResult { + const config = RetrieveComputeResultConfig.parse({ + vm: this.vm, + id: this._id, + }); + return RetrieveComputeResult.new(config); + } + + static init = (vm: VmClient): RetrieveComputeResultBuilder => + new RetrieveComputeResultBuilder(vm); +} diff --git a/client-vms/src/vm/operation/retrieve-permissions.ts b/client-vms/src/vm/operation/retrieve-permissions.ts new file mode 100644 index 0000000..75279d9 --- /dev/null +++ b/client-vms/src/vm/operation/retrieve-permissions.ts @@ -0,0 +1,88 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid } from "uuid"; +import { z } from "zod"; + +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { Permissions as ValuesPermissions } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/permissions_pb"; +import { RetrievePermissionsRequestSchema } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/retrieve_pb"; +import { Permissions } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/service_pb"; +import { Uuid } from "@nillion/client-vms/types"; +import { collapse } from "@nillion/client-vms/util"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; + +export const RetrievePermissionsConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid, +}); +export type RetrievePermissionsConfig = z.infer< + typeof RetrievePermissionsConfig +>; + +export class RetrievePermissions implements Operation { + private constructor(private readonly config: RetrievePermissionsConfig) {} + + async invoke(): Promise { + const { nodes } = this.config.vm.config; + + const signedReceipt = await this.pay(); + + const promises = nodes.map((node) => { + const client = createClient(Permissions, node.transport); + return client.retrievePermissions( + create(RetrievePermissionsRequestSchema, { + signedReceipt, + }), + ); + }); + + const results = await Promise.all(promises); + return collapse(results); + } + + private async pay(): Promise { + const { + id, + vm: { payer }, + } = this.config; + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "retrievePermissions", + value: { + valuesId: parseUuid(id), + }, + }, + }), + ); + } + + static new(config: RetrievePermissionsConfig): RetrievePermissions { + return new RetrievePermissions(config); + } +} + +export class RetrievePermissionsBuilder { + private _id?: Uuid; + private constructor(private readonly vm: VmClient) {} + + id(value: Uuid): this { + this._id = value; + return this; + } + + build(): RetrievePermissions { + const config = RetrievePermissionsConfig.parse({ + vm: this.vm, + id: this._id, + }); + return RetrievePermissions.new(config); + } + + static init = (vm: VmClient): RetrievePermissionsBuilder => + new RetrievePermissionsBuilder(vm); +} diff --git a/client-vms/src/vm/operation/retrieve-values.ts b/client-vms/src/vm/operation/retrieve-values.ts new file mode 100644 index 0000000..2075069 --- /dev/null +++ b/client-vms/src/vm/operation/retrieve-values.ts @@ -0,0 +1,94 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid } from "uuid"; +import { z } from "zod"; + +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { RetrieveValuesRequestSchema } from "@nillion/client-vms/gen-proto/nillion/values/v1/retrieve_pb"; +import { Values } from "@nillion/client-vms/gen-proto/nillion/values/v1/service_pb"; +import { PaymentClient } from "@nillion/client-vms/payment"; +import { NadaValuesRecord, Uuid } from "@nillion/client-vms/types"; +import { type NodeConfig, VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; +import { decode_values, PartyShares, SecretMasker } from "@nillion/client-wasm"; + +export const RetrieveValuesConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid, +}); +export type RetrieveValuesConfig = z.infer; + +export class RetrieveValues implements Operation { + private constructor(private readonly config: RetrieveValuesConfig) {} + + async invoke(): Promise { + const { nodes, masker } = this.config.vm; + const signedReceipt = await this.pay(); + + const promises = nodes.map(async (node) => { + const client = createClient(Values, node.transport); + const result = await client.retrieveValues( + create(RetrieveValuesRequestSchema, { + signedReceipt, + }), + ); + + return new PartyShares( + node.id.toWasm(), + decode_values(result.bincodeValues), + ); + }); + + const results = await Promise.all(promises); + if (results.length !== nodes.length) + throw new Error("Results length does not match nodes length"); + + const record = masker.unmask(results).to_record() as unknown; + return NadaValuesRecord.parse(record); + } + + private pay(): Promise { + const { + id, + vm: { payer }, + } = this.config; + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "retrieveValues", + value: { + valuesId: parseUuid(id), + }, + }, + }), + ); + } + + static new(config: RetrieveValuesConfig): RetrieveValues { + return new RetrieveValues(config); + } +} + +export class RetrieveValuesBuilder { + private _id?: Uuid; + private constructor(private readonly vm: VmClient) {} + + id(value: Uuid): this { + this._id = value; + return this; + } + + build(): RetrieveValues { + const config = RetrieveValuesConfig.parse({ + vm: this.vm, + id: this._id, + }); + return RetrieveValues.new(config); + } + + static init = (vm: VmClient): RetrieveValuesBuilder => + new RetrieveValuesBuilder(vm); +} diff --git a/client-vms/src/vm/operation/store-program.ts b/client-vms/src/vm/operation/store-program.ts new file mode 100644 index 0000000..f6c6945 --- /dev/null +++ b/client-vms/src/vm/operation/store-program.ts @@ -0,0 +1,122 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { sha256 } from "@noble/hashes/sha2"; +import { z } from "zod"; + +import { + PreprocessingRequirement, + PriceQuoteRequestSchema, + ProgramMetadataSchema, +} from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { Programs } from "@nillion/client-vms/gen-proto/nillion/programs/v1/service_pb"; +import { StoreProgramRequestSchema } from "@nillion/client-vms/gen-proto/nillion/programs/v1/store_pb"; +import { PaymentClient } from "@nillion/client-vms/payment"; +import { ProgramId } from "@nillion/client-vms/types"; +import { collapse } from "@nillion/client-vms/util"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { ProgramMetadata } from "@nillion/client-wasm"; + +import { Operation } from "./operation"; + +export const StoreProgramConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + name: z.string().min(1).max(100), + program: z.instanceof(Uint8Array), +}); +export type StoreProgramConfig = z.infer; + +export class StoreProgram implements Operation { + private constructor(private readonly config: StoreProgramConfig) {} + + private get payer(): PaymentClient { + return this.config.vm.config.payer; + } + + async invoke(): Promise { + const { + program, + vm: { nodes }, + } = this.config; + const signedReceipt = await this.pay(); + + const promises = nodes.map((node) => { + const client = createClient(Programs, node.transport); + return client.storeProgram( + create(StoreProgramRequestSchema, { + signedReceipt, + program, + }), + ); + }); + + const results = (await Promise.all(promises)).map((e) => e.programId); + const value = collapse(results); + return ProgramId.parse(value); + } + + private pay(): Promise { + const { + name, + program, + vm: { payer }, + } = this.config; + + const contentsSha256 = sha256(program); + const metadata = new ProgramMetadata(program); + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "storeProgram", + value: { + name, + contentsSha256, + metadata: create(ProgramMetadataSchema, { + programSize: metadata.memory_size(), + memorySize: metadata.memory_size(), + instructionCount: metadata.total_instructions(), + instructions: metadata.instructions() as Record, + preprocessingRequirements: + metadata.preprocessing_requirements() as unknown as PreprocessingRequirement[], + }), + }, + }, + }), + ); + } + + static new(config: StoreProgramConfig): StoreProgram { + return new StoreProgram(config); + } +} + +export class StoreProgramBuilder { + private _name?: string; + private _program?: Uint8Array; + + private constructor(private readonly vm: VmClient) {} + + name(value: string): this { + this._name = value; + return this; + } + + program(value: Uint8Array): this { + this._program = value; + return this; + } + + build(): StoreProgram { + const config = StoreProgramConfig.parse({ + vm: this.vm, + name: this._name, + program: this._program, + }); + return StoreProgram.new(config); + } + + static init = (vm: VmClient): StoreProgramBuilder => + new StoreProgramBuilder(vm); +} diff --git a/client-vms/src/vm/operation/store-values.ts b/client-vms/src/vm/operation/store-values.ts new file mode 100644 index 0000000..b49c4c9 --- /dev/null +++ b/client-vms/src/vm/operation/store-values.ts @@ -0,0 +1,156 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { stringify as stringifyUuid } from "uuid"; +import { z } from "zod"; + +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { Permissions as ValuesPermissions } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/permissions_pb"; +import { Values } from "@nillion/client-vms/gen-proto/nillion/values/v1/service_pb"; +import { StoreValuesRequestSchema } from "@nillion/client-vms/gen-proto/nillion/values/v1/store_pb"; +import { PartyId, TtlDays, Uuid } from "@nillion/client-vms/types"; +import { collapse } from "@nillion/client-vms/util"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; +import { ValuesPermissionsBuilder } from "@nillion/client-vms/vm/operation/values-permissions-builder"; +import { + compute_values_size, + encode_values, + NadaValue, + NadaValues, +} from "@nillion/client-wasm"; + +export const StoreValuesConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid.nullish(), + values: z.instanceof(NadaValues), + ttl: TtlDays, + permissions: z.custom(), +}); +export type StoreValuesConfig = z.infer; + +export class StoreValues implements Operation { + private constructor(private readonly config: StoreValuesConfig) {} + + async invoke(): Promise { + const { + values, + permissions, + vm: { masker, nodes }, + } = this.config; + + const signedReceipt = await this.pay(); + const shares = masker.mask(values).map((share) => ({ + node: PartyId.from(share.party.to_byte_array()), + bincodeValues: encode_values(share.shares), + })); + + const updateIdentifier = this.isUpdate + ? new TextEncoder().encode(this.config.id ?? undefined) + : undefined; + + const promises = nodes.map((node) => { + const client = createClient(Values, node.transport); + const share = shares.find( + (share) => share.node.toBase64() === node.id.toBase64(), + ); + + if (!share) + throw new Error("Failed to match share.party with a known node.id"); + + return client.storeValues( + create(StoreValuesRequestSchema, { + signedReceipt, + bincodeValues: share.bincodeValues, + permissions: permissions, + updateIdentifier, + }), + ); + }); + + const results = (await Promise.all(promises)).map((e) => e.valuesId); + return stringifyUuid(collapse(results)); + } + + get isUpdate(): boolean { + return Boolean(this.config.id); + } + + private pay(): Promise { + const { + ttl: ttlDays, + values, + vm: { payer, masker }, + } = this.config; + + const payloadSize = compute_values_size(values); + const classify = masker.classify_values(values); + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "storeValues", + value: { + particlesCount: classify.particles, + secretSharedCount: classify.shares, + publicValuesCount: classify.public, + ttlDays, + payloadSize, + }, + }, + }), + ); + } + + static new(config: StoreValuesConfig): StoreValues { + return new StoreValues(config); + } +} + +export class StoreValuesBuilder { + private _id?: Uuid; + private _ttl?: TtlDays; + private _permissions?: ValuesPermissions; + private readonly _values = new NadaValues(); + + private constructor(private readonly vm: VmClient) {} + + value(name: string, value: NadaValue): this { + this._values.insert(name, value); + return this; + } + + ttl(value: TtlDays): this { + this._ttl = value; + return this; + } + + update(value: Uuid): this { + this._id = value; + return this; + } + + defaultPermissions(): this { + this._permissions = ValuesPermissionsBuilder.default(this.vm.id).build(); + return this; + } + + permissions(value: ValuesPermissions): this { + this._permissions = value; + return this; + } + + build(): StoreValues { + const config = StoreValuesConfig.parse({ + vm: this.vm, + id: this._id, + values: this._values, + ttl: this._ttl, + permissions: this._permissions, + }); + return StoreValues.new(config); + } + + static init = (vm: VmClient) => new StoreValuesBuilder(vm); +} diff --git a/client-vms/src/vm/operation/update-permissions.ts b/client-vms/src/vm/operation/update-permissions.ts new file mode 100644 index 0000000..0753821 --- /dev/null +++ b/client-vms/src/vm/operation/update-permissions.ts @@ -0,0 +1,98 @@ +import { create } from "@bufbuild/protobuf"; +import { createClient } from "@connectrpc/connect"; +import { parse as parseUuid } from "uuid"; +import { z } from "zod"; + +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { SignedReceipt } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { Permissions as ValuesPermissions } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/permissions_pb"; +import { Permissions as PermissionsService } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/service_pb"; +import { UpdatePermissionsRequestSchema } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/update_pb"; +import { Uuid } from "@nillion/client-vms/types"; +import { collapse } from "@nillion/client-vms/util"; +import { VmClient } from "@nillion/client-vms/vm/client"; +import { Operation } from "@nillion/client-vms/vm/operation/operation"; + +export const UpdatePermissionsConfig = z.object({ + // due to import resolution order we cannot use instanceof because VmClient isn't defined first + vm: z.custom(), + id: Uuid, + permissions: z.custom(), +}); +export type UpdatePermissionsConfig = z.infer; + +export class UpdatePermissions implements Operation { + private constructor(private readonly config: UpdatePermissionsConfig) {} + + async invoke(): Promise { + const { + permissions, + vm: { nodes }, + } = this.config; + + const signedReceipt = await this.pay(); + + const promises = nodes.map((node) => { + const client = createClient(PermissionsService, node.transport); + return client.updatePermissions( + create(UpdatePermissionsRequestSchema, { + signedReceipt, + permissions, + }), + ); + }); + + collapse(await Promise.all(promises)); + return permissions; + } + + private pay(): Promise { + const { + id, + vm: { payer }, + } = this.config; + + return payer.payForOperation( + create(PriceQuoteRequestSchema, { + operation: { + case: "updatePermissions", + value: { + valuesId: parseUuid(id), + }, + }, + }), + ); + } + + static new(config: UpdatePermissionsConfig): UpdatePermissions { + return new UpdatePermissions(config); + } +} + +export class UpdatePermissionsBuilder { + private _id?: Uuid; + private _permissions?: ValuesPermissions; + private constructor(private readonly vm: VmClient) {} + + id(value: Uuid): this { + this._id = value; + return this; + } + + permissions(value: ValuesPermissions): this { + this._permissions = value; + return this; + } + + build(): UpdatePermissions { + const config = UpdatePermissionsConfig.parse({ + vm: this.vm, + id: this._id, + permissions: this._permissions, + }); + return UpdatePermissions.new(config); + } + + static init = (vm: VmClient): UpdatePermissionsBuilder => + new UpdatePermissionsBuilder(vm); +} diff --git a/client-vms/src/vm/operation/values-permissions-builder.ts b/client-vms/src/vm/operation/values-permissions-builder.ts new file mode 100644 index 0000000..fb9faf1 --- /dev/null +++ b/client-vms/src/vm/operation/values-permissions-builder.ts @@ -0,0 +1,74 @@ +import { create } from "@bufbuild/protobuf"; + +import { + ComputePermissionsSchema, + Permissions as ValuesPermissions, + PermissionsSchema, +} from "@nillion/client-vms/gen-proto/nillion/permissions/v1/permissions_pb"; +import { ProgramId, UserId } from "@nillion/client-vms/types"; + +export class ValuesPermissionsBuilder { + private _ownerUserId?: UserId; + private readonly _retrieveAllowedUserIds: UserId[] = []; + private readonly _updateAllowedUserIds: UserId[] = []; + private readonly _deleteAllowedUserIds: UserId[] = []; + private readonly _computePermissions: [UserId, ProgramId[]][] = []; + + // eslint-disable-next-line @typescript-eslint/no-empty-function + private constructor() {} + + owner(id: UserId): this { + this._ownerUserId = id; + return this; + } + + grantRetrieve(id: UserId): this { + this._retrieveAllowedUserIds.push(id); + return this; + } + + grantUpdate(id: UserId): this { + this._updateAllowedUserIds.push(id); + return this; + } + + grantDelete(id: UserId): this { + this._deleteAllowedUserIds.push(id); + return this; + } + + grantCompute(id: UserId, programs: ProgramId[]): this { + this._computePermissions.push([id, programs]); + return this; + } + + build(): ValuesPermissions { + const computePermissions = this._computePermissions.map( + ([userId, programIds]) => + create(ComputePermissionsSchema, { + userId, + programIds, + }), + ); + + return create(PermissionsSchema, { + ownerUserId: this._ownerUserId, + retrieveAllowedUserIds: this._retrieveAllowedUserIds, + updateAllowedUserIds: this._updateAllowedUserIds, + deleteAllowedUserIds: this._deleteAllowedUserIds, + computePermissions, + }); + } + + static default(owner: UserId) { + return new ValuesPermissionsBuilder() + .owner(owner) + .grantUpdate(owner) + .grantRetrieve(owner) + .grantUpdate(owner); + } + + static empty() { + return new ValuesPermissionsBuilder(); + } +} diff --git a/packages/test-utils/src/test-env.ts b/client-vms/tests/helpers.ts similarity index 60% rename from packages/test-utils/src/test-env.ts rename to client-vms/tests/helpers.ts index 46301ff..940dfe7 100644 --- a/packages/test-utils/src/test-env.ts +++ b/client-vms/tests/helpers.ts @@ -1,7 +1,13 @@ -export const TestEnv = { +import fs from "node:fs"; +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; + +export const Env = { bootnodesWebsocket: [process.env.NILLION_BOOTNODE_WEBSOCKET ?? ""], bootnodesMultiAddr: [process.env.NILLION_BOOTNODE_MULTIADDRESS ?? ""], clusterId: process.env.NILLION_CLUSTER_ID ?? "", + bootnodeUrl: process.env.NILLION_BOOTNODE_URL ?? "", chainId: process.env.NILLION_NILCHAIN_CHAIN_ID ?? "", nilChainJsonRpc: process.env.NILLION_NILCHAIN_JSON_RPC ?? "", nilChainRestApi: process.env.NILLION_NILCHAIN_REST_API ?? "", @@ -19,3 +25,23 @@ export const TestEnv = { userSeed: process.env.NILLION_USER_SEED ?? "", programNamespace: process.env.NILLION_TEST_PROGRAMS_NAMESPACE ?? "", }; + +export const PrivateKeyPerSuite = { + Payments: Env.nilChainPrivateKey0, + LeaderQuery: Env.nilChainPrivateKey1, + VmClient: Env.nilChainPrivateKey2, + // Env.nilChainPrivateKey3, + // Env.nilChainPrivateKey4, + // Env.nilChainPrivateKey5, + // Env.nilChainPrivateKey6, + // Env.nilChainPrivateKey7, + // Env.nilChainPrivateKey8, + // Env.nilChainPrivateKey9, +}; + +export const loadProgram = (name: string): Uint8Array => { + const __filename = fileURLToPath(import.meta.url); + const __dirname = path.dirname(__filename); + const absolute = path.join(__dirname, "/nada/dist/", name); + return new Uint8Array(fs.readFileSync(absolute)); +}; diff --git a/packages/resources/programs/setup_venv.sh b/client-vms/tests/nada/build.sh similarity index 51% rename from packages/resources/programs/setup_venv.sh rename to client-vms/tests/nada/build.sh index 4ded7b5..032ca87 100755 --- a/packages/resources/programs/setup_venv.sh +++ b/client-vms/tests/nada/build.sh @@ -1,8 +1,12 @@ #! /usr/bin/env bash -set -uo pipefail +set -uexo pipefail python3 -m venv venv source venv/bin/activate pip install -r requirements.txt + +./pynadac "src/addition_division.py" -t dist +./pynadac "src/simple_shares.py" -t dist + deactivate diff --git a/packages/resources/programs/requirements.txt b/client-vms/tests/nada/requirements.txt similarity index 84% rename from packages/resources/programs/requirements.txt rename to client-vms/tests/nada/requirements.txt index 1734fd6..0a4532f 100644 --- a/packages/resources/programs/requirements.txt +++ b/client-vms/tests/nada/requirements.txt @@ -1,5 +1,5 @@ asttokens==2.4.1 -nada-dsl==0.6.0 +nada-dsl==0.6.3 parsial==0.1.0 richreports==0.2.0 six==1.16.0 diff --git a/packages/resources/programs/src/addition_division.py b/client-vms/tests/nada/src/addition_division.py similarity index 100% rename from packages/resources/programs/src/addition_division.py rename to client-vms/tests/nada/src/addition_division.py diff --git a/packages/resources/programs/src/simple_shares.py b/client-vms/tests/nada/src/simple_shares.py similarity index 100% rename from packages/resources/programs/src/simple_shares.py rename to client-vms/tests/nada/src/simple_shares.py diff --git a/client-vms/tests/payments.test.ts b/client-vms/tests/payments.test.ts new file mode 100644 index 0000000..b7a12a3 --- /dev/null +++ b/client-vms/tests/payments.test.ts @@ -0,0 +1,63 @@ +import { create, fromBinary } from "@bufbuild/protobuf"; +import { createGrpcWebTransport } from "@connectrpc/connect-web"; +import { describe, expect, test } from "@jest/globals"; +import { ZodError } from "zod"; + +import { PriceQuoteRequestSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/quote_pb"; +import { ReceiptSchema } from "@nillion/client-vms/gen-proto/nillion/payments/v1/receipt_pb"; +import { + createSignerFromKey, + PaymentClient, + PaymentClientBuilder, +} from "@nillion/client-vms/payment"; +import { fetchClusterDetails } from "@nillion/client-vms/vm"; + +import { Env, PrivateKeyPerSuite } from "./helpers"; + +describe("PaymentClient", () => { + let client: PaymentClient; + + test("builder rejects if missing values", async () => { + try { + const builder = new PaymentClientBuilder(); + await builder.build(); + } catch (e) { + expect(e).toBeInstanceOf(ZodError); + expect((e as ZodError).issues).toHaveLength(3); + } + + expect.assertions(2); + }); + + test("builder can create client", async () => { + const cluster = await fetchClusterDetails(Env.bootnodeUrl); + const signer = await createSignerFromKey(PrivateKeyPerSuite.Payments); + const builder = new PaymentClientBuilder(); + + const leader = createGrpcWebTransport({ + baseUrl: cluster.leader?.grpcEndpoint ?? "", + useBinaryFormat: true, + }); + + client = await builder + .chainUrl(Env.nilChainJsonRpc) + .leader(leader) + .signer(signer) + .build(); + + expect(client).toBeDefined(); + }); + + test("can pay for an operation", async () => { + const request = create(PriceQuoteRequestSchema, { + operation: { + case: "poolStatus", + value: {}, + }, + }); + const signedReceipt = await client.payForOperation(request); + const receipt = fromBinary(ReceiptSchema, signedReceipt.receipt); + expect(receipt.expiresAt?.seconds).toBeGreaterThan(new Date().getSeconds()); + expect(receipt.identifier).toHaveLength(16); + }); +}); diff --git a/client-vms/tests/vm-client.test.ts b/client-vms/tests/vm-client.test.ts new file mode 100644 index 0000000..36f73f2 --- /dev/null +++ b/client-vms/tests/vm-client.test.ts @@ -0,0 +1,166 @@ +import { describe, expect } from "@jest/globals"; +import { ZodError } from "zod"; + +import { Permissions as ValuePermissions } from "@nillion/client-vms/gen-proto/nillion/permissions/v1/permissions_pb"; +import { createSignerFromKey } from "@nillion/client-vms/payment"; +import { ProgramId, Uuid } from "@nillion/client-vms/types"; +import { VmClient, VmClientBuilder } from "@nillion/client-vms/vm"; +import { ValuesPermissionsBuilder } from "@nillion/client-vms/vm/operation"; +import { NadaValue } from "@nillion/client-wasm"; + +import { Env, loadProgram, PrivateKeyPerSuite } from "./helpers"; + +describe("VmClient", () => { + let client: VmClient; + + it("builder rejects if missing values", async () => { + try { + const builder = new VmClientBuilder(); + await builder.build(); + } catch (e) { + expect(e).toBeInstanceOf(ZodError); + expect((e as ZodError).issues).toHaveLength(5); + } + expect.assertions(2); + }); + + it("builder can create client", async () => { + const signer = await createSignerFromKey(PrivateKeyPerSuite.VmClient); + + client = await new VmClientBuilder() + .authTokenTtl(1) + .seed("test") + .bootnodeUrl(Env.bootnodeUrl) + .chainUrl(Env.nilChainJsonRpc) + .signer(signer) + .build(); + + expect(client).toBeDefined(); + }); + + it("can query pool status", async () => { + const status = await client.queryPoolStatus(); + expect(status.offsets.length).toBeGreaterThan(0); + }); + + describe("values", () => { + const expectedName = "foo"; + const expectedValue = 42; + let expectedPermissions: ValuePermissions; + let expectedId: string; + + it("can store", async () => { + expectedId = await client + .storeValues() + .ttl(1) + .defaultPermissions() + .value( + expectedName, + NadaValue.new_secret_integer(expectedValue.toString()), + ) + .build() + .invoke(); + expect(expectedId).toHaveLength(36); + }); + + it("can retrieve", async () => { + const nada = await client + .retrieveValues() + .id(expectedId) + .build() + .invoke(); + const values = nada[expectedName]!; + expect(values).toBeDefined(); + expect(values.type).toBe("SecretInteger"); + expect(values.value).toBe("42"); + }); + + it("can retrieve permissions", async () => { + expectedPermissions = await client + .retrievePermissions() + .id(expectedId) + .build() + .invoke(); + + expect(expectedPermissions).toBeDefined(); + expect(expectedPermissions.ownerUserId).toEqual(client.id); + }); + + it("can update permissions", async () => { + const owner = expectedPermissions.ownerUserId; + const updatedPermissions = ValuesPermissionsBuilder.empty() + .owner(owner) + .grantDelete(owner) + .build(); + + const permissions = await client + .updatePermissions() + .permissions(updatedPermissions) + .id(expectedId) + .build() + .invoke(); + + expect(permissions).toBeDefined(); + expect(permissions.ownerUserId).toEqual(owner); + expect(permissions.deleteAllowedUserIds).toHaveLength(1); + expect(permissions.retrieveAllowedUserIds).toHaveLength(0); + expect(permissions.updateAllowedUserIds).toHaveLength(0); + expect(permissions.computePermissions).toHaveLength(0); + }); + + it("can delete", async () => { + const actual = await client + .deleteValues() + .id(expectedId) + .build() + .invoke(); + expect(actual).toEqual(expectedId); + }); + }); + + describe("compute", () => { + const name = "addition_division.nada.bin"; + let programId: ProgramId; + let computeResultId: Uuid; + + it("can upload program", async () => { + const regex = new RegExp(`^.+\\/${name}$`); + const program = loadProgram(name); + + programId = await client + .storeProgram() + .name(name) + .program(program) + .build() + .invoke(); + + expect(programId).toBeTruthy(); + expect(programId).toMatch(regex); + }); + + it("can invoke compute", async () => { + computeResultId = await client + .invokeCompute() + .program(programId) + .inputParty("Party1", client.id) + .outputParty("Party1", [client.id]) + .computeTimeValues("A", NadaValue.new_secret_integer("1")) + .computeTimeValues("B", NadaValue.new_secret_integer("4")) + .build() + .invoke(); + + expect(computeResultId).toBeTruthy(); + }); + + it("can retrieve compute result", async () => { + const result = await client + .retrieveComputeResult() + .id(computeResultId) + .build() + .invoke(); + + expect(result).toBeTruthy(); + expect(result.my_output?.value).toBe("3"); + }); + }); +}); diff --git a/client-vms/tests/wasm.test.ts b/client-vms/tests/wasm.test.ts new file mode 100644 index 0000000..1d8c9cd --- /dev/null +++ b/client-vms/tests/wasm.test.ts @@ -0,0 +1,79 @@ +import { describe, expect, it } from "@jest/globals"; + +import { NadaValuesRecord, PartyId } from "@nillion/client-vms/types"; +import { NadaValue, NadaValues } from "@nillion/client-wasm"; + +const data = [ + { + type: "PublicInteger", + name: "a", + value: -42, + nadaValue: NadaValue.new_public_integer("-42"), + }, + { + type: "PublicUnsignedInteger", + name: "b", + value: 42, + nadaValue: NadaValue.new_public_unsigned_integer("42"), + }, + { + type: "SecretInteger", + name: "c", + value: -100, + nadaValue: NadaValue.new_secret_integer("-100"), + }, + { + type: "SecretUnsignedInteger", + name: "d", + value: 100, + nadaValue: NadaValue.new_secret_unsigned_integer("100"), + }, + { + type: "SecretBlob", + name: "e", + value: Uint8Array.from([1, 2, 3]), + nadaValue: NadaValue.new_secret_blob(Uint8Array.from([1, 2, 3])), + }, +]; + +describe("Wasm compatability", () => { + describe("NadaValues", () => { + const values = new NadaValues(); + + data.forEach((test, index) => { + describe(test.type, () => { + it("can insert into NadaValues", () => { + values.insert(test.name, test.nadaValue); + expect(values).toHaveLength(index + 1); + }); + + it(`can retrieve from NadaValues`, () => { + const record = values.to_record() as unknown as NadaValuesRecord; + const actual = record[test.name]; + expect(actual).toBeDefined(); + expect(actual?.type).toEqual(test.type); + + let value: unknown = actual?.value; + if (actual?.type !== "SecretBlob") { + value = Number(actual?.value); + } + expect(value).toEqual(test.value); + }); + }); + }); + }); + + describe("PartyId", () => { + const expectedBase58 = "uuz3xgfhzJN0L88tlTHUqIiRYpaYejJbjeO26Qj1SCY="; + it("can construct a party id from a uint array", () => { + const data = Uint8Array.from([ + 186, 236, 247, 198, 7, 225, 204, 147, 116, 47, 207, 45, 149, 49, 212, + 168, 136, 145, 98, 150, 152, 122, 50, 91, 141, 227, 182, 233, 8, 245, + 72, 38, + ]); + const id = PartyId.from(data); + expect(id.toBase64()).toEqual(expectedBase58); + expect(id.toWasm().to_byte_array()).toEqual(data); + }); + }); +}); diff --git a/client-vms/tsconfig.json b/client-vms/tsconfig.json new file mode 100644 index 0000000..4eb37fe --- /dev/null +++ b/client-vms/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.base.json" +} diff --git a/packages/client-wasm/LICENSE b/client-wasm/LICENSE similarity index 100% rename from packages/client-wasm/LICENSE rename to client-wasm/LICENSE diff --git a/client-wasm/commit-sha.txt b/client-wasm/commit-sha.txt new file mode 100644 index 0000000..6a4a35e --- /dev/null +++ b/client-wasm/commit-sha.txt @@ -0,0 +1 @@ +working branch timhm/feat-node-add-grpc-web-support diff --git a/client-wasm/dist/index.d.ts b/client-wasm/dist/index.d.ts new file mode 100644 index 0000000..218c71c --- /dev/null +++ b/client-wasm/dist/index.d.ts @@ -0,0 +1,322 @@ +/* tslint:disable */ +/* eslint-disable */ +/** +* Encode a set of values. +* @param {EncryptedNadaValues} values +* @returns {Uint8Array} +*/ +export function encode_values(values: EncryptedNadaValues): Uint8Array; +/** +* Decode a set of values. +* @param {Uint8Array} bincode_bytes +* @returns {EncryptedNadaValues} +*/ +export function decode_values(bincode_bytes: Uint8Array): EncryptedNadaValues; +/** +* Compute the size of the given values. +* @param {NadaValues} values +* @returns {bigint} +*/ +export function compute_values_size(values: NadaValues): bigint; +/** +* A set of encrypted nada values. +*/ +export class EncryptedNadaValues { + free(): void; +} +/** +* NadaValue +* +* This type represents a value in the Nillion network. This class provides utilities +* to encode numerical and binary values. It also provides methods to decode +* the value into a numerical form. +* +* @hideconstructor +*/ +export class NadaValue { +/** +** Return copy of self without private attributes. +*/ + toJSON(): Object; +/** +* Return stringified version of self. +*/ + toString(): string; + free(): void; +/** +* Create a new secret integer value. +* +* @param {string} value - The value must be a valid string representation of an integer. +* @return {NadaValue} The encoded secret corresponding to the value provided +* +* @example +* const value = NadaValue.new_secret_integer("-23"); +*/ + static new_secret_integer(value: string): NadaValue; +/** +* Create a new secret unsigned integer value. +* +* @param {string} value - The value must be a valid string representation of an unsigned integer. +* @return {NadaValue} The encoded secret corresponding to the value provided +* +* @example +* const value = NadaValue.new_secret_unsigned_integer("23"); +*/ + static new_secret_unsigned_integer(value: string): NadaValue; +/** +* Create a new secret blob. +* +* @param {Uint8Array} value - The blob in binary (byte array) encoded format +* @return {NadaValue} The encoded secret corresponding to the value provided +* +* @example +* const value = NadaValue.new_secret_blob([1,0,1,222,21]); +*/ + static new_secret_blob(value: Uint8Array): NadaValue; +/** +* Create a new public integer with the provided value. +* +* @param {string} value - The value must be a valid string representation of an integer. +* @return {NadaValue} The encoded public variable corresponding to the value provided +* +* @example +* const value = NadaValue.new_public_integer("-23"); +*/ + static new_public_integer(value: string): NadaValue; +/** +* Create a new public unsigned integer with the provided value. +* +* @param {string} value - The value must be a valid string representation of an unsigned integer. +* @return {NadaValue} The encoded public variable corresponding to the value provided +* +* @example +* const value = NadaValue.new_public_unsigned_integer("23"); +*/ + static new_public_unsigned_integer(value: string): NadaValue; +/** +* Convert this value into a byte array. +* +* This is only valid for secret blob values. +* @return {Uint8Array} the byte array contained in this value. +* @throws {Error} if the value is not a secret blob. +* +* @example +* const value = NadaValue.new_secret_blob([1,0,1,222,21]); +* const byteArray = value.to_byte_array(); +*/ + to_byte_array(): Uint8Array; +/** +* Convert this value into a string representation of the underlying numeric value. +* +* This only works for numeric secret values, such as integers and unsigned integers. +* @return {string} a string representation of the underlying numeric value +* +* @example +* const value = NadaValue.new_public_integer("23"); +* const integer_value = value.to_integer(); +*/ + to_integer(): string; +/** +* Return the Nada type represented by this instance. +* +* @example +* const value = NadaValue.new_secret_integer("42"); +* console.log(value.type()); // "SecretInteger" +*/ + type_name(): string; +} +/** +* A collection of named values. +*/ +export class NadaValues { +/** +** Return copy of self without private attributes. +*/ + toJSON(): Object; +/** +* Return stringified version of self. +*/ + toString(): string; + free(): void; +/** +* Creates a new empty instance of NadaValues. +* +* @example +* const values = new NadaValues(); +*/ + constructor(); +/** +* Add an encoded value to the NadaValues collection. +* +* @param {string} name - The name of the value +* @param {NadaValue} input - The value to be added +* +* @example +* values.insert("my_value", NadaValue.new_public_integer("23")); +*/ + insert(name: string, input: NadaValue): void; +/** +* Convert NadaValues into a JS object +* +* @example +* const nadaValues = new NadaValues(); +* nadaValues.insert("foo", NadaValue::new_secret_integer("42")); +* const values = nadaValues.to_record(); +* console.log(values); // { foo: { type: "SecretInteger", value: "42" } } +* @returns {any} +*/ + to_record(): any; +/** +* Get the number of values. +* +* @example +* const length = values.length; +*/ + readonly length: number; +} +/** +* The classification of a set of nada values. +*/ +export class NadaValuesClassification { + free(): void; +/** +* The number of ecdsa key shares +*/ + ecdsa_private_key_shares: bigint; +/** +* The number of particles +*/ + particles: bigint; +/** +* The number of public values +*/ + public: bigint; +/** +* The number of shares +*/ + shares: bigint; +} +/** +* A party identifier. +*/ +export class PartyId { +/** +** Return copy of self without private attributes. +*/ + toJSON(): Object; +/** +* Return stringified version of self. +*/ + toString(): string; + free(): void; +/** +* Construct a new instance using the given identifier. +* @param {Uint8Array} id +*/ + constructor(id: Uint8Array); +/** +* Convert party id to JS Uint8Array +* @returns {Uint8Array} +*/ + to_byte_array(): Uint8Array; +} +/** +* The shares for a party. +*/ +export class PartyShares { + free(): void; +/** +* Construct a PartyShares instance with the values provided. +* @param {PartyId} party +* @param {EncryptedNadaValues} shares +*/ + constructor(party: PartyId, shares: EncryptedNadaValues); +/** +* Get the party this shares are for. +*/ + readonly party: PartyId; +/** +* Get the shares. +*/ + readonly shares: EncryptedNadaValues; +} +/** +* The metadata for a nada program. +*/ +export class ProgramMetadata { + free(): void; +/** +* Construct a program metadata out of a serialized program. +* @param {Uint8Array} program +*/ + constructor(program: Uint8Array); +/** +* The program memory size. +* @returns {bigint} +*/ + memory_size(): bigint; +/** +* The total number of instructions. +* @returns {bigint} +*/ + total_instructions(): bigint; +/** +* The program instructions. +* @returns {any} +*/ + instructions(): any; +/** +* The program preprocessing requirements. +* @returns {any} +*/ + preprocessing_requirements(): any; +} +/** +* A secret masker. +* +* This allows masking and unmasking secrets. +*/ +export class SecretMasker { + free(): void; +/** +* Construct a new masker that uses a 64 bit safe prime under the hood. +* @param {bigint} polynomial_degree +* @param {(PartyId)[]} parties +* @returns {SecretMasker} +*/ + static new_64_bit_safe_prime(polynomial_degree: bigint, parties: (PartyId)[]): SecretMasker; +/** +* Construct a new masker that uses a 128 bit safe prime under the hood. +* @param {bigint} polynomial_degree +* @param {(PartyId)[]} parties +* @returns {SecretMasker} +*/ + static new_128_bit_safe_prime(polynomial_degree: bigint, parties: (PartyId)[]): SecretMasker; +/** +* Construct a new masker that uses a 256 bit safe prime under the hood. +* @param {bigint} polynomial_degree +* @param {(PartyId)[]} parties +* @returns {SecretMasker} +*/ + static new_256_bit_safe_prime(polynomial_degree: bigint, parties: (PartyId)[]): SecretMasker; +/** +* Mask a set of values. +* @param {NadaValues} values +* @returns {(PartyShares)[]} +*/ + mask(values: NadaValues): (PartyShares)[]; +/** +* Unmask a set of encrypted values. +* @param {(PartyShares)[]} shares +* @returns {NadaValues} +*/ + unmask(shares: (PartyShares)[]): NadaValues; +/** +* Classify the given cleartext values. +* +* This allows getting the totals per value type which is a required parameter when storing values. +* @param {NadaValues} values +* @returns {NadaValuesClassification} +*/ + classify_values(values: NadaValues): NadaValuesClassification; +} diff --git a/client-wasm/dist/index.js b/client-wasm/dist/index.js new file mode 100644 index 0000000..7d50648 --- /dev/null +++ b/client-wasm/dist/index.js @@ -0,0 +1,4 @@ +import * as wasm from "./index_bg.wasm"; +import { __wbg_set_wasm } from "./index_bg.js"; +__wbg_set_wasm(wasm); +export * from "./index_bg.js"; diff --git a/client-wasm/dist/index_bg.js b/client-wasm/dist/index_bg.js new file mode 100644 index 0000000..c8fd893 --- /dev/null +++ b/client-wasm/dist/index_bg.js @@ -0,0 +1,1426 @@ +let wasm; +export function __wbg_set_wasm(val) { + wasm = val; +} + + +const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder; + +let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +let heap_next = heap.length; + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +function getObject(idx) { return heap[idx]; } + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} + +let WASM_VECTOR_LEN = 0; + +const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder; + +let cachedTextEncoder = new lTextEncoder('utf-8'); + +const encodeString = (typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +} + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; +}); + +function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1, 1) >>> 0; + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} + +function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} + +function _assertClass(instance, klass) { + if (!(instance instanceof klass)) { + throw new Error(`expected instance of ${klass.name}`); + } + return instance.ptr; +} + +let cachedUint32Memory0 = null; + +function getUint32Memory0() { + if (cachedUint32Memory0 === null || cachedUint32Memory0.byteLength === 0) { + cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer); + } + return cachedUint32Memory0; +} + +function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + const mem = getUint32Memory0(); + for (let i = 0; i < array.length; i++) { + mem[ptr / 4 + i] = addHeapObject(array[i]); + } + WASM_VECTOR_LEN = array.length; + return ptr; +} + +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getUint32Memory0(); + const slice = mem.subarray(ptr / 4, ptr / 4 + len); + const result = []; + for (let i = 0; i < slice.length; i++) { + result.push(takeObject(slice[i])); + } + return result; +} +/** +* Encode a set of values. +* @param {EncryptedNadaValues} values +* @returns {Uint8Array} +*/ +export function encode_values(values) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(values, EncryptedNadaValues); + wasm.encode_values(retptr, values.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +/** +* Decode a set of values. +* @param {Uint8Array} bincode_bytes +* @returns {EncryptedNadaValues} +*/ +export function decode_values(bincode_bytes) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(bincode_bytes, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.decode_values(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return EncryptedNadaValues.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +let cachedBigInt64Memory0 = null; + +function getBigInt64Memory0() { + if (cachedBigInt64Memory0 === null || cachedBigInt64Memory0.byteLength === 0) { + cachedBigInt64Memory0 = new BigInt64Array(wasm.memory.buffer); + } + return cachedBigInt64Memory0; +} +/** +* Compute the size of the given values. +* @param {NadaValues} values +* @returns {bigint} +*/ +export function compute_values_size(values) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(values, NadaValues); + wasm.compute_values_size(retptr, values.__wbg_ptr); + var r0 = getBigInt64Memory0()[retptr / 8 + 0]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + return BigInt.asUintN(64, r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +const EncryptedNadaValuesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_encryptednadavalues_free(ptr >>> 0)); +/** +* A set of encrypted nada values. +*/ +export class EncryptedNadaValues { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(EncryptedNadaValues.prototype); + obj.__wbg_ptr = ptr; + EncryptedNadaValuesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + EncryptedNadaValuesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_encryptednadavalues_free(ptr); + } +} + +const NadaValueFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_nadavalue_free(ptr >>> 0)); +/** +* NadaValue +* +* This type represents a value in the Nillion network. This class provides utilities +* to encode numerical and binary values. It also provides methods to decode +* the value into a numerical form. +* +* @hideconstructor +*/ +export class NadaValue { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(NadaValue.prototype); + obj.__wbg_ptr = ptr; + NadaValueFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + toJSON() { + return { + }; + } + + toString() { + return JSON.stringify(this); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + NadaValueFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_nadavalue_free(ptr); + } + /** + * Create a new secret integer value. + * + * @param {string} value - The value must be a valid string representation of an integer. + * @return {NadaValue} The encoded secret corresponding to the value provided + * + * @example + * const value = NadaValue.new_secret_integer("-23"); + */ + static new_secret_integer(value) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.nadavalue_new_secret_integer(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return NadaValue.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Create a new secret unsigned integer value. + * + * @param {string} value - The value must be a valid string representation of an unsigned integer. + * @return {NadaValue} The encoded secret corresponding to the value provided + * + * @example + * const value = NadaValue.new_secret_unsigned_integer("23"); + */ + static new_secret_unsigned_integer(value) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.nadavalue_new_secret_unsigned_integer(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return NadaValue.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Create a new secret blob. + * + * @param {Uint8Array} value - The blob in binary (byte array) encoded format + * @return {NadaValue} The encoded secret corresponding to the value provided + * + * @example + * const value = NadaValue.new_secret_blob([1,0,1,222,21]); + */ + static new_secret_blob(value) { + const ptr0 = passArray8ToWasm0(value, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.nadavalue_new_secret_blob(ptr0, len0); + return NadaValue.__wrap(ret); + } + /** + * Create a new public integer with the provided value. + * + * @param {string} value - The value must be a valid string representation of an integer. + * @return {NadaValue} The encoded public variable corresponding to the value provided + * + * @example + * const value = NadaValue.new_public_integer("-23"); + */ + static new_public_integer(value) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.nadavalue_new_public_integer(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return NadaValue.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Create a new public unsigned integer with the provided value. + * + * @param {string} value - The value must be a valid string representation of an unsigned integer. + * @return {NadaValue} The encoded public variable corresponding to the value provided + * + * @example + * const value = NadaValue.new_public_unsigned_integer("23"); + */ + static new_public_unsigned_integer(value) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(value, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.nadavalue_new_public_unsigned_integer(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return NadaValue.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Convert this value into a byte array. + * + * This is only valid for secret blob values. + * @return {Uint8Array} the byte array contained in this value. + * @throws {Error} if the value is not a secret blob. + * + * @example + * const value = NadaValue.new_secret_blob([1,0,1,222,21]); + * const byteArray = value.to_byte_array(); + */ + to_byte_array() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.nadavalue_to_byte_array(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1, 1); + return v1; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Convert this value into a string representation of the underlying numeric value. + * + * This only works for numeric secret values, such as integers and unsigned integers. + * @return {string} a string representation of the underlying numeric value + * + * @example + * const value = NadaValue.new_public_integer("23"); + * const integer_value = value.to_integer(); + */ + to_integer() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.nadavalue_to_integer(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } + /** + * Return the Nada type represented by this instance. + * + * @example + * const value = NadaValue.new_secret_integer("42"); + * console.log(value.type()); // "SecretInteger" + */ + type_name() { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.nadavalue_type_name(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1, 1); + } + } +} + +const NadaValuesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_nadavalues_free(ptr >>> 0)); +/** +* A collection of named values. +*/ +export class NadaValues { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(NadaValues.prototype); + obj.__wbg_ptr = ptr; + NadaValuesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + toJSON() { + return { + length: this.length, + }; + } + + toString() { + return JSON.stringify(this); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + NadaValuesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_nadavalues_free(ptr); + } + /** + * Creates a new empty instance of NadaValues. + * + * @example + * const values = new NadaValues(); + */ + constructor() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.nadavalues_new(retptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Add an encoded value to the NadaValues collection. + * + * @param {string} name - The name of the value + * @param {NadaValue} input - The value to be added + * + * @example + * values.insert("my_value", NadaValue.new_public_integer("23")); + */ + insert(name, input) { + const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + _assertClass(input, NadaValue); + wasm.nadavalues_insert(this.__wbg_ptr, ptr0, len0, input.__wbg_ptr); + } + /** + * Get the number of values. + * + * @example + * const length = values.length; + * @returns {number} + */ + get length() { + const ret = wasm.nadavalues_length(this.__wbg_ptr); + return ret >>> 0; + } + /** + * Convert NadaValues into a JS object + * + * @example + * const nadaValues = new NadaValues(); + * nadaValues.insert("foo", NadaValue::new_secret_integer("42")); + * const values = nadaValues.to_record(); + * console.log(values); // { foo: { type: "SecretInteger", value: "42" } } + * @returns {any} + */ + to_record() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.nadavalues_to_record(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} + +const NadaValuesClassificationFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_nadavaluesclassification_free(ptr >>> 0)); +/** +* The classification of a set of nada values. +*/ +export class NadaValuesClassification { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(NadaValuesClassification.prototype); + obj.__wbg_ptr = ptr; + NadaValuesClassificationFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + NadaValuesClassificationFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_nadavaluesclassification_free(ptr); + } + /** + * The number of particles + * @returns {bigint} + */ + get particles() { + const ret = wasm.__wbg_get_nadavaluesclassification_particles(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The number of particles + * @param {bigint} arg0 + */ + set particles(arg0) { + wasm.__wbg_set_nadavaluesclassification_particles(this.__wbg_ptr, arg0); + } + /** + * The number of shares + * @returns {bigint} + */ + get shares() { + const ret = wasm.__wbg_get_nadavaluesclassification_shares(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The number of shares + * @param {bigint} arg0 + */ + set shares(arg0) { + wasm.__wbg_set_nadavaluesclassification_shares(this.__wbg_ptr, arg0); + } + /** + * The number of public values + * @returns {bigint} + */ + get public() { + const ret = wasm.__wbg_get_nadavaluesclassification_public(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The number of public values + * @param {bigint} arg0 + */ + set public(arg0) { + wasm.__wbg_set_nadavaluesclassification_public(this.__wbg_ptr, arg0); + } + /** + * The number of ecdsa key shares + * @returns {bigint} + */ + get ecdsa_private_key_shares() { + const ret = wasm.__wbg_get_nadavaluesclassification_ecdsa_private_key_shares(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The number of ecdsa key shares + * @param {bigint} arg0 + */ + set ecdsa_private_key_shares(arg0) { + wasm.__wbg_set_nadavaluesclassification_ecdsa_private_key_shares(this.__wbg_ptr, arg0); + } +} + +const PartyIdFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_partyid_free(ptr >>> 0)); +/** +* A party identifier. +*/ +export class PartyId { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(PartyId.prototype); + obj.__wbg_ptr = ptr; + PartyIdFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + static __unwrap(jsValue) { + if (!(jsValue instanceof PartyId)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + toJSON() { + return { + }; + } + + toString() { + return JSON.stringify(this); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PartyIdFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_partyid_free(ptr); + } + /** + * Construct a new instance using the given identifier. + * @param {Uint8Array} id + */ + constructor(id) { + const ptr0 = passArray8ToWasm0(id, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.partyid_new(ptr0, len0); + this.__wbg_ptr = ret >>> 0; + return this; + } + /** + * Convert party id to JS Uint8Array + * @returns {Uint8Array} + */ + to_byte_array() { + const ret = wasm.partyid_to_byte_array(this.__wbg_ptr); + return takeObject(ret); + } +} + +const PartySharesFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_partyshares_free(ptr >>> 0)); +/** +* The shares for a party. +*/ +export class PartyShares { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(PartyShares.prototype); + obj.__wbg_ptr = ptr; + PartySharesFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + static __unwrap(jsValue) { + if (!(jsValue instanceof PartyShares)) { + return 0; + } + return jsValue.__destroy_into_raw(); + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + PartySharesFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_partyshares_free(ptr); + } + /** + * Construct a PartyShares instance with the values provided. + * @param {PartyId} party + * @param {EncryptedNadaValues} shares + */ + constructor(party, shares) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(party, PartyId); + var ptr0 = party.__destroy_into_raw(); + _assertClass(shares, EncryptedNadaValues); + var ptr1 = shares.__destroy_into_raw(); + wasm.partyshares_new(retptr, ptr0, ptr1); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Get the party this shares are for. + * @returns {PartyId} + */ + get party() { + const ret = wasm.partyshares_party(this.__wbg_ptr); + return PartyId.__wrap(ret); + } + /** + * Get the shares. + * @returns {EncryptedNadaValues} + */ + get shares() { + const ret = wasm.partyshares_shares(this.__wbg_ptr); + return EncryptedNadaValues.__wrap(ret); + } +} + +const ProgramMetadataFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_programmetadata_free(ptr >>> 0)); +/** +* The metadata for a nada program. +*/ +export class ProgramMetadata { + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + ProgramMetadataFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_programmetadata_free(ptr); + } + /** + * Construct a program metadata out of a serialized program. + * @param {Uint8Array} program + */ + constructor(program) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArray8ToWasm0(program, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.programmetadata_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + this.__wbg_ptr = r0 >>> 0; + return this; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The program memory size. + * @returns {bigint} + */ + memory_size() { + const ret = wasm.programmetadata_memory_size(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The total number of instructions. + * @returns {bigint} + */ + total_instructions() { + const ret = wasm.programmetadata_total_instructions(this.__wbg_ptr); + return BigInt.asUintN(64, ret); + } + /** + * The program instructions. + * @returns {any} + */ + instructions() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.programmetadata_instructions(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * The program preprocessing requirements. + * @returns {any} + */ + preprocessing_requirements() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.programmetadata_preprocessing_requirements(retptr, this.__wbg_ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return takeObject(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } +} + +const SecretMaskerFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_secretmasker_free(ptr >>> 0)); +/** +* A secret masker. +* +* This allows masking and unmasking secrets. +*/ +export class SecretMasker { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(SecretMasker.prototype); + obj.__wbg_ptr = ptr; + SecretMaskerFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + SecretMaskerFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_secretmasker_free(ptr); + } + /** + * Construct a new masker that uses a 64 bit safe prime under the hood. + * @param {bigint} polynomial_degree + * @param {(PartyId)[]} parties + * @returns {SecretMasker} + */ + static new_64_bit_safe_prime(polynomial_degree, parties) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(parties, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.secretmasker_new_64_bit_safe_prime(retptr, polynomial_degree, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return SecretMasker.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Construct a new masker that uses a 128 bit safe prime under the hood. + * @param {bigint} polynomial_degree + * @param {(PartyId)[]} parties + * @returns {SecretMasker} + */ + static new_128_bit_safe_prime(polynomial_degree, parties) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(parties, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.secretmasker_new_128_bit_safe_prime(retptr, polynomial_degree, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return SecretMasker.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Construct a new masker that uses a 256 bit safe prime under the hood. + * @param {bigint} polynomial_degree + * @param {(PartyId)[]} parties + * @returns {SecretMasker} + */ + static new_256_bit_safe_prime(polynomial_degree, parties) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(parties, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.secretmasker_new_256_bit_safe_prime(retptr, polynomial_degree, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return SecretMasker.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Mask a set of values. + * @param {NadaValues} values + * @returns {(PartyShares)[]} + */ + mask(values) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + _assertClass(values, NadaValues); + var ptr0 = values.__destroy_into_raw(); + wasm.secretmasker_mask(retptr, this.__wbg_ptr, ptr0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v2 = getArrayJsValueFromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 4, 4); + return v2; + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Unmask a set of encrypted values. + * @param {(PartyShares)[]} shares + * @returns {NadaValues} + */ + unmask(shares) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passArrayJsValueToWasm0(shares, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + wasm.secretmasker_unmask(retptr, this.__wbg_ptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return NadaValues.__wrap(r0); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + /** + * Classify the given cleartext values. + * + * This allows getting the totals per value type which is a required parameter when storing values. + * @param {NadaValues} values + * @returns {NadaValuesClassification} + */ + classify_values(values) { + _assertClass(values, NadaValues); + const ret = wasm.secretmasker_classify_values(this.__wbg_ptr, values.__wbg_ptr); + return NadaValuesClassification.__wrap(ret); + } +} + +export function __wbindgen_error_new(arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}; + +export function __wbg_new_72fb9a18b5ae2624() { + const ret = new Object(); + return addHeapObject(ret); +}; + +export function __wbindgen_string_new(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); +}; + +export function __wbg_set_1f9b04f170055d33() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); + return ret; +}, arguments) }; + +export function __wbindgen_object_drop_ref(arg0) { + takeObject(arg0); +}; + +export function __wbg_newwithlength_e9b4878cebadb3d3(arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); +}; + +export function __wbg_partyshares_new(arg0) { + const ret = PartyShares.__wrap(arg0); + return addHeapObject(ret); +}; + +export function __wbg_partyshares_unwrap(arg0) { + const ret = PartyShares.__unwrap(takeObject(arg0)); + return ret; +}; + +export function __wbindgen_memory() { + const ret = wasm.memory; + return addHeapObject(ret); +}; + +export function __wbg_buffer_12d079cc21e14bdb(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); +}; + +export function __wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); +}; + +export function __wbg_randomFillSync_5c9c955aa56b6049() { return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); +}, arguments) }; + +export function __wbg_subarray_a1f73cd4b5b42fe1(arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); +}; + +export function __wbg_getRandomValues_3aa56aa6edec874c() { return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); +}, arguments) }; + +export function __wbg_new_63b92bc8671ed464(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); +}; + +export function __wbg_set_a47bac70306a19a7(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); +}; + +export function __wbindgen_object_clone_ref(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); +}; + +export function __wbg_crypto_1d1f22824a6a080c(arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); +}; + +export function __wbindgen_is_object(arg0) { + const val = getObject(arg0); + const ret = typeof(val) === 'object' && val !== null; + return ret; +}; + +export function __wbg_process_4a72847cc503995b(arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); +}; + +export function __wbg_versions_f686565e586dd935(arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); +}; + +export function __wbg_node_104a2ff8d6ea03a2(arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); +}; + +export function __wbindgen_is_string(arg0) { + const ret = typeof(getObject(arg0)) === 'string'; + return ret; +}; + +export function __wbg_require_cca90b1a94a0255b() { return handleError(function () { + const ret = module.require; + return addHeapObject(ret); +}, arguments) }; + +export function __wbindgen_is_function(arg0) { + const ret = typeof(getObject(arg0)) === 'function'; + return ret; +}; + +export function __wbg_call_b3ca7c6051f9bec1() { return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_msCrypto_eb05e62b530a1508(arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); +}; + +export function __wbg_length_c20a40f15020d68a(arg0) { + const ret = getObject(arg0).length; + return ret; +}; + +export function __wbg_self_ce0dbfc45cf2f5be() { return handleError(function () { + const ret = self.self; + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_window_c6fb939a7f436783() { return handleError(function () { + const ret = window.window; + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_globalThis_d1e6af4856ba331b() { return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_global_207b558942527489() { return handleError(function () { + const ret = global.global; + return addHeapObject(ret); +}, arguments) }; + +export function __wbindgen_is_undefined(arg0) { + const ret = getObject(arg0) === undefined; + return ret; +}; + +export function __wbg_newnoargs_e258087cd0daa0ea(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); +}; + +export function __wbg_call_27c0f87801dedf93() { return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); +}, arguments) }; + +export function __wbg_partyid_unwrap(arg0) { + const ret = PartyId.__unwrap(takeObject(arg0)); + return ret; +}; + +export function __wbg_new_d9bc3a0147634640() { + const ret = new Map(); + return addHeapObject(ret); +}; + +export function __wbindgen_number_new(arg0) { + const ret = arg0; + return addHeapObject(ret); +}; + +export function __wbindgen_bigint_from_u64(arg0) { + const ret = BigInt.asUintN(64, arg0); + return addHeapObject(ret); +}; + +export function __wbg_set_f975102236d3c502(arg0, arg1, arg2) { + getObject(arg0)[takeObject(arg1)] = takeObject(arg2); +}; + +export function __wbg_set_8417257aaedc936b(arg0, arg1, arg2) { + const ret = getObject(arg0).set(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); +}; + +export function __wbg_String_b9412f8799faab3e(arg0, arg1) { + const ret = String(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +export function __wbindgen_debug_string(arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; +}; + +export function __wbindgen_throw(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); +}; + diff --git a/client-wasm/dist/index_bg.wasm b/client-wasm/dist/index_bg.wasm new file mode 100644 index 0000000..0a6f18e Binary files /dev/null and b/client-wasm/dist/index_bg.wasm differ diff --git a/client-wasm/dist/index_bg.wasm.d.ts b/client-wasm/dist/index_bg.wasm.d.ts new file mode 100644 index 0000000..9aad212 --- /dev/null +++ b/client-wasm/dist/index_bg.wasm.d.ts @@ -0,0 +1,55 @@ +/* tslint:disable */ +/* eslint-disable */ +export const memory: WebAssembly.Memory; +export function __wbg_nadavalue_free(a: number): void; +export function nadavalue_new_secret_integer(a: number, b: number, c: number): void; +export function nadavalue_new_secret_unsigned_integer(a: number, b: number, c: number): void; +export function nadavalue_new_secret_blob(a: number, b: number): number; +export function nadavalue_new_public_integer(a: number, b: number, c: number): void; +export function nadavalue_new_public_unsigned_integer(a: number, b: number, c: number): void; +export function nadavalue_to_byte_array(a: number, b: number): void; +export function nadavalue_to_integer(a: number, b: number): void; +export function nadavalue_type_name(a: number, b: number): void; +export function __wbg_nadavalues_free(a: number): void; +export function nadavalues_new(a: number): void; +export function nadavalues_insert(a: number, b: number, c: number, d: number): void; +export function nadavalues_length(a: number): number; +export function nadavalues_to_record(a: number, b: number): void; +export function __wbg_partyid_free(a: number): void; +export function partyid_new(a: number, b: number): number; +export function partyid_to_byte_array(a: number): number; +export function __wbg_secretmasker_free(a: number): void; +export function secretmasker_new_64_bit_safe_prime(a: number, b: number, c: number, d: number): void; +export function secretmasker_new_128_bit_safe_prime(a: number, b: number, c: number, d: number): void; +export function secretmasker_new_256_bit_safe_prime(a: number, b: number, c: number, d: number): void; +export function secretmasker_mask(a: number, b: number, c: number): void; +export function secretmasker_unmask(a: number, b: number, c: number, d: number): void; +export function secretmasker_classify_values(a: number, b: number): number; +export function __wbg_nadavaluesclassification_free(a: number): void; +export function __wbg_get_nadavaluesclassification_particles(a: number): number; +export function __wbg_set_nadavaluesclassification_particles(a: number, b: number): void; +export function __wbg_get_nadavaluesclassification_shares(a: number): number; +export function __wbg_set_nadavaluesclassification_shares(a: number, b: number): void; +export function __wbg_get_nadavaluesclassification_public(a: number): number; +export function __wbg_set_nadavaluesclassification_public(a: number, b: number): void; +export function __wbg_get_nadavaluesclassification_ecdsa_private_key_shares(a: number): number; +export function __wbg_set_nadavaluesclassification_ecdsa_private_key_shares(a: number, b: number): void; +export function __wbg_partyshares_free(a: number): void; +export function partyshares_new(a: number, b: number, c: number): void; +export function partyshares_party(a: number): number; +export function partyshares_shares(a: number): number; +export function encode_values(a: number, b: number): void; +export function decode_values(a: number, b: number, c: number): void; +export function compute_values_size(a: number, b: number): void; +export function __wbg_encryptednadavalues_free(a: number): void; +export function __wbg_programmetadata_free(a: number): void; +export function programmetadata_new(a: number, b: number, c: number): void; +export function programmetadata_memory_size(a: number): number; +export function programmetadata_total_instructions(a: number): number; +export function programmetadata_instructions(a: number, b: number): void; +export function programmetadata_preprocessing_requirements(a: number, b: number): void; +export function __wbindgen_malloc(a: number, b: number): number; +export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number; +export function __wbindgen_add_to_stack_pointer(a: number): number; +export function __wbindgen_free(a: number, b: number, c: number): void; +export function __wbindgen_exn_store(a: number): void; diff --git a/client-wasm/package.json b/client-wasm/package.json new file mode 100644 index 0000000..b6369e1 --- /dev/null +++ b/client-wasm/package.json @@ -0,0 +1,12 @@ +{ + "name": "@nillion/client-wasm", + "version": "0.2.0-rc.0", + "type": "module", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist", + "commit-sha.txt", + "package.json" + ] +} diff --git a/packages/resources/esbuild.base.config.mjs b/esbuild.base.config.mjs similarity index 100% rename from packages/resources/esbuild.base.config.mjs rename to esbuild.base.config.mjs diff --git a/eslint.config.mjs b/eslint.config.mjs index 7749c6f..e5d7983 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,15 +1,25 @@ +// @ts-check + import js from "@eslint/js"; +import json from "@eslint/json"; +import markdown from "@eslint/markdown"; +import jest from "eslint-plugin-jest"; import simpleImportSort from "eslint-plugin-simple-import-sort"; import tsDoc from "eslint-plugin-tsdoc"; import globals from "globals"; import ts from "typescript-eslint"; -export default [ +export default ts.config( { - ignores: ["**/dist", "**/dist-test", "**/.next", "examples"], + ignores: [ + "**/dist", + "**/dist-test", + "**/.next", + "**/coverage", + "examples", + "client-react-hooks", + ], }, - js.configs.recommended, - ...ts.configs.recommended, ...ts.configs.strictTypeChecked, ...ts.configs.stylisticTypeChecked, { @@ -32,42 +42,41 @@ export default [ argsIgnorePattern: "^_", caughtErrors: "all", destructuredArrayIgnorePattern: "^_", - varsIgnorePattern: "^_", ignoreRestSiblings: true, + varsIgnorePattern: "^_", }, ], "@typescript-eslint/restrict-template-expressions": [ "off", { + allowAny: true, + allowBoolean: true, allowNullish: true, allowNumber: true, - allowBoolean: true, - allowAny: true, }, ], }, }, { - files: ["**/*.js", "**/*.mjs"], - ...ts.configs.disableTypeChecked, - }, - { - files: ["**/*.mjs"], + files: ["**/*.{js,mjs}"], languageOptions: { globals: { ...globals.node, process: "readonly", }, }, + ...js.configs.recommended, + // this is an awkward workaround to disable rules applied earlier which aren't correctly scoped to ts,tsx + ...ts.configs.disableTypeChecked, }, { files: ["**/*.{js,jsx,ts,tsx,mjs}"], plugins: { - tsdoc: tsDoc, "simple-import-sort": simpleImportSort, + tsdoc: tsDoc, }, rules: { - "tsdoc/syntax": "warn", + "simple-import-sort/exports": "error", "simple-import-sort/imports": [ "error", { @@ -92,13 +101,47 @@ export default [ ], }, ], - "simple-import-sort/exports": "error", + "tsdoc/syntax": "warn", }, }, { - files: ["**/*.test.ts", "packages/test-utils/**/*.ts"], + files: ["**/*.test.ts"], + languageOptions: { + globals: { + ...jest.environments.globals.globals, + }, + }, + plugins: { + jest, + }, rules: { + ...jest.configs.style.rules, "@typescript-eslint/no-non-null-assertion": "off", + "jest/no-conditional-expect": "off", + }, + }, + { + plugins: { + json, + }, + files: ["**/*.json"], + language: "json/json", + rules: { + "json/no-duplicate-keys": "warn", + // this is an awkward workaround to disable rules applied earlier which aren't correctly scoped to ts,tsx + ...ts.configs.disableTypeChecked.rules, + }, + }, + { + files: ["**/*.md"], + plugins: { + markdown, + }, + language: "markdown/commonmark", + rules: { + "markdown/no-html": "error", + // this is an awkward workaround to disable rules applied earlier which aren't correctly scoped to ts,tsx + ...ts.configs.disableTypeChecked.rules, }, }, -]; +); diff --git a/examples/nextjs/app/components/client-wrapper.tsx b/examples/nextjs/app/components/client-wrapper.tsx index 9fc2968..9e11d7a 100644 --- a/examples/nextjs/app/components/client-wrapper.tsx +++ b/examples/nextjs/app/components/client-wrapper.tsx @@ -4,8 +4,6 @@ import { type FC, ReactNode } from "react"; import { NillionProvider } from "@nillion/client-react-hooks"; -export const ClientWrapper: FC<{ children: ReactNode }> = ({ - children, -}) => { +export const ClientWrapper: FC<{ children: ReactNode }> = ({ children }) => { return {children}; }; diff --git a/examples/nextjs/next.config.mjs b/examples/nextjs/next.config.mjs index 2f140a5..37f5488 100644 --- a/examples/nextjs/next.config.mjs +++ b/examples/nextjs/next.config.mjs @@ -1,4 +1,3 @@ -/* eslint-disable */ /** @type {import("next").NextConfig} */ const nextConfig = { async headers() { diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json index 00bfec8..e23d7fb 100644 --- a/examples/nextjs/package.json +++ b/examples/nextjs/package.json @@ -18,9 +18,7 @@ "next": "14.2.14", "react": "^18", "react-dom": "^18", - "@nillion/client-core": "0.1.0", - "@nillion/client-react-hooks": "0.1.0", - "@nillion/client-vms": "0.1.0" + "@nillion/client-react-hooks": "0.1.0" }, "devDependencies": { "@types/node": "^22", diff --git a/justfile b/justfile index 9dc1e9f..546c7c0 100644 --- a/justfile +++ b/justfile @@ -1,46 +1,34 @@ # >>> Start all >>> -clean: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-core run clean - npm -w packages/client-payments run clean - npm -w packages/client-vms run clean - npm -w packages/client-react-hooks run clean - rm -rf packages/resources/progras/dist - check: #!/usr/bin/env bash set -uxo pipefail - npx prettier -c "packages/**/*.(js|jsx|mjs|ts|tsx)" - - echo "Running eslint... " + npx prettier -c "**/*.(js|jsx|mjs|ts|tsx)" npx eslint -c eslint.config.mjs - echo "done." + npx tsc -p client-vms/tsconfig.json - echo "Running tsc... " - npx tsc -p packages/client-core/tsconfig.json - npx tsc -p packages/client-payments/tsconfig.json - npx tsc -p packages/client-vms/tsconfig.json - npx tsc -p packages/client-react-hooks/tsconfig.json - echo "done." +update-deps: + #!/usr/bin/env bash + set -uxo pipefail + npx npm-check-updates -u --workspaces --root + npm installnp watch-and-build: #!/usr/bin/env bash set -uxo pipefail just clean npx concurrently -c "auto" \ - "npm -w packages/client-core run build:watch" \ - "npm -w packages/client-payments run build:watch" \ - "npm -w packages/client-vms run build:watch" \ - "npm -w packages/client-react-hooks run build:watch" + "npm -w client-vms run build:watch" \ + "npm -w client-react-hooks run build:watch" + +test: + #!/usr/bin/env bash + set -euxo pipefail + just test-client-vms pack: #!/usr/bin/env bash set -euxo pipefail just clean - just wasm-pack - just client-core-pack - just client-payments-pack just client-vms-pack just client-react-hooks-pack @@ -49,8 +37,6 @@ unpublish: set -euxo pipefail echo "warning: only for use with a local registry" npm unpublish --force @nillion/client-wasm --registry=http://localhost:4873 - npm unpublish --force @nillion/client-core --registry=http://localhost:4873 - npm unpublish --force @nillion/client-payments --registry=http://localhost:4873 npm unpublish --force @nillion/client-vms --registry=http://localhost:4873 npm unpublish --force @nillion/client-react-hooks --registry=http://localhost:4873 @@ -58,8 +44,6 @@ publish args="": #!/usr/bin/env bash set -euxo pipefail just publish-client-wasm "{{args}}" - just publish-client-core "{{args}}" - just publish-client-payments "{{args}}" just publish-client-vms "{{args}}" just publish-client-react-hooks "{{args}}" # <<< End all <<< @@ -69,131 +53,56 @@ publish args="": pack-client-wasm: #!/usr/bin/env bash set -euxo pipefail - npm -w packages/wasm pack --pack-destination dist + mkdir dist + npm -w client-wasm pack --pack-destination dist publish-client-wasm args="": #!/usr/bin/env bash set -euxo pipefail - npm -w packages/client-wasm publish {{args}} + npm -w client-wasm publish {{args}} # <<< End @nillion/client-wasm <<< - -# >>> Start @nillion/client-core >>> -test-client-core-ci: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/fixture run start -- --test=core - -test-client-core: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-core run clean - npm -w packages/client-core run test:build - npm -w packages/client-core run test - -test-client-core-serve: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-core run clean - npx concurrently -c "auto" \ - "npm -w packages/client-core run test:build:watch" \ - "npm -w packages/client-core run test:serve" - -pack-client-core: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-core run clean - npm -w packages/client-core run build - npm -w packages/client-core pack --pack-destination dist - -publish-client-core args="": - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-core run clean - npm -w packages/client-core run build - npm -w packages/client-core publish {{args}} -# <<< End @nillion/client-core <<< - - -# >>> Start @nillion/client-payments >>> -test-client-payments-ci: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/fixture run start -- --test=payments - -test-client-payments: - #!/usr/bin/env bash - set -euxo pipefail - just clean - npm -w packages/client-payments run build:proto - npm -w packages/client-core run build - npm -w packages/client-payments run test:build - npm -w packages/client-payments run test - -test-client-payments-serve: - #!/usr/bin/env bash - set -euxo pipefail - just clean - npm -w packages/client-payments run build:proto - npx concurrently -c "auto" \ - "npm -w packages/client-core run build:watch" \ - "npm -w packages/client-payments run test:build:watch" \ - "npm -w packages/client-payments run test:serve" - -pack-client-payments: - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-payments run clean - npm -w packages/client-payments run build - npm -w packages/client-payments pack --pack-destination dist - -publish-client-payments args="": - #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/client-payments run clean - npm -w packages/client-payments run build - npm -w packages/client-payments publish {{args}} -# <<< End @nillion/client-payments <<< - - # >>> Start @nillion/client-vms >>> test-client-vms-ci: #!/usr/bin/env bash - set -euxo pipefail - npm -w packages/fixture run start -- --test=vms + set -uxo pipefail + pushd /Users/tim/projects/NillionNetwork/nillion/main + RUST_LOG=node:components=INFO cargo run -p nillion-devnet -- --seed test-fixture &2> /dev/null + echo "Sleeping for 30s while nillion-devnet warms up" + sleep 10 + popd + just clean + npm -w client-vms run build:proto + npm -w client-vms run test -- --coverage + echo "Tidying up" + killall -9 nillion-devnet -test-client-vms: +client-vms-compile-nada: #!/usr/bin/env bash - set -euxo pipefail - just clean - npm -w packages/client-core run build - npm -w packages/client-payments run build - npm -w packages/client-vms run test:build - npm -w packages/client-vms run test + pushd client-vms/tests/nada + ./build.sh + popd -test-client-vms-serve: +test-client-vms: #!/usr/bin/env bash set -euxo pipefail - just clean - npx concurrently -c "auto" \ - "npm -w packages/client-core run build:watch" \ - "npm -w packages/client-payments run build:watch" \ - "npm -w packages/client-vms run test:build:watch" \ - "npm -w packages/client-vms run test:serve" + npm -w client-vms run build:proto + npm -w client-vms run test pack-client-vms: #!/usr/bin/env bash set -euxo pipefail - npm -w packages/client-vms run clean - npm -w packages/client-vms run build - npm -w packages/client-vms pack --pack-destination dist + mkdir dist + npm -w client-vms run clean + npm -w client-vms run build + npm -w client-vms pack --pack-destination dist publish-client-vms args="": #!/usr/bin/env bash set -euxo pipefail - npm -w packages/client-vms run clean - npm -w packages/client-vms run build - npm -w packages/client-vms publish {{args}} + npm -w client-vms run clean + npm -w client-vms run build + npm -w client-vms publish {{args}} # <<< End @nillion/client-vms <<< @@ -201,14 +110,14 @@ publish-client-vms args="": pack-client-react-hooks: #!/usr/bin/env bash set -euxo pipefail - npm -w packages/client-react-hooks run clean - npm -w packages/client-react-hooks run build - npm -w packages/client-react-hooks pack --pack-destination dist + npm -w client-react-hooks run clean + npm -w client-react-hooks run build + npm -w client-react-hooks pack --pack-destination dist publish-client-react-hooks args="": #!/usr/bin/env bash set -euxo pipefail - npm -w packages/client-react-hooks run clean - npm -w packages/client-react-hooks run build - npm -w packages/client-react-hooks publish {{args}} + npm -w client-react-hooks run clean + npm -w client-react-hooks run build + npm -w client-react-hooks publish {{args}} # <<< End @nillion/client-react-hooks <<< diff --git a/package-lock.json b/package-lock.json index 3d5558d..86d7927 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,65 +9,88 @@ "version": "1.0.0", "license": "Apache-2.0", "workspaces": [ - "packages/client-wasm", - "packages/client-core", - "packages/client-payments", - "packages/client-vms", - "packages/client-react-hooks", - "packages/fixture", - "examples/nextjs" + "client-vms", + "client-wasm" ], "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@eslint/compat": "^1.2.0", "@eslint/js": "^9.12.0", + "@eslint/json": "^0.5.0", + "@eslint/markdown": "^6.2.1", "@types/debug": "^4.1.12", - "@types/jasmine": "^5.1.4", "@types/jest": "^29.5.13", "browserslist": "^4.24.0", "concurrently": "^9.0.1", - "copy-webpack-plugin": "^12.0.2", "esbuild": "^0.24.0", "esbuild-plugin-browserslist": "^0.15.0", "eslint": "^9.12.0", + "eslint-plugin-jest": "^28.8.3", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tsdoc": "^0.3.0", "express-http-proxy": "^2.1.1", "glob": "^11.0.0", - "globals": "^15.10.0", + "globals": "^15.11.0", "husky": "^9.1.6", - "jasmine-browser-runner": "^2.5.0", - "jasmine-core": "^5.3.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.10", - "node-fetch": "^3.3.2", "prettier": "^3.3.3", "ts-jest": "^29.2.5", - "ts-loader": "^9.5.1", - "ts-node": "^10.9.2", - "tsconfig-paths-webpack-plugin": "^4.1.0", - "typescript": "^5.6.2", - "typescript-eslint": "^8.8.0", - "webpack": "^5.95.0", - "webpack-cli": "^5.1.4" + "typescript": "^5.6.3", + "typescript-eslint": "^8.10.0" }, "engines": { "node": ">=20" } }, + "client-vms": { + "name": "@nillion/client-vms", + "version": "0.2.0-rc.0", + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.2.0", + "@connectrpc/connect": "^2.0.0-beta.1", + "@connectrpc/connect-web": "^2.0.0-beta.1", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@nillion/client-wasm": "0.2.0-rc.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@noble/secp256k1": "^2.1.0", + "bs58": "^6.0.0", + "debug": "^4.3.7", + "uuid": "^10.0.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@bufbuild/buf": "^1.45.0", + "@bufbuild/protoc-gen-es": "^2.2.0", + "@jest/globals": "^29.7.0", + "@keplr-wallet/types": "^0.12.141", + "@types/debug": "^4.1.12", + "@types/uuid": "^10.0.0", + "browserslist": "^4.24.0", + "dotenv": "^16.4.5", + "esbuild-plugin-browserslist": "^0.15.0", + "jest": "^29.7.0", + "ts-jest": "^29.2.5" + } + }, + "client-wasm": { + "name": "@nillion/client-wasm", + "version": "0.2.0-rc.0" + }, "examples/nextjs": { "version": "0.1.0", + "extraneous": true, "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@mui/icons-material": "^6.1.2", "@mui/lab": "^6.0.0-beta.10", "@mui/material": "^6.1.2", - "@nillion/client-core": "0.1.0", "@nillion/client-react-hooks": "0.1.0", - "@nillion/client-vms": "0.1.0", "next": "14.2.14", "react": "^18", "react-dom": "^18" @@ -125,6 +148,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", @@ -189,6 +213,7 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.0", @@ -231,6 +256,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -287,6 +313,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -296,6 +323,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -329,6 +357,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", @@ -344,6 +373,7 @@ "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==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -356,6 +386,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -370,6 +401,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -379,6 +411,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -388,6 +421,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -400,6 +434,7 @@ "version": "7.25.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.2" @@ -654,7 +689,10 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -666,6 +704,7 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -680,6 +719,7 @@ "version": "7.25.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.24.7", @@ -698,6 +738,7 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -707,6 +748,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -717,13 +759,6 @@ "node": ">=6.9.0" } }, - "node_modules/@bazel/runfiles": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@bazel/runfiles/-/runfiles-5.8.1.tgz", - "integrity": "sha512-NDdfpdQ6rZlylgv++iMn5FkObC/QlBQvipinGLSOguTYpRywmieOyJ29XHvUilspwTFSILWpoE9CqMGkHXug1g==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", @@ -732,9 +767,9 @@ "license": "MIT" }, "node_modules/@bufbuild/buf": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.44.0.tgz", - "integrity": "sha512-5xdNiEUzI3Je5rFK9UzJl+gyKAv3fG1HdSlChqQXjTNZ3DZgeeuM7VdyHnr2QC/qgZfZ9L8PRKhJYbXZWYLVUg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf/-/buf-1.45.0.tgz", + "integrity": "sha512-6VgwZDwBXWWrA8e8B0efKs3px6rbJRZVBpFt7wBAHU+SgcXONF2rVNA60S8F6/ixaW1EHkUhkIeVyCHs+wV1Bw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -747,18 +782,18 @@ "node": ">=12" }, "optionalDependencies": { - "@bufbuild/buf-darwin-arm64": "1.44.0", - "@bufbuild/buf-darwin-x64": "1.44.0", - "@bufbuild/buf-linux-aarch64": "1.44.0", - "@bufbuild/buf-linux-x64": "1.44.0", - "@bufbuild/buf-win32-arm64": "1.44.0", - "@bufbuild/buf-win32-x64": "1.44.0" + "@bufbuild/buf-darwin-arm64": "1.45.0", + "@bufbuild/buf-darwin-x64": "1.45.0", + "@bufbuild/buf-linux-aarch64": "1.45.0", + "@bufbuild/buf-linux-x64": "1.45.0", + "@bufbuild/buf-win32-arm64": "1.45.0", + "@bufbuild/buf-win32-x64": "1.45.0" } }, "node_modules/@bufbuild/buf-darwin-arm64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.44.0.tgz", - "integrity": "sha512-TZIorkTCICvVKYukkWeUFOMceaGWBrmKVOkXDC1Lusw3bRAdotQRZcwUHEW+XhHjOFFrrqcow4e7UKmk3Qekiw==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-arm64/-/buf-darwin-arm64-1.45.0.tgz", + "integrity": "sha512-yl0+fSnEAtGPUjvyC9a5UmzSc0izqeiL8il2ml1LmX3YbmOAQZ1Wn0TceCtDVFCuO/jtiZBj8/zYm3VAovwQqQ==", "cpu": [ "arm64" ], @@ -773,9 +808,9 @@ } }, "node_modules/@bufbuild/buf-darwin-x64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.44.0.tgz", - "integrity": "sha512-0ygdEIYBUvvyJtNP7RWI1sgpsNaXX8f0JlMhG/y0IdozT+hQtDF9PSrw8+pz+ywpCJdiLzDwj4drZ+GuurQm8Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-darwin-x64/-/buf-darwin-x64-1.45.0.tgz", + "integrity": "sha512-T4yNFZrOhxRkpSn8RgW2S6JPcmD58JYb7OqU+BNVpqK3zy3Zm2C3gIyIpVB5GWkyohhyZANLj3M4Xet9HW4cqA==", "cpu": [ "x64" ], @@ -790,9 +825,9 @@ } }, "node_modules/@bufbuild/buf-linux-aarch64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.44.0.tgz", - "integrity": "sha512-8NRfpF/x3G5S3fZ4/OIOewxYs2/gnmYMhd0U6gKPrGQz7XblZNfY3Hfmx/5sWv6kybJJ8Iz2P7IVRyKP8net/Q==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-aarch64/-/buf-linux-aarch64-1.45.0.tgz", + "integrity": "sha512-n3PkFXp6MiHmxMBMq60t38Ca7hyk0Yo1Un3Xg4PxljSrDNHZSoxT8+NY3eOI+jHnAwKebrAT72XAh/vkeKrC5g==", "cpu": [ "arm64" ], @@ -807,9 +842,9 @@ } }, "node_modules/@bufbuild/buf-linux-x64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.44.0.tgz", - "integrity": "sha512-AjLw7WiqrzvJPA6NLLP3HIOv5bHAJB115qqOzVewsppBvtaCGDj6Du/cpccbSOJTuu88XUdVnJZa85+bnVxdIQ==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-linux-x64/-/buf-linux-x64-1.45.0.tgz", + "integrity": "sha512-Bm5Zgv4CgJ8rursPLejhvfELMxtuFxMLR1ZXY2G6T7jLi5mxa/4CWmqEmQ67zyOoEXw7FvND2yBivGO+464wtw==", "cpu": [ "x64" ], @@ -824,9 +859,9 @@ } }, "node_modules/@bufbuild/buf-win32-arm64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.44.0.tgz", - "integrity": "sha512-jlS3zbDI6pFXo0VuK8oxIAfpulWBiEW/l5I4LPT0AR5+q1Pfkn004GKox8znypXCLDV/xNh4/ZqrpL3c4ZAwjg==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-arm64/-/buf-win32-arm64-1.45.0.tgz", + "integrity": "sha512-tuW+vaYaCQpl9y3dk4uuVSAyqs7opydejxJmqoQdt4AOswvKORasVkD5s9two+eScU165kSzkI2BN3Hd6r+P0g==", "cpu": [ "arm64" ], @@ -841,9 +876,9 @@ } }, "node_modules/@bufbuild/buf-win32-x64": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.44.0.tgz", - "integrity": "sha512-CRCeVVFssfLlXDzSBlI2y9b+xL/qP6umDp77HWg3iQugqONqy2ccSsDJNyxRATqaE5mixK5++Em/kqbnuhbKEA==", + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/@bufbuild/buf-win32-x64/-/buf-win32-x64-1.45.0.tgz", + "integrity": "sha512-ifTHY7pKrKd+8ogMksHmvVYJrHLm/OveyLXsMT1ts00nb1pPJzuCDKrEhg5T7k0oJhGBhpejlpizZ3It0pLmsg==", "cpu": [ "x64" ], @@ -1207,6 +1242,25 @@ "pbts": "bin/pbts" } }, + "node_modules/@connectrpc/connect": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.0.0-beta.1.tgz", + "integrity": "sha512-3zr+mHusBrEqhFGjOpbCF7GrFBLZUQEk2/3Aa8lNEQt5hZhT2uXAOJhyroxs5mNTI5yWhAA/g6ua6RoSnTXoKQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.1.0" + } + }, + "node_modules/@connectrpc/connect-web": { + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@connectrpc/connect-web/-/connect-web-2.0.0-beta.1.tgz", + "integrity": "sha512-+RPl6Hpv9mygjsudIDMep2UCh8QLmNg9d56GYH4GOkGbx+7Q+rAPH8wKKZMkoVHepUh53+WFzPNV13ZNqRKqJw==", + "license": "Apache-2.0", + "peerDependencies": { + "@bufbuild/protobuf": "^2.1.0", + "@connectrpc/connect": "2.0.0-beta.1" + } + }, "node_modules/@cosmjs/amino": { "version": "0.32.4", "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", @@ -1368,6 +1422,8 @@ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1381,182 +1437,13 @@ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@emotion/babel-plugin": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", - "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/runtime": "^7.18.3", - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.2.0", - "babel-plugin-macros": "^3.1.0", - "convert-source-map": "^1.5.0", - "escape-string-regexp": "^4.0.0", - "find-root": "^1.1.0", - "source-map": "^0.5.7", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/@emotion/babel-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@emotion/cache": { - "version": "11.13.1", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", - "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0", - "@emotion/sheet": "^1.4.0", - "@emotion/utils": "^1.4.0", - "@emotion/weak-memoize": "^0.4.0", - "stylis": "4.2.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "license": "MIT" - }, - "node_modules/@emotion/is-prop-valid": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz", - "integrity": "sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==", - "license": "MIT", - "dependencies": { - "@emotion/memoize": "^0.9.0" - } - }, - "node_modules/@emotion/memoize": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", - "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", - "license": "MIT" - }, - "node_modules/@emotion/react": { - "version": "11.13.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", - "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0", - "@emotion/weak-memoize": "^0.4.0", - "hoist-non-react-statics": "^3.3.1" - }, - "peerDependencies": { - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/serialize": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", - "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", - "license": "MIT", - "dependencies": { - "@emotion/hash": "^0.9.2", - "@emotion/memoize": "^0.9.0", - "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.0", - "csstype": "^3.0.2" - } - }, - "node_modules/@emotion/sheet": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", - "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", - "license": "MIT" - }, - "node_modules/@emotion/styled": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", - "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0" - }, - "peerDependencies": { - "@emotion/react": "^11.0.0-rc.0", - "react": ">=16.8.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@emotion/unitless": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", - "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", - "license": "MIT" - }, - "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@emotion/utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.0.tgz", - "integrity": "sha512-spEnrA1b6hDR/C68lC2M7m6ALPUHZC0lIY7jAS/B/9DuuO1ZP04eov8SMv/6fwRd8pzmsn2AuJEznRREWlQrlQ==", - "license": "MIT" - }, - "node_modules/@emotion/weak-memoize": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", - "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", - "license": "MIT" - }, "node_modules/@esbuild/aix-ppc64": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", @@ -2118,6 +2005,36 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/json": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@eslint/json/-/json-0.5.0.tgz", + "integrity": "sha512-3cTSkHj/Mw/lLwrrVUgnhgWUH1FT2aJ3OLqi5gDvwunHMHBlf6ausKdsrxshH4vXx6mYS65dxG1dvWJI0U+Cuw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/plugin-kit": "^0.2.0", + "@humanwhocodes/momoa": "^3.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/markdown": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-6.2.1.tgz", + "integrity": "sha512-cKVd110hG4ICHmWhIwZJfKmmJBvbiDWyrHODJknAtudKgZtlROGoLX9UEOA0o746zC0hCY4UV4vR+aOGW9S6JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint/plugin-kit": "^0.2.0", + "mdast-util-from-markdown": "^2.0.1", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/object-schema": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", @@ -2141,44 +2058,6 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@floating-ui/core": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.7.tgz", - "integrity": "sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.7" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.6.10", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.10.tgz", - "integrity": "sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.7" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.1.tgz", - "integrity": "sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.7.tgz", - "integrity": "sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==", - "license": "MIT" - }, "node_modules/@humanfs/core": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", @@ -2217,6 +2096,16 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@humanwhocodes/momoa": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-3.3.0.tgz", + "integrity": "sha512-X7kFLCbAQqadYJl0K9LbCZk4XZbMpG+/7OyABi6fNpYOMKei434zEfLxS5HcZV0vy/0gTDwDRFc4PzjSRsPg0w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, "node_modules/@humanwhocodes/retry": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", @@ -3093,6 +2982,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -3107,6 +2997,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -3116,32 +3007,24 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, "license": "MIT" }, "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==", + "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3149,13 +3032,16 @@ } }, "node_modules/@keplr-wallet/types": { - "version": "0.12.130", - "resolved": "https://registry.npmjs.org/@keplr-wallet/types/-/types-0.12.130.tgz", - "integrity": "sha512-bUJ6JGpMYUAbPu6SdSG9HjAApgZirMnX4x+1Y9fwC5BCRP2zImYoleTSp+FNbG26iwfN+hUdM0uAcPWsKsfENg==", + "version": "0.12.141", + "resolved": "https://registry.npmjs.org/@keplr-wallet/types/-/types-0.12.141.tgz", + "integrity": "sha512-och1uUeqL6bUgWGLBSlV87rwXUDZMDUOJaARue65mRzfD6ohp9WBVFZfFgpyxU3M6S6UnzQQ6HuKUnWh4WuDjw==", "dev": true, "license": "Apache-2.0", "dependencies": { "long": "^4.0.0" + }, + "peerDependencies": { + "starknet": "^6" } }, "node_modules/@microsoft/tsdoc": { @@ -3195,908 +3081,406 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@mui/base": { - "version": "5.0.0-beta.58", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.58.tgz", - "integrity": "sha512-P0E7ZrxOuyYqBvVv9w8k7wm+Xzx/KRu+BGgFcR2htTsGCpJNQJCSUXNUZ50MUmSU9hzqhwbQWNXhV1MBTl6F7A==", + "node_modules/@nillion/client-vms": { + "resolved": "client-vms", + "link": true + }, + "node_modules/@nillion/client-wasm": { + "resolved": "client-wasm", + "link": true + }, + "node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.0", - "@floating-ui/react-dom": "^2.1.1", - "@mui/types": "^7.2.15", - "@mui/utils": "6.0.0-rc.0", - "@popperjs/core": "^2.11.8", - "clsx": "^2.1.1", - "prop-types": "^15.8.1" + "@noble/hashes": "1.5.0" }, "engines": { - "node": ">=14.0.0" + "node": "^14.21.3 || >=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/base/node_modules/@mui/utils": { - "version": "6.0.0-rc.0", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.0.0-rc.0.tgz", - "integrity": "sha512-tBp0ILEXDL0bbDDT8PnZOjCqSm5Dfk2N0Z45uzRw+wVl6fVvloC9zw8avl+OdX1Bg3ubs/ttKn8nRNv17bpM5A==", + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.0", - "@mui/types": "^7.2.15", - "@types/prop-types": "^15.7.12", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, "engines": { - "node": ">=14.0.0" + "node": "^14.21.3 || >=16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.2.tgz", - "integrity": "sha512-1oE4U38/TtzLWRYWEm/m70dUbpcvBx0QvDVg6NtpOmSNQC1Mbx0X/rNvYDdZnn8DIsAiVQ+SZ3am6doSswUQ4g==", + "node_modules/@noble/secp256k1": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-2.1.0.tgz", + "integrity": "sha512-XLEQQNdablO0XZOIniFQimiXsZDNwaYgL96dZwC54Q30imSbAOFf3NKtepc+cXyuZf5Q1HCgbqgZ2UFFuHVcEw==", "license": "MIT", "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/icons-material": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.2.tgz", - "integrity": "sha512-7NNcjW5JoT9jHagrVbARA1o41vQY2xezDamtke+mEKKZmsJyejfRBOacSrPDfjZQ//lyhIjNKyzAwisxYJR47w==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.6" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@mui/material": "^6.1.2", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" } }, - "node_modules/@mui/lab": { - "version": "6.0.0-beta.10", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.10.tgz", - "integrity": "sha512-eqCBz5SZS8Un9To3UcjH01AxkOOgvme/g0ZstFC8Nz1Kg5/EJMA0ByhKS5AvUMzUKrv0FXMdbuPqbBvF3bVrXg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/base": "5.0.0-beta.58", - "@mui/system": "^6.1.1", - "@mui/types": "^7.2.17", - "@mui/utils": "^6.1.1", - "clsx": "^2.1.1", - "prop-types": "^15.8.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@mui/material": "^6.1.1", - "@mui/material-pigment-css": "^6.1.1", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@mui/material-pigment-css": { - "optional": true - }, - "@types/react": { - "optional": true - } + "node": ">= 8" } }, - "node_modules/@mui/material": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.2.tgz", - "integrity": "sha512-5TtHeAVX9D5d2LYfB1GAUn29BcVETVsrQ76Dwb2SpAfQGW3JVy4deJCAd0RrIkI3eEUrsl0E4xuBdreszxdTTg==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/core-downloads-tracker": "^6.1.2", - "@mui/system": "^6.1.2", - "@mui/types": "^7.2.17", - "@mui/utils": "^6.1.2", - "@popperjs/core": "^2.11.8", - "@types/react-transition-group": "^4.4.11", - "clsx": "^2.1.1", - "csstype": "^3.1.3", - "prop-types": "^15.8.1", - "react-is": "^18.3.1", - "react-transition-group": "^4.4.5" - }, + "optional": true, "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.1.2", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@mui/material-pigment-css": { - "optional": true - }, - "@types/react": { - "optional": true - } + "node": ">=14" } }, - "node_modules/@mui/private-theming": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.2.tgz", - "integrity": "sha512-S8WcjZdNdi++8UhrrY8Lton5h/suRiQexvdTfdcPAlbajlvgM+kx+uJstuVIEyTb3gMkxzIZep87knZ0tqcR0g==", - "license": "MIT", + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/utils": "^6.1.2", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@mui/styled-engine": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.2.tgz", - "integrity": "sha512-uKOfWkR23X39xj7th2nyTcCHqInTAXtUnqD3T5qRVdJcOPvu1rlgTleTwJC/FJvWZJBU6ieuTWDhbcx5SNViHQ==", + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.6", - "@emotion/cache": "^11.13.1", - "@emotion/sheet": "^1.4.0", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" - }, + "peer": true, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - } + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/system": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.2.tgz", - "integrity": "sha512-mzW7F1ZMIYS1aLON48Nrk9c65OrVEVQ+R4lUcTWs1lCSul0VGK23eo4dmY0NX5PS7Oe4xz3P5B9tQZZ7SYgxcg==", + "node_modules/@scure/starknet": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.0.0.tgz", + "integrity": "sha512-o5J57zY0f+2IL/mq8+AYJJ4Xpc1fOtDhr+mFQKbHnYFmm3WQrC+8zj2HEgxak1a+x86mhmBC1Kq305KUpVf0wg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/private-theming": "^6.1.2", - "@mui/styled-engine": "^6.1.2", - "@mui/types": "^7.2.17", - "@mui/utils": "^6.1.2", - "clsx": "^2.1.1", - "csstype": "^3.1.3", - "prop-types": "^15.8.1" - }, - "engines": { - "node": ">=14.0.0" + "@noble/curves": "~1.3.0", + "@noble/hashes": "~1.3.3" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/react": { - "optional": true - }, - "@emotion/styled": { - "optional": true - }, - "@types/react": { - "optional": true - } + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/types": { - "version": "7.2.17", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz", - "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==", + "node_modules/@scure/starknet/node_modules/@noble/curves": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dev": true, "license": "MIT", - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + "peer": true, + "dependencies": { + "@noble/hashes": "1.3.3" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@mui/utils": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.2.tgz", - "integrity": "sha512-6+B1YZ8cCBWD1fc3RjqpclF9UA0MLUiuXhyCO+XowD/Z2ku5IlxeEhHHlgglyBWFGMu4kib4YU3CDsG5/zVjJQ==", + "node_modules/@scure/starknet/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.6", - "@mui/types": "^7.2.17", - "@types/prop-types": "^15.7.13", - "clsx": "^2.1.1", - "prop-types": "^15.8.1", - "react-is": "^18.3.1" - }, + "peer": true, "engines": { - "node": ">=14.0.0" + "node": ">= 16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mui-org" - }, - "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@next/env": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.14.tgz", - "integrity": "sha512-/0hWQfiaD5//LvGNgc8PjvyqV50vGK0cADYzaoOOGN8fxzBn3iAiaq3S0tCRnFBldq0LVveLcxCTi41ZoYgAgg==", + "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==", + "dev": true, "license": "MIT" }, - "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.14.tgz", - "integrity": "sha512-bsxbSAUodM1cjYeA4o6y7sp9wslvwjSkWw57t8DtC8Zig8aG8V6r+Yc05/9mDzLKcybb6EN85k1rJDnMKBd9Gw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.14.tgz", - "integrity": "sha512-cC9/I+0+SK5L1k9J8CInahduTVWGMXhQoXFeNvF0uNs3Bt1Ub0Azb8JzTU9vNCr0hnaMqiWu/Z0S1hfKc3+dww==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "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==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.14.tgz", - "integrity": "sha512-RMLOdA2NU4O7w1PQ3Z9ft3PxD6Htl4uB2TJpocm+4jcllHySPkFaUIFacQ3Jekcg6w+LBaFvjSPthZHiPmiAUg==", - "cpu": [ - "arm64" - ], + "node_modules/@starknet-io/types-js": { + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.7.tgz", + "integrity": "sha512-WLrpK7LIaIb8Ymxu6KF/6JkGW1sso988DweWu7p5QY/3y7waBIiPvzh27D9bX5KIJNRDyOoOVoHVEKYUYWZ/RQ==", + "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "peer": true }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.14.tgz", - "integrity": "sha512-WgLOA4hT9EIP7jhlkPnvz49iSOMdZgDJVvbpb8WWzJv5wBD07M2wdJXLkDYIpZmCFfo/wPqFsFR4JS4V9KkQ2A==", - "cpu": [ - "arm64" - ], + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "peer": true }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.14.tgz", - "integrity": "sha512-lbn7svjUps1kmCettV/R9oAvEW+eUI0lo0LJNFOXoQM5NGNxloAyFRNByYeZKL3+1bF5YE0h0irIJfzXBq9Y6w==", - "cpu": [ - "x64" - ], + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "peer": true }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.14.tgz", - "integrity": "sha512-7TcQCvLQ/hKfQRgjxMN4TZ2BRB0P7HwrGAYL+p+m3u3XcKTraUFerVbV3jkNZNwDeQDa8zdxkKkw2els/S5onQ==", - "cpu": [ - "x64" - ], + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } + "peer": true }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.14.tgz", - "integrity": "sha512-8i0Ou5XjTLEje0oj0JiI0Xo9L/93ghFtAUYZ24jARSeTMXLUx8yFIdhS55mTExq5Tj4/dC2fJuaT4e3ySvXU1A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.14.tgz", - "integrity": "sha512-2u2XcSaDEOj+96eXpyjHjtVPLhkAFw2nlaz83EPeuK4obF+HmtDJHqgR1dZB7Gb6V/d55FL26/lYVd0TwMgcOQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.14.tgz", - "integrity": "sha512-MZom+OvZ1NZxuRovKt1ApevjiUJTcU2PmdJKL66xUPaJeRywnbGGRWUlaAOwunD6dX+pm83vj979NTC8QXjGWg==", - "cpu": [ - "x64" - ], + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nillion/client-core": { - "resolved": "packages/client-core", - "link": true + "peer": true }, - "node_modules/@nillion/client-payments": { - "resolved": "packages/client-payments", - "link": true - }, - "node_modules/@nillion/client-react-hooks": { - "resolved": "packages/client-react-hooks", - "link": true - }, - "node_modules/@nillion/client-vms": { - "resolved": "packages/client-vms", - "link": true - }, - "node_modules/@nillion/client-wasm": { - "resolved": "packages/client-wasm", - "link": true - }, - "node_modules/@nillion/fixture": { - "resolved": "packages/fixture", - "link": true - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "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==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "@babel/types": "^7.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "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==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 8" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "@babel/types": "^7.20.7" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", "dev": true, "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@popperjs/core": { - "version": "2.11.8", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", - "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" + "@types/ms": "*" } }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "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/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true, "license": "MIT" }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "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==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "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==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } + "license": "MIT" }, - "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==", + "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==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", - "license": "Apache-2.0", + "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==", + "dev": true, + "license": "MIT", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@tanstack/query-core": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.0.tgz", - "integrity": "sha512-WGD8uIhX6/deH/tkZqPNcRyAhDUqs729bWKoByYHSogcshXfFbppOdTER5+qY7mFvu8KEFJwT0nxr8RfPTVh0Q==", + "node_modules/@types/jest": { + "version": "29.5.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", + "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", + "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/react-query": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.0.tgz", - "integrity": "sha512-YDXp3OORbYR+8HNQx+lf4F73NoiCmCcSvZvgxE29OifmQFk0sBlO26NWLHpcNERo92tVk3w+JQ53/vkcRUY1hA==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "5.59.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jasmine": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", - "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/jest": { - "version": "29.5.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", - "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, "node_modules/@types/json-schema": { @@ -4112,6 +3496,16 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", "license": "MIT" }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/ms": { "version": "0.7.34", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", @@ -4132,42 +3526,10 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-transition-group": { - "version": "4.4.11", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", - "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", - "license": "MIT", - "dependencies": { - "@types/react": "*" - } + "optional": true, + "peer": true }, "node_modules/@types/stack-utils": { "version": "2.0.3", @@ -4176,10 +3538,17 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", "dev": true, "license": "MIT" }, @@ -4201,17 +3570,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz", - "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.10.0.tgz", + "integrity": "sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/type-utils": "8.8.0", - "@typescript-eslint/utils": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/scope-manager": "8.10.0", + "@typescript-eslint/type-utils": "8.10.0", + "@typescript-eslint/utils": "8.10.0", + "@typescript-eslint/visitor-keys": "8.10.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4235,16 +3604,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz", - "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.10.0.tgz", + "integrity": "sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/scope-manager": "8.10.0", + "@typescript-eslint/types": "8.10.0", + "@typescript-eslint/typescript-estree": "8.10.0", + "@typescript-eslint/visitor-keys": "8.10.0", "debug": "^4.3.4" }, "engines": { @@ -4264,14 +3633,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz", - "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.10.0.tgz", + "integrity": "sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0" + "@typescript-eslint/types": "8.10.0", + "@typescript-eslint/visitor-keys": "8.10.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4282,14 +3651,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz", - "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.10.0.tgz", + "integrity": "sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.8.0", - "@typescript-eslint/utils": "8.8.0", + "@typescript-eslint/typescript-estree": "8.10.0", + "@typescript-eslint/utils": "8.10.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4307,9 +3676,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz", - "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.10.0.tgz", + "integrity": "sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==", "dev": true, "license": "MIT", "engines": { @@ -4321,14 +3690,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz", - "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.10.0.tgz", + "integrity": "sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/visitor-keys": "8.8.0", + "@typescript-eslint/types": "8.10.0", + "@typescript-eslint/visitor-keys": "8.10.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4376,16 +3745,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz", - "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.10.0.tgz", + "integrity": "sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.8.0", - "@typescript-eslint/types": "8.8.0", - "@typescript-eslint/typescript-estree": "8.8.0" + "@typescript-eslint/scope-manager": "8.10.0", + "@typescript-eslint/types": "8.10.0", + "@typescript-eslint/typescript-estree": "8.10.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4399,13 +3768,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz", - "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.10.0.tgz", + "integrity": "sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.8.0", + "@typescript-eslint/types": "8.10.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -4442,374 +3811,84 @@ "typescript": "*" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "node_modules/abi-wan-kanabi": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.3.tgz", + "integrity": "sha512-JlqiAl9CPvTm5kKG0QXmVCWNWoC/XyRMOeT77cQlbxXWllgjf6SqUmaNqFon72C2o5OSZids+5FvLdsw6dvWaw==", "dev": true, - "license": "MIT", + "license": "ISC", + "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "ansicolors": "^0.3.2", + "cardinal": "^2.1.1", + "fs-extra": "^10.0.0", + "yargs": "^17.7.2" + }, + "bin": { + "generate": "dist/generate.js" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "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==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/accepts": { - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "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==", - "dev": true, - "license": "MIT", + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -4843,6 +3922,14 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/ansicolors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -4864,13 +3951,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true, - "license": "MIT" - }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", @@ -5064,7 +4144,10 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -5079,7 +4162,10 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -5095,7 +4181,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -5104,7 +4193,10 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "license": "ISC", + "optional": true, + "peer": true, "engines": { "node": ">= 6" } @@ -5160,6 +4252,12 @@ "dev": true, "license": "MIT" }, + "node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==", + "license": "MIT" + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5192,48 +4290,6 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "license": "MIT" }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dev": true, - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5310,6 +4366,15 @@ "node": ">= 6" } }, + "node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "license": "MIT", + "dependencies": { + "base-x": "^5.0.0" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -5327,17 +4392,6 @@ "dev": true, "license": "MIT" }, - "node_modules/busboy": { - "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" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -5348,30 +4402,11 @@ "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -5391,6 +4426,7 @@ "version": "1.0.30001667", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz", "integrity": "sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==", + "dev": true, "funding": [ { "type": "opencollective", @@ -5407,2408 +4443,962 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "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==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "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/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clsx": { + "node_modules/cardinal": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "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==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concurrently": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.1.tgz", - "integrity": "sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "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/concurrently/node_modules/chalk/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-webpack-plugin": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", - "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-glob": "^3.3.2", - "glob-parent": "^6.0.1", - "globby": "^14.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", - "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jiti": "^1.19.1" - }, - "engines": { - "node": ">=v16" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=8.2", - "typescript": ">=4" - } - }, - "node_modules/cosmjs-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", - "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==", - "license": "Apache-2.0" - }, - "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==", - "dev": true, - "license": "MIT", - "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/create-jest/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "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/create-jest/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" - }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/effect": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/effect/-/effect-3.9.0.tgz", - "integrity": "sha512-KnbQNgPxd74cAHvAf0C7qv3+KLeuEVz9jUflCrB3gzVXrJQ0WTQzGF2DGg3frma1dFnPp1J4zJBonUVreAm1BQ==", - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", - "dev": true, - "license": "ISC" - }, - "node_modules/elliptic": { - "version": "6.5.7", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", - "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "license": "MIT" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" - } - }, - "node_modules/esbuild-plugin-browserslist": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.15.0.tgz", - "integrity": "sha512-nZeEev2eIVLFWYcwp0iKv+lk85Yq2YIDhzCkJ5Dm5s7DxKANfjqUTyE1NRY2mEmwEW7SeAWraQEQdJP+5gV1RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.7", - "zod": "^3.23.8" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "browserslist": "^4.21.8", - "esbuild": "~0.24.0" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", - "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.6.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.12.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", - "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=5.0.0" - } - }, - "node_modules/eslint-plugin-tsdoc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.3.0.tgz", - "integrity": "sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@microsoft/tsdoc": "0.15.0", - "@microsoft/tsdoc-config": "0.17.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "ansicolors": "~0.3.2", + "redeyed": "~2.1.0" }, + "bin": { + "cdl": "bin/cdl.js" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/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==", + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" - }, + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint/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==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/eslint/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/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==", "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/find-up": { + "node_modules/cli-cursor": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/eslint/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==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/supports-color": { + "node_modules/cli-truncate/node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "acorn": "^8.12.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "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==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "estraverse": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=0.10" + "node": ">=12" } }, - "node_modules/esrecurse": { + "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=16.17" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?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==", + "node_modules/cliui/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==", "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=7.0.0" } }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/cliui/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/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==", "dev": true, "license": "MIT", - "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": ">=8" } }, - "node_modules/express": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", - "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", + "node_modules/cliui/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==", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.6.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">=8" } }, - "node_modules/express-http-proxy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-2.1.1.tgz", - "integrity": "sha512-4aRQRqDQU7qNPV5av0/hLcyc0guB9UP71nCYrQEYml7YphTo8tmWf3nDZWdTJMMjFikyz9xKXaURor7Chygdwg==", + "node_modules/cliui/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==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.0.1", - "es6-promise": "^4.1.1", - "raw-body": "^2.3.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/express-http-proxy/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "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==", + "dev": true, + "license": "MIT" + }, + "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==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "color-name": "1.1.3" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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==", "dev": true, "license": "MIT" }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">= 0.8" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, + "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=18" } }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/concurrently": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.0.1.tgz", + "integrity": "sha512-wYKvCd/f54sTXJMSfV6Ln/B8UrfLBKOYa+lzc6CHay3Qek+LorVSBdMVfyewFhRbH0Rbabsk4D+3PL/VjQ5gzg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, - "license": "ISC", "dependencies": { - "reusify": "^1.0.4" + "chalk": "^4.1.2", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "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==", + "node_modules/concurrently/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==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], "license": "MIT", "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12.20 || >= 14.13" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "node_modules/concurrently/node_modules/chalk/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==", "dev": true, "license": "MIT", "dependencies": { - "is-unicode-supported": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/concurrently/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==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=16.0.0" + "node": ">=7.0.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/concurrently/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==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } + "license": "MIT" }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">= 0.8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", + "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "jiti": "^1.19.1" + }, + "engines": { + "node": ">=v16" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=8.2", + "typescript": ">=4" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" + "node_modules/cosmjs-types": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==", + "license": "Apache-2.0" }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "license": "MIT" + "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==", + "dev": true, + "license": "MIT", + "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/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "node_modules/create-jest/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==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "license": "MIT", + "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/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/create-jest/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==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=16" + "node": ">=7.0.0" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "node_modules/create-jest/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==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/create-jest/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==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=4.0" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "peer": true + }, + "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==", + "dev": true, + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 8" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "license": "MIT", "dependencies": { - "fetch-blob": "^3.1.2" + "ms": "^2.1.3" }, "engines": { - "node": ">=12.20.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.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==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, "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==", - "dev": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dev": true, - "license": "ISC", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=0.4.0" } }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, "license": "MIT", - "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" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "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==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "dequal": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.3.1" } }, - "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "license": "MIT", "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.mjs" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "license": "BSD-2-Clause", "engines": { - "node": "20 || >=22" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://dotenvx.com" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "is-glob": "^4.0.3" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=10.13.0" + "node": ">=0.10.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "node_modules/electron-to-chromium": { + "version": "1.5.32", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", + "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", "dev": true, - "license": "BSD-2-Clause" + "license": "ISC" }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/elliptic": { + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", - "dependencies": { - "ini": "4.1.1" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", "engines": { @@ -7818,1692 +5408,1610 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "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==", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" + "bin": { + "esbuild": "bin/esbuild" }, "engines": { "node": ">=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.24.0", + "@esbuild/android-arm": "0.24.0", + "@esbuild/android-arm64": "0.24.0", + "@esbuild/android-x64": "0.24.0", + "@esbuild/darwin-arm64": "0.24.0", + "@esbuild/darwin-x64": "0.24.0", + "@esbuild/freebsd-arm64": "0.24.0", + "@esbuild/freebsd-x64": "0.24.0", + "@esbuild/linux-arm": "0.24.0", + "@esbuild/linux-arm64": "0.24.0", + "@esbuild/linux-ia32": "0.24.0", + "@esbuild/linux-loong64": "0.24.0", + "@esbuild/linux-mips64el": "0.24.0", + "@esbuild/linux-ppc64": "0.24.0", + "@esbuild/linux-riscv64": "0.24.0", + "@esbuild/linux-s390x": "0.24.0", + "@esbuild/linux-x64": "0.24.0", + "@esbuild/netbsd-x64": "0.24.0", + "@esbuild/openbsd-arm64": "0.24.0", + "@esbuild/openbsd-x64": "0.24.0", + "@esbuild/sunos-x64": "0.24.0", + "@esbuild/win32-arm64": "0.24.0", + "@esbuild/win32-ia32": "0.24.0", + "@esbuild/win32-x64": "0.24.0" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/esbuild-plugin-browserslist": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-browserslist/-/esbuild-plugin-browserslist-0.15.0.tgz", + "integrity": "sha512-nZeEev2eIVLFWYcwp0iKv+lk85Yq2YIDhzCkJ5Dm5s7DxKANfjqUTyE1NRY2mEmwEW7SeAWraQEQdJP+5gV1RA==", + "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "debug": "^4.3.7", + "zod": "^3.23.8" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "browserslist": "^4.21.8", + "esbuild": "~0.24.0" } }, - "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==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/has-flag": { + "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/eslint": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", + "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "text-table": "^0.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "license": "MIT", - "engines": { - "node": ">= 0.4" + "bin": { + "eslint": "bin/eslint.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "license": "MIT", "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/eslint-plugin-jest": { + "version": "28.8.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.8.3.tgz", + "integrity": "sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==", + "dev": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0 || ^8.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "node_modules/eslint-plugin-simple-import-sort": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", + "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", + "dev": true, "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/hoist-non-react-statics": { - "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==", - "license": "BSD-3-Clause", + "node_modules/eslint-plugin-tsdoc": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.3.0.tgz", + "integrity": "sha512-0MuFdBrrJVBjT/gyhkP2BqpD0np1NxNLfQ38xXDlSs/KVVpKI2A6vN7jx2Rve/CyUsvOsMGwp9KKrinv7q9g3A==", + "dev": true, + "license": "MIT", "dependencies": { - "react-is": "^16.7.0" + "@microsoft/tsdoc": "0.15.0", + "@microsoft/tsdoc-config": "0.17.0" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "whatwg-encoding": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=12" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, + "license": "Apache-2.0", "engines": { - "node": ">= 0.8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/eslint/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==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/husky": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", - "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "bin": { - "husky": "bin.js" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/eslint/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==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/eslint/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "node_modules/eslint/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==", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/eslint/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==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=8" } }, - "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==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "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==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "license": "ISC", + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "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==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=10.13.0" + "node": ">=4" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=0.10" } }, - "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==", - "license": "MIT" - }, - "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", - "license": "MIT", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "hasown": "^2.0.2" + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "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==", + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">= 0.8.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", + "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": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/express-http-proxy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-2.1.1.tgz", + "integrity": "sha512-4aRQRqDQU7qNPV5av0/hLcyc0guB9UP71nCYrQEYml7YphTo8tmWf3nDZWdTJMMjFikyz9xKXaURor7Chygdwg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "debug": "^3.0.1", + "es6-promise": "^4.1.1", + "raw-body": "^2.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/express-http-proxy/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "ms": "^2.1.1" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "license": "MIT", "dependencies": { - "text-extensions": "^2.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "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==", "dev": true, "license": "MIT" }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/isobject": { + "node_modules/fast-uri": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "license": "MIT", - "peerDependencies": { - "ws": "*" + "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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" } }, - "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==", + "node_modules/fetch-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-3.0.1.tgz", + "integrity": "sha512-ZGXe8Y5Z/1FWqQ9q/CrJhkUD73DyBU9VF0hBQmEO/wPHe4A9PKTjplFDLeFX8aOsYypZUcX5Ji/eByn3VCVO3Q==", "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "license": "Unlicense", + "peer": true, + "dependencies": { + "set-cookie-parser": "^2.4.8", + "tough-cookie": "^4.0.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "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" + "flat-cache": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "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==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "minimatch": "^5.0.1" } }, - "node_modules/istanbul-lib-report/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==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0" } }, - "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==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "brace-expansion": "^2.0.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==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", - "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", - "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=10" + "node": ">=16" } }, - "node_modules/jake/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==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jake/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==", - "dev": true, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=7.0.0" + "node": ">= 6" } }, - "node_modules/jake/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/jake/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==", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/jasmine-browser-runner": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/jasmine-browser-runner/-/jasmine-browser-runner-2.5.0.tgz", - "integrity": "sha512-CzdvpeZunUu6x1u8G6/vPnfcKVpDaBFfk3tIvm1hoA+EfceQ8FRvsy4o8hEcKYyMt556XFRnP5PjYsxFU8z7Xw==", + "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==", "dev": true, - "license": "MIT", - "dependencies": { - "ejs": "^3.1.6", - "express": "^4.19.2", - "glob": "^10.0.0", - "selenium-webdriver": "^4.12.0" - }, - "bin": { - "jasmine-browser-runner": "bin/jasmine-browser-runner" - }, - "peerDependencies": { - "jasmine-core": "^5.0.0" - } + "license": "ISC" }, - "node_modules/jasmine-browser-runner/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jasmine-browser-runner/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "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==", + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jasmine-browser-runner/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "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==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "license": "MIT", + "engines": { + "node": ">=6.9.0" } }, - "node_modules/jasmine-browser-runner/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jasmine-browser-runner/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "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==", "dev": true, "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jasmine-browser-runner/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.18" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jasmine-core": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.3.0.tgz", - "integrity": "sha512-zsOmeBKESky4toybvWEikRiZ0jHoBEu79wNArLfMdSnlLMZx3Xcp6CSm2sUcYyoJC+Uyj8LBJap/MUbVSfJ27g==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "license": "MIT", "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" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.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" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dev": true, "license": "MIT", - "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": ">=8.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/get-starknet-core": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/get-starknet-core/-/get-starknet-core-4.0.0.tgz", + "integrity": "sha512-6pLmidQZkC3wZsrHY99grQHoGpuuXqkbSP65F8ov1/JsEI8DDLkhsAuLCKFzNOK56cJp+f1bWWfTJ57e9r5eqQ==", "dev": true, "license": "MIT", + "peer": true, "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" + "@starknet-io/types-js": "^0.7.7" } }, - "node_modules/jest-changed-files/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==", + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/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==", + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, "engines": { - "node": ">=10.17.0" + "node": ">=16" } }, - "node_modules/jest-changed-files/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==", + "node_modules/glob": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, "engines": { - "node": ">=8" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-changed-files/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==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, - "node_modules/jest-changed-files/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==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0" } }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "mimic-fn": "^2.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/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==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-changed-files/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "license": "MIT", "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" + "ini": "4.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/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==", + "node_modules/globals": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/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==", - "dev": true, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/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/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==", + "dev": true, + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, - "node_modules/jest-circus/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "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==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-circus/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==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", - "dev": true, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "license": "MIT", - "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" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/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==", - "dev": true, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/jest-cli/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==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/jest-cli/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/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, - "node_modules/jest-cli/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==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "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==", + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, - "license": "MIT", - "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" - }, + "license": "Apache-2.0", "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": ">=16.17.0" } }, - "node_modules/jest-config/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==", + "node_modules/husky": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "husky": "bin.js" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-config/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==", + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 4" } }, - "node_modules/jest-config/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "ISC", + "license": "MIT", "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" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-config/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==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "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/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "license": "MIT", - "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" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-diff/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==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", + "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==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" - }, + "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==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/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==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/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/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/jest-diff/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==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.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==", + "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==", "dev": true, "license": "MIT", - "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": ">=0.12.0" } }, - "node_modules/jest-each/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==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each/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==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "text-extensions": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-each/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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/jest-each/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==", + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "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==", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "@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": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": ">=10" } }, - "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==", + "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==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "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" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "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==", + "node_modules/istanbul-lib-report/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==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "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==", + "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==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "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" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "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==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/jackspeak": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", + "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", "dev": true, - "license": "MIT", + "license": "BlueOak-1.0.0", "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.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==", + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jake/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==", @@ -9519,7 +7027,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { + "node_modules/jake/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -9536,7 +7044,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jake/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==", @@ -9549,14 +7057,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jake/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { + "node_modules/jake/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==", @@ -9569,182 +7077,197 @@ "node": ">=8" } }, - "node_modules/jest-message-util": { + "node_modules/jest": { "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==", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", + "@jest/core": "^29.7.0", "@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" + "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-message-util/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==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "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/chalk/chalk?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-message-util/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==", + "node_modules/jest-changed-files/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==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/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/jest-changed-files/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==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/jest-changed-files/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==", "dev": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/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==", + "node_modules/jest-changed-files/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==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/jest-changed-files/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==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "path-key": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "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==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { "node": ">=6" }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/jest-changed-files/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==", "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "ISC" }, - "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==", + "node_modules/jest-changed-files/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==", "dev": true, "license": "MIT", - "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": ">=6" } }, - "node_modules/jest-resolve-dependencies": { + "node_modules/jest-circus": { "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==", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" + "@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-resolve/node_modules/ansi-styles": { + "node_modules/jest-circus/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==", @@ -9760,7 +7283,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/chalk": { + "node_modules/jest-circus/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -9777,7 +7300,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { + "node_modules/jest-circus/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==", @@ -9790,14 +7313,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-resolve/node_modules/color-name": { + "node_modules/jest-circus/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-resolve/node_modules/slash": { + "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", @@ -9807,7 +7330,7 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/supports-color": { + "node_modules/jest-circus/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==", @@ -9820,40 +7343,41 @@ "node": ">=8" } }, - "node_modules/jest-runner": { + "node_modules/jest-cli": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", + "@jest/core": "^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", + "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-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "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-runner/node_modules/ansi-styles": { + "node_modules/jest-cli/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==", @@ -9869,7 +7393,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/chalk": { + "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -9886,7 +7410,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { + "node_modules/jest-cli/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==", @@ -9899,14 +7423,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { + "node_modules/jest-cli/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-runner/node_modules/supports-color": { + "node_modules/jest-cli/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==", @@ -9919,41 +7443,53 @@ "node": ">=8" } }, - "node_modules/jest-runtime": { + "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", "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", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", "@jest/types": "^29.6.3", - "@types/node": "*", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", "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-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-snapshot": "^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-bom": "^4.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-runtime/node_modules/ansi-styles": { + "node_modules/jest-config/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==", @@ -9969,7 +7505,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/chalk": { + "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -9986,7 +7522,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { + "node_modules/jest-config/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==", @@ -9999,14 +7535,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { + "node_modules/jest-config/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-runtime/node_modules/glob": { + "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", @@ -10028,7 +7564,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runtime/node_modules/slash": { + "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", @@ -10038,7 +7574,7 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/supports-color": { + "node_modules/jest-config/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==", @@ -10051,39 +7587,23 @@ "node": ">=8" } }, - "node_modules/jest-snapshot": { + "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "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", + "diff-sequences": "^29.6.3", "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" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { + "node_modules/jest-diff/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==", @@ -10099,7 +7619,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { + "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -10116,7 +7636,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/jest-diff/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==", @@ -10129,14 +7649,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/jest-diff/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-snapshot/node_modules/supports-color": { + "node_modules/jest-diff/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==", @@ -10149,109 +7669,37 @@ "node": ">=8" } }, - "node_modules/jest-util": { + "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "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" + "detect-newline": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "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/jest-util/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { + "node_modules/jest-each": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", "chalk": "^4.0.0", "jest-get-type": "^29.6.3", - "leven": "^3.1.0", + "jest-util": "^29.7.0", "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { + "node_modules/jest-each/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==", @@ -10267,20 +7715,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { + "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -10297,7 +7732,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { + "node_modules/jest-each/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==", @@ -10310,14 +7745,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/color-name": { + "node_modules/jest-each/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-validate/node_modules/supports-color": { + "node_modules/jest-each/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==", @@ -10330,27 +7765,91 @@ "node": ">=8" } }, - "node_modules/jest-watcher": { + "node_modules/jest-environment-node": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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", - "string-length": "^4.0.1" + "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-watcher/node_modules/ansi-styles": { + "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==", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "license": "MIT", + "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-matcher-utils/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==", @@ -10366,7 +7865,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/chalk": { + "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -10383,7 +7882,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { + "node_modules/jest-matcher-utils/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==", @@ -10396,14 +7895,14 @@ "node": ">=7.0.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { + "node_modules/jest-matcher-utils/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==", "dev": true, "license": "MIT" }, - "node_modules/jest-watcher/node_modules/supports-color": { + "node_modules/jest-matcher-utils/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==", @@ -10416,1332 +7915,1333 @@ "node": ">=8" } }, - "node_modules/jest-worker": { + "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@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/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "node_modules/jest-message-util/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==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "node": ">=8" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "node_modules/jest-message-util/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==", "dev": true, - "license": "(MIT OR Apache-2.0)", + "license": "MIT", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "color-name": "~1.1.4" }, "engines": { - "node": "*" + "node": ">=7.0.0" } }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "node_modules/jest-message-util/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==", "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/jest-message-util/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==", "dev": true, "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "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==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "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==", "dev": true, "license": "MIT", "engines": { "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "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==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "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": ">= 0.8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/libsodium-sumo": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", - "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==", - "license": "ISC" - }, - "node_modules/libsodium-wrappers-sumo": { - "version": "0.7.15", - "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", - "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", - "license": "ISC", + "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==", + "dev": true, + "license": "MIT", "dependencies": { - "libsodium-sumo": "^0.7.15" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "node_modules/jest-resolve/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==", "dev": true, "license": "MIT", "dependencies": { - "immediate": "~3.0.5" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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/jest-resolve/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/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==", + "dev": true, "license": "MIT" }, - "node_modules/lint-staged": { - "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/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==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.3.6", - "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.5.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=18.12.0" + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "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" }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "node_modules/jest-runner/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==", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, - "engines": { - "node": ">=18.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/jest-runner/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==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "node_modules/jest-runner/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==", "dev": true, "license": "MIT" }, - "node_modules/listr2/node_modules/string-width": { + "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@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": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "node_modules/jest-runtime/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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6.11.5" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/jest-runtime/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==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "node_modules/jest-runtime/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==", "dev": true, "license": "MIT" }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT" + "license": "ISC", + "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/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "node_modules/jest-runtime/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==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" + "@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": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "node_modules/jest-snapshot/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==", "dev": true, "license": "MIT", "dependencies": { - "environment": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/jest-snapshot/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==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "node_modules/jest-snapshot/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==", "dev": true, "license": "MIT" }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "node_modules/jest-snapshot/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==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" + "@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": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/jest-util/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==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "node_modules/jest-util/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==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=7.0.0" } }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "license": "Apache-2.0" + "node_modules/jest-util/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==", + "dev": true, + "license": "MIT" }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/jest-util/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==", + "dev": true, "license": "MIT", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "has-flag": "^4.0.0" }, - "bin": { - "loose-envify": "cli.js" + "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==", + "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==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "yallist": "^3.0.2" + "@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/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==", + "node_modules/jest-validate/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==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=16.10" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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/jest-validate/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/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==", "dev": true, "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/jest-validate/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==", "dev": true, "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "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==", "dev": true, "license": "MIT", + "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": ">= 0.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/jest-watcher/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==", "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", - "bin": { - "mime": "cli.js" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/jest-watcher/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==", + "dev": true, "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 0.6" + "node": ">=7.0.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/jest-watcher/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-watcher/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==", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "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==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true, + "license": "MIT" }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "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==", + "dev": true, "license": "MIT" }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "argparse": "^2.0.1" }, - "engines": { - "node": "*" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" } }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } + "license": "MIT" }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "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==", + "dev": true, "license": "MIT" }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" }, - "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT" - }, - "node_modules/next": { - "version": "14.2.14", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.14.tgz", - "integrity": "sha512-Q1coZG17MW0Ly5x76shJ4dkC23woLAhhnDnw+DfTc7EpZSGuWrlsZ3bZaO8t6u1Yu8FVfhkqJE+U8GC7E0GLPQ==", "license": "MIT", + "peer": true, "dependencies": { - "@next/env": "14.2.14", - "@swc/helpers": "0.5.5", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", - "postcss": "8.4.31", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=18.17.0" + "universalify": "^2.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.14", - "@next/swc-darwin-x64": "14.2.14", - "@next/swc-linux-arm64-gnu": "14.2.14", - "@next/swc-linux-arm64-musl": "14.2.14", - "@next/swc-linux-x64-gnu": "14.2.14", - "@next/swc-linux-x64-musl": "14.2.14", - "@next/swc-win32-arm64-msvc": "14.2.14", - "@next/swc-win32-ia32-msvc": "14.2.14", - "@next/swc-win32-x64-msvc": "14.2.14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "sass": { - "optional": true - } + "graceful-fs": "^4.1.6" } }, - "node_modules/nextjs": { - "resolved": "examples/nextjs", - "link": true - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } + "engines": [ + "node >= 0.2.0" ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } + "license": "MIT" }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, - "license": "MIT", + "license": "(MIT OR Apache-2.0)", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "JSONStream": "bin.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "engines": { + "node": "*" } }, - "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/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "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==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/libsodium-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==", + "license": "ISC" + }, + "node_modules/libsodium-wrappers-sumo": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", + "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", + "license": "ISC", + "dependencies": { + "libsodium-sumo": "^0.7.15" + } + }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "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==", "dev": true, "license": "MIT" }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "node_modules/lint-staged": { + "version": "15.2.10", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", + "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", "dev": true, "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, "engines": { - "node": ">= 0.4" + "node": ">=18.12.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">= 0.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==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" + "node": ">=18.0.0" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, "engines": { - "node": ">= 0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, "engines": { - "node": ">=12.20" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "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==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true, - "license": "BlueOak-1.0.0" + "license": "MIT" }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", "dev": true, - "license": "(MIT AND Zlib)" + "license": "MIT" }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, "license": "MIT", "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" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, "engines": { "node": ">=18" }, @@ -11749,2547 +9249,2667 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", - "dependencies": { - "entities": "^4.4.0" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } + "license": "MIT" }, - "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==", + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": "20 || >=22" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": "20 || >=22" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": ">=8.6" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "license": "Apache-2.0" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", "dev": true, "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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==", + "node_modules/lossless-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.0.2.tgz", + "integrity": "sha512-+z0EaLi2UcWi8MZRxA5iTb6m4Ys4E80uftGY+yG5KNFJb5EceQXOhdW/pWJZ8m97s26u7yZZAYMcKWNztSZssA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 6" + "peer": true + }, + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" } }, - "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==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/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==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "tmpl": "1.0.5" } }, - "node_modules/pkg-dir/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==", + "node_modules/markdown-table": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", + "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", "dev": true, "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/pkg-dir/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==", + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", + "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/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==", + "node_modules/mdast-util-from-markdown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", + "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pkg-dir/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==", + "node_modules/mdast-util-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", + "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dev": true, "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" }, - "engines": { - "node": "^10 || ^12 || >=14" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/mdast-util-gfm-footnote": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", + "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8.0" + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dev": true, "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pretty-ms": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", - "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dev": true, "license": "MIT", "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "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==", + "node_modules/mdast-util-to-markdown": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", + "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", "dev": true, "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, "engines": { - "node": ">= 0.10" + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "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==", + "dev": true, "license": "MIT" }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "node_modules/micromark": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", + "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", "dev": true, "funding": [ { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "node_modules/micromark-core-commonmark": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", + "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], - "license": "MIT" - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/raw-body": { - "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==", + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">= 0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/readonly-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", - "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", - "license": "Apache-2.0" - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", "dev": true, "license": "MIT", "dependencies": { - "resolve": "^1.20.0" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "dev": true, - "license": "MIT" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "micromark-util-types": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "dev": true, "license": "MIT", "dependencies": { - "resolve-from": "^5.0.0" + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/micromark-factory-destination": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", + "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "node_modules/micromark-factory-label": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", + "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "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==", + "node_modules/micromark-factory-space": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", + "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "node_modules/micromark-factory-title": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", + "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "node_modules/micromark-factory-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", + "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/micromark-util-character": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", + "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "node_modules/micromark-util-chunked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", + "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/micromark-util-classify-character": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", + "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", + "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", + "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", "dev": true, - "license": "Apache-2.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/micromark-util-decode-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", + "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], "license": "MIT" }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", + "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT" }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", + "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "node_modules/micromark-util-resolve-all": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", + "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "micromark-util-types": "^2.0.0" } }, - "node_modules/selenium-webdriver": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.23.0.tgz", - "integrity": "sha512-DdvtInpnMt95Td8VApvmAw7oSydBD9twIRXqoMyRoGMvL1dAnMFxdrwnW6L0d/pF/uoNTjbVUarwGZ9wIGNStA==", + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", "dev": true, - "license": "Apache-2.0", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "@bazel/runfiles": "^5.8.1", - "jszip": "^3.10.1", - "tmp": "^0.2.3", - "ws": "^8.17.1" - }, - "engines": { - "node": ">= 14.21.0" - } - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", + "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT", "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" }, - "node_modules/send/node_modules/debug/node_modules/ms": { + "node_modules/micromark-util-types": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "license": "MIT" }, - "node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">= 0.8" + "node": ">=8.6" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", - "dev": true, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.6" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "license": "MIT", - "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" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true, - "license": "MIT" - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "license": "ISC" }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "kind-of": "^6.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "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==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/node-fetch": { + "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==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": "4.x || >=6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "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==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true, "license": "MIT" }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" } }, - "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==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, "engines": { - "node": ">= 10.x" + "node": ">= 0.8.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/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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==", + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^2.0.0" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stack-utils/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==", + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">=6" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", "dev": true, - "license": "MIT" + "license": "BlueOak-1.0.0" }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } + "license": "(MIT AND Zlib)", + "peer": true }, - "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==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@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": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width-cjs": { - "name": "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==", + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/string-width-cjs/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/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==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "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==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "ansi-regex": "^6.0.1" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=12" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "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==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "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==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "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==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "find-up": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "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==", + "node_modules/pkg-dir/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==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "node_modules/pkg-dir/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==", + "dev": true, "license": "MIT", "dependencies": { - "client-only": "0.0.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "node": ">=8" } }, - "node_modules/stylis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", - "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", - "license": "MIT" - }, - "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==", + "node_modules/pkg-dir/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==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/pkg-dir/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==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "p-limit": "^2.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/symbol-observable": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", - "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", + "node_modules/pkg-dir/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==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10" + "node": ">=8" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.8.0" } }, - "node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, + "license": "MIT", "bin": { - "terser": "bin/terser" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 6" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } + "peer": true }, - "node_modules/terser-webpack-plugin/node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": ">= 10.13.0" + "node": ">=6" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], "license": "MIT" }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/raw-body": { + "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==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 0.8" } }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "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==", "dev": true, "license": "MIT" }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "node_modules/readonly-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==", + "license": "Apache-2.0" + }, + "node_modules/redeyed": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "esprima": "~4.0.0" } }, - "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==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, + "license": "MIT", + "optional": true, + "peer": true + }, + "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==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/require-from-string": { + "version": "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==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", "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" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": "*" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "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==", "dev": true, "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", - "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.14" + "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/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "license": "BSD-3-Clause" - }, - "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==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=10" } }, - "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==", + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^7.0.0" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=8.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" + "queue-microtask": "^1.2.2" } }, - "node_modules/tr46/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", "bin": { - "tree-kill": "cli.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "node_modules/set-cookie-parser": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz", + "integrity": "sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } + "peer": true }, - "node_modules/ts-jest": { - "version": "29.2.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", - "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "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==", "dev": true, "license": "MIT", "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" - }, - "bin": { - "ts-jest": "cli.js" + "shebang-regex": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/ts-loader": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", - "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=12.0.0" + "node": ">=14" }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ts-loader/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==", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ts-loader/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==", + "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==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "BSD-3-Clause", "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/ts-loader/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/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==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "engines": { - "node": ">= 8" + "node": ">= 10.x" } }, - "node_modules/ts-loader/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==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "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==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "escape-string-regexp": "^2.0.0" }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/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==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "node_modules/starknet": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/starknet/-/starknet-6.11.0.tgz", + "integrity": "sha512-u50KrGDi9fbu1Ogu7ynwF/tSeFlp3mzOg1/Y5x50tYFICImo3OfY4lOz9OtYDk404HK4eUujKkhov9tG7GAKlg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } + "@noble/curves": "~1.4.0", + "@noble/hashes": "^1.4.0", + "@scure/base": "~1.1.3", + "@scure/starknet": "~1.0.0", + "abi-wan-kanabi": "^2.2.2", + "fetch-cookie": "^3.0.0", + "get-starknet-core": "^4.0.0-next.3", + "isomorphic-fetch": "^3.0.0", + "lossless-json": "^4.0.1", + "pako": "^2.0.4", + "starknet-types-07": "npm:@starknet-io/types-js@^0.7.7", + "ts-mixer": "^6.0.3", + "url-join": "^4.0.1" } }, - "node_modules/ts-node/node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "node_modules/starknet-types-07": { + "name": "@starknet-io/types-js", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.7.tgz", + "integrity": "sha512-WLrpK7LIaIb8Ymxu6KF/6JkGW1sso988DweWu7p5QY/3y7waBIiPvzh27D9bX5KIJNRDyOoOVoHVEKYUYWZ/RQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "node_modules/starknet/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "@noble/hashes": "1.4.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz", - "integrity": "sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA==", + "node_modules/starknet/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tsconfig-paths": "^4.1.2" + "peer": true, + "engines": { + "node": ">= 16" }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">= 0.8" } }, - "node_modules/tsconfig-paths-webpack-plugin/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==", + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.19" + } + }, + "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==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsconfig-paths-webpack-plugin/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==", + "node_modules/string-width-cjs": { + "name": "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==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/tsconfig-paths-webpack-plugin/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/string-width-cjs/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==", "dev": true, "license": "MIT" }, - "node_modules/tsconfig-paths-webpack-plugin/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==", + "node_modules/string-width-cjs/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==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "license": "0BSD" - }, - "node_modules/tsx": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", - "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", - "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", - "cpu": [ - "ppc64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/tsx/node_modules/@esbuild/android-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", - "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", - "cpu": [ - "arm" - ], + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/tsx/node_modules/@esbuild/android-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", - "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", - "cpu": [ - "arm64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/tsx/node_modules/@esbuild/android-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", - "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", - "cpu": [ - "x64" - ], + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", - "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", - "cpu": [ - "arm64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsx/node_modules/@esbuild/darwin-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", - "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", - "cpu": [ - "x64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", - "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", - "cpu": [ - "arm64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", - "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/symbol-observable": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=18" + "node": ">=0.10" } }, - "node_modules/tsx/node_modules/@esbuild/linux-arm": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", - "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", - "cpu": [ - "arm" - ], + "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==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/tsx/node_modules/@esbuild/linux-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", - "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", - "cpu": [ - "arm64" - ], + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "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": ">=18" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tsx/node_modules/@esbuild/linux-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", - "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", - "cpu": [ - "ia32" - ], + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tsx/node_modules/@esbuild/linux-loong64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", - "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", - "cpu": [ - "loong64" - ], + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.0.tgz", + "integrity": "sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" }, - "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", - "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", - "cpu": [ - "mips64el" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", - "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", - "cpu": [ - "ppc64" - ], + "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==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8.0" } }, - "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", - "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", - "cpu": [ - "riscv64" - ], + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">=0.6" } }, - "node_modules/tsx/node_modules/@esbuild/linux-s390x": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", - "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", - "cpu": [ - "s390x" - ], + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/tsx/node_modules/@esbuild/linux-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", - "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", - "cpu": [ - "x64" - ], + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "peer": true, "engines": { - "node": ">=18" + "node": ">= 4.0.0" } }, - "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", - "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", - "cpu": [ - "x64" - ], + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } + "peer": true }, - "node_modules/tsx/node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", - "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", - "cpu": [ - "arm64" - ], + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "bin": { + "tree-kill": "cli.js" } }, - "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", - "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", - "cpu": [ - "x64" - ], + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], "engines": { - "node": ">=18" + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/tsx/node_modules/@esbuild/sunos-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", - "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", - "cpu": [ - "x64" - ], + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "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" + }, + "bin": { + "ts-jest": "cli.js" + }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/win32-arm64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", - "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", - "cpu": [ - "arm64" - ], + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } + "peer": true }, - "node_modules/tsx/node_modules/@esbuild/win32-ia32": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", - "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", - "cpu": [ - "ia32" - ], + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", - "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", - "cpu": [ - "x64" - ], + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } + "peer": true }, - "node_modules/tsx/node_modules/esbuild": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", - "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.1", - "@esbuild/android-arm": "0.23.1", - "@esbuild/android-arm64": "0.23.1", - "@esbuild/android-x64": "0.23.1", - "@esbuild/darwin-arm64": "0.23.1", - "@esbuild/darwin-x64": "0.23.1", - "@esbuild/freebsd-arm64": "0.23.1", - "@esbuild/freebsd-x64": "0.23.1", - "@esbuild/linux-arm": "0.23.1", - "@esbuild/linux-arm64": "0.23.1", - "@esbuild/linux-ia32": "0.23.1", - "@esbuild/linux-loong64": "0.23.1", - "@esbuild/linux-mips64el": "0.23.1", - "@esbuild/linux-ppc64": "0.23.1", - "@esbuild/linux-riscv64": "0.23.1", - "@esbuild/linux-s390x": "0.23.1", - "@esbuild/linux-x64": "0.23.1", - "@esbuild/netbsd-x64": "0.23.1", - "@esbuild/openbsd-arm64": "0.23.1", - "@esbuild/openbsd-x64": "0.23.1", - "@esbuild/sunos-x64": "0.23.1", - "@esbuild/win32-arm64": "0.23.1", - "@esbuild/win32-ia32": "0.23.1", - "@esbuild/win32-x64": "0.23.1" - } + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -14327,24 +11947,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typescript": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", - "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -14356,15 +11962,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.8.0.tgz", - "integrity": "sha512-BjIT/VwJ8+0rVO01ZQ2ZVnjE1svFBiRczcpr1t1Yxt7sT25VSbPfrJtDsQ8uQTy2pilX5nI9gwxhUyLULNentw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.10.0.tgz", + "integrity": "sha512-YIu230PeN7z9zpu/EtqCIuRVHPs4iSlqW6TEvjbyDAE3MZsSl2RXBo+5ag+lbABCG8sFM1WVKEXhlQ8Ml8A3Fw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.8.0", - "@typescript-eslint/parser": "8.8.0", - "@typescript-eslint/utils": "8.8.0" + "@typescript-eslint/eslint-plugin": "8.10.0", + "@typescript-eslint/parser": "8.10.0", + "@typescript-eslint/utils": "8.10.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -14398,14 +12004,74 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 10.0.0" } }, "node_modules/unpipe": { @@ -14459,386 +12125,99 @@ "punycode": "^2.1.0" } }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "peer": true }, "node_modules/url-parse": { "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "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/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", "dependencies": { - "iconv-lite": "0.6.3" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=10.12.0" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "makeerror": "1.0.12" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/whatwg-fetch": { + "version": "3.6.20", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz", + "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - } + "peer": true }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/which": { @@ -14857,13 +12236,6 @@ "node": ">= 8" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -15054,6 +12426,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -15070,23 +12443,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, "node_modules/xstream": { "version": "11.14.0", "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", @@ -15194,6 +12550,8 @@ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=6" } @@ -15211,19 +12569,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zod": { "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", @@ -15233,9 +12578,54 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "packages/client": { + "name": "@nillion/client-vms2", + "version": "0.1.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.1.0", + "@connectrpc/connect": "^2.0.0-beta.1", + "@connectrpc/connect-web": "^2.0.0-beta.1", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@nillion/client-wasm": "0.2.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@noble/secp256k1": "^2.1.0", + "bs58": "^6.0.0", + "debug": "^4.3.7", + "uuid": "^10.0.0", + "zod": "^3.23.8" + }, + "devDependencies": { + "@bufbuild/buf": "^1.44.0", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@jest/globals": "^29.7.0", + "@types/debug": "^4.1.12", + "@types/uuid": "^10.0.0", + "browserslist": "^4.24.0", + "dotenv": "^16.4.5", + "esbuild-plugin-browserslist": "^0.15.0", + "jest": "^29.7.0", + "ts-jest": "^29.2.5" + } + }, "packages/client-core": { "name": "@nillion/client-core", "version": "0.1.0", + "extraneous": true, "license": "MIT", "dependencies": { "@nillion/client-wasm": "0.1.0", @@ -15252,6 +12642,7 @@ "packages/client-payments": { "name": "@nillion/client-payments", "version": "0.1.0", + "extraneous": true, "license": "MIT", "dependencies": { "@bufbuild/protobuf": "^2.1.0", @@ -15274,6 +12665,7 @@ "packages/client-react-hooks": { "name": "@nillion/client-react-hooks", "version": "0.1.0", + "extraneous": true, "license": "MIT", "dependencies": { "@nillion/client-vms": "0.1.0", @@ -15291,31 +12683,76 @@ "packages/client-vms": { "name": "@nillion/client-vms", "version": "0.1.0", + "extraneous": true, "license": "MIT", "dependencies": { - "@nillion/client-core": "0.1.0", - "@nillion/client-payments": "0.1.0", + "@bufbuild/protobuf": "^2.1.0", + "@connectrpc/connect": "^2.0.0-beta.1", + "@connectrpc/connect-web": "^2.0.0-beta.1", + "@cosmjs/proto-signing": "^0.32.4", + "@cosmjs/stargate": "^0.32.4", + "@nillion/client-wasm": "0.2.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0", + "@noble/secp256k1": "^2.1.0", + "bs58": "^6.0.0", "debug": "^4.3.7", + "uuid": "^10.0.0", "zod": "^3.23.8" }, "devDependencies": { + "@bufbuild/buf": "^1.44.0", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@jest/globals": "^29.7.0", + "@keplr-wallet/types": "^0.12.140", "@types/debug": "^4.1.12", + "@types/uuid": "^10.0.0", "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" + "dotenv": "^16.4.5", + "esbuild-plugin-browserslist": "^0.15.0", + "jest": "^29.7.0", + "ts-jest": "^29.2.5" } }, - "packages/client-wasm": { - "name": "@nillion/client-wasm", + "packages/client-vms2": { + "name": "@nillion/client-vms2", "version": "0.1.0", - "license": "Apache-2.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "@bufbuild/protobuf": "^2.1.0", + "@connectrpc/connect": "^2.0.0-beta.1", + "@connectrpc/connect-web": "^2.0.0-beta.1", + "@nillion/client-payments": "0.1.0", + "@nillion/client-wasm2": "0.2.0", + "debug": "^4.3.7", + "ts-jest": "^29.2.5", + "zod": "^3.23.8" + }, "devDependencies": { + "@bufbuild/buf": "^1.44.0", + "@bufbuild/protoc-gen-es": "^2.1.0", + "@jest/globals": "^29.7.0", + "@types/debug": "^4.1.12", "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" + "esbuild-plugin-browserslist": "^0.15.0", + "jest": "^29.7.0" } }, + "packages/client-wasm": { + "name": "@nillion/client-wasm", + "version": "0.2.0", + "extraneous": true + }, + "packages/client-wasm2": { + "name": "@nillion/client-wasm2", + "version": "0.2.0", + "extraneous": true + }, "packages/fixture": { "name": "@nillion/fixture", "version": "0.1.0", + "extraneous": true, "license": "MIT", "devDependencies": { "@sec-ant/readable-stream": "^0.5.0", @@ -15327,156 +12764,6 @@ "tsx": "^4.19.1", "yargs": "^17.7.2" } - }, - "packages/fixture/node_modules/@sec-ant/readable-stream": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.5.0.tgz", - "integrity": "sha512-bOLqESDm3Q3yP8/K7rLEn9MzQkexFqQMN8wdfGbGoJkhXBW/UV4u7YnHlvyfVMul91//OL5z5nS239jQEVa0PA==", - "dev": true, - "license": "MIT" - }, - "packages/fixture/node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/execa": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.4.0.tgz", - "integrity": "sha512-yKHlle2YGxZE842MERVIplWwNH5VYmqqcPFgtnlU//K8gxuFFXu0pwd/CrfXTumFpeEiufsP7+opT/bPJa1yVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.3", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.0", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "packages/fixture/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/get-stream/node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true, - "license": "MIT" - }, - "packages/fixture/node_modules/human-signals": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz", - "integrity": "sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "packages/fixture/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/fixture/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index 1ba792b..21077a2 100644 --- a/package.json +++ b/package.json @@ -7,49 +7,36 @@ "node": ">=20" }, "workspaces": [ - "packages/client-wasm", - "packages/client-core", - "packages/client-payments", - "packages/client-vms", - "packages/client-react-hooks", - "packages/fixture", - "examples/nextjs" + "client-vms", + "client-wasm" ], "devDependencies": { "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@eslint/compat": "^1.2.0", "@eslint/js": "^9.12.0", + "@eslint/json": "^0.5.0", + "@eslint/markdown": "^6.2.1", "@types/debug": "^4.1.12", - "@types/jasmine": "^5.1.4", "@types/jest": "^29.5.13", "browserslist": "^4.24.0", "concurrently": "^9.0.1", - "copy-webpack-plugin": "^12.0.2", "esbuild": "^0.24.0", "esbuild-plugin-browserslist": "^0.15.0", "eslint": "^9.12.0", + "eslint-plugin-jest": "^28.8.3", "eslint-plugin-simple-import-sort": "^12.1.1", "eslint-plugin-tsdoc": "^0.3.0", "express-http-proxy": "^2.1.1", "glob": "^11.0.0", - "globals": "^15.10.0", + "globals": "^15.11.0", "husky": "^9.1.6", - "jasmine-browser-runner": "^2.5.0", - "jasmine-core": "^5.3.0", "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", "lint-staged": "^15.2.10", - "node-fetch": "^3.3.2", "prettier": "^3.3.3", "ts-jest": "^29.2.5", - "ts-loader": "^9.5.1", - "ts-node": "^10.9.2", - "tsconfig-paths-webpack-plugin": "^4.1.0", - "typescript": "^5.6.2", - "typescript-eslint": "^8.8.0", - "webpack": "^5.95.0", - "webpack-cli": "^5.1.4" + "typescript": "^5.6.3", + "typescript-eslint": "^8.10.0" }, "scripts": { "prepare": "husky" diff --git a/packages/client-core/README.md b/packages/client-core/README.md deleted file mode 100644 index 929b3f6..0000000 --- a/packages/client-core/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# @nillion/client-core - -- [Source code](https://github.com/NillionNetwork/client-ts) -- [Reference Docs](https://nillion.pub/client-ts) diff --git a/packages/client-core/jasmine.config.mjs b/packages/client-core/jasmine.config.mjs deleted file mode 100644 index 65d8e53..0000000 --- a/packages/client-core/jasmine.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildJasmineBaseConfig } from "../resources/jasmine.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildJasmineBaseConfig(packageBaseDir), -}; diff --git a/packages/client-core/package.json b/packages/client-core/package.json deleted file mode 100644 index 1950d5f..0000000 --- a/packages/client-core/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "@nillion/client-core", - "license": "MIT", - "author": "devsupport@nillion.com", - "version": "0.1.0", - "homepage": "https://nillion.pub/client-ts", - "repository": { - "type": "git", - "url": "git+https://github.com/NillionNetwork/client-ts.git" - }, - "type": "module", - "exports": { - ".": { - "types": "./src/index.ts", - "import": "./dist/index.mjs" - } - }, - "scripts": { - "clean": "rm -rf dist dist-test", - "build": "node esbuild.config.mjs", - "build:watch": "node esbuild.config.mjs --watch", - "test": "npx jasmine-browser-runner runSpecs --config=jasmine.config.mjs", - "test:build": "npx webpack --config webpack.config.mjs", - "test:build:watch": "npx webpack --config webpack.config.mjs --watch", - "test:serve": "npx jasmine-browser-runner serve --config=jasmine.config.mjs" - }, - "dependencies": { - "@nillion/client-wasm": "0.1.0", - "debug": "^4.3.7", - "effect": "3.9.0", - "zod": "^3.23.8" - }, - "devDependencies": { - "@types/debug": "^4.1.12", - "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" - }, - "files": [ - "dist", - "src" - ] -} diff --git a/packages/client-core/src/configs.ts b/packages/client-core/src/configs.ts deleted file mode 100644 index 2c865d1..0000000 --- a/packages/client-core/src/configs.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { z } from "zod"; - -import { ChainId, ClusterId, Multiaddr, Url } from "./types"; - -export const NamedNetwork = z.enum(["photon", "devnet"]); -export type NamedNetwork = z.infer; - -export const NamedNetworkConfig = { - devnet: { - clusterId: ClusterId.parse("9e68173f-9c23-4acc-ba81-4f079b639964"), - bootnodes: [ - Multiaddr.parse( - "/ip4/127.0.0.1/tcp/54936/ws/p2p/12D3KooWMvw1hEqm7EWSDEyqTb6pNetUVkepahKY6hixuAuMZfJS", - ), - ], - nilChainId: ChainId.parse("nillion-chain-devnet"), - nilChainEndpoint: Url.parse("http://127.0.0.1:48102"), - }, - photon: { - clusterId: ClusterId.parse("b13880d3-dde8-4a75-a171-8a1a9d985e6c"), - bootnodes: [ - Multiaddr.parse( - "/dns/node-1.testnet-photon.nillion-network.nilogy.xyz/tcp/14211/wss/p2p/12D3KooWCfFYAb77NCjEk711e9BVe2E6mrasPZTtAjJAPtVAdbye", - ), - ], - nilChainId: ChainId.parse("nillion-chain-testnet-1"), - nilChainEndpoint: Url.parse( - "https://rpc.testnet.nilchain-rpc-proxy.nilogy.xyz", - ), - }, -}; diff --git a/packages/client-core/src/error.ts b/packages/client-core/src/error.ts deleted file mode 100644 index c22baf5..0000000 --- a/packages/client-core/src/error.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface TaggedError extends Error { - readonly _tag: string; -} - -export const isTaggedError = (e: unknown): e is TaggedError => { - return e instanceof Error && "_tag" in e; -}; diff --git a/packages/client-core/src/index.ts b/packages/client-core/src/index.ts deleted file mode 100644 index 6fe26d2..0000000 --- a/packages/client-core/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -export * from "./configs"; -export * from "./error"; -export * from "./init"; -export * from "./nada"; -export * from "./operation"; -export * from "./result"; -export * from "./type-guards"; -export * from "./types"; -export * from "./wasm"; diff --git a/packages/client-core/src/init.ts b/packages/client-core/src/init.ts deleted file mode 100644 index d7f08cc..0000000 --- a/packages/client-core/src/init.ts +++ /dev/null @@ -1,70 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "./logger"; - -declare global { - interface Window { - __NILLION: NillionGlobal | undefined; - } - - // eslint-disable-next-line no-var - var __NILLION: NillionGlobal | undefined; -} - -export interface NillionGlobal { - initialized: boolean; - disableLogging: () => void; - enableLogging: () => void; - enableWasmLogging: () => void; - enableTelemetry: (addr: string) => void; -} - -const supportedEnvironmentGuard = (): true | never => { - if (typeof globalThis.window === "undefined") { - const message = "Init error: Only browser environments are supported."; - Log(message); - throw new Error(message); - } - return true; -}; - -const dedupInitGuard = (): boolean => { - const wasInitialised = Boolean(globalThis.__NILLION?.initialized); - if (wasInitialised) { - Log("Init warning: Nillion init called more than once."); - } - return wasInitialised; -}; - -export async function init(): Promise { - supportedEnvironmentGuard(); - if (dedupInitGuard()) { - Log("Already initialised. Noop."); - return; - } - - const result = await Wasm.default(); - result.__wbindgen_start(); - - globalThis.__NILLION = { - initialized: true, - disableLogging: () => { - Log(`Disabling logging.`); - localStorage.debug = ""; - }, - enableLogging: () => { - localStorage.debug = "nillion:*"; - Log(`Logging namespaces: ${localStorage.debug as string}.`); - }, - enableWasmLogging: () => { - Wasm.NillionClient.enable_remote_logging(); - Log("Remote logging initialised."); - }, - enableTelemetry: (addr: string) => { - Wasm.NillionClient.enable_tracking(addr); - Log("Telemetry reported enabled."); - }, - }; - - Log("Wasm initialized."); -} diff --git a/packages/client-core/src/logger.ts b/packages/client-core/src/logger.ts deleted file mode 100644 index 11e5d2b..0000000 --- a/packages/client-core/src/logger.ts +++ /dev/null @@ -1,4 +0,0 @@ -import debug from "debug"; - -export const Log = debug("nillion:core"); -Log.log = console.log.bind(console); diff --git a/packages/client-core/src/nada/index.ts b/packages/client-core/src/nada/index.ts deleted file mode 100644 index 9e8074b..0000000 --- a/packages/client-core/src/nada/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./program"; -export * from "./store-acl"; -export * from "./value"; -export * from "./values"; diff --git a/packages/client-core/src/nada/program.ts b/packages/client-core/src/nada/program.ts deleted file mode 100644 index 383799e..0000000 --- a/packages/client-core/src/nada/program.ts +++ /dev/null @@ -1,56 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "../logger"; -import { PartyId, PartyName, ProgramId } from "../types"; - -export class ProgramBindings { - private constructor( - public id: ProgramId, - public inputs = new Map(), - public outputs = new Map(), - ) {} - - addInputParty(name: PartyName, id: PartyId): this { - Log(`add input party name=${name} with id=${id}`); - if (this.inputs.has(name)) { - Log(`input party exists, overwriting`); - } - this.inputs.set(name, id); - return this; - } - - addOutputParty(name: PartyName, id: PartyId): this { - Log(`add output party name=${name} with id=${id}`); - if (this.outputs.has(name)) { - Log(`output party exists, overwriting`); - } - this.outputs.set(name, id); - return this; - } - - into(): Wasm.ProgramBindings { - if (this.inputs.size === 0 && this.outputs.size === 0) { - Log("program has no inputs our outputs"); - } - - const program = new Wasm.ProgramBindings(this.id); - for (const [name, id] of this.inputs) { - program.add_input_party(name, id); - } - - for (const [name, id] of this.outputs) { - program.add_output_party(name, id); - } - - return program; - } - - toString(): string { - return `ProgramBindings(id=${this.id})`; - } - - static create(id: string): ProgramBindings { - const parsed = ProgramId.parse(id); - return new ProgramBindings(parsed); - } -} diff --git a/packages/client-core/src/nada/store-acl.ts b/packages/client-core/src/nada/store-acl.ts deleted file mode 100644 index 4ee8830..0000000 --- a/packages/client-core/src/nada/store-acl.ts +++ /dev/null @@ -1,116 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "../logger"; -import { ProgramId, UserId } from "../types"; - -export interface StoreAclForUser { - user: UserId; - delete: boolean; - retrieve: boolean; - update: boolean; - compute: boolean; -} - -export class StoreAcl { - private constructor( - public computeAllowed = new Map>(), - public deleteAllowed = new Set(), - public retrieveAllowed = new Set(), - public updateAllowed = new Set(), - ) {} - - allowCompute(users: UserId | UserId[], program: ProgramId): this { - const listOfUsers = Array.isArray(users) ? users : [users]; - for (const user of listOfUsers) { - const programs = this.computeAllowed.get(user) ?? new Set(); - programs.add(program); - this.computeAllowed.set(user, programs); - } - return this; - } - - allowDelete(users: UserId | UserId[]): this { - if (Array.isArray(users)) { - users.forEach((u) => this.deleteAllowed.add(u)); - } else { - this.deleteAllowed.add(users); - } - return this; - } - - allowRetrieve(users: UserId | UserId[]): this { - if (Array.isArray(users)) { - users.forEach((u) => this.retrieveAllowed.add(u)); - } else { - this.retrieveAllowed.add(users); - } - return this; - } - - allowUpdate(users: UserId | UserId[]): this { - if (Array.isArray(users)) { - users.forEach((u) => this.updateAllowed.add(u)); - } else { - this.updateAllowed.add(users); - } - return this; - } - - getPermissionsByUser(user: UserId): StoreAclForUser { - return { - user, - compute: this.computeAllowed.has(user), - delete: this.deleteAllowed.has(user), - retrieve: this.retrieveAllowed.has(user), - update: this.updateAllowed.has(user), - }; - } - - isComputeAllowed(user: UserId, program: ProgramId): boolean { - const permissions = this.computeAllowed.get(user); - return permissions ? permissions.has(program) : false; - } - - isDeleteAllowed(user: UserId): boolean { - return this.deleteAllowed.has(user); - } - - isRetrieveAllowed(user: UserId): boolean { - return this.retrieveAllowed.has(user); - } - - isUpdateAllowed(user: UserId): boolean { - return this.updateAllowed.has(user); - } - - into(): Wasm.Permissions { - const wasm = new Wasm.Permissions(); - wasm.add_update_permissions(Array.from(this.updateAllowed)); - wasm.add_delete_permissions(Array.from(this.deleteAllowed)); - wasm.add_retrieve_permissions(Array.from(this.retrieveAllowed)); - - const computeAcl = new Map(); - this.computeAllowed.forEach((programs, user) => { - computeAcl.set(user, Array.from(programs)); - }); - - wasm.add_compute_permissions(computeAcl); - return wasm; - } - - static from(_wasm: Wasm.Permissions): StoreAcl { - Log("Converting Wasm.Permissions into StoreAcl is not yet supported."); - return StoreAcl.create(); - } - - static create(): StoreAcl { - return new StoreAcl(); - } - - static createDefaultForUser(user: UserId): StoreAcl { - return new StoreAcl() - .allowRetrieve(user) - .allowUpdate(user) - .allowDelete(user); - } -} diff --git a/packages/client-core/src/nada/value.ts b/packages/client-core/src/nada/value.ts deleted file mode 100644 index a54b202..0000000 --- a/packages/client-core/src/nada/value.ts +++ /dev/null @@ -1,208 +0,0 @@ -import { z } from "zod"; - -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "../logger"; -import { isBigInt, isNumber, isUint8Array } from "../type-guards"; - -export const NadaValueType = z.enum([ - "SecretString", // not a native nada type but provided for improved DX - "SecretBlob", - "SecretBoolean", - "PublicInteger", - "PublicIntegerUnsigned", - "SecretInteger", - "SecretIntegerUnsigned", -]); -export type NadaValueType = z.infer; - -export const SecretString = z.string().brand<"SecretString">(); -export type SecretString = z.infer; - -export const SecretBlob = z.instanceof(Uint8Array).brand<"SecretBlob">(); -export type SecretBlob = z.infer; - -export const SecretBoolean = z.boolean().brand<"SecretBoolean">(); -export type SecretBoolean = z.infer; - -export const PublicInteger = z.number().int().brand<"PublicInteger">(); -export type PublicInteger = z.infer; - -export const PublicIntegerUnsigned = z - .bigint() - .nonnegative() - .brand<"PublicIntegerUnsigned">(); -export type PublicIntegerUnsigned = z.infer; - -export const SecretInteger = z.number().int().brand<"SecretInteger">(); -export type SecretInteger = z.infer; - -export const SecretIntegerUnsigned = z - .bigint() - .nonnegative() - .brand<"SecretIntegerUnsigned">(); -export type SecretIntegerUnsigned = z.infer; - -export type NadaPrimitiveValue = Uint8Array | string | number | bigint; - -export class NadaValue { - private constructor( - public type: NadaValueType, - public data: NadaPrimitiveValue, - ) {} - - toString(): string { - return `NadaValue(type=${this.type})`; - } - - toWasm(): Wasm.NadaValue { - switch (this.type) { - case NadaValueType.enum.SecretString: { - const data = new TextEncoder().encode(this.data as string); - return Wasm.NadaValue.new_secret_blob(data); - } - - case NadaValueType.enum.SecretBlob: { - return Wasm.NadaValue.new_secret_blob(this.data as Uint8Array); - } - - case NadaValueType.enum.SecretBoolean: { - throw new Error( - "return Wasm.NadaValue.new_secret_boolean(this.data as boolean);", - ); - } - - case NadaValueType.enum.PublicInteger: { - return Wasm.NadaValue.new_public_integer(String(this.data)); - } - - case NadaValueType.enum.PublicIntegerUnsigned: { - return Wasm.NadaValue.new_public_unsigned_integer(String(this.data)); - } - - case NadaValueType.enum.SecretInteger: { - return Wasm.NadaValue.new_secret_integer(String(this.data)); - } - - case NadaValueType.enum.SecretIntegerUnsigned: { - return Wasm.NadaValue.new_secret_unsigned_integer(String(this.data)); - } - } - } - - static fromWasm(type: NadaValueType, wasm: Wasm.NadaValue): NadaValue { - switch (type) { - case NadaValueType.enum.SecretString: { - const copiedFromMemory = Array.from(wasm.to_byte_array()); - const values = Uint8Array.from(copiedFromMemory); - const data = new TextDecoder().decode(values); - return NadaValue.createSecretString(data); - } - - case NadaValueType.enum.SecretBlob: { - const copiedFromMemory = Array.from(wasm.to_byte_array()); - const values = Uint8Array.from(copiedFromMemory); - return NadaValue.createSecretBlob(values); - } - - case NadaValueType.enum.SecretBoolean: { - throw new Error("return NadaValue.createSecretBoolean(wasm.xyz())"); - } - - case NadaValueType.enum.PublicInteger: { - const data = wasm.to_integer(); - return NadaValue.createPublicInteger(Number(data)); - } - - case NadaValueType.enum.PublicIntegerUnsigned: { - const data = wasm.to_integer(); - return NadaValue.createPublicIntegerUnsigned(BigInt(data)); - } - - case NadaValueType.enum.SecretInteger: { - const data = wasm.to_integer(); - return NadaValue.createSecretInteger(Number(data)); - } - - case NadaValueType.enum.SecretIntegerUnsigned: { - const data = wasm.to_integer(); - return NadaValue.createSecretIntegerUnsigned(BigInt(data)); - } - } - } - - static fromPrimitive(args: { - data: NadaPrimitiveValue; - secret: boolean; - }): NadaValue { - const { secret } = args; - let data = args.data; - - if (typeof data === "string") { - data = new TextEncoder().encode(data); - } - - if (isUint8Array(data)) { - if (!secret) { - Log("NadaValue.fromPrimitive data: Uint8Array is always secret"); - } - return this.createSecretBlob(data); - } else if (isBigInt(data)) { - // bigint is treated as signed only - return secret - ? this.createSecretIntegerUnsigned(data) - : this.createPublicIntegerUnsigned(data); - } else if (isNumber(data)) { - return secret - ? this.createSecretInteger(data) - : this.createPublicInteger(data); - } else { - throw new Error( - "Invalid NadaValue.fromPrimitive() arguments: " + JSON.stringify(args), - ); - } - } - - static createSecretString(data: string): NadaValue { - return new NadaValue( - NadaValueType.enum.SecretString, - SecretString.parse(data), - ); - } - - static createSecretBlob(data: SecretBlob | Uint8Array): NadaValue { - return new NadaValue(NadaValueType.enum.SecretBlob, SecretBlob.parse(data)); - } - - static createPublicInteger(data: PublicInteger | number): NadaValue { - return new NadaValue( - NadaValueType.enum.PublicInteger, - PublicInteger.parse(data), - ); - } - - static createSecretInteger(data: SecretInteger | number): NadaValue { - return new NadaValue( - NadaValueType.enum.SecretInteger, - SecretInteger.parse(data), - ); - } - - static createPublicIntegerUnsigned( - data: PublicIntegerUnsigned | bigint, - ): NadaValue { - return new NadaValue( - NadaValueType.enum.PublicIntegerUnsigned, - PublicIntegerUnsigned.parse(data), - ); - } - - static createSecretIntegerUnsigned( - data: SecretIntegerUnsigned | bigint, - ): NadaValue { - return new NadaValue( - NadaValueType.enum.SecretIntegerUnsigned, - SecretIntegerUnsigned.parse(data), - ); - } -} diff --git a/packages/client-core/src/nada/values.ts b/packages/client-core/src/nada/values.ts deleted file mode 100644 index 201c531..0000000 --- a/packages/client-core/src/nada/values.ts +++ /dev/null @@ -1,44 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "../logger"; -import { NamedValue } from "../types"; -import { IntoWasm } from "../wasm"; -import { NadaValue } from "./value"; - -export class NadaValues implements IntoWasm { - private constructor(private values: Map = new Map()) {} - - get length() { - return this.values.size; - } - - insert(name: NamedValue, value: NadaValue): this { - Log(`Inserting into NadaValues ${name}=`, value); - if (this.values.get(name)) { - Log(`Insertion overwrote: ${name}`); - } - this.values.set(name, value); - return this; - } - - toString(): string { - const values = Array.from(this.values); - const stringified = values - .map(([key, value]) => `${key}=${value.toString()}`) - .join(","); - return `NadaValues([${stringified}])`; - } - - into(): Wasm.NadaValues { - const wasmValues = new Wasm.NadaValues(); - for (const [key, value] of this.values) { - const wasmValue = value.toWasm(); - wasmValues.insert(key, wasmValue); - } - return wasmValues; - } - - static create(): NadaValues { - return new NadaValues(); - } -} diff --git a/packages/client-core/src/operation/compute.ts b/packages/client-core/src/operation/compute.ts deleted file mode 100644 index ff0c030..0000000 --- a/packages/client-core/src/operation/compute.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { NadaValues, ProgramBindings } from "../nada"; -import { ComputeOutputId, StoreId } from "../types"; -import { IntoWasmQuotableOperation } from "../wasm"; -import { Operation, OperationType } from "./operation"; - -export interface ComputeArgs { - bindings: ProgramBindings; - values: NadaValues; - storeIds: StoreId[]; -} - -export class Compute implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.Compute; - - constructor(public args: ComputeArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.compute( - this.args.bindings.id, - this.args.values.into(), - ); - } - - toString(): string { - return `Operation(type="Compute")`; - } -} - -export interface FetchComputeOutputArgs { - id: ComputeOutputId; -} - -export class FetchComputeOutput { - type = OperationType.enum.FetchComputeOutput; - - constructor(public args: FetchComputeOutputArgs) {} - - toString(): string { - return `Operation(type="FetchComputeOutput")`; - } -} diff --git a/packages/client-core/src/operation/index.ts b/packages/client-core/src/operation/index.ts deleted file mode 100644 index 22122f4..0000000 --- a/packages/client-core/src/operation/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./compute"; -export * from "./operation"; -export * from "./program"; -export * from "./store-acl"; -export * from "./values"; diff --git a/packages/client-core/src/operation/operation.ts b/packages/client-core/src/operation/operation.ts deleted file mode 100644 index 4ea54ef..0000000 --- a/packages/client-core/src/operation/operation.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { z } from "zod"; - -import { - Compute, - ComputeArgs, - FetchComputeOutput, - FetchComputeOutputArgs, -} from "./compute"; -import { StoreProgram, StoreProgramArgs } from "./program"; -import { - FetchAclArgs, - FetchStoreAcl, - SetAclArgs, - SetStoreAcl, -} from "./store-acl"; -import { - DeleteValue, - DeleteValueArgs, - FetchValue, - FetchValueArgs, - StoreValue, - StoreValueArgs, - UpdateValue, - UpdateValueArgs, -} from "./values"; - -export interface Operation { - type: OperationType; -} - -export const OperationType = z.enum([ - "StoreProgram", - "Compute", - "FetchComputeOutput", - - "StoreValue", - "FetchValue", - "UpdateValue", - "DeleteValue", - - "FetchStoreAcl", - "SetStoreAcl", -]); -export type OperationType = z.infer; - -export const Operation = { - storeProgram: (args: StoreProgramArgs) => new StoreProgram(args), - compute: (args: ComputeArgs) => new Compute(args), - fetchComputeOutput: (args: FetchComputeOutputArgs) => - new FetchComputeOutput(args), - - storeValues: (args: StoreValueArgs) => new StoreValue(args), - fetchValue: (args: FetchValueArgs) => new FetchValue(args), - updateValues: (args: UpdateValueArgs) => new UpdateValue(args), - deleteValues: (args: DeleteValueArgs) => new DeleteValue(args), - - fetchAcl: (args: FetchAclArgs) => new FetchStoreAcl(args), - setAcl: (args: SetAclArgs) => new SetStoreAcl(args), -}; diff --git a/packages/client-core/src/operation/program.ts b/packages/client-core/src/operation/program.ts deleted file mode 100644 index 1ead05c..0000000 --- a/packages/client-core/src/operation/program.ts +++ /dev/null @@ -1,24 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { ProgramName } from "../types"; -import { IntoWasmQuotableOperation } from "../wasm"; -import { Operation, OperationType } from "./operation"; - -export interface StoreProgramArgs { - name: ProgramName; - program: Uint8Array; -} - -export class StoreProgram implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.StoreProgram; - - constructor(public args: StoreProgramArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.store_program(this.args.program); - } - - toString(): string { - return `Operation(type="StoreProgram")`; - } -} diff --git a/packages/client-core/src/operation/store-acl.ts b/packages/client-core/src/operation/store-acl.ts deleted file mode 100644 index a11fbf0..0000000 --- a/packages/client-core/src/operation/store-acl.ts +++ /dev/null @@ -1,43 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { StoreAcl } from "../nada"; -import { StoreId } from "../types"; -import { IntoWasmQuotableOperation } from "../wasm"; -import { Operation, OperationType } from "./operation"; - -export interface SetAclArgs { - id: StoreId; - acl: StoreAcl; -} - -export class SetStoreAcl implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.SetStoreAcl; - - constructor(public args: SetAclArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.update_permissions(); - } - - toString(): string { - return `Operation(type="SetStoreAcl")`; - } -} - -export interface FetchAclArgs { - id: StoreId; -} - -export class FetchStoreAcl implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.FetchStoreAcl; - - constructor(public args: FetchAclArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.retrieve_permissions(); - } - - toString(): string { - return `Operation(type="FetchStoreAcl")`; - } -} diff --git a/packages/client-core/src/operation/values.ts b/packages/client-core/src/operation/values.ts deleted file mode 100644 index 0f548bc..0000000 --- a/packages/client-core/src/operation/values.ts +++ /dev/null @@ -1,80 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { NadaValues, NadaValueType, StoreAcl } from "../nada"; -import { Days, NamedValue, StoreId } from "../types"; -import { IntoWasmQuotableOperation } from "../wasm"; -import { Operation, OperationType } from "./operation"; - -export interface FetchValueArgs { - id: StoreId; - name: NamedValue; - type: NadaValueType; -} - -export class FetchValue implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.FetchValue; - - constructor(public args: FetchValueArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.retrieve_value(); - } - - toString(): string { - return `Operation(type="FetchValue")`; - } -} - -export interface DeleteValueArgs { - id: StoreId; -} - -export class DeleteValue { - type = OperationType.enum.DeleteValue; - - constructor(public args: DeleteValueArgs) {} - - toString(): string { - return `Operation(type="DeleteValue")`; - } -} - -export interface StoreValueArgs { - values: NadaValues; - ttl: Days; - acl?: StoreAcl; -} - -export class StoreValue implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.StoreValue; - - constructor(public args: StoreValueArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.store_values(this.args.values.into(), this.args.ttl); - } - - toString(): string { - return `Operation(type="StoreValue")`; - } -} - -export interface UpdateValueArgs { - id: StoreId; - values: NadaValues; - ttl: Days; -} - -export class UpdateValue implements Operation, IntoWasmQuotableOperation { - type = OperationType.enum.UpdateValue; - - constructor(public args: UpdateValueArgs) {} - - intoQuotable(): Wasm.Operation { - return Wasm.Operation.update_values(this.args.values.into(), this.args.ttl); - } - - toString(): string { - return `Operation(type="UpdateValue")`; - } -} diff --git a/packages/client-core/src/result.ts b/packages/client-core/src/result.ts deleted file mode 100644 index 361ebe3..0000000 --- a/packages/client-core/src/result.ts +++ /dev/null @@ -1,83 +0,0 @@ -import { Effect as E, pipe } from "effect"; -import { ZodError } from "zod"; - -import { isTaggedError } from "./error"; - -/** - * The outcome of a failable operation. This type represents either a successful result or an error. - * - * - If the operation was successful, `result.ok` contains the success value, and `result.err` is `null`. - * - If the operation failed, `result.err` contains the error value, and `result.ok` is `null`. - * - * @typeParam S - The type of the success value. This represents the data or result produced by the operation if it succeeds. - * @typeParam E - The type of the error value. This represents the error or exception encountered by the operation if it fails. - * - * @example - * ```ts - * declare result: Result - * if(result.err) { - * const err = result.err // err has type Error - * console.log("the operation failed: ", result.err.message) - * return - * } - * const id = result.ok // id has type StoreId - * ``` - */ -export type Result = { ok: S; err: null } | { ok: null; err: E }; - -export const effectToResultAsync = ( - effect: E.Effect, -): Promise> => { - return pipe( - effect, - E.match({ - onSuccess: (ok) => ({ ok, err: null }), - onFailure: (err) => unwindError(err), - }), - E.runPromise, - ); -}; - -export const effectToResultSync = ( - effect: E.Effect, -): Result => { - return pipe( - effect, - E.match({ - onSuccess: (ok) => ({ ok, err: null }), - onFailure: (err) => unwindError(err), - }), - E.runSync, - ); -}; - -const unwindError = ( - err: unknown, -): Result | never => { - // If the error is untagged then its unexpected - if (isTaggedError(err)) { - const root = findRootErrorCause(err as Error); - - if (root instanceof ZodError) { - console.error("Operation failed with parsing error:", root.message); - console.error("Stack trace: ", root.stack); - } else { - console.error("Operation failed with root error: ", root.message); - console.error("Stack trace: ", root.stack); - } - - return { err: root as E, ok: null }; - } - console.error(err); - throw err; -}; - -const findRootErrorCause = (err: Error): Error => { - // these error stacks are shallow so recursion depth is minimal - const { cause } = err; - if (!(cause instanceof Error)) { - return err; - } else { - return findRootErrorCause(cause); - } -}; diff --git a/packages/client-core/src/type-guards.ts b/packages/client-core/src/type-guards.ts deleted file mode 100644 index 5c5471d..0000000 --- a/packages/client-core/src/type-guards.ts +++ /dev/null @@ -1,41 +0,0 @@ -export const isMap = (value: unknown): value is Map => { - return isDefinedAndNotNull(value) && value instanceof Map; -}; - -export const isObjectLiteral = (value: unknown): value is object => { - return isDefinedAndNotNull(value) && value?.constructor === Object; -}; - -export const isUint8Array = (value: unknown): value is Uint8Array => { - return isDefinedAndNotNull(value) && value instanceof Uint8Array; -}; - -export const isBigInt = (value: unknown): value is bigint => { - return isDefinedAndNotNull(value) && typeof value === "bigint"; -}; - -export const isNumber = (value: unknown): value is number => { - return isDefinedAndNotNull(value) && typeof value === "number"; -}; - -export const isBoolean = (value: unknown): value is boolean => { - return isDefinedAndNotNull(value) && typeof value === "boolean"; -}; - -export const isString = (value: unknown): value is string => { - return isDefinedAndNotNull(value) && typeof value === "string"; -}; - -export const isNull = (value: unknown): value is null => { - return value === null; -}; - -export const isUndefined = (value: unknown): value is undefined => { - return value === undefined; -}; - -export const isDefinedAndNotNull = ( - value: T | undefined | null, -): value is T => { - return value !== undefined && value !== null; -}; diff --git a/packages/client-core/src/types.ts b/packages/client-core/src/types.ts deleted file mode 100644 index f8ea4b7..0000000 --- a/packages/client-core/src/types.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { z } from "zod"; - -import * as Wasm from "@nillion/client-wasm"; - -// Required lifting for type resolution -export const TxHash = z.string().length(64).base64().brand<"TxHash">(); -export type TxHash = z.infer; - -export const ActionId = z.string().uuid().brand<"ActionId">(); -export type ActionId = z.infer; - -export const ChainId = z.string().min(1).brand<"ChainId">(); -export type ChainId = z.infer; - -export const ClusterId = z.string().uuid().brand<"ClusterId">(); -export type ClusterId = z.infer; - -export const ClusterDescriptor = z - .object({ - id: ClusterId, - kappa: z.number(), - // TODO(tim): has rust type parties: HashSet - // parties: z.array(z.unknown()), - prime: z.string(), - }) - .brand<"ClusterDescriptor">(); -export type ClusterDescriptor = z.infer; - -export const ComputeOutputId = z.string().uuid().brand<"ComputeOutputId">(); -export type ComputeOutputId = z.infer; - -export const Days = z.number().int().min(1).brand<"Days">(); -export type Days = z.infer; - -export const NamedValue = z.string().min(1).brand<"NamedValue">(); -export type NamedValue = z.infer; - -export const NilChainAddressPrefix = "nillion"; -export const NilChainAddress = z - .string() - .length(46) - .startsWith(NilChainAddressPrefix) - .brand<"Address">(); -export type NilChainAddress = z.infer; - -export const NodeSeed = z.string().min(1).brand<"NodeSeed">(); -export type NodeSeed = z.infer; - -export const OperationCost = z - .object({ - base: z.number(), - compute: z.number(), - congestion: z.number(), - preprocessing: z.number(), - storage: z.number(), - total: z.number(), - }) - .brand<"OperationCost">(); - -export type OperationCost = z.infer; - -export const PartyName = z.string().min(1).brand<"PartyName">(); -export type PartyName = z.infer; - -export const ProgramName = z.string().min(1).brand<"ProgramName">(); -export type ProgramName = z.infer; - -export const PartyId = z.string().length(52).brand<"PartyId">(); -export type PartyId = z.infer; - -export const PriceQuote = z - .object({ - expires: z.date(), - nonce: z.instanceof(Uint8Array), - cost: OperationCost, - inner: z.custom(), - }) - .brand<"PriceQuote">(); -export type PriceQuote = z.infer; - -// "namespace/friendly-name" -export const ProgramId = z.string().min(1).brand<"ProgramId">(); -export type ProgramId = z.infer; - -export const PaymentReceipt = z - .object({ - quote: PriceQuote, - hash: TxHash, - }) - .brand<"PaymentReceipt">(); -export type PaymentReceipt = z.infer; - -export const PrivateKeyBase16 = z - .string() - .length(64) - .brand<"PrivateKeyBase16">(); -export type PrivateKeyBase16 = z.infer; - -export const UserId = z.string().min(87).max(89).brand<"UserId">(); -export type UserId = z.infer; - -export const UserSeed = z.string().min(1).brand<"UserSeed">(); -export type UserSeed = z.infer; - -export const Url = z.string().url().brand<"Url">(); -export type Url = z.infer; - -// source: libp2p-wasm-ext websocket.js -const multiaddrRegex = - /^\/(ip4|ip6|dns4|dns6|dns)\/(.*?)\/tcp\/(.*?)\/(ws|wss|x-parity-ws\/(.*)|x-parity-wss\/(.*))(|\/p2p\/[a-zA-Z0-9]+)$/; -export const Multiaddr = z.string().regex(multiaddrRegex).brand<"Multiaddr">(); -export type Multiaddr = z.infer; - -export const StoreId = z.string().uuid().brand<"StoreId">(); -export type StoreId = z.infer; - -export const Token = { - Unil: "unil", - asUnil: (amount: number | string) => `${String(amount)}${Token.Unil}`, -}; diff --git a/packages/client-core/src/wasm.ts b/packages/client-core/src/wasm.ts deleted file mode 100644 index f926b8c..0000000 --- a/packages/client-core/src/wasm.ts +++ /dev/null @@ -1,39 +0,0 @@ -import * as Wasm from "@nillion/client-wasm"; - -import { OperationCost, PaymentReceipt, PriceQuote } from "./types"; - -export interface IntoWasmQuotableOperation { - intoQuotable: () => Wasm.Operation; -} - -export interface IntoWasm { - into: () => T; -} - -export interface FromWasm { - from: () => T; -} - -export const priceQuoteFrom = (wasm: Wasm.PriceQuote): PriceQuote => { - return PriceQuote.parse({ - expires: wasm.expires_at, - nonce: wasm.nonce, - cost: OperationCost.parse({ - base: Number(wasm.cost.base_fee), - compute: Number(wasm.cost.compute_fee), - congestion: Number(wasm.cost.congestion_fee), - preprocessing: Number(wasm.cost.preprocessing_fee), - storage: Number(wasm.cost.storage_fee), - total: Number(wasm.cost.total), - }), - inner: wasm, - }); -}; - -export const priceQuoteInto = (quote: PriceQuote): Wasm.PriceQuote => - quote.inner; - -export const paymentReceiptInto = ( - receipt: PaymentReceipt, -): Wasm.PaymentReceipt => - new Wasm.PaymentReceipt(receipt.quote.inner, receipt.hash); diff --git a/packages/client-core/tests/core.test.ts b/packages/client-core/tests/core.test.ts deleted file mode 100644 index 87cf6ec..0000000 --- a/packages/client-core/tests/core.test.ts +++ /dev/null @@ -1,196 +0,0 @@ -import { - init, - NadaPrimitiveValue, - NadaValue, - NadaValues, - NadaValueType, - NamedValue, - ProgramBindings, - PublicInteger, - PublicIntegerUnsigned, - SecretBlob, - SecretBoolean, - SecretInteger, - SecretIntegerUnsigned, - SecretString, -} from "@nillion/client-core"; -import * as Wasm from "@nillion/client-wasm"; - -const SUITE_NAME = `@nillion/client-core > initialization`; - -describe(SUITE_NAME, () => { - beforeAll(() => { - console.log(`*** Start ${SUITE_NAME} ***`); - }); - - afterAll(() => { - console.log(`*** Finish ${SUITE_NAME} *** \n\n`); - }); - - describe("init", () => { - it("handles multiple init() calls", async () => { - await init(); - await init(); - expect(true).toBeTruthy(); - }); - - it("window.__NILLION should be defined", () => { - const nillion = globalThis.__NILLION!; - expect(nillion).toBeDefined(); - expect(nillion.initialized).toBeTruthy(); - expect(nillion.enableTelemetry).toBeDefined(); - expect(nillion.enableLogging).toBeDefined(); - expect(nillion.enableWasmLogging).toBeDefined(); - }); - }); - - describe("primitive type guards", () => { - it("SecretString rejects non strings", () => { - expect(() => SecretString.parse(1)).toThrow(); - }); - - it("SecretBlob rejects array-like invalid input", () => { - expect(() => SecretBlob.parse([1, 2, 3])).toThrow(); - }); - - it("SecretBlob rejects string invalid input", () => { - expect(() => SecretBlob.parse("")).toThrow(); - }); - - it("SecretBoolean rejects non boolean", () => { - expect(() => SecretBoolean.parse("")).toThrow(); - expect(() => SecretBoolean.parse(1)).toThrow(); - expect(() => SecretBoolean.parse([])).toThrow(); - }); - - it("PublicInteger rejects decimals", () => { - expect(() => PublicInteger.parse(1.1)).toThrow(); - expect(() => PublicInteger.parse(-1.1)).toThrow(); - }); - - it("PublicIntegerUnsigned rejects negative integer", () => { - expect(() => PublicIntegerUnsigned.parse(-11)).toThrow(); - expect(() => PublicIntegerUnsigned.parse(-1)).toThrow(); - }); - - it("SecretInteger rejects decimals", () => { - expect(() => SecretInteger.parse(4.2)).toThrow(); - expect(() => SecretInteger.parse(-0.1)).toThrow(); - }); - - it("SecretIntegerUnsigned rejects < 0", () => { - expect(() => SecretIntegerUnsigned.parse(-11)).toThrow(); - expect(() => SecretIntegerUnsigned.parse(-1)).toThrow(); - }); - }); - - describe("nada value encode and decode", () => { - it("SecretBlob", () => { - const expected = new TextEncoder().encode("hi mom"); - const secret = NadaValue.createSecretBlob(expected); - - const asWasm = secret.toWasm(); - expect(asWasm).toBeInstanceOf(Wasm.NadaValue); - expect(asWasm.to_byte_array()).toEqual(secret.data as Uint8Array); - - const asTs = NadaValue.fromWasm(NadaValueType.enum.SecretBlob, asWasm); - expect(asTs.data).toEqual(secret.data); - }); - - it("SecretString", () => { - const expected = "hi mom"; - const secret = NadaValue.createSecretString(expected); - - const asWasm = secret.toWasm(); - expect(asWasm).toBeInstanceOf(Wasm.NadaValue); - expect(asWasm.to_byte_array()).toEqual( - new TextEncoder().encode(secret.data as string), - ); - - const asTs = NadaValue.fromWasm(NadaValueType.enum.SecretString, asWasm); - expect(asTs.data).toEqual(secret.data); - }); - - function encodeAndDecodeIntegerLike( - data: T, - type: NadaValueType, - build: (value: T) => NadaValue, - ) { - const value = build(data); - const asWasm = value.toWasm(); - - expect(asWasm).toBeInstanceOf(Wasm.NadaValue); - expect(asWasm.to_integer()).toBe(String(value.data)); - - const asTs = NadaValue.fromWasm(type, asWasm); - expect(asTs.data).toEqual(value.data); - } - - it("SecretInteger", () => { - encodeAndDecodeIntegerLike( - SecretInteger.parse(-42), - NadaValueType.enum.SecretInteger, - (v) => NadaValue.createSecretInteger(v), - ); - }); - - it("SecretIntegerUnsigned", () => { - encodeAndDecodeIntegerLike( - SecretIntegerUnsigned.parse(42n), - NadaValueType.enum.SecretIntegerUnsigned, - (v) => NadaValue.createSecretIntegerUnsigned(v), - ); - }); - - it("PublicInteger", () => { - encodeAndDecodeIntegerLike( - PublicInteger.parse(-100), - NadaValueType.enum.PublicInteger, - (v) => NadaValue.createPublicInteger(v), - ); - }); - - it("PublicIntegerUnsigned", () => { - encodeAndDecodeIntegerLike( - PublicIntegerUnsigned.parse(42n), - NadaValueType.enum.PublicIntegerUnsigned, - (v) => NadaValue.createPublicIntegerUnsigned(v), - ); - }); - }); - - describe("nada values set", () => { - it("empty set", () => { - const secrets = NadaValues.create(); - - const asWasm = secrets.into(); - expect(secrets.length).toHaveSize(0); - expect(asWasm).toBeInstanceOf(Wasm.NadaValues); - expect(asWasm.length).toHaveSize(0); - }); - - it("build a set of secrets", () => { - const secrets = NadaValues.create(); - secrets.insert( - NamedValue.parse("one"), - NadaValue.createSecretInteger(1337), - ); - secrets.insert( - NamedValue.parse("two"), - NadaValue.createSecretInteger(1337), - ); - - const asWasm = secrets.into(); - expect(secrets).toHaveSize(2); - expect(asWasm).toBeInstanceOf(Wasm.NadaValues); - expect(asWasm).toHaveSize(2); - }); - }); - describe("program bindings", () => { - it("create a program binding", () => { - const program = ProgramBindings.create("aaaa/simple"); - const asWasm = program.into(); - expect(asWasm).toBeInstanceOf(Wasm.ProgramBindings); - }); - }); -}); diff --git a/packages/client-core/tsconfig.json b/packages/client-core/tsconfig.json deleted file mode 100644 index 9536a0f..0000000 --- a/packages/client-core/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/packages/client-core/webpack.config.mjs b/packages/client-core/webpack.config.mjs deleted file mode 100644 index c44accf..0000000 --- a/packages/client-core/webpack.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildWebpackBaseConfig } from "../resources/webpack.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildWebpackBaseConfig(packageBaseDir), -}; diff --git a/packages/client-payments/README.md b/packages/client-payments/README.md deleted file mode 100644 index fbb3418..0000000 --- a/packages/client-payments/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# @nillion/client-payments - -- [Source code](https://github.com/NillionNetwork/client-ts) -- [Reference Docs](https://nillion.pub/client-ts) diff --git a/packages/client-payments/esbuild.config.mjs b/packages/client-payments/esbuild.config.mjs deleted file mode 100644 index a3e6d23..0000000 --- a/packages/client-payments/esbuild.config.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { main } from "../resources/esbuild.base.config.mjs"; - -const config = { - bundle: true, - entryPoints: ["src/index.ts"], - external: ["crypto", "@nillion/client-core"], - format: "esm", - logLevel: "info", - outfile: "dist/index.mjs", -}; - -await main(config); diff --git a/packages/client-payments/jasmine.config.mjs b/packages/client-payments/jasmine.config.mjs deleted file mode 100644 index 65d8e53..0000000 --- a/packages/client-payments/jasmine.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildJasmineBaseConfig } from "../resources/jasmine.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildJasmineBaseConfig(packageBaseDir), -}; diff --git a/packages/client-payments/package.json b/packages/client-payments/package.json deleted file mode 100644 index 0cad9d5..0000000 --- a/packages/client-payments/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@nillion/client-payments", - "license": "MIT", - "author": "devsupport@nillion.com", - "version": "0.1.0", - "homepage": "https://nillion.pub/client-ts", - "repository": { - "type": "git", - "url": "git+https://github.com/NillionNetwork/client-ts.git" - }, - "type": "module", - "exports": { - ".": { - "types": "./src/index.ts", - "import": "./dist/index.mjs" - } - }, - "scripts": { - "clean": "rm -rf dist dist-test", - "build": "node esbuild.config.mjs", - "build:watch": "node esbuild.config.mjs --watch", - "build:proto": "npx buf generate", - "test": "npx jasmine-browser-runner runSpecs --config=jasmine.config.mjs", - "test:build": "npx webpack --config webpack.config.mjs", - "test:build:watch": "npx webpack --config webpack.config.mjs --watch", - "test:serve": "npx jasmine-browser-runner serve --config=jasmine.config.mjs" - }, - "dependencies": { - "@bufbuild/protobuf": "^2.1.0", - "@cosmjs/proto-signing": "^0.32.4", - "@cosmjs/stargate": "^0.32.4", - "@nillion/client-core": "0.1.0", - "debug": "^4.3.7", - "effect": "3.9.0", - "zod": "^3.23.8" - }, - "devDependencies": { - "@bufbuild/buf": "^1.44.0", - "@bufbuild/protoc-gen-es": "^2.1.0", - "@keplr-wallet/types": "^0.12.130", - "@types/debug": "^4.1.12", - "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" - }, - "files": [ - "dist", - "src" - ] -} diff --git a/packages/client-payments/src/client.ts b/packages/client-payments/src/client.ts deleted file mode 100644 index 19eb5aa..0000000 --- a/packages/client-payments/src/client.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { create } from "@bufbuild/protobuf"; -import { OfflineSigner, Registry } from "@cosmjs/proto-signing"; -import { - GasPrice, - SigningStargateClient, - SigningStargateClientOptions, -} from "@cosmjs/stargate"; -import { Effect as E } from "effect"; - -import { - NilChainAddress, - PriceQuote, - Token, - TxHash, -} from "@nillion/client-core"; - -import { - AccountNotFoundError, - PaymentError, - UnknownPaymentError, -} from "./errors"; -import { MsgPayForSchema } from "./gen-proto/nillion/meta/v1/msg_pay_for_pb"; -import { MsgPayForCompatWrapper } from "./grpc-compat"; -import { Log } from "./logger"; -import { NilChainProtobufTypeUrl, PaymentClientConfig } from "./types"; -import { getKeplr } from "./wallet"; - -export class PaymentsClient { - private _client: SigningStargateClient | undefined = undefined; - private _address: NilChainAddress | undefined = undefined; - private _signer: OfflineSigner | undefined = undefined; - - private constructor(private _config: PaymentClientConfig) {} - - get ready(): boolean { - return ( - Boolean(this._client) && Boolean(this._address) && Boolean(this._signer) - ); - } - - get client(): SigningStargateClient { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._client!; - } - - get signer(): OfflineSigner { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._signer!; - } - - get address(): NilChainAddress { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._address!; - } - - private isReadyGuard(): void { - if (!this.ready) { - const message = - "NilChainPaymentClient not ready. Call `await client.connect()`."; - Log(message); - throw new Error(message); - } - } - - async connect(): Promise { - const { endpoint, chainId } = this._config; - const registry = new Registry(); - - registry.register(NilChainProtobufTypeUrl, MsgPayForCompatWrapper); - - this._signer = this._config.signer; - if (!this._signer) { - // default to keplr signer - const keplr = await getKeplr(); - if (keplr) { - await keplr.enable(chainId); - this._signer = keplr.getOfflineSigner(chainId); - } else { - throw new Error("No signer provided and keplr not found."); - } - } - - const accounts = await this._signer.getAccounts(); - if (!accounts[0]) { - throw new Error("No accounts found for provided signer."); - } - - this._address = NilChainAddress.parse(accounts[0].address); - - const options: SigningStargateClientOptions = { - gasPrice: GasPrice.fromString(Token.asUnil(0.0)), - registry, - }; - - this._client = await SigningStargateClient.connectWithSigner( - endpoint, - this._signer, - options, - ); - - Log("Connected to chain using address %s", this._address); - return this.ready; - } - - pay(quote: PriceQuote): E.Effect { - return E.Do.pipe( - E.let("transferMessage", () => - create(MsgPayForSchema, { - fromAddress: this.address, - resource: quote.nonce, - amount: [{ denom: Token.Unil, amount: String(quote.cost.total) }], - }), - ), - E.flatMap(({ transferMessage }) => - E.tryPromise(() => - this.client.signAndBroadcast( - this.address, - [{ typeUrl: NilChainProtobufTypeUrl, value: transferMessage }], - "auto", - ), - ), - ), - E.map((result) => { - const hash = TxHash.parse(result.transactionHash); - Log("Paid %d unil, tx hash %s", quote.cost.total, hash); - return hash; - }), - E.mapError((e) => { - const cause = e.cause; - if (cause instanceof Error) { - const message = cause.message; - if (message.includes("does not exist on chain")) { - Log("Payment failed because account not found %s.", this.address); - return new AccountNotFoundError(this.address, cause); - } - } - Log("Payment failed unknown error %O.", e); - return new UnknownPaymentError(e); - }), - ); - } - - static create = (config: PaymentClientConfig) => new PaymentsClient(config); -} diff --git a/packages/client-payments/src/errors.ts b/packages/client-payments/src/errors.ts deleted file mode 100644 index 0a941ea..0000000 --- a/packages/client-payments/src/errors.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { TaggedError } from "@nillion/client-core"; - -export class AccountNotFoundError extends Error implements TaggedError { - readonly _tag = "AccountNotFoundError" as const; - - constructor(account: string, cause?: unknown) { - const message = `Account ${account} not found or it has no funds.`; - super(message, { cause }); - this.name = "AccountNotFoundError"; - } -} - -export class UnknownPaymentError extends Error { - readonly _tag = "UnknownPaymentError" as const; - - constructor(cause?: unknown) { - super("UnknownPaymentError", { cause }); - this.name = "UnknownPaymentError"; - } -} - -export type PaymentError = AccountNotFoundError | UnknownPaymentError; diff --git a/packages/client-payments/src/index.ts b/packages/client-payments/src/index.ts deleted file mode 100644 index 5c0d712..0000000 --- a/packages/client-payments/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./client"; -export * from "./errors"; -export * from "./types"; -export * from "./wallet"; -export type { OfflineSigner } from "@cosmjs/proto-signing"; diff --git a/packages/client-payments/src/logger.ts b/packages/client-payments/src/logger.ts deleted file mode 100644 index a1460ee..0000000 --- a/packages/client-payments/src/logger.ts +++ /dev/null @@ -1,4 +0,0 @@ -import debug from "debug"; - -export const Log = debug("nillion:payments"); -Log.log = console.log.bind(console); diff --git a/packages/client-payments/src/types.ts b/packages/client-payments/src/types.ts deleted file mode 100644 index ac4e1c8..0000000 --- a/packages/client-payments/src/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OfflineSigner } from "@cosmjs/proto-signing"; -import { z } from "zod"; - -import { ChainId, Url } from "@nillion/client-core"; - -export const PaymentClientConfig = z.object({ - chainId: ChainId, - endpoint: Url, - signer: z.custom().optional(), -}); - -export type PaymentClientConfig = z.infer; - -export const NilChainProtobufTypeUrl = "/nillion.meta.v1.MsgPayFor"; diff --git a/packages/client-payments/tests/payments.test.ts b/packages/client-payments/tests/payments.test.ts deleted file mode 100644 index 19a11d9..0000000 --- a/packages/client-payments/tests/payments.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { effectToResultAsync, PriceQuote } from "@nillion/client-core"; -import { PaymentClientConfig, PaymentsClient } from "@nillion/client-payments"; -import { expectOk, getPaymentsClientEnvConfig } from "@nillion/test-utils"; - -const SUITE_NAME = "@nillion/client-payments"; - -describe(SUITE_NAME, () => { - let client: PaymentsClient; - let config: PaymentClientConfig; - - beforeAll(() => { - console.log(`*** Start ${SUITE_NAME} ***`); - }); - - afterAll(() => { - console.log(`*** Finish ${SUITE_NAME} *** \n\n`); - }); - - it("can create NilChainPaymentClient", async () => { - config = await getPaymentsClientEnvConfig(); - client = PaymentsClient.create(config); - expect(client).toBeDefined(); - }); - - it("throws if not connected but access attempted", () => { - try { - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - client.address; - expect(true).toBeFalse(); - } catch (e: unknown) { - // @ts-expect-error for test simplicity - expect(e.message).toContain("NilChainPaymentClient not ready"); - } - }); - - it("can connect", async () => { - await client.connect(); - expect(client.address).toBe( - "nillion14x7fd38t8wvh2ypy2fph270wkv8g754tjcny5j", - ); - }); - - it("can make a payment", async () => { - const quote = PriceQuote.parse({ - expires: new Date(), - nonce: new Uint8Array(), - cost: { - base: 1, - compute: 1, - congestion: 1, - preprocessing: 1, - storage: 1, - total: 5, - }, - }); - - const effect = client.pay(quote); - const result = await effectToResultAsync(effect); - expectOk(result); - }); -}); diff --git a/packages/client-payments/tsconfig.json b/packages/client-payments/tsconfig.json deleted file mode 100644 index 9536a0f..0000000 --- a/packages/client-payments/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/packages/client-payments/webpack.config.mjs b/packages/client-payments/webpack.config.mjs deleted file mode 100644 index c44accf..0000000 --- a/packages/client-payments/webpack.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildWebpackBaseConfig } from "../resources/webpack.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildWebpackBaseConfig(packageBaseDir), -}; diff --git a/packages/client-react-hooks/LICENSE b/packages/client-react-hooks/LICENSE deleted file mode 100644 index bcdb445..0000000 --- a/packages/client-react-hooks/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Nillion - -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/client-vms/LICENSE b/packages/client-vms/LICENSE deleted file mode 100644 index bcdb445..0000000 --- a/packages/client-vms/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 Nillion - -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/client-vms/README.md b/packages/client-vms/README.md deleted file mode 100644 index 342cebb..0000000 --- a/packages/client-vms/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# @nillion/client-vms - -- [Source code](https://github.com/NillionNetwork/client-ts) -- [Reference Docs](https://nillion.pub/client-ts) diff --git a/packages/client-vms/esbuild.config.mjs b/packages/client-vms/esbuild.config.mjs deleted file mode 100644 index 44c9bc7..0000000 --- a/packages/client-vms/esbuild.config.mjs +++ /dev/null @@ -1,12 +0,0 @@ -import { main } from "../resources/esbuild.base.config.mjs"; - -const config = { - bundle: true, - entryPoints: ["src/index.ts"], - format: "esm", - logLevel: "info", - outfile: "dist/index.mjs", - packages: "external", -}; - -await main(config); diff --git a/packages/client-vms/jasmine.config.mjs b/packages/client-vms/jasmine.config.mjs deleted file mode 100644 index 65d8e53..0000000 --- a/packages/client-vms/jasmine.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildJasmineBaseConfig } from "../resources/jasmine.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildJasmineBaseConfig(packageBaseDir), -}; diff --git a/packages/client-vms/package.json b/packages/client-vms/package.json deleted file mode 100644 index ac970c2..0000000 --- a/packages/client-vms/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@nillion/client-vms", - "license": "MIT", - "author": "devsupport@nillion.com", - "version": "0.1.0", - "homepage": "https://nillion.pub/client-ts", - "repository": "https://github.com/NillionNetwork/client-ts", - "type": "module", - "exports": { - ".": { - "types": "./src/index.ts", - "import": "./dist/index.mjs" - } - }, - "scripts": { - "clean": "rm -rf dist dist-test", - "build": "node esbuild.config.mjs", - "build:watch": "node esbuild.config.mjs --watch", - "test": "npx jasmine-browser-runner runSpecs --config=jasmine.config.mjs", - "test:build": "npx webpack --config webpack.config.mjs", - "test:build:watch": "npx webpack --config webpack.config.mjs --watch", - "test:serve": "npx jasmine-browser-runner serve --config=jasmine.config.mjs" - }, - "dependencies": { - "@nillion/client-core": "0.1.0", - "@nillion/client-payments": "0.1.0", - "debug": "^4.3.7", - "zod": "^3.23.8" - }, - "devDependencies": { - "@types/debug": "^4.1.12", - "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" - }, - "files": [ - "dist", - "src" - ] -} diff --git a/packages/client-vms/src/client.ts b/packages/client-vms/src/client.ts deleted file mode 100644 index 7543fd1..0000000 --- a/packages/client-vms/src/client.ts +++ /dev/null @@ -1,674 +0,0 @@ -import { Effect as E, pipe } from "effect"; -import { UnknownException } from "effect/Cause"; -import { ZodError } from "zod"; - -import { - ActionId, - ClusterDescriptor, - ComputeOutputId, - Days, - effectToResultAsync, - IntoWasmQuotableOperation, - NadaPrimitiveValue, - NadaValue, - NadaValues, - NadaValueType, - NamedValue, - Operation, - OperationType, - PartyId, - PaymentReceipt, - PriceQuote, - ProgramBindings, - ProgramId, - ProgramName, - Result, - StoreAcl, - StoreId, - UserId, -} from "@nillion/client-core"; -import { PaymentClientConfig, PaymentsClient } from "@nillion/client-payments"; - -import { Log } from "./logger"; -import { toNadaValues } from "./nada"; -import { NilVmClient, NilVmClientConfig } from "./nilvm"; -import { NetworkConfig, StoreValueArgs, UserCredentials } from "./types"; - -/** - * NillionClient encapsulates {@link NilVmClient} and {@link PaymentsClient} to provide - * a single API for interacting with a [Nillion Network](https://docs.nillion.com/network). - * - * @example - * ```ts - * const client = NillionClient.create() - * client.setNetworkConfig(NamedNetworkConfig.photon) - * client.setUserCredentials({ - * userSeed: "unique-user-seed", - * signer: "keplr", - * }) - * await client.connect() - * ``` - */ -export class NillionClient { - private _vm: NilVmClient | undefined; - private _chain: PaymentsClient | undefined; - private _userConfig: UserCredentials | undefined; - private _networkConfig: NetworkConfig | undefined; - - /** - * The constructor is private to enforce use of {@link NillionClient.create}. - */ - // eslint-disable-next-line @typescript-eslint/no-empty-function - private constructor() {} - - /** - * If the client is ready to execute operations. - * - * @returns true if both the VM and Payments clients are ready; otherwise, false. - */ - public get ready(): boolean { - return Boolean(this._userConfig && this._vm?.ready && this._chain?.ready); - } - - /** - * Guarded access to the vm client. - * - * @throws Error if the client is not ready. - * @returns The initialized {@link NilVmClient} instance. - */ - public get vm(): NilVmClient { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._vm!; - } - - /** - * Guarded access to the payments' client. - * - * @throws Error if the client is not ready. - * @returns The initialized {@link PaymentsClient} instance. - */ - public get chain(): PaymentsClient { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._chain!; - } - - /** - * Set the client's {@link NetworkConfig}. - * - * This must be invoked before {@link NillionClient.connect}. - * - * @param config - {@link NetworkConfig} - */ - public setNetworkConfig(config: NetworkConfig) { - this._networkConfig = NetworkConfig.parse(config); - } - - /** - * Get the client's {@link NetworkConfig}. - * - */ - public get networkConfig(): NetworkConfig { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._networkConfig!; - } - - public setUserCredentials(config: UserCredentials) { - this._userConfig = UserCredentials.parse(config); - } - - public get userConfig(): UserCredentials { - this.isReadyGuard(); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return this._userConfig!; - } - - public get userId(): UserId { - return this.vm.userId; - } - - public get partyId(): PartyId { - return this.vm.partyId; - } - - /** - * This guards against access before initialization. NillionClient creation is sync, - * but PaymentClient and VmClient instantiation are async. - * - * @throws Error with message indicating the client is not ready. - */ - private isReadyGuard(): void { - if (!this.ready) { - const message = "NillionClient not initialiazed."; - Log(message); - throw new Error(message); - } - } - - /** - * Connect parses the provided config, initializes the PaymentsClient and VmClient, - * and then validates connections by querying the nilchain address and the Network's - * cluster descriptor. - * - * This method must be called before the client is used; subsequent calls are ignored. - * - * @returns A promise that resolves to true if the connection is successfully established. - */ - connect(): Promise { - if (this.ready) { - Log("NillionClient is already connected. Ignoring connect()."); - return Promise.resolve(this.ready); - } - - return pipe( - E.tryPromise(async () => { - const combined = { - ...this._userConfig, - ...this._networkConfig, - }; - Log("Config: %O", combined); - - const nilVmConfig = NilVmClientConfig.parse({ - bootnodes: combined.bootnodes, - clusterId: combined.clusterId, - userSeed: combined.userSeed, - nodeSeed: combined.nodeSeed, - }); - - const signer = - typeof combined.signer === "function" - ? await combined.signer() - : undefined; - - const nilChainConfig = PaymentClientConfig.parse({ - chainId: combined.nilChainId, - endpoint: combined.nilChainEndpoint, - signer, - }); - - this._vm = NilVmClient.create(nilVmConfig); - this._chain = PaymentsClient.create(nilChainConfig); - - await this._vm.connect(); - await this._chain.connect(); - - Log("NillionClient connected."); - return this.ready; - }), - E.mapError((error) => { - if (error instanceof ZodError) { - Log("Parsing error: %O", error.format()); - } else { - Log("Connection failed: %O", error); - } - }), - E.runPromise, - ); - } - - /** - * Disconnects the client. This function is a no-op and serves as a placeholder. - */ - disconnect(): Promise { - this._vm = undefined; - this._chain = undefined; - Log("Client disconnected"); - return Promise.resolve(); - } - - /** - * Stores values in the network. This function is friendlier than manually - * composing {@link NadaValues} from {@link NadaValue} because it takes care - * of converting from a key to primitive values map to Nada types automatically. - * - * @example - * ```ts - * declare client: NillionClient - * - * const id = await client.store({ - * values: { - * foo: 42, - * bar: "hello", - * }, - * ttl: 2 // 2 days, - * acl: StoreAcl.createDefaultForUser(client.vm.userId), - * }) - * ``` - * - * @see NillionClient.storeValues - * @param args - An object defining values, time-to-live and optional permissions. - * @returns A promise resolving to the {@link Result} of the store operation. - */ - async store(args: { - name: NamedValue | string; - value: NadaPrimitiveValue | StoreValueArgs; - ttl: Days | number; - acl?: StoreAcl; - }): Promise> { - return E.Do.pipe( - E.bind("values", () => - toNadaValues({ name: args.name, value: args.value }), - ), - E.flatMap(({ values }) => - E.tryPromise(() => - this.storeValues({ - values, - ttl: args.ttl as Days, - acl: args.acl, - }), - ), - ), - E.runPromise, - ); - } - - /** - * Retrieves a named Nada value from the network and de-serializes it as a - * native JS primitive value. This method is friendlier that NillionClient.fetchValue - * because it accepts and returns primitive values. - * - * @example - * ```ts - * declare client: NillionClient - * - * const response = await client.fetch({ id, name: "foo", type: "SecretInteger" }) - * - * if(response.ok) { - * const value = response.ok - * } - * ``` - * - * @param args - An object defining the store id, value name and the deserialization type. - * @returns A promise resolving to the {@link Result} of the fetch operation. - */ - fetch(args: { - id: StoreId | string; - name: NamedValue | string; - type: NadaValueType; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { path: ["client.fetch", "args.id"] }), - ), - ), - E.bind("name", () => - E.try(() => - NamedValue.parse(args.name, { path: ["client.fetch", "args.name"] }), - ), - ), - E.bind("type", () => - E.try(() => - NadaValueType.parse(args.type, { - path: ["client.fetch", "args.type"], - }), - ), - ), - E.flatMap(({ id, name, type }) => - E.tryPromise(async () => { - const result = await this.fetchValue({ - id, - name, - type, - }); - - if (result.err) { - Log( - "Fetch value failed for id=%s name=%s: %O", - id, - name, - result.err, - ); - throw result.err as Error; - } - return result.ok.data; - }), - ), - effectToResultAsync, - ); - } - - /** - * Updates values at the given store id. Similar to {@link NillionClient.store}, this - * function takes care of converting from primitive values to Nada types automatically. - * - * @param args - An Object with the store id, values and time-to-live. - * @returns A promise resolving to the update's unique action id in the network. - * @see NillionClient.updateValue - */ - update(args: { - id: StoreId | string; - name: NamedValue | string; - value: NadaPrimitiveValue | StoreValueArgs; - ttl: Days | number; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { path: ["client.update", "args.id"] }), - ), - ), - E.bind("ttl", () => - E.try(() => - Days.parse(args.ttl, { path: ["client.update", "args.ttl"] }), - ), - ), - E.bind("values", () => - toNadaValues({ name: args.name, value: args.value }), - ), - E.flatMap((args) => E.tryPromise(() => this.updateValue(args))), - E.runPromise, - ); - } - - /** - * Pay for the operation. - * - * Retrieves a quote from the leader, pays for it on nilchian and then returns a {@link PaymentReceipt}. - * - * @param args - An object containing the operation and its type. - * @returns An {@link E.Effect} that resolves to a {@link PaymentReceipt}. - */ - pay(args: { - operation: IntoWasmQuotableOperation & { type: OperationType }; - }): E.Effect { - return E.Do.pipe( - E.bind("quote", () => this.vm.fetchOperationQuote(args)), - E.bind("hash", ({ quote }) => this.chain.pay(quote)), - E.map(({ quote, hash }) => - PaymentReceipt.parse( - { - quote, - hash, - }, - { path: ["client.pay", "PaymentReceipt"] }, - ), - ), - E.mapError((e) => { - if (e instanceof UnknownException) return e; - else return new UnknownException(e); - }), - ); - } - - /** - * Invokes the specified program. - * - * @param args - An object containing program bindings, run-time values, and ids for values to be retrieved directly from StoreIds. - * @returns A promise resolving to the {@link ComputeOutputId} which will points to the program's output. - * @see NillionClient.fetchComputeOutput - */ - compute(args: { - bindings: ProgramBindings; - values: NadaValues; - storeIds: (StoreId | string)[]; - }): Promise> { - return E.Do.pipe( - E.bind("storeIds", () => - E.try(() => - args.storeIds.map((id) => - StoreId.parse(id, { path: ["client.compute", "args.ids.id"] }), - ), - ), - ), - E.let("operation", ({ storeIds }) => - Operation.compute({ - storeIds, - bindings: args.bindings, - values: args.values, - }), - ), - E.bind("receipt", (args) => this.pay(args)), - E.flatMap((args) => this.vm.compute(args)), - effectToResultAsync, - ); - } - - /** - * Fetches the result from a program execution. - * - * @param args - An object containing the {@link ComputeOutputId}. - * @returns A promise resolving to a Map of the program's output. - * @see NillionClient.compute - */ - fetchComputeOutput(args: { - id: ComputeOutputId | string; - }): Promise, UnknownException>> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - ComputeOutputId.parse(args.id, { - path: ["client.fetchComputeOutput", "args.id"], - }), - ), - ), - E.let("operation", ({ id }) => Operation.fetchComputeOutput({ id })), - E.flatMap(({ operation }) => this.vm.fetchComputeOutput(operation.args)), - effectToResultAsync, - ); - } - - /** - * Delete the {@link NadaValues} stored at {@link StoreId}. - * - * @param args - An object containing the {@link StoreId} to delete. - * @returns A promise resolving to the deleted {@link StoreId}. - */ - deleteValues(args: { - id: StoreId | string; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { path: ["client.deleteValues", "args.id"] }), - ), - ), - E.flatMap((args) => this.vm.deleteValues(args)), - effectToResultAsync, - ); - } - - /** - * Fetch network details. - * - * @returns A promise resolving to the network's {@link ClusterDescriptor}. - */ - fetchClusterInfo(): Promise> { - return pipe(this.vm.fetchClusterInfo(), effectToResultAsync); - } - - /** - * Asks the leader to quote the provided operation. - * - * @param args - An object containing the {@link Operation}. - * @returns A promise resolving to the {@link PriceQuote}. - * @see NillionClient.pay - */ - fetchOperationQuote(args: { - operation: IntoWasmQuotableOperation & { type: OperationType }; - }): Promise> { - return pipe(this.vm.fetchOperationQuote(args), effectToResultAsync); - } - - /** - * Fetch the {@link NamedValue} at {@link StoreId}. - * - * @param args - An object containing the {@link StoreId}, {@link NamedValue} and {@link NadaValueType}. - * @returns A promise resolving to the {@link Result} containing a `Map` where the keys are {@link NamedValue} and the values are {@link NadaValue}. - */ - fetchValue(args: { - id: StoreId; - name: NamedValue; - type: NadaValueType; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { path: ["client.fetchValue", "args.id"] }), - ), - ), - E.bind("name", () => - E.try(() => - NamedValue.parse(args.name, { - path: ["client.fetchValue", "args.name"], - }), - ), - ), - E.let("operation", ({ id, name }) => - Operation.fetchValue({ - id, - name, - type: args.type, - }), - ), - E.bind("receipt", (args) => this.pay(args)), - E.flatMap((args) => this.vm.fetchValue(args)), - effectToResultAsync, - ); - } - - /** - * Store a program in the network. - * - * @param args - An object containing the {@link ProgramName} and the program as a {@link Uint8Array}. - * @returns A promise resolving to the {@link Result} containing the {@link ProgramId}. - */ - storeProgram(args: { - name: ProgramName | string; - program: Uint8Array; - }): Promise> { - return E.Do.pipe( - E.bind("name", () => - E.try(() => - ProgramName.parse(args.name, { - path: ["client.storeProgram", "args.name"], - }), - ), - ), - E.let("operation", ({ name }) => - Operation.storeProgram({ name, program: args.program }), - ), - E.bind("receipt", ({ operation }) => this.pay({ operation })), - E.flatMap((args) => this.vm.storeProgram(args)), - effectToResultAsync, - ); - } - - /** - * Stores {@link NadaValues} in the network. - * - * @param args - An object containing the values, time-to-live, and optional permissions. - * @returns A promise resolving to the {@link Result} containing the store id. - */ - storeValues(args: { - values: NadaValues; - ttl: Days; - acl?: StoreAcl; - }): Promise> { - return E.Do.pipe( - E.bind("ttl", () => - E.try(() => - Days.parse(args.ttl, { - path: ["client.storeValues", "args.ttl"], - }), - ), - ), - E.let("operation", ({ ttl }) => - Operation.storeValues({ - values: args.values, - ttl, - acl: args.acl, - }), - ), - E.bind("receipt", (args) => this.pay(args)), - E.flatMap((args) => this.vm.storeValues(args)), - effectToResultAsync, - ); - } - - /** - * Updates the store id location with the provided values. - * - * @param args - An object containing the store id to update with updated values and time-to-live. - * @returns A promise resolving to the {@link Result} containing the {@link ActionId}. - */ - updateValue(args: { - id: StoreId; - values: NadaValues; - ttl: Days; - }): Promise> { - return E.Do.pipe( - E.let("operation", () => Operation.updateValues(args)), - E.bind("receipt", (args) => this.pay(args)), - E.flatMap((args) => this.vm.updateValues(args)), - effectToResultAsync, - ); - } - - /** - * Fetches a store id's permissions. - * - * @param args - An object containing the {@link StoreId}. - * @returns A promise resolving to the {@link Result} containing the {@link StoreAcl}. - */ - fetchStoreAcl(args: { - id: StoreId | string; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { - path: ["client.fetchStoreAcl", "args.id"], - }), - ), - ), - E.let("operation", ({ id }) => Operation.fetchAcl({ id })), - E.bind("receipt", ({ operation }) => this.pay({ operation })), - E.flatMap(({ operation, receipt }) => - this.vm.fetchStoreAcl({ operation, receipt }), - ), - effectToResultAsync, - ); - } - - /** - * Sets the access control list for a stored value. - * - * The existing Acl is overwritten. - * - * @param args - An object containing the {@link StoreId} and the new {@link StoreAcl}. - * @returns A promise resolving to the {@link Result} containing the {@link ActionId}. - */ - setStoreAcl(args: { - id: StoreId | string; - acl: StoreAcl; - }): Promise> { - return E.Do.pipe( - E.bind("id", () => - E.try(() => - StoreId.parse(args.id, { path: ["setStoreAcl", "args.id"] }), - ), - ), - E.let("operation", ({ id }) => Operation.setAcl({ id, acl: args.acl })), - E.bind("receipt", (args) => this.pay(args)), - E.flatMap((args) => this.vm.setStoreAcl(args)), - effectToResultAsync, - ); - } - - /** - * Create a {@link NillionClient}. - * - * This factory initializes a `NillionClient` ready to accept network and user configs. - * - * @returns An unconfigured instance of `NillionClient`. - * @see NillionClient.setNetworkConfig - * @see NillionClient.setUserCredentials - * @see NillionClient.connect - */ - static create = () => { - return new NillionClient(); - }; -} diff --git a/packages/client-vms/src/index.ts b/packages/client-vms/src/index.ts deleted file mode 100644 index edc957b..0000000 --- a/packages/client-vms/src/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -export * from "./client"; -export * from "./nada"; -export * from "./nilvm"; -export * from "./types"; -export type { NadaPrimitiveValue } from "@nillion/client-core"; -export { - NadaValue, - NadaValues, - NamedValue, - PrivateKeyBase16, - StoreId, -} from "@nillion/client-core"; diff --git a/packages/client-vms/src/nada.ts b/packages/client-vms/src/nada.ts deleted file mode 100644 index 8ffef82..0000000 --- a/packages/client-vms/src/nada.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Effect as E } from "effect"; - -import { - isObjectLiteral, - NadaPrimitiveValue, - NadaValue, - NadaValues, - NamedValue, -} from "@nillion/client-core"; - -import { StoreValueArgs } from "./types"; - -export const toNadaValues = (args: { - name: NamedValue | string; - value: NadaPrimitiveValue | StoreValueArgs; -}) => - E.try(() => { - const nadaValues = NadaValues.create(); - const name = NamedValue.parse(args.name, { - path: ["toNadaValues", "NamedValue"], - }); - const nadaValueArgs = isObjectLiteral(args.value) - ? (args.value as StoreValueArgs) - : { - secret: true, - data: args.value, - }; - const nadaValue = NadaValue.fromPrimitive(nadaValueArgs); - nadaValues.insert(name, nadaValue); - return nadaValues; - }); diff --git a/packages/client-vms/src/nilvm/client.ts b/packages/client-vms/src/nilvm/client.ts deleted file mode 100644 index 8ec0122..0000000 --- a/packages/client-vms/src/nilvm/client.ts +++ /dev/null @@ -1,330 +0,0 @@ -import { Effect as E } from "effect"; -import { UnknownException } from "effect/Cause"; -import { z } from "zod"; - -import { - ActionId, - ClusterDescriptor, - ClusterId, - Compute, - ComputeOutputId, - FetchStoreAcl, - FetchValue, - init, - IntoWasmQuotableOperation, - Multiaddr, - NadaPrimitiveValue, - NadaValue, - OperationType, - PartyId, - PaymentReceipt, - paymentReceiptInto, - PriceQuote, - priceQuoteFrom, - ProgramId, - SetStoreAcl, - StoreAcl, - StoreId, - StoreProgram, - StoreValue, - UpdateValue, - UserId, -} from "@nillion/client-core"; -import * as Wasm from "@nillion/client-wasm"; - -import { Log } from "../logger"; - -export const NilVmClientConfig = z.object({ - bootnodes: z.array(Multiaddr), - clusterId: ClusterId, - userSeed: z.string(), - nodeSeed: z.string(), -}); - -export type NilVmClientConfig = z.infer; - -export class NilVmClient { - // The wasm bundle is loaded asynchronously which can be problematic because most environments don't - // support top-level awaits. To manage this complexity `this._client` is lazily initialized and guarded - // by `isReadyGuard`. Users can therefore create the client in one place and then connect when they are - // inside an async context. - // @ts-expect-error lazily loaded on `connect()`, wrapped by `isReadyGuard()` and public access via getter - private _client: Wasm.NillionClient; - private _ready = false; - - private constructor(private _config: NilVmClientConfig) {} - - get ready(): boolean { - return this._ready; - } - - get partyId(): PartyId { - this.isReadyGuard(); - return PartyId.parse(this._client.party_id); - } - - get userId(): UserId { - this.isReadyGuard(); - return UserId.parse(this._client.user_id); - } - - get clusterId(): ClusterId { - return this._config.clusterId; - } - - get client(): Wasm.NillionClient { - this.isReadyGuard(); - return this._client; - } - - async connect(): Promise { - if (!globalThis.__NILLION?.initialized) { - await init(); - } - - const { clusterId, userSeed, nodeSeed, bootnodes } = this._config; - const userKey = Wasm.UserKey.from_seed(userSeed); - const nodeKey = Wasm.NodeKey.from_seed(nodeSeed); - this._client = new Wasm.NillionClient(userKey, nodeKey, bootnodes); - // TODO(tim): If this fails to connect a websocket.js error is logged and this method simply fails. - // Its unclear which context the error occurs in so I haven't yet been able to handle it gracefully. - const descriptor = await this._client.cluster_information(clusterId); - this._ready = true; - - Log("Connected to cluster: ", descriptor.id); - return this._ready; - } - - private isReadyGuard(): void | never { - if (!this._ready) { - const message = "NilVmClient not ready. Call `await client.connect()`."; - Log(message); - throw new Error(message); - } - } - - fetchClusterInfo(): E.Effect { - return E.tryPromise(async () => { - const response = await this.client.cluster_information(this.clusterId); - const descriptor = ClusterDescriptor.parse(response); - Log("Fetched cluster info: %O", descriptor); - return descriptor; - }); - } - - fetchComputeOutput(args: { - id: ComputeOutputId; - }): E.Effect, UnknownException> { - return E.tryPromise(async () => { - const { id } = args; - const response = (await this.client.compute_result(id)) as Record< - string, - NadaPrimitiveValue - >; - Log(`Retrieved ${id} result:`, response); - return response; - }); - } - - fetchOperationQuote(args: { - operation: IntoWasmQuotableOperation & { type: OperationType }; - }): E.Effect { - return E.tryPromise(async () => { - const { operation } = args; - const response = await this.client.request_price_quote( - this.clusterId, - operation.intoQuotable(), - ); - const result = priceQuoteFrom(response); - Log(`Quoted %d unil for %s`, result.cost.total, operation.type); - return result; - }); - } - - fetchValue(args: { - receipt: PaymentReceipt; - operation: FetchValue; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { id, name, type } = operation.args; - - const wasmReceipt = paymentReceiptInto(receipt); - const response = await this.client.retrieve_value( - this.clusterId, - id, - name, - wasmReceipt, - ); - wasmReceipt.free(); - receipt.quote.inner.free(); - - const result = NadaValue.fromWasm(type, response); - Log(`Fetched ${type} from ${id}`); - return result; - }); - } - - fetchStoreAcl(args: { - receipt: PaymentReceipt; - operation: FetchStoreAcl; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { id } = operation.args; - - const wasmReceipt = paymentReceiptInto(receipt); - const response = await this.client.retrieve_permissions( - this.clusterId, - id, - wasmReceipt, - ); - wasmReceipt.free(); - receipt.quote.inner.free(); - - const result = StoreAcl.from(response); - Log(`Fetched acl for store ${id}. Acl=%O`, result); - return result; - }); - } - - setStoreAcl(args: { - receipt: PaymentReceipt; - operation: SetStoreAcl; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { id, acl } = operation.args; - - const wasmReceipt = paymentReceiptInto(receipt); - const wasmPermissions = acl.into(); - const response = await this.client.update_permissions( - this.clusterId, - id, - wasmPermissions, - wasmReceipt, - ); - // wasmPermissions?.free(); causes a WASM/rust NPE?? - wasmReceipt.free(); - receipt.quote.inner.free(); - - const result = ActionId.parse(response); - Log(`Set store Acl for ${id} to Acl=%O`, acl); - return result; - }); - } - - compute(args: { - receipt: PaymentReceipt; - operation: Compute; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { bindings, storeIds, values } = operation.args; - - const wasmValues = values.into(); - const wasmReceipt = paymentReceiptInto(receipt); - const response = await this.client.compute( - this.clusterId, - bindings.into(), - storeIds, - wasmValues, - wasmReceipt, - ); - wasmValues.free(); - wasmReceipt.free(); - receipt.quote.inner.free(); - - const result = ComputeOutputId.parse(response); - Log(`Compute started resultId=${result}`); - return result; - }); - } - - storeProgram(args: { - receipt: PaymentReceipt; - operation: StoreProgram; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { name, program } = operation.args; - - const wasmReceipt = paymentReceiptInto(receipt); - const response = await this.client.store_program( - this.clusterId, - name, - program, - wasmReceipt, - ); - wasmReceipt.free(); - receipt.quote.inner.free(); - - const id = ProgramId.parse(response); - Log(`program stored with id=${id}`); - return id; - }); - } - - deleteValues(args: { id: StoreId }): E.Effect { - return E.tryPromise(async () => { - const { id } = args; - await this.client.delete_values(this.clusterId, id); - Log(`Deleted values at ${id}`); - return id; - }); - } - - updateValues(args: { - receipt: PaymentReceipt; - operation: UpdateValue; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { id, values } = operation.args; - - const wasmValues = values.into(); - const wasmReceipt = paymentReceiptInto(receipt); - const response = await this.client.update_values( - this.clusterId, - id, - wasmValues, - wasmReceipt, - ); - wasmValues.free(); - wasmReceipt.free(); - receipt.quote.inner.free(); - - Log(`Updated values at ${id}`); - return ActionId.parse(response); - }); - } - - storeValues(args: { - receipt: PaymentReceipt; - operation: StoreValue; - }): E.Effect { - return E.tryPromise(async () => { - const { receipt, operation } = args; - const { values, acl } = operation.args; - - const wasmValues = values.into(); - const wasmReceipt = paymentReceiptInto(receipt); - const wasmPermissions = acl?.into(); - const response = await this.client.store_values( - this.clusterId, - wasmValues, - wasmPermissions, - wasmReceipt, - ); - // wasmPermissions?.free(); causes a WASM/rust NPE?? - wasmValues.free(); - wasmReceipt.free(); - receipt.quote.inner.free(); - - Log(`Stored values ${values.toString()} at ${response}`); - return StoreId.parse(response); - }); - } - - static create = (args: NilVmClientConfig) => new NilVmClient(args); -} diff --git a/packages/client-vms/src/nilvm/index.ts b/packages/client-vms/src/nilvm/index.ts deleted file mode 100644 index 5ec7692..0000000 --- a/packages/client-vms/src/nilvm/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./client"; diff --git a/packages/client-vms/src/types.ts b/packages/client-vms/src/types.ts deleted file mode 100644 index 316406a..0000000 --- a/packages/client-vms/src/types.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { OfflineSigner } from "@cosmjs/proto-signing"; -import { z } from "zod"; - -import { - ChainId, - ClusterId, - Multiaddr, - NadaPrimitiveValue, - NodeSeed, - Url, - UserSeed, -} from "@nillion/client-core"; - -export interface StoreValueArgs { - data: NadaPrimitiveValue; - secret: boolean; -} - -export const NetworkConfig = z.object({ - bootnodes: z.array(Multiaddr), - clusterId: ClusterId, - nilChainId: ChainId, - nilChainEndpoint: Url, -}); -export type NetworkConfig = z.infer; - -export const UserCredentials = z.object({ - userSeed: UserSeed, - nodeSeed: NodeSeed.default(() => window.crypto.randomUUID()), - signer: z.union([ - z.literal("keplr"), - z.function().returns(z.custom().promise()), - ]), -}); -export type UserCredentials = z.infer; diff --git a/packages/client-vms/tests/helpers/index.ts b/packages/client-vms/tests/helpers/index.ts deleted file mode 100644 index 601ecc8..0000000 --- a/packages/client-vms/tests/helpers/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./nada-values"; -export * from "./programs"; -export * from "./simple-values"; diff --git a/packages/client-vms/tests/helpers/nada-values.ts b/packages/client-vms/tests/helpers/nada-values.ts deleted file mode 100644 index 3b8418b..0000000 --- a/packages/client-vms/tests/helpers/nada-values.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { - NadaValue, - NadaValueType, - NamedValue, - StoreId, -} from "@nillion/client-core"; -import { strToByteArray } from "@nillion/test-utils"; - -export interface TestNadaType { - id: StoreId; - name: NamedValue; - type: NadaValueType; - value: NadaValue; - nextValue: NadaValue; -} - -export const testNadaTypes: TestNadaType[] = [ - { - id: "" as StoreId, - name: NamedValue.parse("SecretBlob"), - type: NadaValueType.enum.SecretBlob, - value: NadaValue.createSecretBlob(strToByteArray("foo then bar...")), - nextValue: NadaValue.createSecretBlob(strToByteArray("... then baz!")), - }, - { - id: "" as StoreId, - name: NamedValue.parse("SecretInteger"), - type: NadaValueType.enum.SecretInteger, - value: NadaValue.createSecretInteger(-42), - nextValue: NadaValue.createSecretInteger(102), - }, - { - id: "" as StoreId, - name: NamedValue.parse("PublicInteger"), - type: NadaValueType.enum.PublicInteger, - value: NadaValue.createPublicInteger(-107), - nextValue: NadaValue.createSecretInteger(1_000), - }, - { - id: "" as StoreId, - name: NamedValue.parse("SecretIntegerUnsigned"), - type: NadaValueType.enum.SecretIntegerUnsigned, - value: NadaValue.createSecretIntegerUnsigned(1_000_000_000_000n), - nextValue: NadaValue.createSecretIntegerUnsigned(1n), - }, - { - id: "" as StoreId, - name: NamedValue.parse("PublicIntegerUnsigned"), - type: NadaValueType.enum.PublicIntegerUnsigned, - value: NadaValue.createPublicIntegerUnsigned(10_000_000_000n), - nextValue: NadaValue.createPublicIntegerUnsigned(10_000_000_001n), - }, -]; diff --git a/packages/client-vms/tests/helpers/programs.ts b/packages/client-vms/tests/helpers/programs.ts deleted file mode 100644 index 34d0788..0000000 --- a/packages/client-vms/tests/helpers/programs.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { - ComputeOutputId, - NadaValue, - NadaValues, - NamedValue, - PartyName, - ProgramId, - StoreId, -} from "@nillion/client-core"; -import { TestEnv } from "@nillion/test-utils"; - -export interface TestProgram { - name: string; - id: ProgramId; - inputParties: PartyName[]; - outputParties: PartyName[]; - valuesToStore: NadaValues[]; - valuesToInput: NadaValues; - storeIds: StoreId[]; - result: { - id: ComputeOutputId; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - expected: any; - }; -} - -export const testPrograms: TestProgram[] = [ - { - name: "simple_shares.nada.bin", - id: ProgramId.parse(`${TestEnv.programNamespace}/simple_shares.nada.bin`), - inputParties: [PartyName.parse("Dealer")], - outputParties: [PartyName.parse("Result")], - storeIds: [], - valuesToStore: [ - NadaValues.create() - .insert( - NamedValue.parse("I03"), - NadaValue.createSecretIntegerUnsigned(2877n), - ) - .insert( - NamedValue.parse("I04"), - NadaValue.createSecretIntegerUnsigned(2564n), - ), - ], - valuesToInput: NadaValues.create() - .insert( - NamedValue.parse("I00"), - NadaValue.createSecretIntegerUnsigned(17517n), - ) - .insert( - NamedValue.parse("I01"), - NadaValue.createSecretIntegerUnsigned(5226n), - ) - .insert( - NamedValue.parse("I02"), - NadaValue.createSecretIntegerUnsigned(15981n), - ), - result: { - id: "" as ComputeOutputId, - expected: { - Add0: 1462969515630n, - }, - }, - }, -]; diff --git a/packages/client-vms/tests/helpers/simple-values.ts b/packages/client-vms/tests/helpers/simple-values.ts deleted file mode 100644 index 5697fb7..0000000 --- a/packages/client-vms/tests/helpers/simple-values.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { - NadaPrimitiveValue, - NadaValueType, - NamedValue, - StoreId, -} from "@nillion/client-core"; -import { strToByteArray } from "@nillion/test-utils"; - -export interface TestSimpleType { - type: NadaValueType; - id: StoreId; - name: NamedValue; - expected: NadaPrimitiveValue; -} - -export const testSimpleTypes: TestSimpleType[] = [ - { - type: NadaValueType.enum.SecretInteger, - id: "" as StoreId, - name: NamedValue.parse("data"), - expected: -42, - }, - { - type: NadaValueType.enum.SecretInteger, - id: "" as StoreId, - name: NamedValue.parse("data"), - expected: 42, - }, - { - type: NadaValueType.enum.SecretIntegerUnsigned, - id: "" as StoreId, - name: NamedValue.parse("data"), - expected: 42n, - }, - { - type: NadaValueType.enum.SecretBlob, - id: "" as StoreId, - name: NamedValue.parse("data"), - expected: strToByteArray("Hi blob, I'm data."), - }, - { - type: NadaValueType.enum.SecretString, - id: "" as StoreId, - name: NamedValue.parse("data"), - expected: "Hi blob, I'm string.", - }, -]; diff --git a/packages/client-vms/tests/nillion-client.test.ts b/packages/client-vms/tests/nillion-client.test.ts deleted file mode 100644 index e6e8568..0000000 --- a/packages/client-vms/tests/nillion-client.test.ts +++ /dev/null @@ -1,290 +0,0 @@ -import { - Days, - NadaValue, - NadaValues, - NadaValueType, - NamedValue, - Operation, - ProgramBindings, - ProgramName, - StoreAcl, - StoreId, -} from "@nillion/client-core"; -import { NillionClient } from "@nillion/client-vms"; -import { - expectErr, - expectOk, - getNetworkConfig, - getUserCredentials, - loadProgram, -} from "@nillion/test-utils"; - -import { - type TestNadaType, - testNadaTypes, - testPrograms, - type TestSimpleType, - testSimpleTypes, -} from "./helpers"; - -const SUITE_NAME = "@nillion/client-vms"; - -describe(SUITE_NAME, () => { - let client: NillionClient; - - beforeAll(async () => { - console.log(`*** Start ${SUITE_NAME} ***`); - client = NillionClient.create(); - const networkConfig = getNetworkConfig(); - console.log(`Network config: %O`, networkConfig); - const userCredentials = getUserCredentials(); - console.log(`User credentials: %O`, userCredentials); - - client.setNetworkConfig(networkConfig); - client.setUserCredentials(userCredentials); - - await client.connect(); - }); - - afterAll(() => { - console.log(`*** Finish ${SUITE_NAME} *** \n\n`); - }); - - it("can fetch cluster information", async () => { - const result = await client.fetchClusterInfo(); - if (expectOk(result)) { - expect(result.ok.id).toEqual(client.vm.clusterId); - } - }); - - it("can fetch an operation quote", async () => { - const args = { - operation: Operation.fetchAcl({ id: "" as StoreId }), - }; - const result = await client.fetchOperationQuote(args); - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - describe("ergonomic functions naked value", () => { - testSimpleTypes.forEach((test: TestSimpleType) => { - describe(test.type, () => { - it("can store value", async () => { - const result = await client.store({ - name: test.name, - value: test.expected, - ttl: 1, - }); - if (expectOk(result)) { - expect(result.ok).toBeDefined(); - test.id = result.ok; - } - }); - - it("can retrieve value", async () => { - const result = await client.fetch({ - id: test.id, - name: test.name, - type: test.type, - }); - expect(result.ok).toEqual(test.expected); - }); - }); - }); - }); - - testNadaTypes.forEach((test: TestNadaType) => { - describe(test.type, () => { - const { name, type, value } = test; - it("store value", async () => { - const values = NadaValues.create().insert(name, value); - - const result = await client.storeValues({ - values, - ttl: Days.parse(1), - }); - if (expectOk(result)) { - test.id = result.ok; - } - }); - - it("fetch value", async () => { - const result = await client.fetchValue({ - id: test.id, - name, - type, - }); - - if (expectOk(result)) { - const actual = result.ok.data; - const expected: unknown = test.value.data; - expect(expected).toEqual(actual); - } - }); - - it("update value", async () => { - const result = await client.updateValue({ - id: test.id, - values: NadaValues.create().insert(name, test.nextValue), - ttl: Days.parse(1), - }); - expectOk(result); - }); - - it("retrieve after update", async () => { - const result = await client.fetchValue({ - id: test.id, - name, - type, - }); - - if (expectOk(result)) { - const actual = result.ok.data; - const expected: unknown = test.nextValue.data; - expect(expected).toEqual(actual); - } - }); - - it("delete", async () => { - const result = await client.deleteValues({ id: test.id }); - - if (expectOk(result)) { - expect(result.ok).toEqual(test.id); - } - }); - - it("should fail to retrieve deleted value", async () => { - const result = await client.fetchValue({ - id: test.id, - name, - type, - }); - - if (expectErr(result)) { - expect(result.err).toBeDefined(); - } - }); - }); - }); - - describe("store acl", () => { - const name = NamedValue.parse("secretFoo"); - const type = NadaValueType.enum.SecretInteger; - const value = NadaValue.createSecretInteger(42); - const values = NadaValues.create().insert(name, value); - let id = "" as StoreId; - - it("can store access controlled values", async () => { - const result = await client.storeValues({ - values, - ttl: Days.parse(1), - acl: StoreAcl.createDefaultForUser(client.vm.userId), - }); - - if (expectOk(result)) { - id = result.ok; - } - }); - - it("can fetch value when authorized", async () => { - const result = await client.fetchValue({ - id, - name, - type, - }); - if (expectOk(result)) { - expect(result.ok.data).toBe(value.data); - } - }); - - it("can retrieve store acl", async () => { - const result = await client.fetchStoreAcl({ - id, - }); - expectOk(result); - }); - - it("can set store acl", async () => { - const acl = StoreAcl.create(); - const result = await client.setStoreAcl({ - id, - acl, - }); - - expectOk(result); - }); - - it("value fetch rejected when not authorized", async () => { - const result = await client.fetchStoreAcl({ - id, - }); - if (expectErr(result)) { - expect(result.err.message).toContain("user is not authorized"); - } - }); - }); - - describe("programs", () => { - it("can store a program", async () => { - const program = await loadProgram("addition_division.nada.bin"); - - const result = await client.storeProgram({ - program, - name: ProgramName.parse("addition_division.nada.bin"), - }); - expectOk(result); - }); - - testPrograms.forEach((test) => { - describe(test.name, () => { - beforeAll(async () => { - for (const values of test.valuesToStore) { - const acl = StoreAcl.create().allowCompute(client.userId, test.id); - - const result = await client.storeValues({ - values, - ttl: Days.parse(1), - acl, - }); - if (expectOk(result)) { - test.storeIds.push(result.ok); - } - } - }); - - it("can compute", async () => { - const bindings = ProgramBindings.create(test.id); - - test.inputParties.forEach((party) => { - bindings.addInputParty(party, client.partyId); - }); - - test.outputParties.forEach((party) => { - bindings.addOutputParty(party, client.partyId); - }); - - const result = await client.compute({ - bindings, - values: test.valuesToInput, - storeIds: test.storeIds, - }); - - if (expectOk(result)) { - test.result.id = result.ok; - } - }); - - it("can get result", async () => { - const result = await client.fetchComputeOutput({ - id: test.result.id, - }); - if (expectOk(result)) { - // eslint-disable-next-line @typescript-eslint/no-unsafe-argument - expect(result.ok).toEqual(test.result.expected); - } - }); - }); - }); - }); -}); diff --git a/packages/client-vms/tests/nilvm-client.test.ts b/packages/client-vms/tests/nilvm-client.test.ts deleted file mode 100644 index 5d34fcd..0000000 --- a/packages/client-vms/tests/nilvm-client.test.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { - Days, - effectToResultAsync, - NadaValue, - NadaValues, - NamedValue, - Operation, - ProgramBindings, - ProgramId, - ProgramName, - StoreAcl, - StoreId, -} from "@nillion/client-core"; -import { NilVmClient } from "@nillion/client-vms"; -import { - expectOk, - getVmClientEnvConfig, - loadProgram, - TestEnv, -} from "@nillion/test-utils"; - -const SUITE_NAME = `@nillion/client-vms > NilVmClient`; - -describe(SUITE_NAME, () => { - const config = getVmClientEnvConfig(); - const client = NilVmClient.create(config); - - const data = { - store: StoreId.parse("aaaaaaaa-bbbb-cccc-dddd-ffffffffffff"), - program: ProgramId.parse( - `${String(TestEnv.programNamespace)}/addition_division.nada.bin`, - ), - }; - - beforeAll(async () => { - jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; - console.log(`*** Start ${SUITE_NAME} ***`); - console.log(`NilVmClient Config: %O`, config); - await client.connect(); - }); - - afterAll(() => { - console.log(`*** Finish ${SUITE_NAME} *** \n\n`); - }); - - it("can get quote for compute", async () => { - const values = NadaValues.create() - .insert(NamedValue.parse("A"), NadaValue.createSecretInteger(1)) - .insert(NamedValue.parse("B"), NadaValue.createSecretInteger(2)); - - const args = { - bindings: ProgramBindings.create(data.program), - values, - storeIds: [], - }; - const operation = Operation.compute(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - it("can get quote for fetch store acl", async () => { - const args = { - id: data.store, - }; - const operation = Operation.fetchAcl(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - it("can get quote for set acl", async () => { - const args = { - id: data.store, - acl: StoreAcl.create(), - }; - const operation = Operation.setAcl(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - it("can get quote for program store", async () => { - const program = await loadProgram("addition_division.nada.bin"); - const args = { - program, - name: ProgramName.parse("addition_division.nada.bin"), - }; - const operation = Operation.storeProgram(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - it("can get quote for values store", async () => { - const args = { - values: NadaValues.create().insert( - NamedValue.parse("foo"), - NadaValue.createSecretInteger(3), - ), - ttl: Days.parse(1), - }; - const operation = Operation.storeValues(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); - - it("can get quote for values update", async () => { - const args = { - id: data.store, - values: NadaValues.create().insert( - NamedValue.parse("foo"), - NadaValue.createSecretInteger(3), - ), - ttl: Days.parse(1), - }; - const operation = Operation.updateValues(args); - const effect = client.fetchOperationQuote({ operation }); - const result = await effectToResultAsync(effect); - - if (expectOk(result)) { - expect(result.ok.cost.total).toBeGreaterThan(1); - } - }); -}); diff --git a/packages/client-vms/tsconfig.json b/packages/client-vms/tsconfig.json deleted file mode 100644 index 9536a0f..0000000 --- a/packages/client-vms/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/packages/client-vms/webpack.config.mjs b/packages/client-vms/webpack.config.mjs deleted file mode 100644 index c44accf..0000000 --- a/packages/client-vms/webpack.config.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -import { buildWebpackBaseConfig } from "../resources/webpack.base.config.mjs"; - -const __filename = fileURLToPath(import.meta.url); -const packageBaseDir = path.dirname(__filename); - -export default { - ...buildWebpackBaseConfig(packageBaseDir), -}; diff --git a/packages/client-wasm/README.md b/packages/client-wasm/README.md deleted file mode 100644 index 42219c0..0000000 --- a/packages/client-wasm/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# @nillion/client-wasm - -- [Source code](https://github.com/NillionNetwork/client-ts) -- [Reference Docs](https://nillion.pub/client-ts) diff --git a/packages/client-wasm/commit-sha.txt b/packages/client-wasm/commit-sha.txt deleted file mode 100644 index 6f486dc..0000000 --- a/packages/client-wasm/commit-sha.txt +++ /dev/null @@ -1 +0,0 @@ -v2024-08-28-86bb6bd52 diff --git a/packages/client-wasm/dist/index.d.ts b/packages/client-wasm/dist/index.d.ts deleted file mode 100644 index 759fd05..0000000 --- a/packages/client-wasm/dist/index.d.ts +++ /dev/null @@ -1,1101 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** -* Cluster descriptor -* -* The cluster descriptor contains relevant cluster configuration information. -* This is the structure returned by the `cluster_information` operation in the client. -* -* @hideconstructor -*/ -export class ClusterDescriptor { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Cluster identifier -* Returns the cluster identifier as a string. -* @return {string} The cluster identifier -* -* @example -* const descriptor = await nillionClient.cluster_information(); -* const id = descriptor.id; -*/ - readonly id: string; -/** -* The security parameter kappa for this cluster. -* @return {number} The security parameter kappa -* -* @example -* const descriptor = await nillionClient.cluster_information(); -* const kappa = descriptor.kappa; -*/ - readonly kappa: number; -/** -* Cluster parties -* Returns the parties in the cluster. -* @return {Object} The parties in the cluster -* -* @example -* const descriptor = await nillionClient.cluster_information(); -* const parties = descriptor.parties; -*/ - readonly parties: any; -/** -* The prime number to be used in this cluster. -* @return {string} The prime number as a string -* -* @example -* const descriptor = await nillionClient.cluster_information(); -* const prime = descriptor.prime; -*/ - readonly prime: string; -} -/** -* @private -*/ -export class LoaderHelper { - free(): void; -/** -* @returns {string} -*/ - mainJS(): string; -} -/** -* NadaValue -* -* This type represents a value in the Nillion network. This class provides utilities -* to encode numerical and binary values. It also provides methods to decode -* the value into a numerical form. -* -* @hideconstructor -*/ -export class NadaValue { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Create a new secret integer value. -* -* @param {string} value - The value must be a valid string representation of an integer. -* @return {NadaValue} The encoded secret corresponding to the value provided -* -* @example -* const value = NadaValue.new_secret_integer("-23"); -*/ - static new_secret_integer(value: string): NadaValue; -/** -* Create a new secret unsigned integer value. -* -* @param {string} value - The value must be a valid string representation of an unsigned integer. -* @return {NadaValue} The encoded secret corresponding to the value provided -* -* @example -* const value = NadaValue.new_secret_unsigned_integer("23"); -*/ - static new_secret_unsigned_integer(value: string): NadaValue; -/** -* Create a new secret blob. -* -* @param {Uint8Array} value - The blob in binary (byte array) encoded format -* @return {NadaValue} The encoded secret corresponding to the value provided -* -* @example -* const value = NadaValue.new_secret_blob([1,0,1,222,21]); -*/ - static new_secret_blob(value: Uint8Array): NadaValue; -/** -* Create a new public integer with the provided value. -* -* @param {string} value - The value must be a valid string representation of an integer. -* @return {NadaValue} The encoded public variable corresponding to the value provided -* -* @example -* const value = NadaValue.new_public_integer("-23"); -*/ - static new_public_integer(value: string): NadaValue; -/** -* Create a new public unsigned integer with the provided value. -* -* @param {string} value - The value must be a valid string representation of an unsigned integer. -* @return {NadaValue} The encoded public variable corresponding to the value provided -* -* @example -* const value = NadaValue.new_public_unsigned_integer("23"); -*/ - static new_public_unsigned_integer(value: string): NadaValue; -/** -* Convert this value into a byte array. -* -* This is only valid for secret blob values. -* @return {Uint8Array} the byte array contained in this value. -* @throws {Error} if the value is not a secret blob. -* -* @example -* const value = NadaValue.new_secret_blob([1,0,1,222,21]); -* const byteArray = value.to_byte_array(); -*/ - to_byte_array(): Uint8Array; -/** -* Convert this value into a string representation of the underlying numeric value. -* -* This only works for numeric secret values, such as integers and unsigned integers. -* @return {string} a string representation of the underlying numeric value -* -* @example -* const value = NadaValue.new_public_integer("23"); -* const integer_value = value.to_integer(); -*/ - to_integer(): string; -} -/** -* A collection of named values. -*/ -export class NadaValues { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Creates a new empty instance of NadaValues. -* -* @example -* const values = new NadaValues(); -*/ - constructor(); -/** -* Add an encoded value to the NadaValues collection. -* -* @param {string} name - The name of the value -* @param {NadaValue} input - The value to be added -* -* @example -* values.insert("my_value", NadaValue.new_public_integer("23")); -*/ - insert(name: string, input: NadaValue): void; -/** -* Get the number of values. -* -* @example -* const length = values.length; -*/ - readonly length: number; -} -/** -* The Nillion Client -* -* This is the main interface with the Nillion network. -* The Nillion Client provides APIs that you can use for: -* - secure computing in Nillion, -* - storing programs, -* - managing secrets, and -* - managing permissions -*/ -export class NillionClient { - free(): void; -/** -* Creates an instance of Nillion Client -* -* @param {UserKey} user_key - The user private key -* @param {NodeKey} node_key - The node private key -* @param {Array} bootnodes - The Nillion cluster bootnode websocket multiaddresses. A websocket multiaddress has `/ws` or `/wss` (secure sockets) in the address. Example: "/ip4/127.0.0.1/tcp/14211/wss/p2p/12D3KooWCAGu6gqDrkDWWcFnjsT9Y8rUzUH8buWjdFcU3TfWRmuN" -* -* @example -* const user_key = UserKey.generate(); -* const node_key = NodeKey.from_seed('your-seed-here'); -* const client = new NillionClient( -* user_key, -* node_key, -* bootnodes, -* ); -*/ - constructor(user_key: UserKey, node_key: NodeKey, bootnodes: (string)[]); -/** -* Enable remote logging -* -* Writes client logs to a websocket that can be accessed in URL: ws://127.0.0.1:11100/logs. -* You can use tools like [websocat](https://github.com/vi/websocat) to access and read these logs. -* -* @example -* nillionClient.enable_remote_logging(); -*/ - static enable_remote_logging(): void; -/** -* Store values on the Nillion network -* -* @param {string} cluster_id - The targeted cluster identifier -* @param {NadaValues} values - The collection of values to store -* @param {Permissions | undefined} permissions - Optional permissions to be associated with the values. By default the user has full access to them. -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @returns {Promise} A store ID that can be used to retrieve the values. -* -* @example -* const values = new NadaValues(); -* values.insert('value1', NadaValue.new_public_integer('1')); -* const store_id = await nillionClient.store_values(cluster_id, values); -*/ - store_values(cluster_id: string, values: NadaValues, permissions: Permissions | undefined, receipt: PaymentReceipt): Promise; -/** -* Retrieve a value already stored in Nillion -* -* @param {string} cluster_id - UUID of the targeted preprocessing cluster -* @param {string} store_id - The store value operation identifier for the values collection that will be retrieved. -* @param {string} value_id - The value identifier inside the values collection -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return {Promise} - The value identified by `value_id` -* -* @example -* const value = await nillionClient.retrieve_value(cluster_id, store_id, value_id); -*/ - retrieve_value(cluster_id: string, store_id: string, value_id: string, receipt: PaymentReceipt): Promise; -/** -* Update values stored in the Nillion network -* -* @param {string} cluster_id - UUID of the targeted preprocessing cluster -* @param {string} store_id - The store value operation identifier for the values collection that will be updated. -* @param {NadaValues} values - The new value collection that will replace the existing one -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return {Promise} The unique identifier of the update operation -* -* @example -* const values = new NadaValues(); -* values.insert('value1', NadaValue.new_public_integer('2')); -* const action_id = await nillionClient.update_values(cluster_id, store_id, values); -*/ - update_values(cluster_id: string, store_id: string, secrets: NadaValues, receipt: PaymentReceipt): Promise; -/** -* Delete values collection from the network. -* -* @param {string} cluster_id - UUID of the targeted preprocessing cluster -* @param {string} store_id - The store value operation identifier for the values collection that will be deleted. -* @return {Promise} -* -* @example -* await nillionClient.delete_values(cluster_id, store_id); -*/ - delete_values(cluster_id: string, store_id: string): Promise; -/** -* Compute in the Nillion Network. This method invokes the compute operation in the Nillion network. -* It returns a compute ID that can be used by `compute_result` to fetch -* the results of this computation. -* -* @param {string} cluster_id - Identifier of the targeted cluster -* @param {ProgramBindings} bindings - The program bindings for the computation -* @param {Array.} store_ids - The store IDs of the values to use for the computation -* @param {NadaValues} values - Additional values to use for the computation -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return {Promise} A computation UUID. -* -* @example -* const bindings = new ProgramBindings(); -* bindings.add_input_party('Party1', '12D3KooWKbs29XBmtXZEFZwHBr39BsgbysPAmAS3RWWdtBBc7joH'); -* const values = new NadaValues(); -* values.insert('value1', NadaValue.new_public_integer('1')); -* const result_id = await nillionClient.compute(cluster_id, bindings, ['store1'], values); -*/ - compute(cluster_id: string, bindings: ProgramBindings, store_ids: (string)[], values: NadaValues, receipt: PaymentReceipt): Promise; -/** -* Fetch the result of the compute in the Nillion Network -* -* @param {string} result_id - The computation UUID returned after calling `compute` -* @return {Promise} - The result of the computation -* -* @example -* const result = await nillionClient.compute_result(result_id); -*/ - compute_result(result_id: string): Promise; -/** -* Retrieve permissions for a group of values stored in the Nillion network. -* -* @param {string} cluster_id - The identifier of the target cluster -* @param {string} store_id - The store value identifier for the values collection where the values are -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return {Promise} The permissions associated to the values -* -* @example -* const permissions = await nillionClient.retrieve_permissions(cluster_id, store_id); -*/ - retrieve_permissions(cluster_id: string, store_id: string, receipt: PaymentReceipt): Promise; -/** -* Update permissions for a group of values stored in the Nillion network. -* -* @param {string} cluster_id - The identifier of the target cluster -* @param {string} store_id - The store value identifier for the values collection where the values are -* @param {Permissions} permissions - The permissions that will replace the existing permissions for the values -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return {Promise} The action ID corresponding to the update operation -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* permissions.add_update_permissions(["user_id"]); -* const action_id = await nillionClient.update_permissions(cluster_id, store_id, permissions); -*/ - update_permissions(cluster_id: string, store_id: string, permissions: Permissions, receipt: PaymentReceipt): Promise; -/** -* Store a program in the Nillion Network -* -* @param {string} cluster_id - UUID of the targeted preprocessing cluster -* @param {string} program_name - The name of the program -* @param {UInt8Array} program - The compiled nada program in binary format -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return The program ID associated with the program -* -* @example -* const program_id = await nillionClient.store_program(cluster_id, 'program_name', program); -*/ - store_program(cluster_id: string, program_name: string, program: Uint8Array, receipt: PaymentReceipt): Promise; -/** -* Request a price quote for an operation on the network. -* -* This method asks the network to calculate a price quote for the specified operation. Payment -* and submission of the operation is the client's responsibility and must be done before the -* quote expires. -* -* @param {string} cluster_id - UUID of the targeted preprocessing cluster -* @param {string} operation - The operation to get a quote for. -* @param {PaymentReceipt} receipt - The receipt for the payment made for this operation. -* @return The price quoted for this operation -* -* @example -* const values = new nillion.NadaValues(); -* values.insert("int", nillion.NadaValue.new_public_integer("42")); -* -* const operation = nillion.Operation.store_values(values); -* const quote = await context.client.request_price_quote( -* context.config.cluster_id, -* operation, -* ); -*/ - request_price_quote(cluster_id: string, operation: Operation): Promise; -/** -* Returns information about a Nillion cluster -* -* @param {string} cluster_id - Identifier of the target cluster -* @return {Promise} The cluster descriptor for the given cluster -* -* @example -* const cluster_descriptor = await nillionClient.cluster_information(cluster_id); -*/ - cluster_information(cluster_id: string): Promise; -/** -* Enables tracking for the user. -* -* Enables tracking of client actions (store, retrieve, compute ...) -* @return {Promise} -* -* @example -* await nillionClient.enable_tracking(); -*/ - static enable_tracking(wallet_addr?: string): void; -/** -* Get the build version of the Nillion client. -* -* @return {string} A string representation of the build version -* -* @example -* const version = nillionClient.build_version; -*/ - static readonly build_version: string; -/** -* Get the party identifier for the current client. -* @return {string} The party identifier for the current client -* -* @example -* const partyId = nillionClient.party_id; -*/ - readonly party_id: string; -/** -* Get the user identifier for the current user. -* -* @return {string} - The Nillion user identifier for the current user -* -* @example -* const userId = nillionClient.user_id; -*/ - readonly user_id: string; -} -/** -* Node key -* -* The node key is used to authenticate the node in the Nillion network. -* The key can be generated from a seed or from a base58 string. -* -* @hideconstructor -* @example -* -* const key = new NodeKey.from_seed("my_seed"); -*/ -export class NodeKey { - free(): void; -/** -* Generates a private key using a seed. -* -* @param {string} seed - The seed that will be used to generate the NodeKey -* @return {NodeKey} A NodeKey -* -* @example -* -* const key = new NodeKey.from_seed("my_seed"); -*/ - static from_seed(seed: string): NodeKey; -/** -* Decodes a private key from a string encoded in Base58. -* -* @param {string} contents - A base58 string -* @return {NodeKey} An instance of NodeKey matching the string provided -* -* @example -* -* const key = new NodeKey.from_base58(); -*/ - static from_base58(contents: string): NodeKey; -} -/** -* Operation. -* -* This type represents an operation to be run on the Nillion network. -* -* @hideconstructor -*/ -export class Operation { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Create a new store values operation. -* -* @param {NadaValues} values - The values to be stored. -* @param {number} ttl_days - The time to live for the values in days. -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.store_values(values); -* @param {NadaValues} values -* @param {number} ttl_days -* @returns {Operation} -*/ - static store_values(values: NadaValues, ttl_days: number): Operation; -/** -* Create a new update values operation. -* -* @param {NadaValues} values - The values to be updated. -* @param {number} ttl_days - The time to live for the values in days. -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.update_values(values); -* @param {NadaValues} values -* @param {number} ttl_days -* @returns {Operation} -*/ - static update_values(values: NadaValues, ttl_days: number): Operation; -/** -* Create a new compute operation. -* -* @param {string} program_id - The program id to be used. -* @param {NadaValues} values - The values to be used as compute values. -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.compute(values); -* @param {string} program_id -* @param {NadaValues} values -* @returns {Operation} -*/ - static compute(program_id: string, values: NadaValues): Operation; -/** -* Create a new retrieve value operation. -* -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.retrieve_value(); -* @returns {Operation} -*/ - static retrieve_value(): Operation; -/** -* Create a new store program operation. -* -* @param {UInt8Array} program - The compiled nada program in binary format -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.store_program(); -* @param {Uint8Array} program -* @returns {Operation} -*/ - static store_program(program: Uint8Array): Operation; -/** -* Create a new retrieve permissions operation. -* -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.retrieve_permissions(); -* @returns {Operation} -*/ - static retrieve_permissions(): Operation; -/** -* Create a new update permissions operation. -* -* @return {Operation} - The constructed operation. -* -* @example -* const operation = Operation.update_permissions(); -* @returns {Operation} -*/ - static update_permissions(): Operation; -} -/** -* The cost of an operation in the network. -* -* @hideconstructor -*/ -export class OperationCost { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Gets the cost of the base fee in unil units. -* -* @return {string} - The base fee for this quote. -* -* @example -* const base_fee = cost.base_fee -*/ - readonly base_fee: string; -/** -* Gets the cost of the compute fee in unil units. -* -* @return {string} - The compute fee for this quote. -* -* @example -* const compute_fee = cost.compute_fee -*/ - readonly compute_fee: string; -/** -* Gets the cost of the congestion fee in unil units. -* -* @return {string} - The congestion fee for this quote. -* -* @example -* const congestion_fee = cost.congestion_fee -*/ - readonly congestion_fee: string; -/** -* Gets the cost of the preprocessing fee in unil units. -* -* @return {string} - The preprocessing fee for this quote. -* -* @example -* const preprocessing_fee = cost.preprocessing_fee -*/ - readonly preprocessing_fee: string; -/** -* Gets the cost of the storage fee in unil units. -* -* @return {string} - The storage fee for this quote. -* -* @example -* const storage_fee = cost.storage_fee -*/ - readonly storage_fee: string; -/** -* Gets the total cost of the quote in unil units. -* The payment associated for the quoted operation must -* transfer this amount for it to be considered a valid -* payment. -* -* @return {string} - The total cost for this quote. -* -* @example -* const total = cost.total -*/ - readonly total: string; -} -/** -* Payment receipt. -* -* This type represents a payment receipt for an operation in the Nillion network. -* -* @hideconstructor -*/ -export class PaymentReceipt { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Creates an instance of a payment receipt -* -* @param {PriceQuote} quote - The price quote this receipt is for -* @param {string} transaction_hash - The hash of the transaction in which the payment was -* made. -*/ - constructor(quote: PriceQuote, transaction_hash: string); -} -/** -* The permissions data structure. -* -* In Nillion, every stored secret has associated a set of permissions upon creation. -* If no permissions are provided, the network will grant ownership as well as update, delete and retrieve permissions -* to the user storing the secret. -* -* For each compute operation, the secrets need to have granted compute permissions for the program and the user -* accessing the secret for the purpose of a computation. -* -* Permissions for any store value can be updated and retrieved by the owner using `update_permissions` and `retrieve_permissions` operations -* respectively. -*/ -export class Permissions { - free(): void; -/** -* Build a new empty instance of Permissions -* -* @example -* const permissions = new Permissions(); -*/ - constructor(); -/** -* Builds a new instance of Permissions with the default set for the user identifier. -* -* By default, the user identifier will be granted ownership of the secret as well as full access to the secret. -* No compute permissions are granted by default unless a program is specified. They need to be assigned separately. -* -* @param {string} user_id - The Nillion user identifier -* @returns {Permissions} An instance of Permissions with the default configuration for the user -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -*/ - static default_for_user(user_id: string): Permissions; -/** -* Add retrieve permissions to the Permissions instance for the -* given list of user IDs -* -* @param {Array} user_ids - The list of user identifiers that will be granted retrieve permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* permissions.add_retrieve_permissions(["user_id"]); -*/ - add_retrieve_permissions(user_ids: (string)[]): void; -/** -* Add update permissions to the Permissions instance for the -* given list of user IDs -* -* @param {Array} user_ids - The list of user identifiers that will be granted update permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* permissions.add_update_permissions(["user_id"]); -*/ - add_update_permissions(user_ids: (string)[]): void; -/** -* Add delete permissions to the Permissions instance for the -* given list of user IDs -* -* @param {Array} user_ids - The list of user identifiers that will be granted delete permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* permissions.add_delete_permissions(["user_id"]); -*/ - add_delete_permissions(user_ids: (string)[]): void; -/** -* Add compute permissions to the Permissions instance for the -* given list of user IDs -* -* @param {any} permissions - object where the keys are the user identities and for each key the values are a list of program identifiers that -* user will be granted compute permission for. -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* permissions.add_compute_permissions({ -* "user_id": ["program_id"] -* }); -*/ - add_compute_permissions(permissions: any): void; -/** -* Returns true if user has retrieve permissions -* -* @param {string} user_id - the user identifier -* @return {boolean} true if the user has retrieve permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* const retrieve_allowed = permissions.is_retrieve_allowed("user_id"); -*/ - is_retrieve_allowed(user_id: string): boolean; -/** -* Returns true if user has update permissions -* -* @param {string} user_id - the user identifier -* @return {boolean} true if the user has update permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* const update_allowed = permissions.is_update_allowed("user_id"); -*/ - is_update_allowed(user_id: string): boolean; -/** -* Returns true if user has delete permissions -* -* @param {string} user_id - the user identifier -* @return {boolean} true if the user has delete permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* const delete_allowed = permissions.is_delete_allowed("user_id"); -*/ - is_delete_allowed(user_id: string): boolean; -/** -* Returns true if user has compute permissions for every single program -* -* @param {string} user_id - the user identifier -* @param {string} program - the program identifier -* @return {boolean} true if the user has compute permissions -* -* @example -* const permissions = Permissions.default_for_user(nillionClient.user_id); -* const compute_allowed = permissions.is_compute_allowed("user_id", "program_id"); -*/ - is_compute_allowed(user_id: string, program: string): boolean; -} -/** -* The pre-processing protocol configuration -* @hideconstructor -*/ -export class PreprocessingProtocolConfig { - free(): void; -/** -* The number of elements to be generated on every run. -* -* @example -* const descriptor = await nillionClient.cluster_information(); -* const preprocessing = descriptor.preprocessing; -* const lambda = preprocessing.lambda; -* const batch_size = lambda.batch_size; -*/ - readonly batch_size: number; -} -/** -* Price quote. -* -* This type represents a price quote for an operation in the Nillion network. -* -* @hideconstructor -*/ -export class PriceQuote { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Gets the cost for the quoted operation in unil units. The payment associated for the quoted operation must -* transfer this amount for it to be considered a valid payment. -* -* @return {OperationCost} - The cost for this quote. -* -* @example -* const cost = quote.cost; -*/ - readonly cost: OperationCost; -/** -* Get the expiration time for this price quote. -* -* The payment and the operation execution must be invoked before this deadline is -* hit, otherwise the network will reject the operation request. -* -* @return {Date} - The expiration time. -* -* @example -* const expiration_time = quote.expires_at; -*/ - readonly expires_at: Date; -/** -* Gets the nonce for this quote. This nonce must be used as part of the payment transaction. -* -* @example -* const nonce = quote.nonce; -*/ - readonly nonce: Uint8Array; -} -/** -* Program Bindings -*/ -export class ProgramBindings { -/** -** Return copy of self without private attributes. -*/ - toJSON(): Object; -/** -* Return stringified version of self. -*/ - toString(): string; - free(): void; -/** -* Creates a new ProgramBindings -* -* @param {string} program_id - A program identifier, this is usually the given name of the program -* @return {ProgramBindings} A new instance of ProgramBindings -* -* @example -* const bindings = new ProgramBindings("simple_program"); -*/ - constructor(program_id: string); -/** -* Bind an input party with a name -* -* @param {string} name - Name of the input party -* @param {string} id - Identifier of the party -* -* @example -* bindings.add_input_party("Party1", "12D3KooWKbs29XBmtXZEFZwHBr39BsgbysPAmAS3RWWdtBBc7joH"); -*/ - add_input_party(name: string, id: string): void; -/** -* Bind an output party with a name -* -* @param {string} name - Name of the input party -* @param {string} id - Identifier of the party -* -* @example -* bindings.add_output_party("Party2", "12D3KooWKbs29XBmtXZEFZwHBr39BsgbysPAmAS3RWWdtBBc7joH"); -*/ - add_output_party(name: string, id: string): void; -} -/** -* User key -* -* The user key is used as the user identity in the Nillion network. -* The key can be generated from a seed or from a base58 string. -* -* @hideconstructor -* @example -* -* const key = new UserKey.from_seed("my_seed"); -*/ -export class UserKey { - free(): void; -/** -* Generate a new random public/private key. -* Uses a cryptographically secure pseudo-random number generator. -* -* @return {UserKey} a new instance of UserKey -* -* @example -* -* const key = new UserKey.generate(); -*/ - static generate(): UserKey; -/** -* Generate a new public/private key. -* Uses a seed to generate the keys via a cryptographically secure pseudo-random number generator. -* -* @param {string} seed - The seed that will be used to generate the key -* -* @return {UserKey} The user key generated using the seed provided -* -* @example -* -* const key = new UserKey.from_seed("my_seed"); -*/ - static from_seed(seed: string): UserKey; -/** -* Returns the public key corresponding to this key. -* -* @return {string} The public key as an UTF-8 encoded string. -* -* @example -* -* const key = new UserKey.from_seed("my_seed"); -* const public_key = key.public_key(); -*/ - public_key(): string; -/** -* Decodes a UserKey from a Base58-encoded String -* -* @param {string} contents - The private key encoded in Base58 format -* @return {UserKey} The decoded instance of UserKey -* -* @example -* -* const key = new UserKey.from_base58(); -*/ - static from_base58(contents: string): UserKey; -/** -* Returns the key in Base58 encoded form. -* -* @return {string} the key encoded as a Base58 string -* @example -* -* const key = new UserKey.from_seed("my_seed"); -* const base58_key = key.to_base58(); -*/ - to_base58(): string; -} - -export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; - -export interface InitOutput { - readonly __wbg_loaderhelper_free: (a: number) => void; - readonly loaderhelper_mainJS: (a: number) => number; - readonly worker_entry_point: (a: number) => void; - readonly __wbg_nillionclient_free: (a: number) => void; - readonly nillionclient_new: (a: number, b: number, c: number, d: number, e: number) => void; - readonly nillionclient_enable_remote_logging: () => void; - readonly nillionclient_party_id: (a: number, b: number) => void; - readonly nillionclient_user_id: (a: number, b: number) => void; - readonly nillionclient_store_values: (a: number, b: number, c: number, d: number, e: number, f: number) => number; - readonly nillionclient_retrieve_value: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; - readonly nillionclient_update_values: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; - readonly nillionclient_delete_values: (a: number, b: number, c: number, d: number, e: number) => number; - readonly nillionclient_compute: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; - readonly nillionclient_compute_result: (a: number, b: number, c: number) => number; - readonly nillionclient_retrieve_permissions: (a: number, b: number, c: number, d: number, e: number, f: number) => number; - readonly nillionclient_update_permissions: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number; - readonly nillionclient_store_program: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number; - readonly nillionclient_request_price_quote: (a: number, b: number, c: number, d: number) => number; - readonly nillionclient_cluster_information: (a: number, b: number, c: number) => number; - readonly nillionclient_enable_tracking: (a: number, b: number, c: number) => void; - readonly nillionclient_build_version: (a: number) => void; - readonly __wbg_pricequote_free: (a: number) => void; - readonly pricequote_expires_at: (a: number) => number; - readonly pricequote_cost: (a: number) => number; - readonly pricequote_nonce: (a: number, b: number) => void; - readonly __wbg_operationcost_free: (a: number) => void; - readonly operationcost_base_fee: (a: number, b: number) => void; - readonly operationcost_congestion_fee: (a: number, b: number) => void; - readonly operationcost_storage_fee: (a: number, b: number) => void; - readonly operationcost_preprocessing_fee: (a: number, b: number) => void; - readonly operationcost_compute_fee: (a: number, b: number) => void; - readonly operationcost_total: (a: number, b: number) => void; - readonly __wbg_paymentreceipt_free: (a: number) => void; - readonly paymentreceipt_new: (a: number, b: number, c: number) => number; - readonly __wbg_nodekey_free: (a: number) => void; - readonly nodekey_from_seed: (a: number, b: number) => number; - readonly nodekey_from_base58: (a: number, b: number) => number; - readonly __wbg_userkey_free: (a: number) => void; - readonly userkey_generate: () => number; - readonly userkey_from_seed: (a: number, b: number, c: number) => void; - readonly userkey_public_key: (a: number, b: number) => void; - readonly userkey_from_base58: (a: number, b: number, c: number) => void; - readonly userkey_to_base58: (a: number, b: number) => void; - readonly __wbg_operation_free: (a: number) => void; - readonly operation_store_values: (a: number, b: number, c: number) => void; - readonly operation_update_values: (a: number, b: number, c: number) => void; - readonly operation_compute: (a: number, b: number, c: number) => number; - readonly operation_retrieve_value: () => number; - readonly operation_store_program: (a: number, b: number, c: number) => void; - readonly operation_retrieve_permissions: () => number; - readonly operation_update_permissions: () => number; - readonly __wbg_permissions_free: (a: number) => void; - readonly permissions_new: () => number; - readonly permissions_default_for_user: (a: number, b: number) => number; - readonly permissions_add_retrieve_permissions: (a: number, b: number, c: number, d: number) => void; - readonly permissions_add_update_permissions: (a: number, b: number, c: number, d: number) => void; - readonly permissions_add_delete_permissions: (a: number, b: number, c: number, d: number) => void; - readonly permissions_add_compute_permissions: (a: number, b: number, c: number) => void; - readonly permissions_is_retrieve_allowed: (a: number, b: number, c: number) => number; - readonly permissions_is_update_allowed: (a: number, b: number, c: number) => number; - readonly permissions_is_delete_allowed: (a: number, b: number, c: number) => number; - readonly permissions_is_compute_allowed: (a: number, b: number, c: number, d: number, e: number) => number; - readonly __wbg_programbindings_free: (a: number) => void; - readonly programbindings_new: (a: number, b: number, c: number) => void; - readonly programbindings_add_input_party: (a: number, b: number, c: number, d: number, e: number, f: number) => void; - readonly programbindings_add_output_party: (a: number, b: number, c: number, d: number, e: number, f: number) => void; - readonly __wbg_clusterdescriptor_free: (a: number) => void; - readonly clusterdescriptor_id: (a: number, b: number) => void; - readonly clusterdescriptor_parties: (a: number, b: number) => void; - readonly clusterdescriptor_prime: (a: number, b: number) => void; - readonly clusterdescriptor_kappa: (a: number) => number; - readonly __wbg_preprocessingprotocolconfig_free: (a: number) => void; - readonly preprocessingprotocolconfig_batch_size: (a: number) => number; - readonly __wbg_nadavalue_free: (a: number) => void; - readonly nadavalue_new_secret_integer: (a: number, b: number, c: number) => void; - readonly nadavalue_new_secret_unsigned_integer: (a: number, b: number, c: number) => void; - readonly nadavalue_new_secret_blob: (a: number, b: number) => number; - readonly nadavalue_new_public_integer: (a: number, b: number, c: number) => void; - readonly nadavalue_new_public_unsigned_integer: (a: number, b: number, c: number) => void; - readonly nadavalue_to_byte_array: (a: number, b: number) => void; - readonly nadavalue_to_integer: (a: number, b: number) => void; - readonly __wbg_nadavalues_free: (a: number) => void; - readonly nadavalues_new: (a: number) => void; - readonly nadavalues_insert: (a: number, b: number, c: number, d: number) => void; - readonly nadavalues_length: (a: number) => number; - readonly memory: WebAssembly.Memory; - readonly __wbindgen_malloc: (a: number, b: number) => number; - readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; - readonly __wbindgen_export_3: WebAssembly.Table; - readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2ab2b16fa3ecb39d: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h122124be45102e22: (a: number, b: number) => void; - readonly __wbindgen_free: (a: number, b: number, c: number) => void; - readonly __wbindgen_exn_store: (a: number) => void; - readonly wasm_bindgen__convert__closures__invoke2_mut__hb30b10b3ecc70f29: (a: number, b: number, c: number, d: number) => void; - readonly __wbindgen_add_to_stack_pointer: (a: number) => number; - readonly __wbindgen_thread_destroy: (a?: number, b?: number) => void; - readonly __wbindgen_start: () => void; -} - -export type SyncInitInput = BufferSource | WebAssembly.Module; -/** -* Instantiates the given `module`, which can either be bytes or -* a precompiled `WebAssembly.Module`. -* -* @param {SyncInitInput} module -* @param {WebAssembly.Memory} maybe_memory -* -* @returns {InitOutput} -*/ -export function initSync(module: SyncInitInput, maybe_memory?: WebAssembly.Memory): InitOutput; - -/** -* If `module_or_path` is {RequestInfo} or {URL}, makes a request and -* for everything else, calls `WebAssembly.instantiate` directly. -* -* @param {InitInput | Promise} module_or_path -* @param {WebAssembly.Memory} maybe_memory -* -* @returns {Promise} -*/ -export default function __wbg_init (module_or_path?: InitInput | Promise, maybe_memory?: WebAssembly.Memory): Promise; diff --git a/packages/client-wasm/dist/index.js b/packages/client-wasm/dist/index.js deleted file mode 100644 index 54d1597..0000000 --- a/packages/client-wasm/dist/index.js +++ /dev/null @@ -1 +0,0 @@ -import{startWorker}from"./start-worker.js";import{websocket_transport}from"./websockets.js";let wasm;const cachedTextDecoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};"undefined"!=typeof TextDecoder&&cachedTextDecoder.decode();let cachedUint8Memory0=null;function getUint8Memory0(){return null!==cachedUint8Memory0&&cachedUint8Memory0.buffer===wasm.memory.buffer||(cachedUint8Memory0=new Uint8Array(wasm.memory.buffer)),cachedUint8Memory0}function getStringFromWasm0(e,t){return e>>>=0,cachedTextDecoder.decode(getUint8Memory0().slice(e,e+t))}const heap=new Array(128).fill(void 0);heap.push(void 0,null,!0,!1);let heap_next=heap.length;function addHeapObject(e){heap_next===heap.length&&heap.push(heap.length+1);const t=heap_next;return heap_next=heap[t],heap[t]=e,t}function getObject(e){return heap[e]}function dropObject(e){e<132||(heap[e]=heap_next,heap_next=e)}function takeObject(e){const t=getObject(e);return dropObject(e),t}let WASM_VECTOR_LEN=0;const cachedTextEncoder="undefined"!=typeof TextEncoder?new TextEncoder("utf-8"):{encode:()=>{throw Error("TextEncoder not available")}},encodeString=function(e,t){const n=cachedTextEncoder.encode(e);return t.set(n),{read:e.length,written:n.length}};function passStringToWasm0(e,t,n){if(void 0===n){const n=cachedTextEncoder.encode(e),_=t(n.length,1)>>>0;return getUint8Memory0().subarray(_,_+n.length).set(n),WASM_VECTOR_LEN=n.length,_}let _=e.length,r=t(_,1)>>>0;const a=getUint8Memory0();let i=0;for(;i<_;i++){const t=e.charCodeAt(i);if(t>127)break;a[r+i]=t}if(i!==_){0!==i&&(e=e.slice(i)),r=n(r,_,_=i+3*e.length,1)>>>0;const t=getUint8Memory0().subarray(r+i,r+_);i+=encodeString(e,t).written,r=n(r,_,i,1)>>>0}return WASM_VECTOR_LEN=i,r}function isLikeNone(e){return null==e}let cachedInt32Memory0=null;function getInt32Memory0(){return null!==cachedInt32Memory0&&cachedInt32Memory0.buffer===wasm.memory.buffer||(cachedInt32Memory0=new Int32Array(wasm.memory.buffer)),cachedInt32Memory0}let cachedFloat64Memory0=null;function getFloat64Memory0(){return null!==cachedFloat64Memory0&&cachedFloat64Memory0.buffer===wasm.memory.buffer||(cachedFloat64Memory0=new Float64Array(wasm.memory.buffer)),cachedFloat64Memory0}function debugString(e){const t=typeof e;if("number"==t||"boolean"==t||null==e)return`${e}`;if("string"==t)return`"${e}"`;if("symbol"==t){const t=e.description;return null==t?"Symbol":`Symbol(${t})`}if("function"==t){const t=e.name;return"string"==typeof t&&t.length>0?`Function(${t})`:"Function"}if(Array.isArray(e)){const t=e.length;let n="[";t>0&&(n+=debugString(e[0]));for(let _=1;_1))return toString.call(e);if(_=n[1],"Object"==_)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:_}const CLOSURE_DTORS="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>{wasm.__wbindgen_export_3.get(e.dtor)(e.a,e.b)}));function makeMutClosure(e,t,n,_){const r={a:e,b:t,cnt:1,dtor:n},a=(...e)=>{r.cnt++;const t=r.a;r.a=0;try{return _(t,r.b,...e)}finally{0==--r.cnt?(wasm.__wbindgen_export_3.get(r.dtor)(t,r.b),CLOSURE_DTORS.unregister(r)):r.a=t}};return a.original=r,CLOSURE_DTORS.register(a,r,r),a}function __wbg_adapter_44(e,t,n){wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2ab2b16fa3ecb39d(e,t,addHeapObject(n))}function __wbg_adapter_47(e,t){wasm._dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h122124be45102e22(e,t)}export function worker_entry_point(e){wasm.worker_entry_point(e)}function handleError(e,t){try{return e.apply(this,t)}catch(e){wasm.__wbindgen_exn_store(addHeapObject(e))}}function __wbg_adapter_152(e,t,n,_){wasm.wasm_bindgen__convert__closures__invoke2_mut__hb30b10b3ecc70f29(e,t,addHeapObject(n),addHeapObject(_))}function getArrayU8FromWasm0(e,t){return e>>>=0,getUint8Memory0().subarray(e/1,e/1+t)}let cachedUint32Memory0=null;function getUint32Memory0(){return null!==cachedUint32Memory0&&cachedUint32Memory0.buffer===wasm.memory.buffer||(cachedUint32Memory0=new Uint32Array(wasm.memory.buffer)),cachedUint32Memory0}function passArrayJsValueToWasm0(e,t){const n=t(4*e.length,4)>>>0,_=getUint32Memory0();for(let t=0;t>>0;return getUint8Memory0().set(e,n/1),WASM_VECTOR_LEN=e.length,n}const ClusterDescriptorFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_clusterdescriptor_free(e>>>0)));export class ClusterDescriptor{static __wrap(e){e>>>=0;const t=Object.create(ClusterDescriptor.prototype);return t.__wbg_ptr=e,ClusterDescriptorFinalization.register(t,t.__wbg_ptr,t),t}toJSON(){return{id:this.id,parties:this.parties,prime:this.prime,kappa:this.kappa}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,ClusterDescriptorFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_clusterdescriptor_free(e)}get id(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.clusterdescriptor_id(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get parties(){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.clusterdescriptor_parties(n,this.__wbg_ptr);var e=getInt32Memory0()[n/4+0],t=getInt32Memory0()[n/4+1];if(getInt32Memory0()[n/4+2])throw takeObject(t);return takeObject(e)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}get prime(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.clusterdescriptor_prime(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get kappa(){return wasm.clusterdescriptor_kappa(this.__wbg_ptr)>>>0}}const LoaderHelperFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_loaderhelper_free(e>>>0)));export class LoaderHelper{static __wrap(e){e>>>=0;const t=Object.create(LoaderHelper.prototype);return t.__wbg_ptr=e,LoaderHelperFinalization.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,LoaderHelperFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_loaderhelper_free(e)}mainJS(){return takeObject(wasm.loaderhelper_mainJS(this.__wbg_ptr))}}const NadaValueFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_nadavalue_free(e>>>0)));export class NadaValue{static __wrap(e){e>>>=0;const t=Object.create(NadaValue.prototype);return t.__wbg_ptr=e,NadaValueFinalization.register(t,t.__wbg_ptr,t),t}toJSON(){return{}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,NadaValueFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_nadavalue_free(e)}static new_secret_integer(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.nadavalue_new_secret_integer(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return NadaValue.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static new_secret_unsigned_integer(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.nadavalue_new_secret_unsigned_integer(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return NadaValue.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static new_secret_blob(e){const t=passArray8ToWasm0(e,wasm.__wbindgen_malloc),n=WASM_VECTOR_LEN,_=wasm.nadavalue_new_secret_blob(t,n);return NadaValue.__wrap(_)}static new_public_integer(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.nadavalue_new_public_integer(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return NadaValue.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static new_public_unsigned_integer(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.nadavalue_new_public_unsigned_integer(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return NadaValue.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}to_byte_array(){try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nadavalue_to_byte_array(r,this.__wbg_ptr);var e=getInt32Memory0()[r/4+0],t=getInt32Memory0()[r/4+1],n=getInt32Memory0()[r/4+2];if(getInt32Memory0()[r/4+3])throw takeObject(n);var _=getArrayU8FromWasm0(e,t).slice();return wasm.__wbindgen_free(e,1*t,1),_}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}to_integer(){let e,t;try{const s=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nadavalue_to_integer(s,this.__wbg_ptr);var n=getInt32Memory0()[s/4+0],_=getInt32Memory0()[s/4+1],r=getInt32Memory0()[s/4+2],a=getInt32Memory0()[s/4+3],i=n,o=_;if(a)throw i=0,o=0,takeObject(r);return e=i,t=o,getStringFromWasm0(i,o)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}}const NadaValuesFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_nadavalues_free(e>>>0)));export class NadaValues{toJSON(){return{length:this.length}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,NadaValuesFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_nadavalues_free(e)}constructor(){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nadavalues_new(n);var e=getInt32Memory0()[n/4+0],t=getInt32Memory0()[n/4+1];if(getInt32Memory0()[n/4+2])throw takeObject(t);return this.__wbg_ptr=e>>>0,this}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}insert(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;_assertClass(t,NadaValue),wasm.nadavalues_insert(this.__wbg_ptr,n,_,t.__wbg_ptr)}get length(){return wasm.nadavalues_length(this.__wbg_ptr)>>>0}}const NillionClientFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_nillionclient_free(e>>>0)));export class NillionClient{__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,NillionClientFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_nillionclient_free(e)}constructor(e,t,n){try{const o=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(e,UserKey);var _=e.__destroy_into_raw();_assertClass(t,NodeKey);var r=t.__destroy_into_raw();const s=passArrayJsValueToWasm0(n,wasm.__wbindgen_malloc),c=WASM_VECTOR_LEN;wasm.nillionclient_new(o,_,r,s,c);var a=getInt32Memory0()[o/4+0],i=getInt32Memory0()[o/4+1];if(getInt32Memory0()[o/4+2])throw takeObject(i);return this.__wbg_ptr=a>>>0,this}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static enable_remote_logging(){wasm.nillionclient_enable_remote_logging()}get party_id(){let e,t;try{const s=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nillionclient_party_id(s,this.__wbg_ptr);var n=getInt32Memory0()[s/4+0],_=getInt32Memory0()[s/4+1],r=getInt32Memory0()[s/4+2],a=getInt32Memory0()[s/4+3],i=n,o=_;if(a)throw i=0,o=0,takeObject(r);return e=i,t=o,getStringFromWasm0(i,o)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get user_id(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nillionclient_user_id(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}store_values(e,t,n,_){const r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;_assertClass(t,NadaValues);let i=0;return isLikeNone(n)||(_assertClass(n,Permissions),i=n.__destroy_into_raw()),_assertClass(_,PaymentReceipt),takeObject(wasm.nillionclient_store_values(this.__wbg_ptr,r,a,t.__wbg_ptr,i,_.__wbg_ptr))}retrieve_value(e,t,n,_){const r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN,s=passStringToWasm0(n,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),c=WASM_VECTOR_LEN;return _assertClass(_,PaymentReceipt),takeObject(wasm.nillionclient_retrieve_value(this.__wbg_ptr,r,a,i,o,s,c,_.__wbg_ptr))}update_values(e,t,n,_){const r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN;return _assertClass(n,NadaValues),_assertClass(_,PaymentReceipt),takeObject(wasm.nillionclient_update_values(this.__wbg_ptr,r,a,i,o,n.__wbg_ptr,_.__wbg_ptr))}delete_values(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN,r=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;return takeObject(wasm.nillionclient_delete_values(this.__wbg_ptr,n,_,r,a))}compute(e,t,n,_,r){const a=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),i=WASM_VECTOR_LEN;_assertClass(t,ProgramBindings);const o=passArrayJsValueToWasm0(n,wasm.__wbindgen_malloc),s=WASM_VECTOR_LEN;return _assertClass(_,NadaValues),_assertClass(r,PaymentReceipt),takeObject(wasm.nillionclient_compute(this.__wbg_ptr,a,i,t.__wbg_ptr,o,s,_.__wbg_ptr,r.__wbg_ptr))}compute_result(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;return takeObject(wasm.nillionclient_compute_result(this.__wbg_ptr,t,n))}retrieve_permissions(e,t,n){const _=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),r=WASM_VECTOR_LEN,a=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),i=WASM_VECTOR_LEN;return _assertClass(n,PaymentReceipt),takeObject(wasm.nillionclient_retrieve_permissions(this.__wbg_ptr,_,r,a,i,n.__wbg_ptr))}update_permissions(e,t,n,_){const r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN;return _assertClass(n,Permissions),_assertClass(_,PaymentReceipt),takeObject(wasm.nillionclient_update_permissions(this.__wbg_ptr,r,a,i,o,n.__wbg_ptr,_.__wbg_ptr))}store_program(e,t,n,_){const r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN,s=passArray8ToWasm0(n,wasm.__wbindgen_malloc),c=WASM_VECTOR_LEN;return _assertClass(_,PaymentReceipt),takeObject(wasm.nillionclient_store_program(this.__wbg_ptr,r,a,i,o,s,c,_.__wbg_ptr))}request_price_quote(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;return _assertClass(t,Operation),takeObject(wasm.nillionclient_request_price_quote(this.__wbg_ptr,n,_,t.__wbg_ptr))}cluster_information(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;return takeObject(wasm.nillionclient_cluster_information(this.__wbg_ptr,t,n))}static enable_tracking(e){try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);var t=isLikeNone(e)?0:passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;wasm.nillionclient_enable_tracking(r,t,n);var _=getInt32Memory0()[r/4+0];if(getInt32Memory0()[r/4+1])throw takeObject(_)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static get build_version(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.nillionclient_build_version(r);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}}const NodeKeyFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_nodekey_free(e>>>0)));export class NodeKey{static __wrap(e){e>>>=0;const t=Object.create(NodeKey.prototype);return t.__wbg_ptr=e,NodeKeyFinalization.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,NodeKeyFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_nodekey_free(e)}static from_seed(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN,_=wasm.nodekey_from_seed(t,n);return NodeKey.__wrap(_)}static from_base58(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN,_=wasm.nodekey_from_base58(t,n);return NodeKey.__wrap(_)}}const OperationFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_operation_free(e>>>0)));export class Operation{static __wrap(e){e>>>=0;const t=Object.create(Operation.prototype);return t.__wbg_ptr=e,OperationFinalization.register(t,t.__wbg_ptr,t),t}toJSON(){return{}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,OperationFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_operation_free(e)}static store_values(e,t){try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(e,NadaValues),wasm.operation_store_values(r,e.__wbg_ptr,t);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];if(getInt32Memory0()[r/4+2])throw takeObject(_);return Operation.__wrap(n)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static update_values(e,t){try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);_assertClass(e,NadaValues),wasm.operation_update_values(r,e.__wbg_ptr,t);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];if(getInt32Memory0()[r/4+2])throw takeObject(_);return Operation.__wrap(n)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static compute(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;_assertClass(t,NadaValues);const r=wasm.operation_compute(n,_,t.__wbg_ptr);return Operation.__wrap(r)}static retrieve_value(){const e=wasm.operation_retrieve_value();return Operation.__wrap(e)}static store_program(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passArray8ToWasm0(e,wasm.__wbindgen_malloc),a=WASM_VECTOR_LEN;wasm.operation_store_program(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return Operation.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}static retrieve_permissions(){const e=wasm.operation_retrieve_permissions();return Operation.__wrap(e)}static update_permissions(){const e=wasm.operation_update_permissions();return Operation.__wrap(e)}}const OperationCostFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_operationcost_free(e>>>0)));export class OperationCost{static __wrap(e){e>>>=0;const t=Object.create(OperationCost.prototype);return t.__wbg_ptr=e,OperationCostFinalization.register(t,t.__wbg_ptr,t),t}toJSON(){return{base_fee:this.base_fee,congestion_fee:this.congestion_fee,storage_fee:this.storage_fee,preprocessing_fee:this.preprocessing_fee,compute_fee:this.compute_fee,total:this.total}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,OperationCostFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_operationcost_free(e)}get base_fee(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_base_fee(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get congestion_fee(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_congestion_fee(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get storage_fee(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_storage_fee(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get preprocessing_fee(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_preprocessing_fee(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get compute_fee(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_compute_fee(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}get total(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.operationcost_total(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}}const PaymentReceiptFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_paymentreceipt_free(e>>>0)));export class PaymentReceipt{toJSON(){return{}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,PaymentReceiptFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_paymentreceipt_free(e)}constructor(e,t){_assertClass(e,PriceQuote);const n=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN,r=wasm.paymentreceipt_new(e.__wbg_ptr,n,_);return this.__wbg_ptr=r>>>0,this}}const PermissionsFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_permissions_free(e>>>0)));export class Permissions{static __wrap(e){e>>>=0;const t=Object.create(Permissions.prototype);return t.__wbg_ptr=e,PermissionsFinalization.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,PermissionsFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_permissions_free(e)}constructor(){const e=wasm.permissions_new();return this.__wbg_ptr=e>>>0,this}static default_for_user(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN,_=wasm.permissions_default_for_user(t,n);return Permissions.__wrap(_)}add_retrieve_permissions(e){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16),_=passArrayJsValueToWasm0(e,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;wasm.permissions_add_retrieve_permissions(n,this.__wbg_ptr,_,r);var t=getInt32Memory0()[n/4+0];if(getInt32Memory0()[n/4+1])throw takeObject(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}add_update_permissions(e){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16),_=passArrayJsValueToWasm0(e,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;wasm.permissions_add_update_permissions(n,this.__wbg_ptr,_,r);var t=getInt32Memory0()[n/4+0];if(getInt32Memory0()[n/4+1])throw takeObject(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}add_delete_permissions(e){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16),_=passArrayJsValueToWasm0(e,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;wasm.permissions_add_delete_permissions(n,this.__wbg_ptr,_,r);var t=getInt32Memory0()[n/4+0];if(getInt32Memory0()[n/4+1])throw takeObject(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}add_compute_permissions(e){try{const n=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.permissions_add_compute_permissions(n,this.__wbg_ptr,addHeapObject(e));var t=getInt32Memory0()[n/4+0];if(getInt32Memory0()[n/4+1])throw takeObject(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}is_retrieve_allowed(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;return 0!==wasm.permissions_is_retrieve_allowed(this.__wbg_ptr,t,n)}is_update_allowed(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;return 0!==wasm.permissions_is_update_allowed(this.__wbg_ptr,t,n)}is_delete_allowed(e){const t=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;return 0!==wasm.permissions_is_delete_allowed(this.__wbg_ptr,t,n)}is_compute_allowed(e,t){const n=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN,r=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;return 0!==wasm.permissions_is_compute_allowed(this.__wbg_ptr,n,_,r,a)}}const PreprocessingProtocolConfigFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_preprocessingprotocolconfig_free(e>>>0)));export class PreprocessingProtocolConfig{__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,PreprocessingProtocolConfigFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_preprocessingprotocolconfig_free(e)}get batch_size(){return wasm.preprocessingprotocolconfig_batch_size(this.__wbg_ptr)>>>0}}const PriceQuoteFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_pricequote_free(e>>>0)));export class PriceQuote{static __wrap(e){e>>>=0;const t=Object.create(PriceQuote.prototype);return t.__wbg_ptr=e,PriceQuoteFinalization.register(t,t.__wbg_ptr,t),t}toJSON(){return{expires_at:this.expires_at,cost:this.cost,nonce:this.nonce}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,PriceQuoteFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_pricequote_free(e)}get expires_at(){return takeObject(wasm.pricequote_expires_at(this.__wbg_ptr))}get cost(){const e=wasm.pricequote_cost(this.__wbg_ptr);return OperationCost.__wrap(e)}get nonce(){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.pricequote_nonce(_,this.__wbg_ptr);var e=getInt32Memory0()[_/4+0],t=getInt32Memory0()[_/4+1],n=getArrayU8FromWasm0(e,t).slice();return wasm.__wbindgen_free(e,1*t,1),n}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}const ProgramBindingsFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_programbindings_free(e>>>0)));export class ProgramBindings{toJSON(){return{}}toString(){return JSON.stringify(this)}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,ProgramBindingsFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_programbindings_free(e)}constructor(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.programbindings_new(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return this.__wbg_ptr=t>>>0,this}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}add_input_party(e,t){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN;wasm.programbindings_add_input_party(_,this.__wbg_ptr,r,a,i,o);var n=getInt32Memory0()[_/4+0];if(getInt32Memory0()[_/4+1])throw takeObject(n)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}add_output_party(e,t){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN,i=passStringToWasm0(t,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),o=WASM_VECTOR_LEN;wasm.programbindings_add_output_party(_,this.__wbg_ptr,r,a,i,o);var n=getInt32Memory0()[_/4+0];if(getInt32Memory0()[_/4+1])throw takeObject(n)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}}const UserKeyFinalization="undefined"==typeof FinalizationRegistry?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry((e=>wasm.__wbg_userkey_free(e>>>0)));export class UserKey{static __wrap(e){e>>>=0;const t=Object.create(UserKey.prototype);return t.__wbg_ptr=e,UserKeyFinalization.register(t,t.__wbg_ptr,t),t}__destroy_into_raw(){const e=this.__wbg_ptr;return this.__wbg_ptr=0,UserKeyFinalization.unregister(this),e}free(){const e=this.__destroy_into_raw();wasm.__wbg_userkey_free(e)}static generate(){const e=wasm.userkey_generate();return UserKey.__wrap(e)}static from_seed(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.userkey_from_seed(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return UserKey.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}public_key(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.userkey_public_key(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}static from_base58(e){try{const _=wasm.__wbindgen_add_to_stack_pointer(-16),r=passStringToWasm0(e,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;wasm.userkey_from_base58(_,r,a);var t=getInt32Memory0()[_/4+0],n=getInt32Memory0()[_/4+1];if(getInt32Memory0()[_/4+2])throw takeObject(n);return UserKey.__wrap(t)}finally{wasm.__wbindgen_add_to_stack_pointer(16)}}to_base58(){let e,t;try{const r=wasm.__wbindgen_add_to_stack_pointer(-16);wasm.userkey_to_base58(r,this.__wbg_ptr);var n=getInt32Memory0()[r/4+0],_=getInt32Memory0()[r/4+1];return e=n,t=_,getStringFromWasm0(n,_)}finally{wasm.__wbindgen_add_to_stack_pointer(16),wasm.__wbindgen_free(e,t,1)}}}async function __wbg_load(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function __wbg_get_imports(){const e={wbg:{}};return e.wbg.__wbg_new_72fb9a18b5ae2624=function(){return addHeapObject(new Object)},e.wbg.__wbindgen_string_new=function(e,t){return addHeapObject(getStringFromWasm0(e,t))},e.wbg.__wbg_set_1f9b04f170055d33=function(){return handleError((function(e,t,n){return Reflect.set(getObject(e),getObject(t),getObject(n))}),arguments)},e.wbg.__wbindgen_object_drop_ref=function(e){takeObject(e)},e.wbg.__wbindgen_module=function(){return addHeapObject(__wbg_init.__wbindgen_wasm_module)},e.wbg.__wbindgen_memory=function(){return addHeapObject(wasm.memory)},e.wbg.__wbindgen_number_new=function(e){return addHeapObject(e)},e.wbg.__wbg_startWorker_999d186cbabd739c=function(e,t,n,_,r){return addHeapObject(startWorker(takeObject(e),takeObject(t),takeObject(n),takeObject(_),LoaderHelper.__wrap(r)))},e.wbg.__wbindgen_object_clone_ref=function(e){return addHeapObject(getObject(e))},e.wbg.__wbg_name_c1b921b610dd2f64=function(e,t){const n=passStringToWasm0(getObject(t).name,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_close_e37e2399b189a4cd=function(e){getObject(e).close()},e.wbg.__wbg_static_accessor_URL_1a7ae0d56f4d6839=function(){return addHeapObject(import.meta.url)},e.wbg.__wbg_new0_7d84e5b2cd9fdc73=function(){return addHeapObject(new Date)},e.wbg.__wbg_getTime_2bc4375165f02d15=function(e){return getObject(e).getTime()},e.wbg.__wbg_getItem_164e8e5265095b87=function(){return handleError((function(e,t,n,_){const r=getObject(t).getItem(getStringFromWasm0(n,_));var a=isLikeNone(r)?0:passStringToWasm0(r,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),i=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=i,getInt32Memory0()[e/4+0]=a}),arguments)},e.wbg.__wbg_instanceof_Window_f401953a2cf86220=function(e){let t;try{t=getObject(e)instanceof Window}catch(e){t=!1}return t},e.wbg.__wbg_localStorage_e381d34d0c40c761=function(){return handleError((function(e){const t=getObject(e).localStorage;return isLikeNone(t)?0:addHeapObject(t)}),arguments)},e.wbg.__wbg_setItem_ba2bb41d73dac079=function(){return handleError((function(e,t,n,_,r){getObject(e).setItem(getStringFromWasm0(t,n),getStringFromWasm0(_,r))}),arguments)},e.wbg.__wbg_abort_2aa7521d5690750e=function(e){getObject(e).abort()},e.wbg.__wbg_now_3014639a94423537=function(){return Date.now()},e.wbg.__wbg_new_ab6fd82b10560829=function(){return handleError((function(){return addHeapObject(new Headers)}),arguments)},e.wbg.__wbg_new_0d76b0581eca6298=function(){return handleError((function(){return addHeapObject(new AbortController)}),arguments)},e.wbg.__wbg_signal_a61f78a3478fd9bc=function(e){return addHeapObject(getObject(e).signal)},e.wbg.__wbg_append_7bfcb4937d1d5e29=function(){return handleError((function(e,t,n,_,r){getObject(e).append(getStringFromWasm0(t,n),getStringFromWasm0(_,r))}),arguments)},e.wbg.__wbg_instanceof_Response_849eb93e75734b6e=function(e){let t;try{t=getObject(e)instanceof Response}catch(e){t=!1}return t},e.wbg.__wbg_status_61a01141acd3cf74=function(e){return getObject(e).status},e.wbg.__wbg_headers_9620bfada380764a=function(e){return addHeapObject(getObject(e).headers)},e.wbg.__wbg_next_196c84450b364254=function(){return handleError((function(e){return addHeapObject(getObject(e).next())}),arguments)},e.wbg.__wbg_done_298b57d23c0fc80c=function(e){return getObject(e).done},e.wbg.__wbg_value_d93c65011f51a456=function(e){return addHeapObject(getObject(e).value)},e.wbg.__wbg_stringify_8887fe74e1c50d81=function(){return handleError((function(e){return addHeapObject(JSON.stringify(getObject(e)))}),arguments)},e.wbg.__wbindgen_string_get=function(e,t){const n=getObject(t),_="string"==typeof n?n:void 0;var r=isLikeNone(_)?0:passStringToWasm0(_,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),a=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=a,getInt32Memory0()[e/4+0]=r},e.wbg.__wbg_text_450a059667fd91fd=function(){return handleError((function(e){return addHeapObject(getObject(e).text())}),arguments)},e.wbg.__wbg_new_abda76e883ba8a5f=function(){return addHeapObject(new Error)},e.wbg.__wbg_stack_658279fe44541cf6=function(e,t){const n=passStringToWasm0(getObject(t).stack,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_error_f851667af71bcfc6=function(e,t){let n,_;try{n=e,_=t,console.error(getStringFromWasm0(e,t))}finally{wasm.__wbindgen_free(n,_,1)}},e.wbg.__wbg_buffer_12d079cc21e14bdb=function(e){return addHeapObject(getObject(e).buffer)},e.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb=function(e,t,n){return addHeapObject(new Uint8Array(getObject(e),t>>>0,n>>>0))},e.wbg.__wbg_randomFillSync_5c9c955aa56b6049=function(){return handleError((function(e,t){getObject(e).randomFillSync(takeObject(t))}),arguments)},e.wbg.__wbg_subarray_a1f73cd4b5b42fe1=function(e,t,n){return addHeapObject(getObject(e).subarray(t>>>0,n>>>0))},e.wbg.__wbg_getRandomValues_3aa56aa6edec874c=function(){return handleError((function(e,t){getObject(e).getRandomValues(getObject(t))}),arguments)},e.wbg.__wbg_crypto_1d1f22824a6a080c=function(e){return addHeapObject(getObject(e).crypto)},e.wbg.__wbindgen_is_object=function(e){const t=getObject(e);return"object"==typeof t&&null!==t},e.wbg.__wbg_process_4a72847cc503995b=function(e){return addHeapObject(getObject(e).process)},e.wbg.__wbg_versions_f686565e586dd935=function(e){return addHeapObject(getObject(e).versions)},e.wbg.__wbg_node_104a2ff8d6ea03a2=function(e){return addHeapObject(getObject(e).node)},e.wbg.__wbindgen_is_string=function(e){return"string"==typeof getObject(e)},e.wbg.__wbg_require_cca90b1a94a0255b=function(){return handleError((function(){return addHeapObject(module.require)}),arguments)},e.wbg.__wbindgen_is_function=function(e){return"function"==typeof getObject(e)},e.wbg.__wbg_call_b3ca7c6051f9bec1=function(){return handleError((function(e,t,n){return addHeapObject(getObject(e).call(getObject(t),getObject(n)))}),arguments)},e.wbg.__wbg_msCrypto_eb05e62b530a1508=function(e){return addHeapObject(getObject(e).msCrypto)},e.wbg.__wbg_newwithlength_e9b4878cebadb3d3=function(e){return addHeapObject(new Uint8Array(e>>>0))},e.wbg.__wbg_code_5ee5dcc2842228cd=function(e){return getObject(e).code},e.wbg.__wbg_reason_5ed6709323849cb1=function(e,t){const n=passStringToWasm0(getObject(t).reason,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_wasClean_8222e9acf5c5ad07=function(e){return getObject(e).wasClean},e.wbg.__wbg_data_3ce7c145ca4fbcdc=function(e){return addHeapObject(getObject(e).data)},e.wbg.__wbg_instanceof_ArrayBuffer_836825be07d4c9d2=function(e){let t;try{t=getObject(e)instanceof ArrayBuffer}catch(e){t=!1}return t},e.wbg.__wbg_new_63b92bc8671ed464=function(e){return addHeapObject(new Uint8Array(getObject(e)))},e.wbg.__wbg_send_70603dff16b81b66=function(){return handleError((function(e,t,n){getObject(e).send(getStringFromWasm0(t,n))}),arguments)},e.wbg.__wbg_send_5fcd7bab9777194e=function(){return handleError((function(e,t,n){getObject(e).send(getArrayU8FromWasm0(t,n))}),arguments)},e.wbg.__wbg_instanceof_Error_e20bb56fd5591a93=function(e){let t;try{t=getObject(e)instanceof Error}catch(e){t=!1}return t},e.wbg.__wbg_name_e7429f0dda6079e2=function(e){return addHeapObject(getObject(e).name)},e.wbg.__wbg_message_5bf28016c2b49cfb=function(e){return addHeapObject(getObject(e).message)},e.wbg.__wbg_toString_ffe4c9ea3b3532e9=function(e){return addHeapObject(getObject(e).toString())},e.wbg.__wbg_setTimeout_75cb9b6991a4031d=function(){return handleError((function(e,t){return addHeapObject(setTimeout(getObject(e),t))}),arguments)},e.wbg.__wbg_get_e3c254076557e348=function(){return handleError((function(e,t){return addHeapObject(Reflect.get(getObject(e),getObject(t)))}),arguments)},e.wbg.__wbg_now_4e659b3d15f470d9=function(e){return getObject(e).now()},e.wbg.__wbg_iterator_2cee6dadfd956dfa=function(){return addHeapObject(Symbol.iterator)},e.wbg.__wbg_call_27c0f87801dedf93=function(){return handleError((function(e,t){return addHeapObject(getObject(e).call(getObject(t)))}),arguments)},e.wbg.__wbg_next_40fc327bfc8770e6=function(e){return addHeapObject(getObject(e).next)},e.wbg.__wbg_set_a47bac70306a19a7=function(e,t,n){getObject(e).set(getObject(t),n>>>0)},e.wbg.__wbg_length_c20a40f15020d68a=function(e){return getObject(e).length},e.wbg.__wbg_self_ce0dbfc45cf2f5be=function(){return handleError((function(){return addHeapObject(self.self)}),arguments)},e.wbg.__wbg_window_c6fb939a7f436783=function(){return handleError((function(){return addHeapObject(window.window)}),arguments)},e.wbg.__wbg_globalThis_d1e6af4856ba331b=function(){return handleError((function(){return addHeapObject(globalThis.globalThis)}),arguments)},e.wbg.__wbg_global_207b558942527489=function(){return handleError((function(){return addHeapObject(global.global)}),arguments)},e.wbg.__wbindgen_is_undefined=function(e){return void 0===getObject(e)},e.wbg.__wbg_newnoargs_e258087cd0daa0ea=function(e,t){return addHeapObject(new Function(getStringFromWasm0(e,t)))},e.wbg.__wbg_clearTimeout_76877dbc010e786d=function(e){return addHeapObject(clearTimeout(takeObject(e)))},e.wbg.__wbindgen_cb_drop=function(e){const t=takeObject(e).original;return 1==t.cnt--&&(t.a=0,!0)},e.wbg.__wbg_dial_30e8812bd98d8882=function(){return handleError((function(e,t,n,_){return addHeapObject(getObject(e).dial(getStringFromWasm0(t,n),0!==_))}),arguments)},e.wbg.__wbindgen_is_null=function(e){return null===getObject(e)},e.wbg.__wbg_write_3d1f2c679934dd25=function(){return handleError((function(e,t,n){return addHeapObject(getObject(e).write(getArrayU8FromWasm0(t,n)))}),arguments)},e.wbg.__wbg_shutdown_a85687f76230bdad=function(){return handleError((function(e){getObject(e).shutdown()}),arguments)},e.wbg.__wbg_instanceof_Object_71ca3c0a59266746=function(e){let t;try{t=getObject(e)instanceof Object}catch(e){t=!1}return t},e.wbg.__wbg_toString_c816a20ab859d0c1=function(e){return addHeapObject(getObject(e).toString())},e.wbg.__wbg_newaddrs_71100193fa47c194=function(e,t){const n=getObject(t).new_addrs;var _=isLikeNone(n)?0:passArrayJsValueToWasm0(n,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=r,getInt32Memory0()[e/4+0]=_},e.wbg.__wbg_newconnections_44d312e897866295=function(e,t){const n=getObject(t).new_connections;var _=isLikeNone(n)?0:passArrayJsValueToWasm0(n,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=r,getInt32Memory0()[e/4+0]=_},e.wbg.__wbg_localaddr_91f6c1af88a435e2=function(e,t){const n=passStringToWasm0(getObject(t).local_addr,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_observedaddr_1ca1352afe737cc2=function(e,t){const n=passStringToWasm0(getObject(t).observed_addr,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_connection_632aa60cbc9cffe2=function(e){return addHeapObject(getObject(e).connection)},e.wbg.__wbg_read_c68b57fe8b00a7b9=function(e){return addHeapObject(getObject(e).read)},e.wbg.__wbg_expiredaddrs_c5a2f22f3c1b584f=function(e,t){const n=getObject(t).expired_addrs;var _=isLikeNone(n)?0:passArrayJsValueToWasm0(n,wasm.__wbindgen_malloc),r=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=r,getInt32Memory0()[e/4+0]=_},e.wbg.__wbg_close_6a852f1689b0b8e2=function(e){getObject(e).close()},e.wbg.__wbg_permissions_new=function(e){return addHeapObject(Permissions.__wrap(e))},e.wbg.__wbg_new_d9bc3a0147634640=function(){return addHeapObject(new Map)},e.wbg.__wbindgen_error_new=function(e,t){return addHeapObject(new Error(getStringFromWasm0(e,t)))},e.wbg.__wbg_fromEntries_c9d8ec8925e677a8=function(){return handleError((function(e){return addHeapObject(Object.fromEntries(getObject(e)))}),arguments)},e.wbg.__wbg_set_8417257aaedc936b=function(e,t,n){return addHeapObject(getObject(e).set(getObject(t),getObject(n)))},e.wbg.__wbg_pricequote_new=function(e){return addHeapObject(PriceQuote.__wrap(e))},e.wbg.__wbg_clusterdescriptor_new=function(e){return addHeapObject(ClusterDescriptor.__wrap(e))},e.wbg.__wbg_nadavalue_new=function(e){return addHeapObject(NadaValue.__wrap(e))},e.wbg.__wbg_new_6c74223c77cfabad=function(){return handleError((function(e,t){return addHeapObject(new WebSocket(getStringFromWasm0(e,t)))}),arguments)},e.wbg.__wbg_setbinaryType_b0cf5103cd561959=function(e,t){getObject(e).binaryType=takeObject(t)},e.wbg.__wbg_addEventListener_4283b15b4f039eb5=function(){return handleError((function(e,t,n,_,r){getObject(e).addEventListener(getStringFromWasm0(t,n),getObject(_),getObject(r))}),arguments)},e.wbg.__wbg_addEventListener_53b787075bd5e003=function(){return handleError((function(e,t,n,_){getObject(e).addEventListener(getStringFromWasm0(t,n),getObject(_))}),arguments)},e.wbg.__wbg_error_8e3928cfb8a43e2b=function(e){console.error(getObject(e))},e.wbg.__wbg_new_81740750da40724f=function(e,t){try{var n={a:e,b:t};const _=new Promise(((e,t)=>{const _=n.a;n.a=0;try{return __wbg_adapter_152(_,n.b,e,t)}finally{n.a=_}}));return addHeapObject(_)}finally{n.a=n.b=0}},e.wbg.__wbg_newwithlength_66ae46612e7f0234=function(e){return addHeapObject(new Array(e>>>0))},e.wbg.__wbg_set_d4638f722068f043=function(e,t,n){getObject(e)[t>>>0]=takeObject(n)},e.wbg.__wbindgen_bigint_from_str=function(e,t){return addHeapObject(BigInt(getStringFromWasm0(e,t)))},e.wbg.__wbg_new_cf3ec55744a78578=function(e){return addHeapObject(new Date(getObject(e)))},e.wbg.__wbg_get_bd8e338fbd5f5cc8=function(e,t){return addHeapObject(getObject(e)[t>>>0])},e.wbg.__wbg_entries_95cc2c823b285a09=function(e){return addHeapObject(Object.entries(getObject(e)))},e.wbg.__wbg_length_cd7af8117672b8b8=function(e){return getObject(e).length},e.wbg.__wbg_isArray_2ab64d95e09ea0ae=function(e){return Array.isArray(getObject(e))},e.wbg.__wbg_new_16b304a2cfa7ff4a=function(){return addHeapObject(new Array)},e.wbg.__wbg_listenon_ff60af88e263af6b=function(){return handleError((function(e,t,n){return addHeapObject(getObject(e).listen_on(getStringFromWasm0(t,n)))}),arguments)},e.wbg.__wbg_websockettransport_84c8ba3f0c468e40=function(){return addHeapObject(websocket_transport())},e.wbg.__wbg_has_0af94d20077affa2=function(){return handleError((function(e,t){return Reflect.has(getObject(e),getObject(t))}),arguments)},e.wbg.__wbg_fetch_1e4e8ed1f64c7e28=function(e){return addHeapObject(fetch(getObject(e)))},e.wbg.__wbg_fetch_921fad6ef9e883dd=function(e,t){return addHeapObject(getObject(e).fetch(getObject(t)))},e.wbg.__wbindgen_jsval_loose_eq=function(e,t){return getObject(e)==getObject(t)},e.wbg.__wbindgen_boolean_get=function(e){const t=getObject(e);return"boolean"==typeof t?t?1:0:2},e.wbg.__wbindgen_number_get=function(e,t){const n=getObject(t),_="number"==typeof n?n:void 0;getFloat64Memory0()[e/8+1]=isLikeNone(_)?0:_,getInt32Memory0()[e/4+0]=!isLikeNone(_)},e.wbg.__wbg_instanceof_Uint8Array_2b3bbecd033d19f6=function(e){let t;try{t=getObject(e)instanceof Uint8Array}catch(e){t=!1}return t},e.wbg.__wbg_String_b9412f8799faab3e=function(e,t){const n=passStringToWasm0(String(getObject(t)),wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbindgen_debug_string=function(e,t){const n=passStringToWasm0(debugString(getObject(t)),wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbindgen_throw=function(e,t){throw new Error(getStringFromWasm0(e,t))},e.wbg.__wbindgen_rethrow=function(e){throw takeObject(e)},e.wbg.__wbg_queueMicrotask_3cbae2ec6b6cd3d6=function(e){return addHeapObject(getObject(e).queueMicrotask)},e.wbg.__wbg_resolve_b0083a7967828ec8=function(e){return addHeapObject(Promise.resolve(getObject(e)))},e.wbg.__wbg_then_a73caa9a87991566=function(e,t,n){return addHeapObject(getObject(e).then(getObject(t),getObject(n)))},e.wbg.__wbindgen_link_fc1eedd35dc7e0a6=function(e){const t=passStringToWasm0("data:application/javascript,"+encodeURIComponent("onmessage = function (ev) {\n let [ia, index, value] = ev.data;\n ia = new Int32Array(ia.buffer);\n let result = Atomics.wait(ia, index, value);\n postMessage(result);\n };\n "),wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),n=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=n,getInt32Memory0()[e/4+0]=t},e.wbg.__wbg_new_d1187ae36d662ef9=function(){return handleError((function(e,t){return addHeapObject(new Worker(getStringFromWasm0(e,t)))}),arguments)},e.wbg.__wbg_setonmessage_503809e5bb51bd33=function(e,t){getObject(e).onmessage=getObject(t)},e.wbg.__wbg_of_6a70eed8d41f469c=function(e,t,n){return addHeapObject(Array.of(getObject(e),getObject(t),getObject(n)))},e.wbg.__wbg_postMessage_7380d10e8b8269df=function(){return handleError((function(e,t){getObject(e).postMessage(getObject(t))}),arguments)},e.wbg.__wbg_then_0c86a60e8fcfe9f6=function(e,t){return addHeapObject(getObject(e).then(getObject(t)))},e.wbg.__wbg_queueMicrotask_481971b0d87f3dd4=function(e){queueMicrotask(getObject(e))},e.wbg.__wbg_waitAsync_5d743fc9058ba01a=function(){return addHeapObject(Atomics.waitAsync)},e.wbg.__wbg_new_8cccba86b0f574cb=function(e){return addHeapObject(new Int32Array(getObject(e)))},e.wbg.__wbg_waitAsync_46d5c36955b71a79=function(e,t,n){return addHeapObject(Atomics.waitAsync(getObject(e),t,n))},e.wbg.__wbg_async_19c0400d97cc72fe=function(e){return getObject(e).async},e.wbg.__wbg_value_571d60108110e917=function(e){return addHeapObject(getObject(e).value)},e.wbg.__wbg_readyState_1c157e4ea17c134a=function(e){return getObject(e).readyState},e.wbg.__wbg_close_acd9532ff5c093ea=function(){return handleError((function(e){getObject(e).close()}),arguments)},e.wbg.__wbg_removeEventListener_92cb9b3943463338=function(){return handleError((function(e,t,n,_){getObject(e).removeEventListener(getStringFromWasm0(t,n),getObject(_))}),arguments)},e.wbg.__wbg_newwitheventinitdict_c939a6b964db4d91=function(){return handleError((function(e,t,n){return addHeapObject(new CloseEvent(getStringFromWasm0(e,t),getObject(n)))}),arguments)},e.wbg.__wbg_dispatchEvent_63c0c01600a98fd2=function(){return handleError((function(e,t){return getObject(e).dispatchEvent(getObject(t))}),arguments)},e.wbg.__wbg_url_5f6dc4009ac5f99d=function(e,t){const n=passStringToWasm0(getObject(t).url,wasm.__wbindgen_malloc,wasm.__wbindgen_realloc),_=WASM_VECTOR_LEN;getInt32Memory0()[e/4+1]=_,getInt32Memory0()[e/4+0]=n},e.wbg.__wbg_newwithstrandinit_3fd6fba4083ff2d0=function(){return handleError((function(e,t,n){return addHeapObject(new Request(getStringFromWasm0(e,t),getObject(n)))}),arguments)},e.wbg.__wbindgen_closure_wrapper1224=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_44))},e.wbg.__wbindgen_closure_wrapper1226=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_47))},e.wbg.__wbindgen_closure_wrapper1231=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_44))},e.wbg.__wbindgen_closure_wrapper1236=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_44))},e.wbg.__wbindgen_closure_wrapper1265=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_47))},e.wbg.__wbindgen_closure_wrapper7434=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_44))},e.wbg.__wbindgen_closure_wrapper7458=function(e,t,n){return addHeapObject(makeMutClosure(e,t,108,__wbg_adapter_44))},e}function __wbg_init_memory(e,t){e.wbg.memory=t||new WebAssembly.Memory({initial:25,maximum:16384,shared:!0})}function __wbg_finalize_init(e,t){return wasm=e.exports,__wbg_init.__wbindgen_wasm_module=t,cachedFloat64Memory0=null,cachedInt32Memory0=null,cachedUint32Memory0=null,cachedUint8Memory0=null,wasm.__wbindgen_start(),wasm}function initSync(e,t){if(void 0!==wasm)return wasm;const n=__wbg_get_imports();return __wbg_init_memory(n,t),e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),__wbg_finalize_init(new WebAssembly.Instance(e,n),e)}async function __wbg_init(e,t){if(void 0!==wasm)return wasm;void 0===e&&(e=new URL("index_bg.wasm",import.meta.url));const n=__wbg_get_imports();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e)),__wbg_init_memory(n,t);const{instance:_,module:r}=await __wbg_load(await e,n);return __wbg_finalize_init(_,r)}export{initSync};export default __wbg_init; diff --git a/packages/client-wasm/dist/index_bg.wasm b/packages/client-wasm/dist/index_bg.wasm deleted file mode 100644 index 8743930..0000000 Binary files a/packages/client-wasm/dist/index_bg.wasm and /dev/null differ diff --git a/packages/client-wasm/dist/index_bg.wasm.d.ts b/packages/client-wasm/dist/index_bg.wasm.d.ts deleted file mode 100644 index ceff7f2..0000000 --- a/packages/client-wasm/dist/index_bg.wasm.d.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export function __wbg_loaderhelper_free(a: number): void; -export function loaderhelper_mainJS(a: number): number; -export function worker_entry_point(a: number): void; -export function __wbg_nillionclient_free(a: number): void; -export function nillionclient_new(a: number, b: number, c: number, d: number, e: number): void; -export function nillionclient_enable_remote_logging(): void; -export function nillionclient_party_id(a: number, b: number): void; -export function nillionclient_user_id(a: number, b: number): void; -export function nillionclient_store_values(a: number, b: number, c: number, d: number, e: number, f: number): number; -export function nillionclient_retrieve_value(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number; -export function nillionclient_update_values(a: number, b: number, c: number, d: number, e: number, f: number, g: number): number; -export function nillionclient_delete_values(a: number, b: number, c: number, d: number, e: number): number; -export function nillionclient_compute(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number; -export function nillionclient_compute_result(a: number, b: number, c: number): number; -export function nillionclient_retrieve_permissions(a: number, b: number, c: number, d: number, e: number, f: number): number; -export function nillionclient_update_permissions(a: number, b: number, c: number, d: number, e: number, f: number, g: number): number; -export function nillionclient_store_program(a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number): number; -export function nillionclient_request_price_quote(a: number, b: number, c: number, d: number): number; -export function nillionclient_cluster_information(a: number, b: number, c: number): number; -export function nillionclient_enable_tracking(a: number, b: number, c: number): void; -export function nillionclient_build_version(a: number): void; -export function __wbg_pricequote_free(a: number): void; -export function pricequote_expires_at(a: number): number; -export function pricequote_cost(a: number): number; -export function pricequote_nonce(a: number, b: number): void; -export function __wbg_operationcost_free(a: number): void; -export function operationcost_base_fee(a: number, b: number): void; -export function operationcost_congestion_fee(a: number, b: number): void; -export function operationcost_storage_fee(a: number, b: number): void; -export function operationcost_preprocessing_fee(a: number, b: number): void; -export function operationcost_compute_fee(a: number, b: number): void; -export function operationcost_total(a: number, b: number): void; -export function __wbg_paymentreceipt_free(a: number): void; -export function paymentreceipt_new(a: number, b: number, c: number): number; -export function __wbg_nodekey_free(a: number): void; -export function nodekey_from_seed(a: number, b: number): number; -export function nodekey_from_base58(a: number, b: number): number; -export function __wbg_userkey_free(a: number): void; -export function userkey_generate(): number; -export function userkey_from_seed(a: number, b: number, c: number): void; -export function userkey_public_key(a: number, b: number): void; -export function userkey_from_base58(a: number, b: number, c: number): void; -export function userkey_to_base58(a: number, b: number): void; -export function __wbg_operation_free(a: number): void; -export function operation_store_values(a: number, b: number, c: number): void; -export function operation_update_values(a: number, b: number, c: number): void; -export function operation_compute(a: number, b: number, c: number): number; -export function operation_retrieve_value(): number; -export function operation_store_program(a: number, b: number, c: number): void; -export function operation_retrieve_permissions(): number; -export function operation_update_permissions(): number; -export function __wbg_permissions_free(a: number): void; -export function permissions_new(): number; -export function permissions_default_for_user(a: number, b: number): number; -export function permissions_add_retrieve_permissions(a: number, b: number, c: number, d: number): void; -export function permissions_add_update_permissions(a: number, b: number, c: number, d: number): void; -export function permissions_add_delete_permissions(a: number, b: number, c: number, d: number): void; -export function permissions_add_compute_permissions(a: number, b: number, c: number): void; -export function permissions_is_retrieve_allowed(a: number, b: number, c: number): number; -export function permissions_is_update_allowed(a: number, b: number, c: number): number; -export function permissions_is_delete_allowed(a: number, b: number, c: number): number; -export function permissions_is_compute_allowed(a: number, b: number, c: number, d: number, e: number): number; -export function __wbg_programbindings_free(a: number): void; -export function programbindings_new(a: number, b: number, c: number): void; -export function programbindings_add_input_party(a: number, b: number, c: number, d: number, e: number, f: number): void; -export function programbindings_add_output_party(a: number, b: number, c: number, d: number, e: number, f: number): void; -export function __wbg_clusterdescriptor_free(a: number): void; -export function clusterdescriptor_id(a: number, b: number): void; -export function clusterdescriptor_parties(a: number, b: number): void; -export function clusterdescriptor_prime(a: number, b: number): void; -export function clusterdescriptor_kappa(a: number): number; -export function __wbg_preprocessingprotocolconfig_free(a: number): void; -export function preprocessingprotocolconfig_batch_size(a: number): number; -export function __wbg_nadavalue_free(a: number): void; -export function nadavalue_new_secret_integer(a: number, b: number, c: number): void; -export function nadavalue_new_secret_unsigned_integer(a: number, b: number, c: number): void; -export function nadavalue_new_secret_blob(a: number, b: number): number; -export function nadavalue_new_public_integer(a: number, b: number, c: number): void; -export function nadavalue_new_public_unsigned_integer(a: number, b: number, c: number): void; -export function nadavalue_to_byte_array(a: number, b: number): void; -export function nadavalue_to_integer(a: number, b: number): void; -export function __wbg_nadavalues_free(a: number): void; -export function nadavalues_new(a: number): void; -export function nadavalues_insert(a: number, b: number, c: number, d: number): void; -export function nadavalues_length(a: number): number; -export const memory: WebAssembly.Memory; -export function __wbindgen_malloc(a: number, b: number): number; -export function __wbindgen_realloc(a: number, b: number, c: number, d: number): number; -export const __wbindgen_export_3: WebAssembly.Table; -export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h2ab2b16fa3ecb39d(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h122124be45102e22(a: number, b: number): void; -export function __wbindgen_free(a: number, b: number, c: number): void; -export function __wbindgen_exn_store(a: number): void; -export function wasm_bindgen__convert__closures__invoke2_mut__hb30b10b3ecc70f29(a: number, b: number, c: number, d: number): void; -export function __wbindgen_add_to_stack_pointer(a: number): number; -export function __wbindgen_thread_destroy(a: number, b: number): void; -export function __wbindgen_start(): void; diff --git a/packages/client-wasm/dist/logging.js b/packages/client-wasm/dist/logging.js deleted file mode 100644 index a3ca720..0000000 --- a/packages/client-wasm/dist/logging.js +++ /dev/null @@ -1,14 +0,0 @@ -export const Log = (...args) => { - let debug = ""; - if ( - typeof localStorage !== "undefined" && - typeof localStorage.debug !== "undefined" - ) { - debug = localStorage.debug; - } - if (debug.includes("nillion:*") || debug.includes("nillion:wasm")) { - // Light green color start, then reset to default - const prefix = "\x1b[92mnillion:wasm\x1b[0m"; - console.log(prefix, ...args); - } -}; diff --git a/packages/client-wasm/dist/start-worker.js b/packages/client-wasm/dist/start-worker.js deleted file mode 100644 index a62fc99..0000000 --- a/packages/client-wasm/dist/start-worker.js +++ /dev/null @@ -1,8 +0,0 @@ -import { Log } from "./logging.js"; - -export function startWorker(module, memory, state, opts, helper) { - Log("Loading wasm web worker."); - const worker = new Worker(new URL("./worker.js", import.meta.url), opts); - worker.postMessage([module, memory, state, helper.mainJS()]); - return Promise.resolve(); -} diff --git a/packages/client-wasm/dist/websockets.js b/packages/client-wasm/dist/websockets.js deleted file mode 100644 index c7611fe..0000000 --- a/packages/client-wasm/dist/websockets.js +++ /dev/null @@ -1,83 +0,0 @@ -export const websocket_transport = () => ({ - dial, - listen_on: (e) => { - let r = new Error( - "Listening on WebSockets is not possible from within a browser", - ); - throw ((r.name = "NotSupportedError"), r); - }, -}); -const multiaddr_to_ws = (e) => { - let r = e.match( - /^\/(ip4|ip6|dns4|dns6|dns)\/(.*?)\/tcp\/(.*?)\/(ws|wss|x-parity-ws\/(.*)|x-parity-wss\/(.*))(|\/p2p\/[a-zA-Z0-9]+)$/, - ); - if (null != r) { - let e = "wss"; - ("ws" == r[4] || r[4].startsWith("x-parity-ws/")) && (e = "ws"); - let o = decodeURIComponent(r[5] || r[6] || ""); - return "ip6" == r[1] - ? e + "://[" + r[2] + "]:" + r[3] + o - : e + "://" + r[2] + ":" + r[3] + o; - } - let o = new Error("Address not supported: " + e); - throw ((o.name = "NotSupportedError"), o); - }, - dial = (e) => { - let r = new WebSocket(multiaddr_to_ws(e)); - r.binaryType = "arraybuffer"; - let o = read_queue(); - return new Promise((e, t) => { - (r.onerror = (e) => { - t(e), o.inject_eof(); - }), - (r.onclose = (e) => { - t(e), o.inject_eof(); - }), - (r.onmessage = (e) => o.inject_array_buffer(e.data)), - (r.onopen = () => - e({ - read: (function* () { - for (; 1 == r.readyState; ) yield o.next(); - })(), - write: (e) => - 1 == r.readyState - ? (r.send(e.slice(0)), promise_when_send_finished(r)) - : Promise.reject("WebSocket is closed"), - shutdown: () => r.close(), - close: () => {}, - })); - }); - }, - promise_when_send_finished = (e) => - new Promise((r, o) => { - !(function t() { - 1 == e.readyState - ? e.bufferedAmount < 8192 - ? r() - : setTimeout(t, 100) - : o("WebSocket is closed"); - })(); - }), - read_queue = () => { - let e = { queue: new Array(), resolve: null }; - return { - inject_array_buffer: (r) => { - null != e.resolve - ? (e.resolve(r), (e.resolve = null)) - : e.queue.push(Promise.resolve(r)); - }, - inject_eof: () => { - null != e.resolve - ? (e.resolve(null), (e.resolve = null)) - : e.queue.push(Promise.resolve(null)); - }, - next: () => { - if (0 != e.queue.length) return e.queue.shift(0); - if (null !== e.resolve) - throw "Internal error: already have a pending promise"; - return new Promise((r, o) => { - e.resolve = r; - }); - }, - }; - }; diff --git a/packages/client-wasm/dist/worker.js b/packages/client-wasm/dist/worker.js deleted file mode 100644 index 4401a82..0000000 --- a/packages/client-wasm/dist/worker.js +++ /dev/null @@ -1,33 +0,0 @@ -import { Log } from "./logging.js"; - -if ( - typeof WorkerGlobalScope !== "undefined" && - self instanceof WorkerGlobalScope -) { - self.onerror = (event) => { - Log("Worker onerror invoked."); - console.error(event); - }; - self.onmessage = async (event) => { - if (Array.isArray(event.data)) { - try { - let [module, memory, state, pathToWasmIndexJs] = event.data; - - const importFrom = - typeof __webpack_require__ === "function" - ? import("./index.js") - : import(pathToWasmIndexJs); - - const wasm = await importFrom; - await wasm.default(module, memory); - wasm.worker_entry_point(state); - Log("Worker started."); - } catch (err) { - console.error(err); - self.close(); - } - } else { - Log("Unhandled message: ", event); - } - }; -} diff --git a/packages/client-wasm/package.json b/packages/client-wasm/package.json deleted file mode 100644 index 4e7b8d3..0000000 --- a/packages/client-wasm/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "@nillion/client-wasm", - "license": "Apache-2.0", - "author": "devsupport@nillion.com", - "version": "0.1.0", - "homepage": "https://nillion.pub/client-ts", - "repository": { - "type": "git", - "url": "git+https://github.com/NillionNetwork/client-ts.git" - }, - "type": "module", - "exports": { - ".": { - "types": "./src/index.d.ts", - "import": "./dist/index.js" - } - }, - "files": [ - "dist", - "commit-sha.txt" - ], - "devDependencies": { - "browserslist": "^4.24.0", - "esbuild-plugin-browserslist": "^0.15.0" - } -} diff --git a/packages/fixture/README.md b/packages/fixture/README.md deleted file mode 100644 index f82bd1e..0000000 --- a/packages/fixture/README.md +++ /dev/null @@ -1 +0,0 @@ -These are shared test files diff --git a/packages/fixture/package.json b/packages/fixture/package.json deleted file mode 100644 index 82b60da..0000000 --- a/packages/fixture/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "@nillion/fixture", - "license": "MIT", - "author": "devsupport@nillion.com", - "version": "0.1.0", - "private": true, - "type": "module", - "main": "./src/index.ts", - "scripts": { - "start": "npx tsx src/main.ts -- $@" - }, - "devDependencies": { - "@sec-ant/readable-stream": "^0.5.0", - "@types/debug": "^4.1.12", - "@types/node": "^22.7.4", - "debug": "^4.3.7", - "dotenv": "^16.4.5", - "execa": "^9.4.0", - "tsx": "^4.19.1", - "yargs": "^17.7.2" - } -} diff --git a/packages/fixture/src/args.ts b/packages/fixture/src/args.ts deleted file mode 100644 index d240066..0000000 --- a/packages/fixture/src/args.ts +++ /dev/null @@ -1,21 +0,0 @@ -import yargs from "yargs"; - -import { isValidTestSuiteName, TestSuiteName } from "./run-tests"; - -export const parseArgs = async (): Promise<{ target: TestSuiteName }> => { - // args passed after -- are intended for this script - // so we can ignore everything before it - const argvString = process.argv.slice(3).join(" "); - const args = await yargs(argvString).argv; - const name = args.test; - - if (!isValidTestSuiteName(name)) { - const message = - "--tests must be one of client-core, client-payments, client-vms but got " + - String(name); - console.error(message); - throw new Error(message); - } - - return { target: name }; -}; diff --git a/packages/fixture/src/logging.ts b/packages/fixture/src/logging.ts deleted file mode 100644 index fe7c08c..0000000 --- a/packages/fixture/src/logging.ts +++ /dev/null @@ -1,38 +0,0 @@ -import debug from "debug"; - -import fs from "node:fs"; -import path from "node:path"; - -debug.enable("nillion:*"); -export const Log = debug("nillion:fixture"); -Log.log = console.log.bind(console); - -export const LOG_RUN_DIR = path.resolve("./logs"); - -export const setupLoggingDir = () => { - if (fs.existsSync(LOG_RUN_DIR)) { - Log("Existing logs directory detected. Removing it."); - fs.rmSync(LOG_RUN_DIR, { recursive: true }); - } - fs.mkdirSync(LOG_RUN_DIR, { recursive: true }); - Log("Created new logs directory."); - - const runTimestamp = new Date().toISOString(); - fs.writeFileSync(`${LOG_RUN_DIR}/timestamp.log`, runTimestamp); - - fs.writeFileSync(getDevnetLogFile(), ""); - fs.writeFileSync(getTestLogFile(), ""); - fs.writeFileSync(getPrepareProgramsLogFile(), ""); -}; - -export const getDevnetLogFile = () => { - return `${LOG_RUN_DIR}/devnet.log`; -}; - -export const getTestLogFile = () => { - return `${LOG_RUN_DIR}/jasmine.log`; -}; - -export const getPrepareProgramsLogFile = () => { - return `${LOG_RUN_DIR}/programs.log`; -}; diff --git a/packages/fixture/src/main.ts b/packages/fixture/src/main.ts deleted file mode 100644 index d57aa45..0000000 --- a/packages/fixture/src/main.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { execa, ExecaError } from "execa"; - -import path from "node:path"; - -import { parseArgs } from "./args"; -import { Log, LOG_RUN_DIR, setupLoggingDir } from "./logging"; -import { createProgramFixtures } from "./prepare-programs"; -import { runDevnet } from "./run-devnet"; -import { runTests } from "./run-tests"; -import { loadEnv } from "./test-env"; - -export const TestEnv = { - NILLION_TEST_TARGET: "", - NILLION_TEST_DEVNET_PID: -1, - NILLION_TEST_DEVNET_SEED: "test-fixture", - NILLION_TEST_PROGRAMS_NAMESPACE: "", - - NILLION_BOOTNODE_MULTIADDRESS: "", - NILLION_BOOTNODE_WEBSOCKET: "", - NILLION_CLUSTER_ID: "", - NILLION_NILCHAIN_CHAIN_ID: "", - NILLION_NILCHAIN_JSON_RPC: "", - - NILLION_NILCHAIN_PRIVATE_KEY_0: "", - NILLION_NILCHAIN_PRIVATE_KEY_1: "", - NILLION_NILCHAIN_PRIVATE_KEY_2: "", - NILLION_NILCHAIN_PRIVATE_KEY_3: "", - NILLION_NILCHAIN_PRIVATE_KEY_4: "", - NILLION_NILCHAIN_PRIVATE_KEY_5: "", - NILLION_NILCHAIN_PRIVATE_KEY_6: "", - NILLION_NILCHAIN_PRIVATE_KEY_7: "", - NILLION_NILCHAIN_PRIVATE_KEY_8: "", - NILLION_NILCHAIN_PRIVATE_KEY_9: "", - - NILLION_USER_SEED: "test-fixture", -}; -export type TestEnv = typeof TestEnv; - -const killDevnetIfSpawned = () => { - if (TestEnv.NILLION_TEST_DEVNET_PID !== -1) { - Log("Stopping nillion-devnet."); - return execa`killall -s 9 nillion-devnet`; - } else { - Log("Leaving nillion-devnet running since fixture did not start it."); - } -}; - -export const main = async (): Promise => { - try { - const { target } = await parseArgs(); - const requiresPrograms = ["vms"]; - TestEnv.NILLION_TEST_TARGET = target; - - Log("Starting client-ts nillion-devnet fixture."); - Log("Mode: %s", process.env.INTERACTIVE ? "interactive" : "ci"); - Log("Suite: %s", target); - Log("Logs: %s", path.resolve(LOG_RUN_DIR)); - setupLoggingDir(); - - await runDevnet(); - await loadEnv(); - - if (requiresPrograms.includes(target)) { - await createProgramFixtures(); - } - - Log("Test environment: %O", TestEnv); - await runTests(); - - Log("Tidying up."); - await killDevnetIfSpawned(); - Log("Test complete."); - process.exit(); - } catch (e) { - await killDevnetIfSpawned(); - - if (e instanceof ExecaError) { - console.error(e.shortMessage); - } - console.error("Test fixture or suite failed. See log files."); - process.exit(1); - } -}; - -await main(); diff --git a/packages/fixture/src/prepare-programs.ts b/packages/fixture/src/prepare-programs.ts deleted file mode 100644 index 95708f4..0000000 --- a/packages/fixture/src/prepare-programs.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { execa } from "execa"; - -import { randomUUID } from "node:crypto"; -import fs, { writeFileSync } from "node:fs"; -import path from "node:path"; - -import { getPrepareProgramsLogFile, Log } from "./logging"; -import { TestEnv } from "./main"; - -const LOG_FILE = getPrepareProgramsLogFile(); - -export const createProgramFixtures = async (): Promise => { - Log("Compiling and uploading programs to devnet."); - const baseDir = path.resolve(process.cwd(), "../resources/programs"); - const srcDir = path.resolve(baseDir, "src"); - const distDir = path.resolve(baseDir, "dist"); - - const programs = []; - const binaries = await preparePrograms(baseDir, srcDir); - // cannot map due to quote timeout with node_seed - for (const bin of binaries) { - const programId = await storeProgram(distDir, bin); - programs.push(programId); - Log("Program namespace: %s", programId); - } - TestEnv.NILLION_TEST_PROGRAMS_NAMESPACE = programs[0].split("/")[0]; - - return programs; -}; - -const storeProgram = async (distDir: string, binaryName: string) => { - const result = execa({ - all: true, - env: { PATH: process.env.PATH }, - extendEnv: false, - })`nillion - -b ${TestEnv.NILLION_BOOTNODE_MULTIADDRESS} - --node-key-seed ${randomUUID().toString()}, - --user-key-seed ${TestEnv.NILLION_USER_SEED} - --nilchain-rpc-endpoint ${TestEnv.NILLION_NILCHAIN_JSON_RPC} - --nilchain-private-key ${TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_0} - store-program - --cluster-id ${TestEnv.NILLION_CLUSTER_ID} - ${distDir}/${binaryName} - ${binaryName}`; - - result.all.on("data", (data: Uint8Array) => { - writeFileSync(LOG_FILE, data, { flag: "a" }); - }); - const { stdout } = await result; - - /* - * Until there is a json output we need to manually parse. Expected format: - * Payments transaction hash: ... \n - * Program ID: ... \n - */ - const output = stdout.split("Program ID:"); - return output[1].trim(); -}; - -export const preparePrograms = async ( - baseDir: string, - srcDir: string, -): Promise => { - const result = execa({ all: true, cwd: baseDir })`./setup_venv.sh`; - - result.all.on("data", (data: Uint8Array) => { - writeFileSync(LOG_FILE, data, { flag: "a" }); - }); - await result; - - Log("Python venv initialized"); - - const promises = fs - .readdirSync(srcDir) - .filter((file) => file.endsWith(".py")) - .map((file) => compileProgram(baseDir, file)); - - return await Promise.all(promises); -}; - -const compileProgram = async ( - baseDir: string, - file: string, -): Promise => { - const result = execa({ - all: true, - cwd: baseDir, - })`./build_program.sh src/${file}`; - - result.all.on("data", (data: Uint8Array) => { - writeFileSync(LOG_FILE, data, { flag: "a" }); - }); - - await result; - - const binaryName = file.replace(".py", ".nada.bin"); - Log("Compiled src/%s to dist/%s", file, binaryName); - return binaryName; -}; diff --git a/packages/fixture/src/run-devnet.ts b/packages/fixture/src/run-devnet.ts deleted file mode 100644 index bb2e506..0000000 --- a/packages/fixture/src/run-devnet.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { execa } from "execa"; - -import fs, { writeFileSync } from "node:fs"; -import * as readline from "node:readline"; - -import { getDevnetLogFile, Log } from "./logging"; -import { TestEnv } from "./main"; - -const LOG_FILE = getDevnetLogFile(); - -export const runDevnet = async () => { - Log("Starting nillion devnet."); - - const result = execa({ - all: true, - })`nillion-devnet --seed ${TestEnv.NILLION_TEST_DEVNET_SEED}`; - - if (!result.pid) { - console.error("Failed to start nillion-devnet"); - process.exit(1); - } - - result.all.on("data", (data: Uint8Array) => { - writeFileSync(LOG_FILE, data, { flag: "a" }); - }); - - // The command nillion-devnet is proxied through nilup, meaning, we cannot rely on the pid returned by execa. - // When terminating nillion-devnet we use killall to work around this, however it's useful to track the pid. - TestEnv.NILLION_TEST_DEVNET_PID = result.pid + 1; - - const pattern = "nillion-devnet.env"; - Log("Waiting for nillion-devnet.env to be created."); - await waitForLine(LOG_FILE, pattern); - if (!fs.existsSync(LOG_FILE)) { - throw new Error("Failed to detect nillion-devnet.env."); - } - Log("Detected nillion-devnet.env."); -}; - -const waitForLine = (file: string, pattern: string): Promise => { - return new Promise((resolve) => { - const readStream = fs.createReadStream(file, { encoding: "utf8" }); - const rl = readline.createInterface({ input: readStream }); - - const checkLine = (line: string) => { - if (line.includes(pattern)) { - rl.close(); - fs.unwatchFile(file, watcher); - resolve(); - } - }; - - rl.on("line", checkLine); - - const watcher = () => { - rl.close(); - const newRl = readline.createInterface({ - input: fs.createReadStream(file, { encoding: "utf8" }), - }); - newRl.on("line", checkLine); - }; - - fs.watchFile(file, watcher); - }); -}; diff --git a/packages/fixture/src/run-tests.ts b/packages/fixture/src/run-tests.ts deleted file mode 100644 index b823db0..0000000 --- a/packages/fixture/src/run-tests.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { execa } from "execa"; - -import { writeFileSync } from "node:fs"; - -import { getTestLogFile, Log } from "./logging"; -import { TestEnv } from "./main"; - -export type TestSuiteName = keyof typeof Args; - -const Args = { - core: "test-client-core", - payments: "test-client-payments", - vms: "test-client-vms", -}; - -const ArgsInteractive = { - core: "test-client-core-serve", - payments: "test-client-payments-serve", - vms: "test-client-vms-serve", -}; - -const LOG_FILE = getTestLogFile(); - -export const isValidTestSuiteName = ( - value: unknown, -): value is TestSuiteName => { - return ( - Boolean(value) && - typeof value === "string" && - Object.keys(Args).includes(value) - ); -}; - -export const runTests = async (): Promise => { - const target = TestEnv.NILLION_TEST_TARGET as TestSuiteName; - - Log("Starting %s tests", target); - const cmdArgs = process.env.INTERACTIVE - ? ArgsInteractive[target] - : Args[target]; - - const result = execa({ - // @ts-expect-error not sure why the types aren't resolving for 'all' - all: true, - env: { - PATH: process.env.PATH, - PWD: process.env.PWD, - ...TestEnv, - }, - extendEnv: false, - })`just ${cmdArgs}`; - - if (!result.pid) { - console.error("Failed to start: just ", cmdArgs); - process.exit(1); - } - - // @ts-expect-error not sure why the types aren't resolving for 'all' - result.all.on("data", (data: Uint8Array) => { - writeFileSync(LOG_FILE, data, { flag: "a" }); - }); - - await result; - - Log("✅ Test passed."); -}; diff --git a/packages/fixture/src/sleep.ts b/packages/fixture/src/sleep.ts deleted file mode 100644 index 2f9fa0b..0000000 --- a/packages/fixture/src/sleep.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Log } from "./logging"; - -export const sleep = (ms: number) => - new Promise((resolve) => { - Log("Sleeping for %d ms.", ms); - setTimeout(resolve, ms); - }); diff --git a/packages/fixture/src/test-env.ts b/packages/fixture/src/test-env.ts deleted file mode 100644 index 0a76bdb..0000000 --- a/packages/fixture/src/test-env.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { parse } from "dotenv"; - -import fs from "node:fs"; - -import { TestEnv } from "./main"; - -const waitForFileSync = async (path: string): Promise => { - let iteration = 0; - const timeout = 500; - return new Promise((resolve, reject) => { - const interval = setInterval(() => { - if (iteration > 20) { - clearInterval(interval); - reject( - new Error( - `${path} was not detected in ${String(timeout * iteration)}ms`, - ), - ); - return; - } - - if (fs.existsSync(path)) { - clearInterval(interval); - const file = fs.readFileSync(path, "utf8"); - resolve(file); - return; - } - - iteration += 1; - }, timeout); - }); -}; - -export const loadEnv = async (): Promise => { - const home = process.env.HOME; - if (!home) throw new Error("Env var HOME unset"); - - const path = `${home}/.config/nillion/nillion-devnet.env`; - const file = await waitForFileSync(path); - const fromEnvFile = parse(file); - - TestEnv.NILLION_BOOTNODE_MULTIADDRESS = - fromEnvFile.NILLION_BOOTNODE_MULTIADDRESS; - TestEnv.NILLION_BOOTNODE_WEBSOCKET = fromEnvFile.NILLION_BOOTNODE_WEBSOCKET; - TestEnv.NILLION_CLUSTER_ID = fromEnvFile.NILLION_CLUSTER_ID; - TestEnv.NILLION_NILCHAIN_CHAIN_ID = fromEnvFile.NILLION_NILCHAIN_CHAIN_ID; - TestEnv.NILLION_NILCHAIN_JSON_RPC = fromEnvFile.NILLION_NILCHAIN_JSON_RPC; - - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_0 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_0; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_1 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_1; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_2 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_2; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_3 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_3; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_4 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_4; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_5 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_5; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_6 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_6; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_7 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_7; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_8 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_8; - TestEnv.NILLION_NILCHAIN_PRIVATE_KEY_9 = - fromEnvFile.NILLION_NILCHAIN_PRIVATE_KEY_9; -}; diff --git a/packages/fixture/tsconfig.json b/packages/fixture/tsconfig.json deleted file mode 100644 index 9536a0f..0000000 --- a/packages/fixture/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/packages/resources/jasmine.base.config.mjs b/packages/resources/jasmine.base.config.mjs deleted file mode 100644 index e8678c4..0000000 --- a/packages/resources/jasmine.base.config.mjs +++ /dev/null @@ -1,41 +0,0 @@ -import proxy from "express-http-proxy"; - -import path from "node:path"; - -export const buildJasmineBaseConfig = (packageBaseDir) => ({ - port: 9191, - srcDir: "src", - srcFiles: [], - specDir: "dist-test/test", - specFiles: ["test.js"], - env: { - stopSpecOnExpectationFailure: false, - stopOnSpecFailure: false, - random: false, - }, - browser: { - name: "headlessChrome", - }, - middleware: { - "/": (req, res, next) => { - res.set({ - "Access-Control-Allow-Origin": "*", - "Cross-Origin-Embedder-Policy": "require-corp", - "Cross-Origin-Opener-Policy": "same-origin", - }); - next(); - }, - "/__resources__/programs/dist/:filename": (req, res) => { - const filePath = path.resolve( - packageBaseDir, - `../resources/programs/dist/${req.params.filename}`, - ); - res.sendFile(filePath); - }, - "/(:filename).(wasm|js)": (req, res) => { - const filePath = path.resolve(packageBaseDir, `dist-test/${req.baseUrl}`); - res.sendFile(filePath); - }, - "/nilchain": proxy("http://localhost:48102"), - }, -}); diff --git a/packages/resources/programs/build_program.sh b/packages/resources/programs/build_program.sh deleted file mode 100755 index c7d32c8..0000000 --- a/packages/resources/programs/build_program.sh +++ /dev/null @@ -1,9 +0,0 @@ -#! /usr/bin/env bash - -set -uexo pipefail - -SRC="$1" - -source venv/bin/activate -pynadac "${SRC}" -t dist -deactivate diff --git a/packages/resources/webpack.base.config.mjs b/packages/resources/webpack.base.config.mjs deleted file mode 100644 index 9f4be4a..0000000 --- a/packages/resources/webpack.base.config.mjs +++ /dev/null @@ -1,85 +0,0 @@ -import * as glob from "glob"; -import TsconfigPathsPlugin from "tsconfig-paths-webpack-plugin"; -import webpack from "webpack"; - -import path from "node:path"; - -export const buildWebpackBaseConfig = (packageBaseDir) => ({ - mode: "development", - entry: glob.sync("tests/**/*.test.ts"), - resolve: { - modules: [packageBaseDir, "tests", "node_modules"], - extensions: [".js", ".ts", ".json"], - plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })], - fallback: { - crypto: false, - buffer: false, - stream: false, - vm: false, - }, - }, - module: { - rules: [ - { - test: /\.tsx?$/, - use: { - loader: "ts-loader", - options: { - transpileOnly: true, - compilerOptions: { - noEmit: false, - }, - }, - }, - exclude: /node_modules/, - }, - { - test: /\.wasm$/, - type: "asset/resource", - }, - ], - }, - plugins: [ - // defaults from $ nillion-devnet --seed test-fixture - new webpack.EnvironmentPlugin({ - NILLION_CLUSTER_ID: "e0bbd78d-4b10-4fb0-b40a-70f895d2db43", - NILLION_BOOTNODE_MULTIADDRESS: - "/ip4/127.0.0.1/tcp/56033/p2p/12D3KooWNQ3aNWQ4syzxrzZvC8PA2sH3DhYCfLePog2miw16UCA9", - NILLION_BOOTNODE_WEBSOCKET: - "/ip4/127.0.0.1/tcp/38874/ws/p2p/12D3KooWNQ3aNWQ4syzxrzZvC8PA2sH3DhYCfLePog2miw16UCA9", - NILLION_NILCHAIN_CHAIN_ID: "nillion-chain-devnet", - NILLION_NILCHAIN_JSON_RPC: "http://127.0.0.1:48102", - NILLION_NILCHAIN_REST_API: "http://localhost:26650", - NILLION_NILCHAIN_GRPC: "localhost:26649", - NILLION_NILCHAIN_PRIVATE_KEY_0: - "9a975f567428d054f2bf3092812e6c42f901ce07d9711bc77ee2cd81101f42c5", - NILLION_NILCHAIN_PRIVATE_KEY_1: - "1e491133b9408b39572a29f91644873decea554224b20e2b0b923aeb860a1c18", - NILLION_NILCHAIN_PRIVATE_KEY_2: - "980488572f235316cdb330191f8bafe4e635efbe88b3a40f5bee9bd21047c059", - NILLION_NILCHAIN_PRIVATE_KEY_3: - "612bb5173dc60d9e91404fcc0d1f1847fb4459a7d5160d63d84e91aacbf2ab2f", - NILLION_NILCHAIN_PRIVATE_KEY_4: - "04f5a984eeea9dce4e5e907da69c01a61568e3071b1a91cbed89225f9fd913b5", - NILLION_NILCHAIN_PRIVATE_KEY_5: - "5f992c58921f4af83b4c6b650c4914626664cd02020577b0ada49cfa00d2c8a4", - NILLION_NILCHAIN_PRIVATE_KEY_6: - "8f0297d3bb647eb59b95b29550b2aebbedd9be2c954b000e772efe8c9318a42d", - NILLION_NILCHAIN_PRIVATE_KEY_7: - "c395243df9bb68dc809668efe4125f0eb017771ed8e3747b8d6860551913fecb", - NILLION_NILCHAIN_PRIVATE_KEY_8: - "4bb5eaa799e24ae2b48545c41331921afe7e6a8dd7a850f5fbeb20a8226664ec", - NILLION_NILCHAIN_PRIVATE_KEY_9: - "ef4b944d4fdb0077057925fe2dde365dfa2c83cf320463b14589feccd1b2b938", - NILLION_USER_SEED: "test-fixture", - NILLION_TEST_PROGRAMS_NAMESPACE: "", - }), - ], - devtool: "inline-source-map", - output: { - filename: (pathData) => - pathData.chunk.name === "main" ? "test/test.js" : "src/[name].js", - path: path.resolve(packageBaseDir, "dist-test"), - clean: true, - }, -}); diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json deleted file mode 100644 index e21ab79..0000000 --- a/packages/test-utils/package.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "@nillion/test-utils", - "private": true -} diff --git a/packages/test-utils/src/client.ts b/packages/test-utils/src/client.ts deleted file mode 100644 index 15c0d0b..0000000 --- a/packages/test-utils/src/client.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { PrivateKeyBase16 } from "@nillion/client-core"; -import { - createSignerFromKey, - PaymentClientConfig, -} from "@nillion/client-payments"; -import { - NetworkConfig, - NilVmClientConfig, - UserCredentials, -} from "@nillion/client-vms"; - -import { TestEnv } from "./test-env"; - -export const getVmClientEnvConfig = (): NilVmClientConfig => { - return NilVmClientConfig.parse( - { - clusterId: TestEnv.clusterId, - bootnodes: TestEnv.bootnodesWebsocket, - userSeed: TestEnv.userSeed, - nodeSeed: window.crypto.randomUUID(), - }, - { path: ["getVmClientEnvConfig", "NilVmClientConfig"] }, - ); -}; - -export const getPaymentsClientEnvConfig = - async (): Promise => { - const key = PrivateKeyBase16.parse(TestEnv.nilChainPrivateKey0); - return PaymentClientConfig.parse( - { - chainId: TestEnv.chainId, - endpoint: TestEnv.nilChainJsonRpc, - signer: await createSignerFromKey(key), - }, - { path: ["getPaymentsClientEnvConfig", "PaymentClientConfig"] }, - ); - }; - -export const getNetworkConfig = (): NetworkConfig => { - return NetworkConfig.parse( - { - clusterId: TestEnv.clusterId, - bootnodes: TestEnv.bootnodesWebsocket, - nilChainId: TestEnv.chainId, - nilChainEndpoint: TestEnv.nilChainJsonRpc, - }, - { path: ["getNetworkConfig", "NetworkConfig"] }, - ); -}; - -export const getUserCredentials = (): UserCredentials => { - const key = PrivateKeyBase16.parse(TestEnv.nilChainPrivateKey0); - return UserCredentials.parse( - { - userSeed: TestEnv.userSeed, - nodeSeed: window.crypto.randomUUID(), - signer: () => createSignerFromKey(key), - }, - { path: ["getUserCredentials", "UserCredentials"] }, - ); -}; diff --git a/packages/test-utils/src/data.ts b/packages/test-utils/src/data.ts deleted file mode 100644 index aac79d7..0000000 --- a/packages/test-utils/src/data.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function strFromByteArray(value: Uint8Array): string { - return new TextDecoder("utf-8").decode(value); -} - -export function strToByteArray(str: string): Uint8Array { - return new TextEncoder().encode(str); -} - -export function bigIntFromByteArray(value: Uint8Array): bigint { - let hexString = "0x"; - for (let i = value.length - 1; i >= 0; i--) { - hexString += value[i].toString(16).padStart(2, "0"); - } - return BigInt(hexString); -} diff --git a/packages/test-utils/src/expect.ts b/packages/test-utils/src/expect.ts deleted file mode 100644 index 0e10562..0000000 --- a/packages/test-utils/src/expect.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Result } from "@nillion/client-core"; - -export const expectOk = ( - result: Result, -): result is { ok: NonNullable; err: null } => { - if (result.ok != null && result.err === null) { - expect(result.ok).toBeDefined(); - return true; - } - - fail(`Result.ok expected but got Result.err: ${result.err}`); -}; - -export const expectErr = ( - result: Result, -): result is { ok: null; err: NonNullable } => { - if (result.err != null && result.ok === null) { - expect(result.err).toBeDefined(); - return true; - } - - fail(`Result.ok expected but got Result.err: ${result.err}`); -}; diff --git a/packages/test-utils/src/index.ts b/packages/test-utils/src/index.ts deleted file mode 100644 index 0b3c661..0000000 --- a/packages/test-utils/src/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./client"; -export * from "./data"; -export * from "./expect"; -export * from "./program"; -export * from "./test-env"; diff --git a/packages/test-utils/src/program.ts b/packages/test-utils/src/program.ts deleted file mode 100644 index c9f3d39..0000000 --- a/packages/test-utils/src/program.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const loadProgram = async (name: string): Promise => { - const path = `__resources__/programs/dist/${name}`; - try { - const response = await fetch(path); - const body = (await response.body?.getReader().read())?.value; - if (body) return body; - throw new Error(`Could not find program for ${name}`); - } catch (e) { - console.error("failed to load program: ", path); - console.error("error: ", e); - throw e; - } -}; diff --git a/packages/test-utils/tsconfig.json b/packages/test-utils/tsconfig.json deleted file mode 100644 index 9536a0f..0000000 --- a/packages/test-utils/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.base.json" -} diff --git a/tsconfig.base.json b/tsconfig.base.json index a8a4f58..5a004e0 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -5,25 +5,18 @@ "module": "esnext", "moduleResolution": "bundler", "noEmit": true, - "skipLibCheck": true, "strict": true, + "noUncheckedIndexedAccess": true, "target": "esnext", "baseUrl": ".", + "allowJs": true, + "skipLibCheck": true, "paths": { - "@nillion/client-core": [ - "packages/client-core/src/index.ts" - ], - "@nillion/client-vms": [ - "packages/client-vms/src/index.ts" - ], - "@nillion/client-payments": [ - "packages/client-payments/src/index.ts" - ], - "@nillion/client-react-hooks": [ - "packages/client-react-hooks/src/index.ts" + "@nillion/client-wasm/*": [ + "client-wasm/src/*" ], - "@nillion/test-utils": [ - "packages/test-utils/src/index.ts" + "@nillion/client-vms/*": [ + "client-vms/src/*" ] } }