From e3898a563e53182fcb9f68387d5667c587aa4541 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Wed, 21 Jan 2026 00:49:40 +0000 Subject: [PATCH 01/10] refactor build and test scripts to use 'just' instead of 'npx nx' --- .github/actions/setup-and-build/action.yml | 16 +- .github/workflows/cli-v1.yml | 4 +- .github/workflows/cli-v2.yml | 4 +- .github/workflows/forester-tests.yml | 15 +- .github/workflows/js-v2.yml | 11 +- .github/workflows/js.yml | 6 +- .github/workflows/programs.yml | 2 +- .github/workflows/rust.yml | 35 +- .github/workflows/sdk-tests.yml | 14 +- CLAUDE.md | 10 +- cli/package.json | 39 +- forester/package.json | 9 - js/compressed-token/package.json | 23 +- js/stateless.js/package.json | 17 - justfile | 162 ++++++ nx.json | 84 --- package.json | 1 - pnpm-lock.yaml | 490 +----------------- program-tests/package.json | 9 - programs/package.json | 11 - scripts/build.sh | 4 +- scripts/clean.sh | 2 +- scripts/devenv/install-just.sh | 15 + scripts/devenv/install.sh | 3 +- scripts/format.sh | 6 +- scripts/lint.sh | 7 +- scripts/test.sh | 2 +- sdk-tests/CLAUDE.md | 5 +- .../package.json | 3 +- 29 files changed, 238 insertions(+), 771 deletions(-) create mode 100644 justfile delete mode 100644 nx.json create mode 100755 scripts/devenv/install-just.sh diff --git a/.github/actions/setup-and-build/action.yml b/.github/actions/setup-and-build/action.yml index 8695737858..56eca43b32 100644 --- a/.github/actions/setup-and-build/action.yml +++ b/.github/actions/setup-and-build/action.yml @@ -112,6 +112,12 @@ runs: shell: bash run: bash scripts/devenv/install-photon.sh + - name: Install just + shell: bash + run: | + curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to $HOME/.local/bin + echo "$HOME/.local/bin" >> $GITHUB_PATH + - name: Set Light Protocol environment variables shell: bash run: | @@ -208,20 +214,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 build-programs - 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 build-program-tests - name: Check for git changes shell: bash diff --git a/.github/workflows/cli-v1.yml b/.github/workflows/cli-v1.yml index 2cfbe9a0bd..5a71b81940 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 build-cli - name: Run CLI tests with V1 run: | - npx nx test @lightprotocol/zk-compression-cli + just test-cli - name: Display prover logs on failure if: failure() diff --git a/.github/workflows/cli-v2.yml b/.github/workflows/cli-v2.yml index 88ef010e13..840c0ac22c 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 build-cli - name: Run CLI tests with V2 run: | - npx nx test @lightprotocol/zk-compression-cli + just test-cli - name: Display prover logs on failure if: failure() diff --git a/.github/workflows/forester-tests.yml b/.github/workflows/forester-tests.yml index 5ddee18460..bf844434ea 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 build-cli - name: Test - run: cargo test --package forester e2e_test -- --nocapture + run: just test-forester compressible-tests: name: Forester compressible tests @@ -112,17 +112,16 @@ jobs: cache-key: "rust" - name: Build CLI - run: npx nx build @lightprotocol/zk-compression-cli + run: just build-cli - name: Build test programs - run: | - cargo build-sbf --manifest-path sdk-tests/csdk-anchor-full-derived-test/Cargo.toml + run: just build-csdk-anchor-full-derived-test - name: Test compressible PDA - run: cargo test --package forester --test test_compressible_pda -- --nocapture + run: just test-forester-compressible-pda - name: Test compressible Mint - run: cargo test --package forester --test test_compressible_mint -- --nocapture + run: just test-forester-compressible-mint - name: Test compressible ctoken - run: cargo test --package forester --test test_compressible_ctoken -- --nocapture + run: just test-forester-compressible-ctoken diff --git a/.github/workflows/js-v2.yml b/.github/workflows/js-v2.yml index c3f71f74dd..19941592a3 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 build-cli - 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 test-stateless-js; 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 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 build-sdk-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..9b31b06941 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 build-cli - 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 test-stateless-js; 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 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..9d1636cc70 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 build-cli - name: ${{ matrix.program }} run: | diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index d7437a252a..0515a54d3b 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 test-batched-merkle-tree-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 test-program-libs-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 test-program-libs-slow name: Test ${{ matrix.group.name }} @@ -95,7 +68,7 @@ jobs: - name: Build CLI run: | - npx nx build @lightprotocol/zk-compression-cli + just build-cli - name: Run tests for ${{ matrix.group.name }} run: | diff --git a/.github/workflows/sdk-tests.yml b/.github/workflows/sdk-tests.yml index 388dc4d8e6..a8550f3440 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 test-sdk-libs 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 build-cli - name: Install bun if: matrix.program == 'sdk-libs' diff --git a/CLAUDE.md b/CLAUDE.md index 36a3738929..e27f96fdec 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -136,11 +136,11 @@ 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 build-cli +just test-stateless-js +just test-compressed-token +just test-cli ``` **Environment variables:** 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/package.json b/forester/package.json index cc0173c735..53bd92cf4a 100644 --- a/forester/package.json +++ b/forester/package.json @@ -10,14 +10,5 @@ }, "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/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..d525a1579f --- /dev/null +++ b/justfile @@ -0,0 +1,162 @@ +# 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") + +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: build-programs build-js build-cli + +build-programs: + cd programs/system && cargo build-sbf + cd programs/account-compression && cargo build-sbf --features 'test, migrate-state' + cd programs/registry && cargo build-sbf + cd programs/compressed-token/program && cargo build-sbf + +build-program-tests: + cargo build-sbf -p create-address-test-program + +build-js: + cd js/stateless.js && pnpm build + cd js/compressed-token && pnpm build + +build-cli: + cd cli && pnpm build + +build-forester: + cargo build -p forester --release + +test-forester: + TEST_MODE=local \ + TEST_V1_STATE=true \ + TEST_V2_STATE=true \ + TEST_V1_ADDRESS=true \ + TEST_V2_ADDRESS=true \ + cargo test --package forester e2e_test -- --nocapture + +build-csdk-anchor-full-derived-test: + cargo build-sbf --manifest-path sdk-tests/csdk-anchor-full-derived-test/Cargo.toml + +test-forester-compressible-pda: + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_pda -- --nocapture + +test-forester-compressible-mint: + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_mint -- --nocapture + +test-forester-compressible-ctoken: + RUST_LOG=forester=debug,light_client=debug \ + cargo test --package forester --test test_compressible_ctoken -- --nocapture + +# === Test === +test: test-programs test-sdk test-js + +test-programs: + 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 + +test-sdk: + 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 + +# Program libs tests (matching CI groups in rust.yml) +test-program-libs: test-program-libs-fast test-program-libs-slow + +test-program-libs-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-program-libs-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 test_e2e + +test-batched-merkle-tree-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 test_simulate_transactions + +# SDK libs tests (matching CI in sdk-tests.yml) +test-sdk-libs: + 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-sdk --all-features + +test-js: test-stateless-js test-compressed-token + +test-stateless-js: + cd js/stateless.js && pnpm test + +test-compressed-token: + cd js/compressed-token && pnpm test + +test-compressed-token-unit-v2: + cd js/compressed-token && pnpm test:unit:all:v2 + +test-cli: + cd cli && pnpm test + +build-sdk-anchor-test: + cd sdk-tests/sdk-anchor-test && pnpm build + +# === Lint & Format === +lint: lint-rust lint-js + +lint-rust: + cargo +nightly fmt --all -- --check + cargo clippy --workspace --all-features -- -D warnings + +lint-js: + cd js/stateless.js && pnpm lint + cd js/compressed-token && pnpm lint + +format: + cargo +nightly fmt --all + cd js/stateless.js && pnpm format + cd js/compressed-token && pnpm 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..60216c8975 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 @@ -789,15 +786,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 +1328,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 +1374,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 +1397,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 +1657,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 +2054,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 +2266,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 +2327,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 +2342,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 +2460,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 +2525,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 +2656,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 +2668,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 +2684,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 +2877,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 +2942,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 +2979,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 +3195,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 +3287,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 +3368,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 +3844,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 +4019,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 +4061,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 +4089,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 +4227,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 +4311,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 +4330,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 +4408,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 +4483,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 +4648,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 +4704,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 +4773,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 +4790,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 +5040,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 +5154,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 +5203,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 +5217,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 +5261,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 +5500,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 +6404,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 +6816,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 +6867,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 +6887,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 +7160,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 +7807,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 +8073,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 +8124,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 +8132,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 +8280,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 +8371,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 +8523,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 +8535,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 +8550,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 +8740,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 +8800,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 +8847,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 +9129,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 +9280,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 +9368,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 +9444,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 +10005,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 +10173,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 +10183,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 +10207,6 @@ snapshots: json5@2.2.3: {} - jsonc-parser@3.2.0: {} - jsonc-parser@3.3.1: {} jsonfile@4.0.0: @@ -10603,8 +10230,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 +10354,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 +10432,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 +10456,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 +10576,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 +10734,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 +10783,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 +10869,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 +10891,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 +11198,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 +11339,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 +11386,6 @@ snapshots: tinyspy@3.0.2: {} - tmp@0.2.5: {} - to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -11870,8 +11396,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 +11449,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 +11724,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/program-tests/package.json b/program-tests/package.json index cfb09042fb..6b410966d3 100644 --- a/program-tests/package.json +++ b/program-tests/package.json @@ -5,14 +5,5 @@ "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/package.json b/programs/package.json index 244d22318d..c8b874bb09 100644 --- a/programs/package.json +++ b/programs/package.json @@ -16,16 +16,5 @@ "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/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..3c11863b40 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 format:check && pnpm lint && cd ../.. +cd js/compressed-token && pnpm format: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-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": {} + } } From 733d193e30802d57055338240a7e046b41e40142 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Wed, 21 Jan 2026 15:05:11 +0000 Subject: [PATCH 02/10] fix justfile --- justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/justfile b/justfile index d525a1579f..5a9a520231 100644 --- a/justfile +++ b/justfile @@ -24,7 +24,7 @@ build-programs: cd programs/compressed-token/program && cargo build-sbf build-program-tests: - cargo build-sbf -p create-address-test-program + cd program-tests/create-address-test-program && cargo build-sbf build-js: cd js/stateless.js && pnpm build From 3ccadde7213b306450c77ed05d8256be4e76e942 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Wed, 21 Jan 2026 15:56:03 +0000 Subject: [PATCH 03/10] refactor: replace just installation script with action and update build-cli dependency --- .github/actions/setup-and-build/action.yml | 5 +---- justfile | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/actions/setup-and-build/action.yml b/.github/actions/setup-and-build/action.yml index 56eca43b32..e610ba3b0d 100644 --- a/.github/actions/setup-and-build/action.yml +++ b/.github/actions/setup-and-build/action.yml @@ -113,10 +113,7 @@ runs: run: bash scripts/devenv/install-photon.sh - name: Install just - shell: bash - run: | - curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to $HOME/.local/bin - echo "$HOME/.local/bin" >> $GITHUB_PATH + uses: extractions/setup-just@v2 - name: Set Light Protocol environment variables shell: bash diff --git a/justfile b/justfile index 5a9a520231..2068597204 100644 --- a/justfile +++ b/justfile @@ -30,7 +30,7 @@ build-js: cd js/stateless.js && pnpm build cd js/compressed-token && pnpm build -build-cli: +build-cli: build-js cd cli && pnpm build build-forester: From 1901eb485b68ed72b1b55fde727f74b0b8d7edd0 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Wed, 21 Jan 2026 16:13:34 +0000 Subject: [PATCH 04/10] fix justfile --- justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/justfile b/justfile index 2068597204..e2f50e3cd9 100644 --- a/justfile +++ b/justfile @@ -115,7 +115,7 @@ test-sdk-libs: cargo test -p light-client cargo test -p light-sparse-merkle-tree cargo test -p light-token-types - cargo test -p light-token-sdk --all-features + cargo test -p light-token --all-features test-js: test-stateless-js test-compressed-token From fb3d1c430d66537226f0fd77c1c030b7d9f05b15 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 10:31:55 +0000 Subject: [PATCH 05/10] add justfile for prover --- justfile | 8 +++--- prover/server/justfile | 64 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 prover/server/justfile diff --git a/justfile b/justfile index e2f50e3cd9..3f084d50e5 100644 --- a/justfile +++ b/justfile @@ -36,7 +36,7 @@ build-cli: build-js build-forester: cargo build -p forester --release -test-forester: +test-forester: build-program-tests TEST_MODE=local \ TEST_V1_STATE=true \ TEST_V2_STATE=true \ @@ -62,7 +62,7 @@ test-forester-compressible-ctoken: # === Test === test: test-programs test-sdk test-js -test-programs: +test-programs: build-program-tests 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 @@ -99,11 +99,11 @@ test-program-libs-fast: test-program-libs-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 test_e2e + cargo test -p batched-merkle-tree-test -- test_e2e test-batched-merkle-tree-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 test_simulate_transactions + RUST_LOG=light_prover_client=debug cargo test -p batched-merkle-tree-test -- test_simulate_transactions # SDK libs tests (matching CI in sdk-tests.yml) test-sdk-libs: diff --git a/prover/server/justfile b/prover/server/justfile new file mode 100644 index 0000000000..7412c9cbf7 --- /dev/null +++ b/prover/server/justfile @@ -0,0 +1,64 @@ +# 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 + +test-full: + go test -run TestFull -timeout 120m + +test-integration: test-lightweight test-lightweight-lazy + +# === All Tests === +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 && ~/.elan/bin/lake exe cache get && ~/.elan/bin/lake build + +verify: extract-circuit lean-build From f352669490e52298ce34956452ca2d2fcb8c73eb Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 10:49:57 +0000 Subject: [PATCH 06/10] justfile mods --- .github/actions/setup-and-build/action.yml | 4 +- .github/workflows/cli-v1.yml | 4 +- .github/workflows/cli-v2.yml | 4 +- .github/workflows/forester-tests.yml | 15 +-- .github/workflows/js-v2.yml | 8 +- .github/workflows/js.yml | 6 +- .github/workflows/programs.yml | 4 +- .github/workflows/rust.yml | 8 +- .github/workflows/sdk-tests.yml | 4 +- cli/justfile | 10 ++ forester/justfile | 36 ++++++ forester/package.json | 14 --- js/justfile | 27 ++++ justfile | 138 +++------------------ pnpm-workspace.yaml | 7 +- program-libs/justfile | 33 +++++ program-tests/justfile | 15 +++ program-tests/package.json | 9 -- programs/justfile | 13 ++ programs/package.json | 20 --- sdk-libs/justfile | 15 +++ sdk-tests/justfile | 12 ++ 22 files changed, 204 insertions(+), 202 deletions(-) create mode 100644 cli/justfile create mode 100644 forester/justfile delete mode 100644 forester/package.json create mode 100644 js/justfile create mode 100644 program-libs/justfile create mode 100644 program-tests/justfile delete mode 100644 program-tests/package.json create mode 100644 programs/justfile delete mode 100644 programs/package.json create mode 100644 sdk-libs/justfile create mode 100644 sdk-tests/justfile diff --git a/.github/actions/setup-and-build/action.yml b/.github/actions/setup-and-build/action.yml index e610ba3b0d..d91c9a90c2 100644 --- a/.github/actions/setup-and-build/action.yml +++ b/.github/actions/setup-and-build/action.yml @@ -211,14 +211,14 @@ runs: shell: bash run: | echo "Building Rust programs..." - just build-programs + 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..." - just build-program-tests + 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 5a71b81940..cbdc8415fb 100644 --- a/.github/workflows/cli-v1.yml +++ b/.github/workflows/cli-v1.yml @@ -61,11 +61,11 @@ jobs: - name: Build CLI run: | - just build-cli + just cli build - name: Run CLI tests with V1 run: | - just test-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 840c0ac22c..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: | - just build-cli + just cli build - name: Run CLI tests with V2 run: | - just test-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 bf844434ea..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: just build-cli + run: just cli build - name: Test - run: just test-forester + run: just forester test compressible-tests: name: Forester compressible tests @@ -112,16 +112,13 @@ jobs: cache-key: "rust" - name: Build CLI - run: just build-cli - - - name: Build test programs - run: just build-csdk-anchor-full-derived-test + run: just cli build - name: Test compressible PDA - run: just test-forester-compressible-pda + run: just forester test-compressible-pda - name: Test compressible Mint - run: just test-forester-compressible-mint + run: just forester test-compressible-mint - name: Test compressible ctoken - run: just test-forester-compressible-ctoken + run: just forester test-compressible-ctoken diff --git a/.github/workflows/js-v2.yml b/.github/workflows/js-v2.yml index 19941592a3..a63c74f5fa 100644 --- a/.github/workflows/js-v2.yml +++ b/.github/workflows/js-v2.yml @@ -61,14 +61,14 @@ jobs: - name: Build CLI run: | - just build-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 just test-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 just test-compressed-token-unit-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,7 +114,7 @@ jobs: - name: Run sdk-anchor-test TypeScript tests with V2 run: | - just build-sdk-anchor-test + just sdk-tests build-anchor-test cd sdk-tests/sdk-anchor-test && npm run test-ts - name: Display prover logs on failure diff --git a/.github/workflows/js.yml b/.github/workflows/js.yml index 9b31b06941..da5d427086 100644 --- a/.github/workflows/js.yml +++ b/.github/workflows/js.yml @@ -61,14 +61,14 @@ jobs: - name: Build CLI run: | - just build-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 just test-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 just test-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 9d1636cc70..c84da7dfe3 100644 --- a/.github/workflows/programs.yml +++ b/.github/workflows/programs.yml @@ -85,7 +85,7 @@ jobs: - name: Build CLI run: | - just build-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 0515a54d3b..00a549a781 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -35,11 +35,11 @@ jobs: matrix: group: - name: batched-merkle-tree-simulate - test_cmd: just test-batched-merkle-tree-simulate + test_cmd: just program-libs test-simulate - name: program-libs-fast - test_cmd: just test-program-libs-fast + test_cmd: just program-libs test-fast - name: program-libs-slow - test_cmd: just test-program-libs-slow + test_cmd: just program-libs test-slow name: Test ${{ matrix.group.name }} @@ -68,7 +68,7 @@ jobs: - name: Build CLI run: | - just build-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 a8550f3440..0b2669aec1 100644 --- a/.github/workflows/sdk-tests.yml +++ b/.github/workflows/sdk-tests.yml @@ -54,7 +54,7 @@ jobs: - program: token test sub-tests: '["cargo-test-sbf -p sdk-token-test"]' - program: sdk-libs - test_cmd: just test-sdk-libs + test_cmd: just sdk-libs test steps: - name: Checkout sources uses: actions/checkout@v6 @@ -67,7 +67,7 @@ jobs: - name: Build CLI run: | - just build-cli + just cli build - name: Install bun if: matrix.program == 'sdk-libs' diff --git a/cli/justfile b/cli/justfile new file mode 100644 index 0000000000..f555d87ad5 --- /dev/null +++ b/cli/justfile @@ -0,0 +1,10 @@ +# Light Protocol - CLI + +default: + @just --list + +build: + pnpm build + +test: + pnpm test diff --git a/forester/justfile b/forester/justfile new file mode 100644 index 0000000000..53018bd02c --- /dev/null +++ b/forester/justfile @@ -0,0 +1,36 @@ +# 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") + +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 53bd92cf4a..0000000000 --- a/forester/package.json +++ /dev/null @@ -1,14 +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:*" - } -} 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/justfile b/justfile index 3f084d50e5..e3624721d5 100644 --- a/justfile +++ b/justfile @@ -5,6 +5,17 @@ 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 @@ -15,140 +26,21 @@ install: [ -f target/deploy/spl_noop.so ] || cp third-party/solana-program-library/spl_noop.so target/deploy/ # === Build === -build: build-programs build-js build-cli - -build-programs: - cd programs/system && cargo build-sbf - cd programs/account-compression && cargo build-sbf --features 'test, migrate-state' - cd programs/registry && cargo build-sbf - cd programs/compressed-token/program && cargo build-sbf - -build-program-tests: - cd program-tests/create-address-test-program && cargo build-sbf - -build-js: - cd js/stateless.js && pnpm build - cd js/compressed-token && pnpm build - -build-cli: build-js - cd cli && pnpm build - -build-forester: - cargo build -p forester --release - -test-forester: build-program-tests - TEST_MODE=local \ - TEST_V1_STATE=true \ - TEST_V2_STATE=true \ - TEST_V1_ADDRESS=true \ - TEST_V2_ADDRESS=true \ - cargo test --package forester e2e_test -- --nocapture - -build-csdk-anchor-full-derived-test: - cargo build-sbf --manifest-path sdk-tests/csdk-anchor-full-derived-test/Cargo.toml - -test-forester-compressible-pda: - RUST_LOG=forester=debug,light_client=debug \ - cargo test --package forester --test test_compressible_pda -- --nocapture - -test-forester-compressible-mint: - RUST_LOG=forester=debug,light_client=debug \ - cargo test --package forester --test test_compressible_mint -- --nocapture - -test-forester-compressible-ctoken: - RUST_LOG=forester=debug,light_client=debug \ - cargo test --package forester --test test_compressible_ctoken -- --nocapture +build: programs::build js::build cli::build # === Test === -test: test-programs test-sdk test-js - -test-programs: build-program-tests - 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 - -test-sdk: - 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 - -# Program libs tests (matching CI groups in rust.yml) -test-program-libs: test-program-libs-fast test-program-libs-slow - -test-program-libs-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-program-libs-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-batched-merkle-tree-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 - -# SDK libs tests (matching CI in sdk-tests.yml) -test-sdk-libs: - 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-js: test-stateless-js test-compressed-token - -test-stateless-js: - cd js/stateless.js && pnpm test - -test-compressed-token: - cd js/compressed-token && pnpm test - -test-compressed-token-unit-v2: - cd js/compressed-token && pnpm test:unit:all:v2 - -test-cli: - cd cli && pnpm test - -build-sdk-anchor-test: - cd sdk-tests/sdk-anchor-test && pnpm build +test: program-tests::test sdk-tests::test js::test # === Lint & Format === -lint: lint-rust lint-js +lint: lint-rust js::lint lint-rust: cargo +nightly fmt --all -- --check cargo clippy --workspace --all-features -- -D warnings -lint-js: - cd js/stateless.js && pnpm lint - cd js/compressed-token && pnpm lint - format: cargo +nightly fmt --all - cd js/stateless.js && pnpm format - cd js/compressed-token && pnpm format + just js format # === Clean === clean: 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 6b410966d3..0000000000 --- a/program-tests/package.json +++ /dev/null @@ -1,9 +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" - } -} diff --git a/programs/justfile b/programs/justfile new file mode 100644 index 0000000000..2cad73bb6d --- /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 && cargo build-sbf --features cpi-without-program-ids diff --git a/programs/package.json b/programs/package.json deleted file mode 100644 index c8b874bb09..0000000000 --- a/programs/package.json +++ /dev/null @@ -1,20 +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" - } -} diff --git a/sdk-libs/justfile b/sdk-libs/justfile new file mode 100644 index 0000000000..3e529934c5 --- /dev/null +++ b/sdk-libs/justfile @@ -0,0 +1,15 @@ +# 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 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 From 33f9f31c086c364b487801d18813369731f6e93a Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 10:52:02 +0000 Subject: [PATCH 07/10] cleanup --- pnpm-lock.yaml | 12 ------------ prover/server/justfile | 4 +++- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60216c8975..158713b83f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -175,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': @@ -441,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': diff --git a/prover/server/justfile b/prover/server/justfile index 7412c9cbf7..f3d6a5526d 100644 --- a/prover/server/justfile +++ b/prover/server/justfile @@ -46,12 +46,14 @@ test-lightweight: 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 === @@ -59,6 +61,6 @@ 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 && ~/.elan/bin/lake exe cache get && ~/.elan/bin/lake build + cd formal-verification && lake exe cache get && lake build verify: extract-circuit lean-build From 96d054734fbebac0f36038d15fb661af8c313469 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 11:02:20 +0000 Subject: [PATCH 08/10] fix --- cli/justfile | 7 ++++++- scripts/lint.sh | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/cli/justfile b/cli/justfile index f555d87ad5..27cb2e2fa6 100644 --- a/cli/justfile +++ b/cli/justfile @@ -3,8 +3,13 @@ default: @just --list -build: +# 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/scripts/lint.sh b/scripts/lint.sh index 3c11863b40..a12aaf558e 100755 --- a/scripts/lint.sh +++ b/scripts/lint.sh @@ -3,8 +3,8 @@ set -e # JS linting -cd js/stateless.js && pnpm format:check && pnpm lint && cd ../.. -cd js/compressed-token && pnpm format:check && pnpm lint && cd ../.. +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 From a93bfa3008f76e0aec9b7137d05b47b12c0797b9 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 11:27:19 +0000 Subject: [PATCH 09/10] cleanup --- programs/justfile | 2 +- sdk-libs/justfile | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/justfile b/programs/justfile index 2cad73bb6d..fb91d072bd 100644 --- a/programs/justfile +++ b/programs/justfile @@ -10,4 +10,4 @@ build: cd compressed-token/program && cargo build-sbf build-compressed-token-small: - cd compressed-token && cargo build-sbf --features cpi-without-program-ids + cd compressed-token/program && cargo build-sbf --features cpi-without-program-ids diff --git a/sdk-libs/justfile b/sdk-libs/justfile index 3e529934c5..81bfe7d042 100644 --- a/sdk-libs/justfile +++ b/sdk-libs/justfile @@ -13,3 +13,5 @@ test: 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 From 075f33a9ed2376302a3be7db41f111e8f5f47717 Mon Sep 17 00:00:00 2001 From: Sergey Timoshin Date: Thu, 22 Jan 2026 17:54:01 +0000 Subject: [PATCH 10/10] cleanup --- CLAUDE.md | 12 ++++++++---- forester/justfile | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e27f96fdec..3bb51a2410 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -137,10 +137,14 @@ Version-specific tests (V1 and V2) for JS/TS packages. ```bash # Build and test with just -just build-cli -just test-stateless-js -just test-compressed-token -just test-cli +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/forester/justfile b/forester/justfile index 53018bd02c..430267c08f 100644 --- a/forester/justfile +++ b/forester/justfile @@ -5,6 +5,7 @@ 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