diff --git a/.github/actions/setup-and-build/action.yml b/.github/actions/setup-and-build/action.yml index 8695737858..d91c9a90c2 100644 --- a/.github/actions/setup-and-build/action.yml +++ b/.github/actions/setup-and-build/action.yml @@ -112,6 +112,9 @@ runs: shell: bash run: bash scripts/devenv/install-photon.sh + - name: Install just + uses: extractions/setup-just@v2 + - name: Set Light Protocol environment variables shell: bash run: | @@ -208,20 +211,14 @@ runs: shell: bash run: | echo "Building Rust programs..." - if ! npx nx build @lightprotocol/programs; then - echo "Failed to build programs, retrying with verbose output..." - npx nx build @lightprotocol/programs --verbose - fi + just programs build - name: Build Rust program-tests if: steps.cache-program-tests.outputs.cache-hit != 'true' shell: bash run: | echo "Building Rust program-tests..." - if ! npx nx build @lightprotocol/program-tests; then - echo "Failed to build program-tests, retrying with verbose output..." - npx nx build @lightprotocol/program-tests --verbose - fi + just program-tests build - name: Check for git changes shell: bash diff --git a/.github/workflows/cli-v1.yml b/.github/workflows/cli-v1.yml index 2cfbe9a0bd..cbdc8415fb 100644 --- a/.github/workflows/cli-v1.yml +++ b/.github/workflows/cli-v1.yml @@ -61,11 +61,11 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Run CLI tests with V1 run: | - npx nx test @lightprotocol/zk-compression-cli + just cli test - name: Display prover logs on failure if: failure() diff --git a/.github/workflows/cli-v2.yml b/.github/workflows/cli-v2.yml index 88ef010e13..bf89d35fb9 100644 --- a/.github/workflows/cli-v2.yml +++ b/.github/workflows/cli-v2.yml @@ -61,11 +61,11 @@ jobs: - name: Build CLI with V2 run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Run CLI tests with V2 run: | - npx nx test @lightprotocol/zk-compression-cli + just cli test - name: Display prover logs on failure if: failure() diff --git a/.github/workflows/forester-tests.yml b/.github/workflows/forester-tests.yml index 5ddee18460..934db1784c 100644 --- a/.github/workflows/forester-tests.yml +++ b/.github/workflows/forester-tests.yml @@ -77,10 +77,10 @@ jobs: du -sh /home/runner/work/* | sort -hr | head -n 10 - name: Build CLI - run: npx nx build @lightprotocol/zk-compression-cli + run: just cli build - name: Test - run: cargo test --package forester e2e_test -- --nocapture + run: just forester test compressible-tests: name: Forester compressible tests @@ -112,17 +112,13 @@ jobs: cache-key: "rust" - name: Build CLI - run: npx nx build @lightprotocol/zk-compression-cli - - - name: Build test programs - run: | - cargo build-sbf --manifest-path sdk-tests/csdk-anchor-full-derived-test/Cargo.toml + run: just cli build - name: Test compressible PDA - run: cargo test --package forester --test test_compressible_pda -- --nocapture + run: just forester test-compressible-pda - name: Test compressible Mint - run: cargo test --package forester --test test_compressible_mint -- --nocapture + run: just forester test-compressible-mint - name: Test compressible ctoken - run: cargo test --package forester --test test_compressible_ctoken -- --nocapture + run: just forester test-compressible-ctoken diff --git a/.github/workflows/js-v2.yml b/.github/workflows/js-v2.yml index c3f71f74dd..a63c74f5fa 100644 --- a/.github/workflows/js-v2.yml +++ b/.github/workflows/js-v2.yml @@ -61,14 +61,14 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Run stateless.js tests with V2 run: | echo "Running stateless.js tests with retry logic (max 2 attempts)..." attempt=1 max_attempts=2 - until npx nx test @lightprotocol/stateless.js; do + until just js test-stateless; do attempt=$((attempt + 1)) if [ $attempt -gt $max_attempts ]; then echo "Tests failed after $max_attempts attempts" @@ -84,7 +84,7 @@ jobs: echo "Running compressed-token unit tests with retry logic (max 2 attempts)..." attempt=1 max_attempts=2 - until npx nx run @lightprotocol/compressed-token:test:unit:all:v2; do + until just js test-compressed-token-unit-v2; do attempt=$((attempt + 1)) if [ $attempt -gt $max_attempts ]; then echo "Tests failed after $max_attempts attempts" @@ -114,9 +114,8 @@ jobs: - name: Run sdk-anchor-test TypeScript tests with V2 run: | - npx nx build @lightprotocol/sdk-anchor-test - cd sdk-tests/sdk-anchor-test - npm run test-ts + just sdk-tests build-anchor-test + cd sdk-tests/sdk-anchor-test && npm run test-ts - name: Display prover logs on failure if: failure() diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml index 3aa0f3865c..da5d427086 100644 --- a/.github/workflows/js.yml +++ b/.github/workflows/js.yml @@ -61,14 +61,14 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Run stateless.js tests with V1 run: | echo "Running stateless.js tests with retry logic (max 2 attempts)..." attempt=1 max_attempts=2 - until npx nx test @lightprotocol/stateless.js; do + until just js test-stateless; do attempt=$((attempt + 1)) if [ $attempt -gt $max_attempts ]; then echo "Tests failed after $max_attempts attempts" @@ -84,7 +84,7 @@ jobs: echo "Running compressed-token tests with retry logic (max 2 attempts)..." attempt=1 max_attempts=2 - until npx nx test @lightprotocol/compressed-token; do + until just js test-compressed-token; do attempt=$((attempt + 1)) if [ $attempt -gt $max_attempts ]; then echo "Tests failed after $max_attempts attempts" diff --git a/.github/workflows/programs.yml b/.github/workflows/programs.yml index 5a9fe54d5b..c84da7dfe3 100644 --- a/.github/workflows/programs.yml +++ b/.github/workflows/programs.yml @@ -85,7 +85,7 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: ${{ matrix.program }} run: | @@ -113,7 +113,7 @@ jobs: else RUSTFLAGS="-D warnings" eval "$subtest" if [ "$subtest" == "cargo-test-sbf -p e2e-test" ]; then - pnpm --filter @lightprotocol/programs run build-compressed-token-small + just programs build-compressed-token-small RUSTFLAGS="-D warnings" eval "$subtest -- --test test_10_all" fi fi diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d7437a252a..00a549a781 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -35,38 +35,11 @@ jobs: matrix: group: - name: batched-merkle-tree-simulate - packages: light-batched-merkle-tree batched-merkle-tree-test - test_cmd: | - cargo test -p light-batched-merkle-tree --features test-only - RUST_LOG=light_prover_client=debug cargo test -p batched-merkle-tree-test -- --test test_simulate_transactions + test_cmd: just program-libs test-simulate - name: program-libs-fast - packages: - aligned-sized light-hasher light-compressed-account light-account-checks \ - light-verifier light-merkle-tree-metadata light-zero-copy light-hash-set light-concurrent-merkle-tree \ - light-array-map - test_cmd: | - cargo test -p light-macros - cargo test -p aligned-sized - cargo test -p light-array-map --all-features - cargo test -p light-hasher --all-features - cargo test -p light-compressed-account --all-features - cargo test -p light-account-checks --all-features - cargo test -p light-verifier --all-features - cargo test -p light-merkle-tree-metadata --all-features - cargo test -p light-zero-copy --features "std, mut, derive" - cargo test -p light-zero-copy-derive --all-features - cargo test -p zero-copy-derive-test - cargo test -p light-hash-set --all-features - cargo test -p batched-merkle-tree-test -- --skip test_simulate_transactions --skip test_e2e - cargo test -p light-concurrent-merkle-tree - cargo test -p light-token-interface --features poseidon,test-only - cargo test -p light-compressible --all-features + test_cmd: just program-libs test-fast - name: program-libs-slow - packages: light-bloom-filter light-indexed-merkle-tree batched-merkle-tree-test - test_cmd: | - cargo test -p light-bloom-filter --all-features - cargo test -p light-indexed-merkle-tree --all-features - cargo test -p batched-merkle-tree-test -- --test test_e2e + test_cmd: just program-libs test-slow name: Test ${{ matrix.group.name }} @@ -95,7 +68,7 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Run tests for ${{ matrix.group.name }} run: | diff --git a/.github/workflows/sdk-tests.yml b/.github/workflows/sdk-tests.yml index 388dc4d8e6..0b2669aec1 100644 --- a/.github/workflows/sdk-tests.yml +++ b/.github/workflows/sdk-tests.yml @@ -54,17 +54,7 @@ jobs: - program: token test sub-tests: '["cargo-test-sbf -p sdk-token-test"]' - program: sdk-libs - packages: light-sdk-macros light-sdk light-program-test light-client light-token-types light-token - test_cmd: | - cargo test -p light-sdk-macros - cargo test -p light-sdk-macros --all-features - cargo test -p light-sdk - cargo test -p light-sdk --all-features - cargo test -p light-program-test - cargo test -p light-client - cargo test -p light-sparse-merkle-tree - cargo test -p light-token-types - cargo test -p light-token --all-features + test_cmd: just sdk-libs test steps: - name: Checkout sources uses: actions/checkout@v6 @@ -77,7 +67,7 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just cli build - name: Install bun if: matrix.program == 'sdk-libs' diff --git a/CLAUDE.md b/CLAUDE.md index 36a3738929..3bb51a2410 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -136,11 +136,15 @@ cargo test-sbf -p sdk-token-test Version-specific tests (V1 and V2) for JS/TS packages. ```bash -# Build and test with Nx -npx nx build @lightprotocol/zk-compression-cli -npx nx test @lightprotocol/stateless.js -npx nx test @lightprotocol/compressed-token -npx nx test @lightprotocol/zk-compression-cli +# Build and test with just +just cli::build +just js::test-stateless +just js::test-compressed-token +just cli::test + +# Or use root-level aggregates that include cli and js targets +just build +just test ``` **Environment variables:** diff --git a/cli/justfile b/cli/justfile new file mode 100644 index 0000000000..27cb2e2fa6 --- /dev/null +++ b/cli/justfile @@ -0,0 +1,15 @@ +# Light Protocol - CLI + +default: + @just --list + +# Build JS dependencies first, then CLI +build: build-js-deps + pnpm build + +build-js-deps: + cd ../js/stateless.js && pnpm build + cd ../js/compressed-token && pnpm build + +test: + pnpm test diff --git a/cli/package.json b/cli/package.json index 25662c5dba..769dd49ad3 100644 --- a/cli/package.json +++ b/cli/package.json @@ -129,42 +129,5 @@ "keywords": [ "oclif" ], - "types": "dist/index.d.ts", - "nx": { - "targets": { - "build": { - "inputs": [ - "{workspaceRoot}/js", - "{workspaceRoot}/programs", - "{workspaceRoot}/gnark-prover" - ], - "outputs": [ - "{workspaceRoot}/bin", - "{workspaceRoot}/dist", - "{workspaceRoot}/lib", - "{workspaceRoot}/test_bin" - ] - }, - "build-ci": { - "dependsOn": [ - "@lightprotocol/stateless.js:build-ci", - "@lightprotocol/compressed-token:build-ci" - ], - "inputs": [ - "{workspaceRoot}/js", - "{workspaceRoot}/gnark-prover", - "{projectRoot}/scripts/**" - ], - "outputs": [ - "{workspaceRoot}/bin", - "{workspaceRoot}/dist", - "{workspaceRoot}/lib", - "{workspaceRoot}/test_bin" - ] - }, - "test-ci": { - "dependsOn": [] - } - } - } + "types": "dist/index.d.ts" } diff --git a/forester/justfile b/forester/justfile new file mode 100644 index 0000000000..430267c08f --- /dev/null +++ b/forester/justfile @@ -0,0 +1,37 @@ +# Light Protocol - Forester Service + +export TEST_MODE := env_var_or_default("TEST_MODE", "local") +export TEST_V1_STATE := env_var_or_default("TEST_V1_STATE", "true") +export TEST_V2_STATE := env_var_or_default("TEST_V2_STATE", "true") +export TEST_V1_ADDRESS := env_var_or_default("TEST_V1_ADDRESS", "true") +export TEST_V2_ADDRESS := env_var_or_default("TEST_V2_ADDRESS", "true") +export RUST_BACKTRACE := env_var_or_default("RUST_BACKTRACE", "1") + +default: + @just --list + +build: + cargo build -p forester --release + +# Builds test program dependency +build-test-deps: + cd ../program-tests/create-address-test-program && cargo build-sbf + +test: build-test-deps + cargo test --package forester e2e_test -- --nocapture + +# Builds csdk-anchor-full-derived-test program for compressible tests +build-compressible-test-deps: + cargo build-sbf --manifest-path ../sdk-tests/csdk-anchor-full-derived-test/Cargo.toml + +test-compressible-pda: build-compressible-test-deps + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_pda -- --nocapture + +test-compressible-mint: build-compressible-test-deps + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_mint -- --nocapture + +test-compressible-ctoken: build-compressible-test-deps + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_ctoken -- --nocapture diff --git a/forester/package.json b/forester/package.json deleted file mode 100644 index cc0173c735..0000000000 --- a/forester/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "@lightprotocol/forester", - "version": "0.3.0", - "license": "GPL-3.0", - "scripts": { - "build": "cargo build", - "test": "redis-start && TEST_MODE=local TEST_V1_STATE=true TEST_V2_STATE=true TEST_V1_ADDRESS=true TEST_V2_ADDRESS=true RUST_LOG=forester=debug,forester_utils=debug,light_prover_client=debug cargo test --package forester e2e_test -- --nocapture", - "test:compressible": "cargo build-sbf -- -p csdk-anchor-full-derived-test && RUST_LOG=forester=debug,light_client=debug cargo test --package forester --test test_compressible_pda --test test_compressible_mint --test test_compressible_ctoken -- --nocapture", - "docker:build": "docker build --tag forester -f Dockerfile .." - }, - "devDependencies": { - "@lightprotocol/zk-compression-cli": "workspace:*" - }, - "nx": { - "targets": { - "build": { - "outputs": [ - "{workspaceRoot}/target/release" - ] - } - } - } -} diff --git a/js/compressed-token/package.json b/js/compressed-token/package.json index aeadc738a6..bf05c21e48 100644 --- a/js/compressed-token/package.json +++ b/js/compressed-token/package.json @@ -156,26 +156,5 @@ "light", "stateless", "solana" - ], - "nx": { - "targets": { - "build": { - "inputs": [ - "{workspaceRoot}/cli", - "{workspaceRoot}/target/idl", - "{workspaceRoot}/target/types" - ] - }, - "build-ci": { - "dependsOn": [ - "@lightprotocol/stateless.js:build-ci" - ] - }, - "test-ci": { - "dependsOn": [ - "@lightprotocol/stateless.js:test-ci" - ] - } - } - } + ] } diff --git a/js/justfile b/js/justfile new file mode 100644 index 0000000000..892573cd7c --- /dev/null +++ b/js/justfile @@ -0,0 +1,27 @@ +# Light Protocol - JavaScript Packages + +default: + @just --list + +build: + cd stateless.js && pnpm build + cd compressed-token && pnpm build + +test: test-stateless test-compressed-token + +test-stateless: + cd stateless.js && pnpm test + +test-compressed-token: + cd compressed-token && pnpm test + +test-compressed-token-unit-v2: + cd compressed-token && pnpm test:unit:all:v2 + +lint: + cd stateless.js && pnpm lint + cd compressed-token && pnpm lint + +format: + cd stateless.js && pnpm format + cd compressed-token && pnpm format diff --git a/js/stateless.js/package.json b/js/stateless.js/package.json index 677701d7f6..7c321c2437 100644 --- a/js/stateless.js/package.json +++ b/js/stateless.js/package.json @@ -117,22 +117,5 @@ "build-ci": "if [ \"$LIGHT_PROTOCOL_VERSION\" = \"V2\" ]; then LIGHT_PROTOCOL_VERSION=V2 pnpm build:bundle; else LIGHT_PROTOCOL_VERSION=V1 pnpm build:bundle; fi", "format": "prettier --write .", "lint": "eslint ." - }, - "nx": { - "targets": { - "build": { - "inputs": [ - "{workspaceRoot}/cli", - "{workspaceRoot}/target/idl", - "{workspaceRoot}/target/types" - ] - }, - "build-ci": { - "dependsOn": [] - }, - "test-ci": { - "dependsOn": [] - } - } } } diff --git a/justfile b/justfile new file mode 100644 index 0000000000..e3624721d5 --- /dev/null +++ b/justfile @@ -0,0 +1,54 @@ +# Light Protocol Monorepo +set dotenv-load + +export SBF_OUT_DIR := "target/deploy" +export REDIS_URL := env_var_or_default("REDIS_URL", "redis://localhost:6379") +export CARGO_FEATURES := env_var_or_default("CARGO_FEATURES", "v2_ix") + +# Submodules +mod prover 'prover/server' +mod programs 'programs' +mod program-tests 'program-tests' +mod program-libs 'program-libs' +mod sdk-libs 'sdk-libs' +mod sdk-tests 'sdk-tests' +mod js 'js' +mod cli 'cli' +mod forester 'forester' + +default: + @just --list + +# === Setup === +install: + pnpm install --frozen-lockfile + mkdir -p target/deploy + [ -f target/deploy/spl_noop.so ] || cp third-party/solana-program-library/spl_noop.so target/deploy/ + +# === Build === +build: programs::build js::build cli::build + +# === Test === +test: program-tests::test sdk-tests::test js::test + +# === Lint & Format === +lint: lint-rust js::lint + +lint-rust: + cargo +nightly fmt --all -- --check + cargo clippy --workspace --all-features -- -D warnings + +format: + cargo +nightly fmt --all + just js format + +# === Clean === +clean: + find . -type d -name "test-ledger" -exec rm -rf {} + 2>/dev/null || true + cargo clean + +# === Info === +info: + @echo "Solana: $(solana --version)" + @echo "Rust: $(rustc --version)" + @echo "Node: $(node --version)" diff --git a/nx.json b/nx.json deleted file mode 100644 index e5f23b2f79..0000000000 --- a/nx.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "namedInputs": { - "noMarkdown": [ - "!{workspaceRoot}/**/*.md" - ], - "noTestLedger": [ - "!{workspaceRoot}/test-ledger" - ] - }, - "targetDefaults": { - "build": { - "cache": true, - "inputs": [ - "noMarkdown", - "^noMarkdown", - "noTestLedger", - "^noTestLedger" - ], - "dependsOn": [ - "^build" - ], - "outputs": [ - "{workspaceRoot}/target/deploy", - "{workspaceRoot}/target/idl", - "{workspaceRoot}/target/types", - "{projectRoot}/dist", - "{projectRoot}/lib", - "{projectRoot}/bin" - ] - }, - "test": { - "cache": true, - "inputs": [ - "noMarkdown", - "^noMarkdown", - "noTestLedger", - "^noTestLedger" - ], - "dependsOn": [ - "^build", - "build" - ] - }, - "format": { - "cache": false, - "inputs": [ - "noMarkdown", - "^noMarkdown", - "noTestLedger", - "^noTestLedger" - ] - }, - "format:check": { - "cache": false, - "inputs": [ - "noMarkdown", - "^noMarkdown", - "noTestLedger", - "^noTestLedger" - ] - }, - "lint": { - "cache": false, - "inputs": [ - "noMarkdown", - "^noMarkdown", - "noTestLedger", - "^noTestLedger" - ] - } - }, - "daemon": { - "enabled": false - }, - "tasksRunnerOptions": { - "default": { - "runner": "nx/tasks-runners/default", - "options": { - "cacheableOperations": ["build", "test"], - "cacheDirectory": ".nx/cache" - } - } - } -} diff --git a/package.json b/package.json index d7644e9f5d..ead59f7602 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "devDependencies": { "husky": "^9.1.7", - "nx": "^22.0.2", "playwright": "^1.56.1", "prettier": "^3.6.2", "syncpack": "^13.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3476b032c8..158713b83f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ importers: husky: specifier: ^9.1.7 version: 9.1.7 - nx: - specifier: ^22.0.2 - version: 22.0.2 playwright: specifier: ^1.56.1 version: 1.56.1 @@ -178,12 +175,6 @@ importers: specifier: ^5.9.2 version: 5.9.2 - forester: - devDependencies: - '@lightprotocol/zk-compression-cli': - specifier: workspace:* - version: link:../cli - js/compressed-token: dependencies: '@coral-xyz/borsh': @@ -444,12 +435,6 @@ importers: specifier: ^2.1.1 version: 2.1.1(@types/node@22.16.5)(terser@5.43.1) - program-tests: {} - - programs: {} - - sdk-tests/csdk-anchor-full-derived-test: {} - sdk-tests/sdk-anchor-test: dependencies: '@coral-xyz/anchor': @@ -789,15 +774,6 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@emnapi/core@1.7.0': - resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==} - - '@emnapi/runtime@1.7.0': - resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==} - - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild-plugins/node-globals-polyfill@0.2.3': resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} peerDependencies: @@ -1340,18 +1316,6 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@jest/diff-sequences@30.0.1': - resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/get-type@30.1.0': - resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - - '@jest/schemas@30.0.5': - resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1398,9 +1362,6 @@ packages: '@lightprotocol/hasher.rs@0.2.1': resolution: {integrity: sha512-uslXM+t8kIOeQKccS8eJIPhVglnaIrz06AUVYJjeR9RHM/26KFEKK431a5mBxvaAwVhRLM0s9ZFN+C9wKgNAjA==} - '@napi-rs/wasm-runtime@0.2.4': - resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} @@ -1424,56 +1385,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nx/nx-darwin-arm64@22.0.2': - resolution: {integrity: sha512-2xrjMN4oJcZg8D3yzM3UGENBqelyMvmLjfHZgwXwyp2j6WexYaU0UusS2EmVTOCi9q7k3knQCWuSa2Y9uk2sTQ==} - cpu: [arm64] - os: [darwin] - - '@nx/nx-darwin-x64@22.0.2': - resolution: {integrity: sha512-pxfvnZLwfDk0Q9emDLNCyu0lOSMg8+4IUdIpfaNjBjYRV+042zLSzAMJ1n6Tn9p/QhM9nipVwXW0IhH5kf7kyg==} - cpu: [x64] - os: [darwin] - - '@nx/nx-freebsd-x64@22.0.2': - resolution: {integrity: sha512-wwfl4e2GzCENhYoJMEUmQaurRxyGiJH8x0IRI5YbLWzgj88hQGRkzUjUhxPkXHDn4/YtOq/rWViN5j2j1oAB2A==} - cpu: [x64] - os: [freebsd] - - '@nx/nx-linux-arm-gnueabihf@22.0.2': - resolution: {integrity: sha512-OKo3hVRRYUdMBTdUFxmFxz2Bto7iAZtnrszwm7NKgeqOetm37s1f+tZ1Q1s7WwZjjPm/B5vZ83TUXJcwMh+ieg==} - cpu: [arm] - os: [linux] - - '@nx/nx-linux-arm64-gnu@22.0.2': - resolution: {integrity: sha512-aaWUYXFaB9ztrICg0WHuz0tzoil+OkSpWi+wtM9PsV+vNQTYWIPclO+OpSp4am68/bdtuMuITOH99EvEIfv7ZA==} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-arm64-musl@22.0.2': - resolution: {integrity: sha512-ylT5GBJCUpTXp5ud8f/uRyW9OA2KR65nuFQ5iXNf1KXwfjGuinFDvZEDDj0zGQ4E/PwLrInqBkkSH25Ry99lOQ==} - cpu: [arm64] - os: [linux] - - '@nx/nx-linux-x64-gnu@22.0.2': - resolution: {integrity: sha512-N8beYlkdKbAC5CA3i5WoqUUbbsSO/0cQk3gMW7c41bouqdMWDUKG6m50d4yHk8V7RFC+sqY59tso3rYmXW3big==} - cpu: [x64] - os: [linux] - - '@nx/nx-linux-x64-musl@22.0.2': - resolution: {integrity: sha512-Q0joIxZHs9JVr/+6x1bee7z+7Z4SoO0mbhADuugjxly50O44Igg+rx78Iou00VrtSR+Ht5NlpILxOe4GhpFCpA==} - cpu: [x64] - os: [linux] - - '@nx/nx-win32-arm64-msvc@22.0.2': - resolution: {integrity: sha512-/4FXsBh+SB6fKFeVBFptPPWJIeFPQWmK29Q+XLrjYW/31bOs1k2uwn+7QYX0D+Z4HiME3iiRdAInFD9pVlyZbQ==} - cpu: [arm64] - os: [win32] - - '@nx/nx-win32-x64-msvc@22.0.2': - resolution: {integrity: sha512-Hp0z4h7kIo9XLVkGbyIZmgWOKIhSo2xs9pNT1TgZz/AmesnI/DdqRbazitnhXMhlvSWUOxdP/7I8xEZYG9zyNA==} - cpu: [x64] - os: [win32] - '@oclif/core@4.5.4': resolution: {integrity: sha512-78YYJls8+KG96tReyUsesKKIKqC0qbFSY1peUSrt0P2uGsrgAuU9axQ0iBQdhAlIwZDcTyaj+XXVQkz2kl/O0w==} engines: {node: '>=18.0.0'} @@ -1734,9 +1645,6 @@ packages: '@sideway/pinpoint@2.0.0': resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.34.41': - resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} - '@sindresorhus/is@5.6.0': resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} @@ -2134,9 +2042,6 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@tybys/wasm-util@0.9.0': - resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} - '@types/bn.js@5.2.0': resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} @@ -2349,17 +2254,6 @@ packages: '@vitest/utils@2.1.1': resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} - '@yarnpkg/lockfile@1.1.0': - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - - '@yarnpkg/parsers@3.0.2': - resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} - engines: {node: '>=18.12.0'} - - '@zkochan/js-yaml@0.0.7': - resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} - hasBin: true - JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -2421,10 +2315,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -2440,9 +2330,6 @@ packages: arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2561,9 +2448,6 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -2629,9 +2513,6 @@ packages: buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -2763,10 +2644,6 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2779,10 +2656,6 @@ packages: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} - cli-spinners@2.6.1: - resolution: {integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==} - engines: {node: '>=6'} - cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -2799,10 +2672,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - code-excerpt@4.0.0: resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2996,9 +2865,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -3064,10 +2930,6 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dotenv-expand@11.0.7: - resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} - engines: {node: '>=12'} - dotenv@16.4.7: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} @@ -3105,17 +2967,10 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -3328,11 +3183,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -3425,10 +3275,6 @@ packages: ffjavascript@0.3.1: resolution: {integrity: sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3510,12 +3356,6 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} - front-matter@4.0.2: - resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} - - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -3992,10 +3832,6 @@ packages: engines: {node: '>=18'} hasBin: true - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -4171,20 +4007,12 @@ packages: engines: {node: '>=8'} hasBin: true - jest-diff@30.2.0: - resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - joi@17.11.0: resolution: {integrity: sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==} js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} - hasBin: true - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -4221,9 +4049,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -4252,10 +4077,6 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - lines-and-columns@2.0.3: - resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -4394,10 +4215,6 @@ packages: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} - minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -4482,9 +4299,6 @@ packages: resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true - node-machine-id@1.1.12: - resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} - node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -4504,10 +4318,6 @@ packages: resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4586,18 +4396,6 @@ packages: - which - write-file-atomic - nx@22.0.2: - resolution: {integrity: sha512-cQD3QqZDPJMnvE4UGmVwCc6l7ll+u8a93brIAOujOxocyMNARXzyVub8Uxqy0QSr2ayFGmEINb6BJvY+EooT5Q==} - hasBin: true - peerDependencies: - '@swc-node/register': ^1.8.0 - '@swc/core': ^1.3.85 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true - object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -4673,10 +4471,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.3.0: - resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} - engines: {node: '>=10'} - ora@8.2.0: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} @@ -4842,10 +4636,6 @@ packages: engines: {node: '>=14'} hasBin: true - pretty-format@30.2.0: - resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} - engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} - proc-log@4.2.0: resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4902,9 +4692,6 @@ packages: randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-reconciler@0.29.2: resolution: {integrity: sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==} engines: {node: '>=0.10.0'} @@ -4974,10 +4761,6 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -4995,10 +4778,6 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5249,9 +5028,6 @@ packages: spdx-license-ids@3.0.15: resolution: {integrity: sha512-lpT8hSQp9jAKp9mhtBU4Xjon8LPGBvLIuBiSVhMEtmLecTh2mO0tlqrAMp47tBXzMr13NJMQ2lf7RpQGLJ3HsQ==} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -5366,10 +5142,6 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - tar@7.4.3: resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} engines: {node: '>=18'} @@ -5419,10 +5191,6 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - tmp@0.2.5: - resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} - engines: {node: '>=14.14'} - to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -5437,10 +5205,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - ts-api-utils@1.3.0: resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} engines: {node: '>=16'} @@ -5485,10 +5249,6 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -5728,9 +5488,6 @@ packages: wasmcurves@0.2.2: resolution: {integrity: sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ==} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -6635,19 +6392,6 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@emnapi/core@1.7.0': - dependencies: - '@emnapi/wasi-threads': 1.1.0 - tslib: 2.8.1 - - '@emnapi/runtime@1.7.0': - dependencies: - tslib: 2.8.1 - - '@emnapi/wasi-threads@1.1.0': - dependencies: - tslib: 2.8.1 - '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.25.10)': dependencies: esbuild: 0.25.10 @@ -7060,14 +6804,6 @@ snapshots: dependencies: minipass: 7.1.2 - '@jest/diff-sequences@30.0.1': {} - - '@jest/get-type@30.1.0': {} - - '@jest/schemas@30.0.5': - dependencies: - '@sinclair/typebox': 0.34.41 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -7119,12 +6855,6 @@ snapshots: '@lightprotocol/hasher.rs@0.2.1': {} - '@napi-rs/wasm-runtime@0.2.4': - dependencies: - '@emnapi/core': 1.7.0 - '@emnapi/runtime': 1.7.0 - '@tybys/wasm-util': 0.9.0 - '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 @@ -7145,36 +6875,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@nx/nx-darwin-arm64@22.0.2': - optional: true - - '@nx/nx-darwin-x64@22.0.2': - optional: true - - '@nx/nx-freebsd-x64@22.0.2': - optional: true - - '@nx/nx-linux-arm-gnueabihf@22.0.2': - optional: true - - '@nx/nx-linux-arm64-gnu@22.0.2': - optional: true - - '@nx/nx-linux-arm64-musl@22.0.2': - optional: true - - '@nx/nx-linux-x64-gnu@22.0.2': - optional: true - - '@nx/nx-linux-x64-musl@22.0.2': - optional: true - - '@nx/nx-win32-arm64-msvc@22.0.2': - optional: true - - '@nx/nx-win32-x64-msvc@22.0.2': - optional: true - '@oclif/core@4.5.4': dependencies: ansi-escapes: 4.3.2 @@ -7448,8 +7148,6 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.34.41': {} - '@sindresorhus/is@5.6.0': {} '@sindresorhus/merge-streams@2.3.0': {} @@ -8097,10 +7795,6 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@tybys/wasm-util@0.9.0': - dependencies: - tslib: 2.8.1 - '@types/bn.js@5.2.0': dependencies: '@types/node': 22.16.5 @@ -8367,17 +8061,6 @@ snapshots: loupe: 3.2.0 tinyrainbow: 1.2.0 - '@yarnpkg/lockfile@1.1.0': {} - - '@yarnpkg/parsers@3.0.2': - dependencies: - js-yaml: 3.14.2 - tslib: 2.8.1 - - '@zkochan/js-yaml@0.0.7': - dependencies: - argparse: 2.0.1 - JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 @@ -8429,8 +8112,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} ansi-styles@6.2.3: {} @@ -8439,10 +8120,6 @@ snapshots: arg@4.1.3: {} - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} array-buffer-byte-length@1.0.0: @@ -8591,12 +8268,6 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bn.js@4.12.0: {} bn.js@5.2.1: {} @@ -8688,11 +8359,6 @@ snapshots: buffer-xor@1.0.3: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -8845,10 +8511,6 @@ snapshots: cli-boxes@3.0.0: {} - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -8861,8 +8523,6 @@ snapshots: dependencies: string-width: 4.2.3 - cli-spinners@2.6.1: {} - cli-spinners@2.9.2: {} cli-truncate@4.0.0: @@ -8878,8 +8538,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} - code-excerpt@4.0.0: dependencies: convert-to-spaces: 2.0.1 @@ -9070,10 +8728,6 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - defer-to-connect@2.0.1: {} define-data-property@1.1.0: @@ -9134,10 +8788,6 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 - dotenv-expand@11.0.7: - dependencies: - dotenv: 16.4.7 - dotenv@16.4.7: {} dunder-proto@1.0.1: @@ -9185,19 +8835,11 @@ snapshots: emoji-regex@9.2.2: {} - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 - enquirer@2.3.6: - dependencies: - ansi-colors: 4.1.3 - enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -9475,7 +9117,8 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@1.0.5: {} + escape-string-regexp@1.0.5: + optional: true escape-string-regexp@2.0.0: {} @@ -9625,8 +9268,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.1 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -9715,10 +9356,6 @@ snapshots: wasmcurves: 0.2.2 web-worker: 1.2.0 - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9795,12 +9432,6 @@ snapshots: dependencies: fetch-blob: 3.2.0 - front-matter@4.0.2: - dependencies: - js-yaml: 3.14.2 - - fs-constants@1.0.0: {} - fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 @@ -10362,8 +9993,6 @@ snapshots: is-in-ci@0.1.0: {} - is-interactive@1.0.0: {} - is-interactive@2.0.0: {} is-map@2.0.3: {} @@ -10532,13 +10161,6 @@ snapshots: - bufferutil - utf-8-validate - jest-diff@30.2.0: - dependencies: - '@jest/diff-sequences': 30.0.1 - '@jest/get-type': 30.1.0 - chalk: 4.1.2 - pretty-format: 30.2.0 - joi@17.11.0: dependencies: '@hapi/hoek': 9.3.0 @@ -10549,11 +10171,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@3.14.2: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -10578,8 +10195,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.2.0: {} - jsonc-parser@3.3.1: {} jsonfile@4.0.0: @@ -10603,8 +10218,6 @@ snapshots: lines-and-columns@1.2.4: {} - lines-and-columns@2.0.3: {} - linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 @@ -10729,10 +10342,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.3: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.5: dependencies: brace-expansion: 2.0.2 @@ -10811,8 +10420,6 @@ snapshots: node-gyp-build@4.6.1: optional: true - node-machine-id@1.1.12: {} - node-releases@2.0.27: {} normalize-package-data@6.0.2: @@ -10837,67 +10444,12 @@ snapshots: semver: 7.7.3 validate-npm-package-name: 6.0.0 - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 npm@10.9.3: {} - nx@22.0.2: - dependencies: - '@napi-rs/wasm-runtime': 0.2.4 - '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.2 - '@zkochan/js-yaml': 0.0.7 - axios: 1.12.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.6.1 - cliui: 8.0.1 - dotenv: 16.4.7 - dotenv-expand: 11.0.7 - enquirer: 2.3.6 - figures: 3.2.0 - flat: 5.0.2 - front-matter: 4.0.2 - ignore: 7.0.5 - jest-diff: 30.2.0 - jsonc-parser: 3.2.0 - lines-and-columns: 2.0.3 - minimatch: 9.0.3 - node-machine-id: 1.1.12 - npm-run-path: 4.0.1 - open: 8.4.2 - ora: 5.3.0 - resolve.exports: 2.0.3 - semver: 7.7.3 - string-width: 4.2.3 - tar-stream: 2.2.0 - tmp: 0.2.5 - tree-kill: 1.2.2 - tsconfig-paths: 4.2.0 - tslib: 2.8.1 - yaml: 2.8.1 - yargs: 17.7.2 - yargs-parser: 21.1.1 - optionalDependencies: - '@nx/nx-darwin-arm64': 22.0.2 - '@nx/nx-darwin-x64': 22.0.2 - '@nx/nx-freebsd-x64': 22.0.2 - '@nx/nx-linux-arm-gnueabihf': 22.0.2 - '@nx/nx-linux-arm64-gnu': 22.0.2 - '@nx/nx-linux-arm64-musl': 22.0.2 - '@nx/nx-linux-x64-gnu': 22.0.2 - '@nx/nx-linux-x64-musl': 22.0.2 - '@nx/nx-win32-arm64-msvc': 22.0.2 - '@nx/nx-win32-x64-msvc': 22.0.2 - transitivePeerDependencies: - - debug - object-hash@3.0.0: {} object-inspect@1.12.3: {} @@ -11012,17 +10564,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.3.0: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@8.2.0: dependencies: chalk: 5.6.2 @@ -11181,12 +10722,6 @@ snapshots: prettier@3.6.2: {} - pretty-format@30.2.0: - dependencies: - '@jest/schemas': 30.0.5 - ansi-styles: 5.2.0 - react-is: 18.3.1 - proc-log@4.2.0: {} proc-log@5.0.0: {} @@ -11236,8 +10771,6 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 - react-is@18.3.1: {} - react-reconciler@0.29.2(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -11324,8 +10857,6 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve.exports@2.0.3: {} - resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -11348,11 +10879,6 @@ snapshots: dependencies: lowercase-keys: 3.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -11660,8 +11186,6 @@ snapshots: spdx-license-ids@3.0.15: {} - sprintf-js@1.0.3: {} - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -11803,14 +11327,6 @@ snapshots: tapable@2.2.1: {} - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - tar@7.4.3: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -11858,8 +11374,6 @@ snapshots: tinyspy@3.0.2: {} - tmp@0.2.5: {} - to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -11870,8 +11384,6 @@ snapshots: tr46@0.0.3: {} - tree-kill@1.2.2: {} - ts-api-utils@1.3.0(typescript@5.9.2): dependencies: typescript: 5.9.2 @@ -11925,12 +11437,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - tslib@2.7.0: {} tslib@2.8.1: {} @@ -12206,10 +11712,6 @@ snapshots: dependencies: wasmbuilder: 0.0.16 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-streams-polyfill@3.2.1: {} web-worker@1.2.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5d63266e35..3a1786cae1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,13 +1,8 @@ packages: - "tsconfig/**" - - "programs/**" - - "program-libs/**" - "cli/**" - - "account-compression/programs/**" - "sdk/**" - - "sdk-tests/**" + - "sdk-tests/sdk-anchor-test/**" - "js/stateless.js/**" - "js/compressed-token/**" - "examples/**" - - "forester/**" - - "program-tests/**" diff --git a/program-libs/justfile b/program-libs/justfile new file mode 100644 index 0000000000..b368219d01 --- /dev/null +++ b/program-libs/justfile @@ -0,0 +1,33 @@ +# Light Protocol - Program Libraries + +default: + @just --list + +test: test-fast test-slow + +test-fast: + cargo test -p light-macros + cargo test -p aligned-sized + cargo test -p light-array-map --all-features + cargo test -p light-hasher --all-features + cargo test -p light-compressed-account --all-features + cargo test -p light-account-checks --all-features + cargo test -p light-verifier --all-features + cargo test -p light-merkle-tree-metadata --all-features + cargo test -p light-zero-copy --features "std, mut, derive" + cargo test -p light-zero-copy-derive --all-features + cargo test -p zero-copy-derive-test + cargo test -p light-hash-set --all-features + cargo test -p batched-merkle-tree-test -- --skip test_simulate_transactions --skip test_e2e + cargo test -p light-concurrent-merkle-tree + cargo test -p light-token-interface --features poseidon + cargo test -p light-compressible --all-features + +test-slow: + cargo test -p light-bloom-filter --all-features + cargo test -p light-indexed-merkle-tree --all-features + cargo test -p batched-merkle-tree-test -- test_e2e + +test-simulate: + cargo test -p light-batched-merkle-tree --features test-only + RUST_LOG=light_prover_client=debug cargo test -p batched-merkle-tree-test -- test_simulate_transactions diff --git a/program-tests/justfile b/program-tests/justfile new file mode 100644 index 0000000000..18454e4823 --- /dev/null +++ b/program-tests/justfile @@ -0,0 +1,15 @@ +# Light Protocol - Program Tests + +default: + @just --list + +build: + cd create-address-test-program && cargo build-sbf + +test: build + RUSTFLAGS="-D warnings" cargo test-sbf -p account-compression-test + RUSTFLAGS="-D warnings" cargo test-sbf -p registry-test + RUSTFLAGS="-D warnings" cargo test-sbf -p system-test + RUSTFLAGS="-D warnings" cargo test-sbf -p system-cpi-test + RUSTFLAGS="-D warnings" cargo test-sbf -p compressed-token-test + RUSTFLAGS="-D warnings" cargo test-sbf -p e2e-test diff --git a/program-tests/package.json b/program-tests/package.json deleted file mode 100644 index cfb09042fb..0000000000 --- a/program-tests/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@lightprotocol/program-tests", - "version": "0.1.0", - "license": "Apache-2.0", - "description": "Test programs for Light Protocol uses test-sbf to build because build-sbf -- -p creates an infinite loop.", - "scripts": { - "build": "cargo test-sbf -p create-address-test-program" - }, - "nx": { - "targets": { - "build": { - "outputs": [ - "{workspaceRoot}/target/deploy" - ] - } - } - } -} diff --git a/programs/justfile b/programs/justfile new file mode 100644 index 0000000000..fb91d072bd --- /dev/null +++ b/programs/justfile @@ -0,0 +1,13 @@ +# Light Protocol - Solana Programs + +default: + @just --list + +build: + cd system && cargo build-sbf + cd account-compression && cargo build-sbf --features 'test, migrate-state' + cd registry && cargo build-sbf + cd compressed-token/program && cargo build-sbf + +build-compressed-token-small: + cd compressed-token/program && cargo build-sbf --features cpi-without-program-ids diff --git a/programs/package.json b/programs/package.json deleted file mode 100644 index 244d22318d..0000000000 --- a/programs/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@lightprotocol/programs", - "version": "0.3.0", - "license": "Apache-2.0", - "scripts": { - "build": "cd system/ && cargo build-sbf && cd .. && cd account-compression/ && cargo build-sbf --features 'test, migrate-state' && cd .. && cd registry/ && cargo build-sbf && cd .. && cd compressed-token/program && cargo build-sbf && cd ../../..", - "build-compressed-token-small": "cd compressed-token && cargo build-sbf --features cpi-without-program-ids && cd ..", - "build-system": "anchor build --program-name light_system_program -- --features idl-build custom-heap", - "build-compressed-token": "anchor build --program-name light_compressed_token -- --features idl-build custom-heap", - "test": "RUSTFLAGS=\"-D warnings\" && pnpm test-account-compression && pnpm test-compressed-token && pnpm e2e-test && pnpm test-registry && pnpm sdk-test-program && pnpm test-system && pnpm test-system-cpi", - "test-account-compression": "cargo-test-sbf -p account-compression-test", - "test-compressed-token": "cargo test-sbf -p compressed-token-test", - "e2e-test": "cargo-test-sbf -p e2e-test", - "test-registry": "cargo-test-sbf -p registry-test", - "sdk-test-program": "cargo test-sbf -p sdk-native-test", - "test-system": "cargo test-sbf -p system-test", - "test-system-cpi": "cargo test-sbf -p system-cpi-test", - "ignored-program-owned-account-test": "cargo-test-sbf -p program-owned-account-test" - }, - "nx": { - "targets": { - "build": { - "outputs": [ - "{workspaceRoot}/target/deploy", - "{workspaceRoot}/target/idl", - "{workspaceRoot}/target/types" - ] - } - } - } -} diff --git a/prover/server/justfile b/prover/server/justfile new file mode 100644 index 0000000000..f3d6a5526d --- /dev/null +++ b/prover/server/justfile @@ -0,0 +1,66 @@ +# Light Prover Server + +export TEST_REDIS_URL := env_var_or_default("TEST_REDIS_URL", "redis://localhost:6379/15") + +default: + @just --list + +# === Build === +build: + go build ./... + +build-binary: + go build -o light-prover . + +# === Tests (no Redis required) === +test-unit: + go test ./prover/... -timeout 60m + +test-worker-selection: + go test -v -run TestWorkerSelection -timeout 5m + +test-batch-operations: + go test -v -run TestBatchOperations -timeout 5m + +test-no-redis: test-unit test-worker-selection test-batch-operations + +# === Tests (Redis required) === +test-redis: + go test -v -run TestRedis -timeout 10m + +test-cleanup: + go test -v -run TestCleanup -timeout 5m + +test-job-processing-flow: + go test -v -run TestJobProcessingFlow -timeout 5m + +test-failed-job-status: + go test -v -run TestFailedJobStatus -timeout 5m + +test-with-redis: test-redis test-cleanup test-job-processing-flow test-failed-job-status + +# === Integration Tests === +test-lightweight: + go test -run TestLightweight -timeout 15m + +test-lightweight-lazy: + go test -run TestLightweightLazy -timeout 15m + +# Excluded from test-integration and test due to 120m timeout; run manually for exhaustive testing +test-full: + go test -run TestFull -timeout 120m + +test-integration: test-lightweight test-lightweight-lazy + +# === All Tests === +# Note: test-full excluded to avoid slow CI runs +test: test-no-redis test-with-redis test-integration + +# === Formal Verification === +extract-circuit: build-binary + ./light-prover extract-circuit --output formal-verification/FormalVerification/Circuit.lean --address-tree-height 40 --compressed-accounts 8 --state-tree-height 32 + +lean-build: + cd formal-verification && lake exe cache get && lake build + +verify: extract-circuit lean-build diff --git a/scripts/build.sh b/scripts/build.sh index 089eaca8ca..33123facf0 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash command -v pnpm >/dev/null 2>&1 || { echo >&2 "pnpm is not installed. Aborting."; exit 1; } -command -v npx >/dev/null 2>&1 || { echo >&2 "npx is not installed. Aborting."; exit 1; } +command -v just >/dev/null 2>&1 || { echo >&2 "just is not installed. Aborting."; exit 1; } set -eux @@ -11,6 +11,6 @@ if [ ! -f target/deploy/spl_noop.so ]; then mkdir -p target/deploy && cp third-party/solana-program-library/spl_noop.so target/deploy fi -npx nx run-many --target=build --all +just build echo "Build process completed successfully." diff --git a/scripts/clean.sh b/scripts/clean.sh index 75b4e6de44..9a6d68733f 100755 --- a/scripts/clean.sh +++ b/scripts/clean.sh @@ -2,4 +2,4 @@ find . -type d -name "test-ledger" -exec sh -c 'echo "Deleting {}"; rm -rf "{}"' \; -npx nx reset \ No newline at end of file +cargo clean diff --git a/scripts/devenv/install-just.sh b/scripts/devenv/install-just.sh new file mode 100755 index 0000000000..60f8eb46de --- /dev/null +++ b/scripts/devenv/install-just.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +source "${SCRIPT_DIR}/shared.sh" + +install_just() { + if ! is_installed "just" || [ ! -f "${PREFIX}/bin/just" ]; then + echo "Installing just..." + curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to "${PREFIX}/bin" + log "just" + else + echo "just already installed, skipping..." + fi +} + +install_just diff --git a/scripts/devenv/install.sh b/scripts/devenv/install.sh index bf72a41f97..8be6c0619f 100755 --- a/scripts/devenv/install.sh +++ b/scripts/devenv/install.sh @@ -38,7 +38,7 @@ main() { *) echo "Unknown option: $1" echo "Usage: $0 [--full-keys] [--no-reset] [--skip-components ] [--force-reinstall]" - echo "Components that can be skipped: go,rust,node,pnpm,solana,anchor,jq,photon,keys,dependencies,redis" + echo "Components that can be skipped: go,rust,node,pnpm,solana,anchor,jq,photon,keys,dependencies,redis,just" exit 1 ;; esac @@ -64,6 +64,7 @@ main() { should_skip "keys" || bash "${SCRIPT_DIR}/download-gnark-keys.sh" "$key_type" should_skip "dependencies" || bash "${SCRIPT_DIR}/install-dependencies.sh" should_skip "redis" || bash "${SCRIPT_DIR}/install-redis.sh" + should_skip "just" || bash "${SCRIPT_DIR}/install-just.sh" echo "✨ Light Protocol development dependencies installed" if [ -n "$skip_components" ]; then diff --git a/scripts/format.sh b/scripts/format.sh index 9e1e2c5c76..a2081f1273 100755 --- a/scripts/format.sh +++ b/scripts/format.sh @@ -2,9 +2,11 @@ set -e -npx nx run-many --target=format --all -npx nx run-many --target=lint:fix --all +# JS formatting +cd js/stateless.js && pnpm format && cd ../.. +cd js/compressed-token && pnpm format && cd ../.. +# Rust formatting cargo +nightly fmt --all cargo clippy \ --workspace \ diff --git a/scripts/lint.sh b/scripts/lint.sh index 9bc5df33f9..a12aaf558e 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -1,9 +1,12 @@ #!/usr/bin/env bash set -e -npx nx run-many --target=format:check --all -npx nx run-many --target=lint --all +# JS linting +cd js/stateless.js && pnpm prettier --check . && pnpm lint && cd ../.. +cd js/compressed-token && pnpm prettier --check . && pnpm lint && cd ../.. + +# Rust linting cargo +nightly fmt --all -- --check cargo clippy --workspace --all-features --all-targets -- -D warnings diff --git a/scripts/test.sh b/scripts/test.sh index edf09bf9c3..07e56d2478 100755 --- a/scripts/test.sh +++ b/scripts/test.sh @@ -6,4 +6,4 @@ fi set -eux -npx nx run-many --target=test --all --parallel=false \ No newline at end of file +just test diff --git a/sdk-libs/justfile b/sdk-libs/justfile new file mode 100644 index 0000000000..81bfe7d042 --- /dev/null +++ b/sdk-libs/justfile @@ -0,0 +1,17 @@ +# Light Protocol - SDK Libraries + +default: + @just --list + +test: + cargo test -p light-sdk-macros + cargo test -p light-sdk-macros --all-features + cargo test -p light-sdk + cargo test -p light-sdk --all-features + cargo test -p light-program-test + cargo test -p light-client + cargo test -p light-sparse-merkle-tree + cargo test -p light-token-types + cargo test -p light-token --all-features + cargo test -p light-token-client + cargo test -p light-token-client --all-features diff --git a/sdk-tests/CLAUDE.md b/sdk-tests/CLAUDE.md index 075afd5aa4..63f7a284b6 100644 --- a/sdk-tests/CLAUDE.md +++ b/sdk-tests/CLAUDE.md @@ -42,9 +42,8 @@ Tests for Light SDK with Anchor framework (Rust tests). #### TypeScript Tests ```bash -npx nx build @lightprotocol/sdk-anchor-test -cd sdk-tests/sdk-anchor-test -npm run test-ts +just build-sdk-anchor-test +cd sdk-tests/sdk-anchor-test && npm run test-ts ``` TypeScript integration tests for Anchor SDK. diff --git a/sdk-tests/csdk-anchor-full-derived-test/package.json b/sdk-tests/csdk-anchor-full-derived-test/package.json index cabe18b832..858b6c8a3d 100644 --- a/sdk-tests/csdk-anchor-full-derived-test/package.json +++ b/sdk-tests/csdk-anchor-full-derived-test/package.json @@ -5,7 +5,6 @@ "scripts": { "build": "cargo build-sbf", "test": "cargo test-sbf -p csdk-anchor-full-derived-test -- --nocapture" - }, - "nx": {} + } } diff --git a/sdk-tests/justfile b/sdk-tests/justfile new file mode 100644 index 0000000000..27c1d0a969 --- /dev/null +++ b/sdk-tests/justfile @@ -0,0 +1,12 @@ +# Light Protocol - SDK Tests + +default: + @just --list + +build-anchor-test: + cd sdk-anchor-test && pnpm build + +test: + RUSTFLAGS="-D warnings" cargo test-sbf -p sdk-native-test + RUSTFLAGS="-D warnings" cargo test-sbf -p sdk-anchor-test + RUSTFLAGS="-D warnings" cargo test-sbf -p sdk-token-test