diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4c2347100..fc6e19a8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -321,8 +321,6 @@ jobs: cache: pnpm - name: Install frozen dependencies run: pnpm install --frozen-lockfile --ignore-scripts - - name: Rebuild the audited workspace build tool - run: pnpm rebuild esbuild - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: build-outputs @@ -431,6 +429,7 @@ jobs: - name: Verify affected exact-tarball browser consumers env: BROWSER_PACKAGES: ${{ needs.prepare.outputs.browser-packages }} + BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition PREBUILT_PACKAGE_OUTPUTS: '1' run: | packages=() @@ -455,6 +454,14 @@ jobs: else echo "No affected browser packages in this shard." fi + - name: Retain exact browser composition evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: browser-composition-${{ matrix.shard }} + path: .browser-composition/ + if-no-files-found: ignore + retention-days: 30 wallet-browser-platform: name: Platform / wallet browser @@ -477,7 +484,17 @@ jobs: path: .ci-artifacts - run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz - name: Verify packed browser consumer with Vite and esbuild + env: + BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition run: pnpm --filter @bsv/wallet-toolbox-client run test:browser + - name: Retain wallet browser composition evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: browser-composition-wallet + path: .browser-composition/ + if-no-files-found: ignore + retention-days: 30 wallet-mobile-platform: name: Platform / wallet mobile @@ -524,6 +541,7 @@ jobs: - run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz - name: Generate SDK coverage and verify the packed browser consumer env: + BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition PREBUILT_PACKAGE_OUTPUTS: '1' run: | pnpm --filter @bsv/sdk exec node \ @@ -535,6 +553,14 @@ jobs: node scripts/normalize-lcov-paths.mjs packages/sdk/coverage/lcov.info packages/sdk mkdir -p .coverage-output cp packages/sdk/coverage/lcov.info .coverage-output/sdk.lcov.info + - name: Retain SDK browser composition evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: browser-composition-sdk + path: .browser-composition/ + if-no-files-found: ignore + retention-days: 30 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: coverage-sdk @@ -691,6 +717,7 @@ jobs: - run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz - name: Generate VeriFast coverage and run packaged-consumer checks env: + BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition PREBUILT_PACKAGE_OUTPUTS: '1' run: | pnpm --filter @bsv/verifast exec node \ @@ -698,9 +725,19 @@ jobs: --script test:coverage pnpm --filter @bsv/verifast exec node scripts/test-node-consumers.mjs pnpm --filter @bsv/verifast exec node scripts/test-browser-bundler.mjs + pnpm --filter @bsv/verifast exec node \ + "$GITHUB_WORKSPACE/scripts/check-browser-package.mjs" . node scripts/normalize-lcov-paths.mjs packages/verifast/coverage/lcov.info packages/verifast mkdir -p .coverage-output cp packages/verifast/coverage/lcov.info .coverage-output/verifast.lcov.info + - name: Retain VeriFast browser composition evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: browser-composition-verifast + path: .browser-composition/ + if-no-files-found: ignore + retention-days: 30 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 with: name: coverage-verifast @@ -727,6 +764,11 @@ jobs: node-version: 24 cache: pnpm - run: pnpm install --frozen-lockfile --ignore-scripts + - name: Restore the immutable MongoDB test binary + uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5 + with: + path: ${{ runner.temp }}/mongodb-binaries + key: mongodb-memory-server-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }} - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: build-outputs @@ -828,6 +870,14 @@ jobs: fi echo "files=$FILES" >> "$GITHUB_OUTPUT" + - name: Enforce the repository-owned 90% patch-coverage gate + if: github.event_name == 'pull_request' + run: >- + node scripts/patch-coverage.mjs + --base "${{ github.event.pull_request.base.sha }}" + --lcov-directory .coverage-artifacts + --target 90 + - name: Upload coverage to Codecov if: steps.cov.outputs.has-coverage == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 diff --git a/.github/workflows/mutation-tests.yml b/.github/workflows/mutation-tests.yml index 31f7fc2cc..390e8aa77 100644 --- a/.github/workflows/mutation-tests.yml +++ b/.github/workflows/mutation-tests.yml @@ -97,9 +97,6 @@ jobs: - name: Install frozen dependencies run: pnpm install --frozen-lockfile --ignore-scripts - - name: Rebuild the audited workspace build tool - run: pnpm rebuild esbuild - - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 with: name: mutation-build-outputs diff --git a/conformance/runner/package.json b/conformance/runner/package.json index 7f7aef3ad..cab730c36 100644 --- a/conformance/runner/package.json +++ b/conformance/runner/package.json @@ -16,9 +16,9 @@ "ajv": "^8.20.0" }, "devDependencies": { - "oxlint": "^1.75.0", - "prettier": "^3.9.6", "@typescript/native": "npm:typescript@7.0.2", + "oxlint": "^1.76.0", + "prettier": "^3.9.6", "typescript": "npm:@typescript/typescript6@6.0.2" }, "license": "SEE LICENSE IN LICENSE.txt" diff --git a/conformance/runner/ts/package.json b/conformance/runner/ts/package.json index 272b780e8..6ec3f9e1c 100644 --- a/conformance/runner/ts/package.json +++ b/conformance/runner/ts/package.json @@ -11,12 +11,12 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", - "@types/node": "^24.13.3", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "prettier": "^3.9.6", "ts-jest": "^29.4.12", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "license": "SEE LICENSE IN LICENSE.txt" diff --git a/docs-site/package.json b/docs-site/package.json index 19433861a..8f7817fb2 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -24,12 +24,13 @@ "@shikijs/rehype": "^4.3.1", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", + "@typescript/native": "npm:typescript@7.0.2", "@vitejs/plugin-react": "^6.0.4", "ajv": "^8.20.0", "ajv-formats": "^3.0.1", "gray-matter": "^4.0.3", "mermaid": "^11.16.0", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "pagefind": "^1.5.2", "prettier": "^3.9.6", "rehype-autolink-headings": "^7.1.0", @@ -38,7 +39,6 @@ "remark-gfm": "^4.0.1", "remark-mdx-frontmatter": "^5.2.0", "rollup": "^4.62.3", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", "vite": "^8.1.5" }, diff --git a/docs/infrastructure/service-edge-security.md b/docs/infrastructure/service-edge-security.md index ed3dbdae8..aa0d6b2a8 100644 --- a/docs/infrastructure/service-edge-security.md +++ b/docs/infrastructure/service-edge-security.md @@ -3,8 +3,8 @@ id: infra-service-edge-security title: "Public Service Edge Security" kind: reference version: "1.0.0" -last_updated: "2026-07-25" -last_verified: "2026-07-25" +last_updated: "2026-07-30" +last_verified: "2026-07-30" review_cadence_days: 30 status: stable tags: [infrastructure, security, cors, rate-limits, authentication, operations] @@ -69,6 +69,14 @@ JavaScript attempt the same signed or token-authenticated protocol call that a mobile or server client can attempt. No service in this inventory uses ambient browser cookies as its authorization boundary. +`governance/service-edge-browser-policy.json` records this contract and every +WAB, UHRP, Message Box, Chaintracks, OverlayExpress, and Wallet Storage +integration. Repository health verifies the public wildcard/no-credentials +default, opaque-origin support, opt-in exact allowlists and credentials, +disabled mode, service/global precedence, and the independence of CSP and +CORS. The canonical tests are synchronized across the reusable Overlay and +Storage implementations. + ### CSP and other response headers API responses use `nosniff`, deny framing, no-referrer, a restrictive diff --git a/docs/packages/helpers/amountinator.md b/docs/packages/helpers/amountinator.md index b96b435a1..18e8a6380 100644 --- a/docs/packages/helpers/amountinator.md +++ b/docs/packages/helpers/amountinator.md @@ -3,10 +3,10 @@ id: pkg-amountinator title: '@bsv/amountinator' kind: package domain: helpers -version: '2.1.3' +version: '2.1.4' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/amountinator' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator' diff --git a/docs/packages/helpers/create-bsv-app.md b/docs/packages/helpers/create-bsv-app.md index 700963edf..ebfbb324c 100644 --- a/docs/packages/helpers/create-bsv-app.md +++ b/docs/packages/helpers/create-bsv-app.md @@ -3,9 +3,9 @@ id: pkg-create-bsv-app title: 'create-bsv-app' kind: package domain: helpers -version: '1.0.3' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.0.4' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/create-bsv-app' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app' diff --git a/docs/packages/helpers/did-client.md b/docs/packages/helpers/did-client.md index f42f20464..d5e0e535c 100644 --- a/docs/packages/helpers/did-client.md +++ b/docs/packages/helpers/did-client.md @@ -3,10 +3,10 @@ id: pkg-did-client title: '@bsv/did-client' kind: package domain: helpers -version: '1.2.2' +version: '1.2.3' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/did-client' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client' diff --git a/docs/packages/helpers/did.md b/docs/packages/helpers/did.md index 325e21687..d1efb3de1 100644 --- a/docs/packages/helpers/did.md +++ b/docs/packages/helpers/did.md @@ -3,10 +3,10 @@ id: pkg-did title: '@bsv/did' kind: package domain: helpers -version: '0.2.3' +version: '0.2.4' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/did' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did' diff --git a/docs/packages/helpers/fund-wallet.md b/docs/packages/helpers/fund-wallet.md index 3eb4e11be..ebd986830 100644 --- a/docs/packages/helpers/fund-wallet.md +++ b/docs/packages/helpers/fund-wallet.md @@ -3,10 +3,10 @@ id: pkg-fund-wallet title: '@bsv/fund-wallet' kind: package domain: helpers -version: '1.4.2' +version: '1.4.3' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/fund-wallet' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet' diff --git a/docs/packages/helpers/simple.md b/docs/packages/helpers/simple.md index dc65c9384..aa7aa7d2e 100644 --- a/docs/packages/helpers/simple.md +++ b/docs/packages/helpers/simple.md @@ -3,10 +3,10 @@ id: pkg-simple title: '@bsv/simple' kind: package domain: helpers -version: '0.4.7' +version: '0.4.8' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/simple' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple' diff --git a/docs/packages/helpers/templates.md b/docs/packages/helpers/templates.md index fb5f02efb..b362fdc28 100644 --- a/docs/packages/helpers/templates.md +++ b/docs/packages/helpers/templates.md @@ -3,10 +3,10 @@ id: pkg-templates title: '@bsv/templates' kind: package domain: helpers -version: '1.9.4' +version: '1.9.5' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/templates' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates' diff --git a/docs/packages/helpers/wallet-helper.md b/docs/packages/helpers/wallet-helper.md index 99b934b71..c710d5948 100644 --- a/docs/packages/helpers/wallet-helper.md +++ b/docs/packages/helpers/wallet-helper.md @@ -3,10 +3,10 @@ id: pkg-wallet-helper title: '@bsv/wallet-helper' kind: package domain: helpers -version: '0.1.5' +version: '0.1.6' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/wallet-helper' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper' diff --git a/docs/packages/messaging/authsocket-client.md b/docs/packages/messaging/authsocket-client.md index 43e860272..36b43eebb 100644 --- a/docs/packages/messaging/authsocket-client.md +++ b/docs/packages/messaging/authsocket-client.md @@ -3,10 +3,10 @@ id: pkg-authsocket-client title: '@bsv/authsocket-client' kind: package domain: messaging -version: '2.1.2' +version: '2.1.3' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/authsocket-client' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client' diff --git a/docs/packages/messaging/authsocket.md b/docs/packages/messaging/authsocket.md index d4f8a6773..8d66ad6ee 100644 --- a/docs/packages/messaging/authsocket.md +++ b/docs/packages/messaging/authsocket.md @@ -3,10 +3,10 @@ id: pkg-authsocket title: '@bsv/authsocket' kind: package domain: messaging -version: '2.1.3' +version: '2.1.4' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/authsocket' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket' diff --git a/docs/packages/messaging/message-box-client.md b/docs/packages/messaging/message-box-client.md index f4062cbde..0a03d5308 100644 --- a/docs/packages/messaging/message-box-client.md +++ b/docs/packages/messaging/message-box-client.md @@ -3,10 +3,10 @@ id: pkg-message-box-client title: '@bsv/message-box-client' kind: package domain: messaging -version: '2.2.5' +version: '2.2.6' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/message-box-client' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client' diff --git a/docs/packages/messaging/paymail.md b/docs/packages/messaging/paymail.md index c9f477589..8476f667c 100644 --- a/docs/packages/messaging/paymail.md +++ b/docs/packages/messaging/paymail.md @@ -3,10 +3,10 @@ id: pkg-paymail title: '@bsv/paymail' kind: package domain: messaging -version: '2.4.4' +version: '2.4.5' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/paymail' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail' diff --git a/docs/packages/middleware/402-pay.md b/docs/packages/middleware/402-pay.md index adda10704..d7d7b6e59 100644 --- a/docs/packages/middleware/402-pay.md +++ b/docs/packages/middleware/402-pay.md @@ -3,10 +3,10 @@ id: pkg-402-pay title: '@bsv/402-pay' kind: package domain: middleware -version: '0.2.3' +version: '0.2.4' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/402-pay' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay' diff --git a/docs/packages/middleware/auth-express-middleware.md b/docs/packages/middleware/auth-express-middleware.md index 03023a360..aa806f445 100644 --- a/docs/packages/middleware/auth-express-middleware.md +++ b/docs/packages/middleware/auth-express-middleware.md @@ -3,10 +3,10 @@ id: pkg-auth-express-middleware title: '@bsv/auth-express-middleware' kind: package domain: middleware -version: '2.1.4' +version: '2.1.5' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/auth-express-middleware' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware' diff --git a/docs/packages/middleware/auth.md b/docs/packages/middleware/auth.md index 423fead6b..a8dbe293e 100644 --- a/docs/packages/middleware/auth.md +++ b/docs/packages/middleware/auth.md @@ -3,9 +3,9 @@ id: pkg-auth title: '@bsv/auth' kind: package domain: middleware -version: '0.1.2' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '0.1.3' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/auth' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth' diff --git a/docs/packages/middleware/payment-express-middleware.md b/docs/packages/middleware/payment-express-middleware.md index 23e89f830..040a5609b 100644 --- a/docs/packages/middleware/payment-express-middleware.md +++ b/docs/packages/middleware/payment-express-middleware.md @@ -3,10 +3,10 @@ id: pkg-payment-express-middleware title: '@bsv/payment-express-middleware' kind: package domain: middleware -version: '2.1.3' +version: '2.1.4' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/payment-express-middleware' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware' diff --git a/docs/packages/network/teranode-listener.md b/docs/packages/network/teranode-listener.md index 4bbc3c81b..caf7b85ec 100644 --- a/docs/packages/network/teranode-listener.md +++ b/docs/packages/network/teranode-listener.md @@ -4,9 +4,9 @@ title: '@bsv/teranode-listener' kind: package domain: network npm: '@bsv/teranode-listener' -version: '1.1.3' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.1.4' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p' status: stable diff --git a/docs/packages/overlays/gasp.md b/docs/packages/overlays/gasp.md index 7f4abb600..4429fcee3 100644 --- a/docs/packages/overlays/gasp.md +++ b/docs/packages/overlays/gasp.md @@ -3,10 +3,10 @@ id: pkg-gasp title: '@bsv/gasp' kind: package domain: overlays -version: '1.3.4' +version: '1.3.5' source_repo: 'bsv-blockchain/ts-stack' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/gasp' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core' diff --git a/docs/packages/overlays/overlay-discovery-services.md b/docs/packages/overlays/overlay-discovery-services.md index adf81ea77..082baa415 100644 --- a/docs/packages/overlays/overlay-discovery-services.md +++ b/docs/packages/overlays/overlay-discovery-services.md @@ -4,9 +4,9 @@ title: '@bsv/overlay-discovery-services' kind: package domain: overlays npm: '@bsv/overlay-discovery-services' -version: '2.1.5' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.1.6' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services' status: stable diff --git a/docs/packages/overlays/overlay-express.md b/docs/packages/overlays/overlay-express.md index 002e0ed69..6cb4c6b8b 100644 --- a/docs/packages/overlays/overlay-express.md +++ b/docs/packages/overlays/overlay-express.md @@ -4,9 +4,9 @@ title: '@bsv/overlay-express' kind: package domain: overlays npm: '@bsv/overlay-express' -version: '2.4.8' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.4.9' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express' status: stable diff --git a/docs/packages/overlays/overlay-topics.md b/docs/packages/overlays/overlay-topics.md index f4543400a..a15d98e1b 100644 --- a/docs/packages/overlays/overlay-topics.md +++ b/docs/packages/overlays/overlay-topics.md @@ -4,9 +4,9 @@ title: '@bsv/overlay-topics' kind: package domain: overlays npm: '@bsv/overlay-topics' -version: '1.6.7' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.6.8' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics' status: stable diff --git a/docs/packages/overlays/overlay.md b/docs/packages/overlays/overlay.md index f88ff5947..2cc6f01e7 100644 --- a/docs/packages/overlays/overlay.md +++ b/docs/packages/overlays/overlay.md @@ -4,9 +4,9 @@ title: '@bsv/overlay' kind: package domain: overlays npm: '@bsv/overlay' -version: '2.2.6' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.2.7' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay' status: stable diff --git a/docs/packages/sdk/bsv-sdk.md b/docs/packages/sdk/bsv-sdk.md index bd65582a3..bdf41b06b 100644 --- a/docs/packages/sdk/bsv-sdk.md +++ b/docs/packages/sdk/bsv-sdk.md @@ -3,10 +3,10 @@ id: bsv-sdk title: '@bsv/sdk' kind: package domain: sdk -version: '2.2.13' +version: '2.2.14' npm: '@bsv/sdk' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: ['sdk', 'crypto', 'transactions'] diff --git a/docs/packages/sdk/verifast.md b/docs/packages/sdk/verifast.md index 32928102e..08ab890c2 100644 --- a/docs/packages/sdk/verifast.md +++ b/docs/packages/sdk/verifast.md @@ -3,9 +3,9 @@ id: pkg-verifast title: '@bsv/verifast' kind: package domain: sdk -version: '0.3.3' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '0.3.4' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/verifast' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast' diff --git a/docs/packages/wallet/btms-permission-module.md b/docs/packages/wallet/btms-permission-module.md index afa8b80d0..b729ec657 100644 --- a/docs/packages/wallet/btms-permission-module.md +++ b/docs/packages/wallet/btms-permission-module.md @@ -4,9 +4,9 @@ title: '@bsv/btms-permission-module' kind: package domain: wallet npm: '@bsv/btms-permission-module' -version: '1.1.2' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.1.3' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: ['tokens', 'permissions'] diff --git a/docs/packages/wallet/btms.md b/docs/packages/wallet/btms.md index b4ad81186..ea6816e56 100644 --- a/docs/packages/wallet/btms.md +++ b/docs/packages/wallet/btms.md @@ -4,9 +4,9 @@ title: '@bsv/btms' kind: package domain: wallet npm: '@bsv/btms' -version: '1.1.3' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.1.4' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: ['tokens', 'protocol'] diff --git a/docs/packages/wallet/wallet-relay.md b/docs/packages/wallet/wallet-relay.md index 1746bbc5c..592c94848 100644 --- a/docs/packages/wallet/wallet-relay.md +++ b/docs/packages/wallet/wallet-relay.md @@ -4,9 +4,9 @@ title: '@bsv/wallet-relay' kind: package domain: wallet npm: '@bsv/wallet-relay' -version: '0.3.2' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '0.3.3' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: ['wallet', 'relay'] diff --git a/docs/packages/wallet/wallet-toolbox-client.md b/docs/packages/wallet/wallet-toolbox-client.md index f7fbdf076..9c4143d92 100644 --- a/docs/packages/wallet/wallet-toolbox-client.md +++ b/docs/packages/wallet/wallet-toolbox-client.md @@ -3,9 +3,9 @@ id: pkg-wallet-toolbox-client title: '@bsv/wallet-toolbox-client' kind: package domain: wallet -version: '2.4.18' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.4.19' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/wallet-toolbox-client' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client' diff --git a/docs/packages/wallet/wallet-toolbox-mobile.md b/docs/packages/wallet/wallet-toolbox-mobile.md index c0cc92c55..31c031c82 100644 --- a/docs/packages/wallet/wallet-toolbox-mobile.md +++ b/docs/packages/wallet/wallet-toolbox-mobile.md @@ -3,9 +3,9 @@ id: pkg-wallet-toolbox-mobile title: '@bsv/wallet-toolbox-mobile' kind: package domain: wallet -version: '2.4.18' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.4.19' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 npm: 'https://www.npmjs.com/package/@bsv/wallet-toolbox-mobile' repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile' diff --git a/docs/packages/wallet/wallet-toolbox.md b/docs/packages/wallet/wallet-toolbox.md index ed23a3328..ac8e2694f 100644 --- a/docs/packages/wallet/wallet-toolbox.md +++ b/docs/packages/wallet/wallet-toolbox.md @@ -4,9 +4,9 @@ title: '@bsv/wallet-toolbox' kind: package domain: wallet npm: '@bsv/wallet-toolbox' -version: '2.4.18' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '2.4.19' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: ['wallet', 'brc100'] diff --git a/docs/reference/ci-performance.md b/docs/reference/ci-performance.md index 0856b9b60..e83e8558a 100644 --- a/docs/reference/ci-performance.md +++ b/docs/reference/ci-performance.md @@ -23,11 +23,13 @@ prepare-job duration; artifact upload/download duration; and variance. This separates targeted feedback from the complete merge gate so a changing PR mix cannot make the trend appear faster or slower by accident. -GitHub's Actions REST API does not expose hosted-runner CPU utilization, memory -utilization, or action-internal cache-hit results. Those fields remain an -explicit instrumentation gap in the baseline rather than being estimated from -wall-clock time. Add deliberate in-run instrumentation before claiming those -metrics. +The main CI workflow builds the workspace once and shares immutable outputs +with isolated test lanes, skips empty affected-package lanes, installs through +the setup-node pnpm cache, caches the immutable MongoDB test binary, and +rebuilds native/build tools only in jobs that execute them. Browser lanes +retain exact package-composition reports without rebuilding the workspace. +These optimizations reduce repeated CPU, network, and setup work without +removing coverage, mutation, platform, security, or package-consumer checks. To refresh the evidence without changing the baseline: diff --git a/docs/reference/dependency-policy.md b/docs/reference/dependency-policy.md index 4686becd5..9c3d7aa1f 100644 --- a/docs/reference/dependency-policy.md +++ b/docs/reference/dependency-policy.md @@ -3,8 +3,8 @@ id: dependency-release-policy title: 'Dependency and Release Policy' kind: reference version: '1.3.0' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: [reference, dependencies, security, releases] @@ -139,6 +139,15 @@ frozen graph stayed clean without it. The machine-readable registry now maps every remaining selector and exact value to its exception. CI rejects a new, changed, stale, expired, unowned, or upstream-unlinked override. +Wave 38 repeated the removal rehearsal by regenerating every standalone lock +without its `gaxios`, `uuid`, and `brace-expansion` substitutions and checking +the natural dependency graph. It also rechecked the root Jest/minimatch, +typed-rest-client/qs, and isolated Redocly closures. All 19 remaining +selectors still prevent a reproduced vulnerable resolution or preserve the +governed reproducible generator, so none can be removed safely yet. The +method, result, count, and next rehearsal are enforced in +`governance/dependency-release-policy.json`. + The independently locked OpenAPI generator also carries a narrow Redocly compatibility override. It is isolated from runtime packages, registered with the same owner/review/removal fields, and must regenerate identical checked-in @@ -159,7 +168,9 @@ scheduled verification. On the first day of every month and after successful npm or infrastructure release workflows, the read-only verification workflow: - generates a direct-versus-latest inventory and separates compatible updates - from major migration projects; + from major migration projects, versions younger than the repository's + 24-hour release-age floor, supported peer ranges, coordinated runtime/tool + migrations, the TypeScript compiler-API bridge, and forward vendor builds; - reconciles all 30 source manifests, recorded published baselines, and npm `latest`, explicitly reporting source candidates held by an operator's publication decision; @@ -196,7 +207,9 @@ consumer and development graphs first. ## Update and release flow -1. Refresh direct dependencies within their declared semver ranges. +1. Refresh mature direct dependencies within their declared semver ranges. + Never bypass the 24-hour release-age floor merely to make the inventory + report `current`. 2. Remove obsolete or unused packages before considering overrides. 3. Run the frozen install, version checks, audit, lint, build, tests, conformance, and documentation build. diff --git a/docs/reference/package-api-migrations.md b/docs/reference/package-api-migrations.md index 229b30e42..9bc09d2a2 100644 --- a/docs/reference/package-api-migrations.md +++ b/docs/reference/package-api-migrations.md @@ -3,8 +3,8 @@ id: package-api-migrations title: 'Package API, Declarations, and Migration Ledger' kind: reference version: '1.0.0' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: [reference, packages, api, declarations, migrations, release-notes] @@ -25,36 +25,36 @@ and clean-consumer tests remain the executable type authority. | Package | npm baseline | Source | Candidate | API | Migration | | --------------------------------- | ------------ | -------- | --------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `@bsv/402-pay` | `0.2.1` | `0.2.3` | patch | [API and usage](../packages/middleware/402-pay.md) | No consumer migration is required; client and server exports, payment protocol behavior, and runtime defaults are unchanged. | -| `@bsv/amountinator` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/helpers/amountinator.md) | No consumer migration is required; this is a backward-compatible patch candidate. | -| `@bsv/auth` | `0.1.1` | `0.1.2` | patch | [API and usage](../packages/middleware/auth.md) | No consumer migration is required; authentication APIs, wire behavior, and runtime defaults are unchanged. | -| `@bsv/auth-express-middleware` | `2.1.2` | `2.1.4` | patch | [API and usage](../packages/middleware/auth-express-middleware.md) | No consumer migration is required; existing public CORS defaults and middleware APIs are retained. | -| `@bsv/authsocket` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/messaging/authsocket.md) | No existing behavior changes automatically; service owners can call await server.close() during graceful shutdown. | -| `@bsv/authsocket-client` | `2.1.1` | `2.1.2` | patch | [API and usage](../packages/messaging/authsocket-client.md) | No consumer migration is required; client APIs, authenticated socket behavior, and supported imports are unchanged. | -| `@bsv/btms` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/wallet/btms.md) | No consumer migration is required; token and lookup wire contracts are unchanged. | -| `@bsv/btms-permission-module` | `1.1.1` | `1.1.2` | patch | [API and usage](../packages/wallet/btms-permission-module.md) | No consumer migration is required; permission-module APIs and token semantics are unchanged. | -| `@bsv/did` | `0.2.1` | `0.2.3` | patch | [API and usage](../packages/helpers/did.md) | No consumer migration is required; DID APIs, encodings, credential behavior, and supported import forms are unchanged. | -| `@bsv/did-client` | `1.2.1` | `1.2.2` | patch | [API and usage](../packages/helpers/did-client.md) | No consumer migration is required; DID client APIs, encodings, and supported imports are unchanged. | -| `@bsv/fund-wallet` | `1.4.1` | `1.4.2` | patch | [API and usage](../packages/helpers/fund-wallet.md) | No consumer migration is required; wallet funding APIs and transaction behavior are unchanged. | -| `@bsv/gasp` | `1.3.1` | `1.3.4` | patch | [API and usage](../packages/overlays/gasp.md) | No consumer migration is required; existing constructor calls, imports, synchronization behavior, and wire semantics are unchanged. | -| `@bsv/message-box-client` | `2.2.2` | `2.2.5` | patch | [API and usage](../packages/messaging/message-box-client.md) | No consumer migration is required; Message Box protocol and client entry points are unchanged. | -| `@bsv/overlay` | `2.2.1` | `2.2.6` | patch | [API and usage](../packages/overlays/overlay.md) | No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged. | -| `@bsv/overlay-discovery-services` | `2.1.1` | `2.1.5` | patch | [API and usage](../packages/overlays/overlay-discovery-services.md) | No consumer migration is required; discovery records and public network behavior are unchanged. | -| `@bsv/overlay-express` | `2.4.2` | `2.4.8` | patch | [API and usage](../packages/overlays/overlay-express.md) | No consumer migration is required; wildcard credential-free public access remains the default and runtimes may opt into the new close method. | -| `@bsv/overlay-topics` | `1.6.1` | `1.6.7` | patch | [API and usage](../packages/overlays/overlay-topics.md) | No consumer migration is required; topic IDs, lookup contracts, and persisted formats are unchanged. | -| `@bsv/paymail` | `2.4.2` | `2.4.4` | patch | [API and usage](../packages/messaging/paymail.md) | No consumer migration is required; existing Paymail client APIs and protocol semantics are retained. | -| `@bsv/payment-express-middleware` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/middleware/payment-express-middleware.md) | No consumer migration is required; legacy x-bsv-payment JSON behavior remains supported. | -| `@bsv/sdk` | `2.2.0` | `2.2.13` | patch | [API and usage](../packages/sdk/bsv-sdk.md) | No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms. | -| `@bsv/simple` | `0.4.1` | `0.4.7` | patch | [API and usage](../packages/helpers/simple.md) | No consumer migration is required; the browser and server entry points remain compatible. | -| `@bsv/templates` | `1.9.1` | `1.9.4` | patch | [API and usage](../packages/helpers/templates.md) | No consumer migration is required; template APIs, supported imports, and generated script semantics are unchanged. | -| `@bsv/teranode-listener` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/network/teranode-listener.md) | No consumer migration is required; listener APIs, topics, and network configuration are unchanged. | -| `@bsv/verifast` | `0.3.0` | `0.3.3` | patch | [API and usage](../packages/sdk/verifast.md) | No consumer migration is required; exports, verification behavior, worker protocols, package paths, and runtime defaults are unchanged. | -| `@bsv/wallet-helper` | `0.1.1` | `0.1.5` | patch | [API and usage](../packages/helpers/wallet-helper.md) | No consumer migration is required; fluent builder APIs and transaction semantics are unchanged. | -| `@bsv/wallet-relay` | `0.2.2` | `0.3.2` | minor | [API and usage](../packages/wallet/wallet-relay.md) | QRPairingCode now renders a native button and accepts button wrapper attributes. Existing className, style, data, and ARIA props continue to work; update div-specific wrapper selectors or explicitly typed div event handlers. | -| `@bsv/wallet-toolbox` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox.md) | No consumer migration is required; persisted schemas, provider behavior, transaction construction, monitor behavior, and the 2.x wallet and storage interfaces remain compatible. | -| `@bsv/wallet-toolbox-client` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox-client.md) | No consumer migration is required; client entry points and remote storage contracts remain compatible. | -| `@bsv/wallet-toolbox-mobile` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox-mobile.md) | No consumer migration is required; React Native and mobile bridge contracts remain compatible. | -| `create-bsv-app` | `1.0.2` | `1.0.3` | patch | [API and usage](../packages/helpers/create-bsv-app.md) | No consumer migration is required; generated application structure and CLI behavior are unchanged. | +| `@bsv/402-pay` | `0.2.1` | `0.2.4` | patch | [API and usage](../packages/middleware/402-pay.md) | No consumer migration is required; client and server exports, payment protocol behavior, and runtime defaults are unchanged. | +| `@bsv/amountinator` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/helpers/amountinator.md) | No consumer migration is required; this is a backward-compatible patch candidate. | +| `@bsv/auth` | `0.1.1` | `0.1.3` | patch | [API and usage](../packages/middleware/auth.md) | No consumer migration is required; authentication APIs, wire behavior, and runtime defaults are unchanged. | +| `@bsv/auth-express-middleware` | `2.1.2` | `2.1.5` | patch | [API and usage](../packages/middleware/auth-express-middleware.md) | No consumer migration is required; existing public CORS defaults and middleware APIs are retained. | +| `@bsv/authsocket` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/messaging/authsocket.md) | No existing behavior changes automatically; service owners can call await server.close() during graceful shutdown. | +| `@bsv/authsocket-client` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/messaging/authsocket-client.md) | No consumer migration is required; client APIs, authenticated socket behavior, and supported imports are unchanged. | +| `@bsv/btms` | `1.1.1` | `1.1.4` | patch | [API and usage](../packages/wallet/btms.md) | No consumer migration is required; token and lookup wire contracts are unchanged. | +| `@bsv/btms-permission-module` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/wallet/btms-permission-module.md) | No consumer migration is required; permission-module APIs and token semantics are unchanged. | +| `@bsv/did` | `0.2.1` | `0.2.4` | patch | [API and usage](../packages/helpers/did.md) | No consumer migration is required; DID APIs, encodings, credential behavior, and supported import forms are unchanged. | +| `@bsv/did-client` | `1.2.1` | `1.2.3` | patch | [API and usage](../packages/helpers/did-client.md) | No consumer migration is required; DID client APIs, encodings, and supported imports are unchanged. | +| `@bsv/fund-wallet` | `1.4.1` | `1.4.3` | patch | [API and usage](../packages/helpers/fund-wallet.md) | No consumer migration is required; wallet funding APIs and transaction behavior are unchanged. | +| `@bsv/gasp` | `1.3.1` | `1.3.5` | patch | [API and usage](../packages/overlays/gasp.md) | No consumer migration is required; existing constructor calls, imports, synchronization behavior, and wire semantics are unchanged. | +| `@bsv/message-box-client` | `2.2.2` | `2.2.6` | patch | [API and usage](../packages/messaging/message-box-client.md) | No consumer migration is required; Message Box protocol and client entry points are unchanged. | +| `@bsv/overlay` | `2.2.1` | `2.2.7` | patch | [API and usage](../packages/overlays/overlay.md) | No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged. | +| `@bsv/overlay-discovery-services` | `2.1.1` | `2.1.6` | patch | [API and usage](../packages/overlays/overlay-discovery-services.md) | No consumer migration is required; discovery records and public network behavior are unchanged. | +| `@bsv/overlay-express` | `2.4.2` | `2.4.9` | patch | [API and usage](../packages/overlays/overlay-express.md) | No consumer migration is required; wildcard credential-free public access remains the default and runtimes may opt into the new close method. | +| `@bsv/overlay-topics` | `1.6.1` | `1.6.8` | patch | [API and usage](../packages/overlays/overlay-topics.md) | No consumer migration is required; topic IDs, lookup contracts, and persisted formats are unchanged. | +| `@bsv/paymail` | `2.4.2` | `2.4.5` | patch | [API and usage](../packages/messaging/paymail.md) | No consumer migration is required; existing Paymail client APIs and protocol semantics are retained. | +| `@bsv/payment-express-middleware` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/middleware/payment-express-middleware.md) | No consumer migration is required; legacy x-bsv-payment JSON behavior remains supported. | +| `@bsv/sdk` | `2.2.0` | `2.2.14` | patch | [API and usage](../packages/sdk/bsv-sdk.md) | No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms. | +| `@bsv/simple` | `0.4.1` | `0.4.8` | patch | [API and usage](../packages/helpers/simple.md) | No consumer migration is required; the browser and server entry points remain compatible. | +| `@bsv/templates` | `1.9.1` | `1.9.5` | patch | [API and usage](../packages/helpers/templates.md) | No consumer migration is required; template APIs, supported imports, and generated script semantics are unchanged. | +| `@bsv/teranode-listener` | `1.1.1` | `1.1.4` | patch | [API and usage](../packages/network/teranode-listener.md) | No consumer migration is required; listener APIs, topics, and network configuration are unchanged. | +| `@bsv/verifast` | `0.3.0` | `0.3.4` | patch | [API and usage](../packages/sdk/verifast.md) | No consumer migration is required; exports, verification behavior, worker protocols, package paths, and runtime defaults are unchanged. | +| `@bsv/wallet-helper` | `0.1.1` | `0.1.6` | patch | [API and usage](../packages/helpers/wallet-helper.md) | No consumer migration is required; fluent builder APIs and transaction semantics are unchanged. | +| `@bsv/wallet-relay` | `0.2.2` | `0.3.3` | minor | [API and usage](../packages/wallet/wallet-relay.md) | QRPairingCode now renders a native button and accepts button wrapper attributes. Existing className, style, data, and ARIA props continue to work; update div-specific wrapper selectors or explicitly typed div event handlers. | +| `@bsv/wallet-toolbox` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox.md) | No consumer migration is required; persisted schemas, provider behavior, transaction construction, monitor behavior, and the 2.x wallet and storage interfaces remain compatible. | +| `@bsv/wallet-toolbox-client` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox-client.md) | No consumer migration is required; client entry points and remote storage contracts remain compatible. | +| `@bsv/wallet-toolbox-mobile` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox-mobile.md) | No consumer migration is required; React Native and mobile bridge contracts remain compatible. | +| `create-bsv-app` | `1.0.2` | `1.0.4` | patch | [API and usage](../packages/helpers/create-bsv-app.md) | No consumer migration is required; generated application structure and CLI behavior are unchanged. | `none` means the source manifest matches the recorded npm baseline. Any other value is an unpublished candidate. Publication, tags, releases, registry @@ -225,12 +225,13 @@ CLI entry points: `{"fund-metanet":"./dist/index.mjs"}`. - Release note: Repairs the documented storage export and decomposes Engine submission validation, broadcast, storage, notification, and propagation orchestration while preserving execution order and behavior. - Migration: No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged. -| Public subpath | Runtime target(s) | Declaration target(s) | -| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` | -| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` | -| `./storage` | `./dist/esm/src/storage/Storage.js`
`./dist/cjs/src/storage/Storage.js` | `./dist/types/src/storage/Storage.d.ts`
`./dist/cjs/src/storage/Storage.d.ts` | -| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | +| Public subpath | Runtime target(s) | Declaration target(s) | +| ---------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` | +| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` | +| `./storage` | `./dist/esm/src/storage/Storage.js`
`./dist/cjs/src/storage/Storage.js` | `./dist/types/src/storage/Storage.d.ts`
`./dist/cjs/src/storage/Storage.d.ts` | +| `./storage/*.ts` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | +| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | ## @bsv/overlay-discovery-services @@ -306,57 +307,80 @@ CLI entry points: `{"fund-metanet":"./dist/index.mjs"}`. - Release note: Accumulates security and correctness hardening, transaction and action-batch performance work, strict package contracts, safer text and telemetry handling, and behavior-preserving maintainability remediation across cryptographic, transaction, remittance, lookup, script-interpreter, broadcaster, and wallet-wire paths. - Migration: No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms. -| Public subpath | Runtime target(s) | Declaration target(s) | -| ------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` | -| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` | -| `./primitives` | `./dist/esm/src/primitives/index.js`
`./dist/cjs/src/primitives/index.js` | `./dist/types/src/primitives/index.d.ts`
`./dist/cjs/src/primitives/index.d.ts` | -| `./primitives/*` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` | -| `./script` | `./dist/esm/src/script/index.js`
`./dist/cjs/src/script/index.js` | `./dist/types/src/script/index.d.ts`
`./dist/cjs/src/script/index.d.ts` | -| `./script/*` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` | -| `./script/templates` | `./dist/esm/src/script/templates/index.js`
`./dist/cjs/src/script/templates/index.js` | `./dist/types/src/script/templates/index.d.ts`
`./dist/cjs/src/script/templates/index.d.ts` | -| `./script/templates/*` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` | -| `./transaction` | `./dist/esm/src/transaction/index.js`
`./dist/cjs/src/transaction/index.js` | `./dist/types/src/transaction/index.d.ts`
`./dist/cjs/src/transaction/index.d.ts` | -| `./transaction/*` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` | -| `./transaction/broadcaster` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` | -| `./transaction/broadcaster/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | -| `./transaction/broadcasters` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` | -| `./transaction/broadcasters/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | -| `./transaction/chaintrackers` | `./dist/esm/src/transaction/chaintrackers/index.js`
`./dist/cjs/src/transaction/chaintrackers/index.js` | `./dist/types/src/transaction/chaintrackers/index.d.ts`
`./dist/cjs/src/transaction/chaintrackers/index.d.ts` | -| `./transaction/chaintrackers/*` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` | -| `./transaction/http` | `./dist/esm/src/transaction/http/index.js`
`./dist/cjs/src/transaction/http/index.js` | `./dist/types/src/transaction/http/index.d.ts`
`./dist/cjs/src/transaction/http/index.d.ts` | -| `./transaction/http/*` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` | -| `./transaction/fee-model` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` | -| `./transaction/fee-model/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | -| `./transaction/fee-models` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` | -| `./transaction/fee-models/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | -| `./messages` | `./dist/esm/src/messages/index.js`
`./dist/cjs/src/messages/index.js` | `./dist/types/src/messages/index.d.ts`
`./dist/cjs/src/messages/index.d.ts` | -| `./messages/*` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` | -| `./compat` | `./dist/esm/src/compat/index.js`
`./dist/cjs/src/compat/index.js` | `./dist/types/src/compat/index.d.ts`
`./dist/cjs/src/compat/index.d.ts` | -| `./compat/*` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` | -| `./totp` | `./dist/esm/src/totp/index.js`
`./dist/cjs/src/totp/index.js` | `./dist/types/src/totp/index.d.ts`
`./dist/cjs/src/totp/index.d.ts` | -| `./totp/*` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` | -| `./wallet` | `./dist/esm/src/wallet/index.js`
`./dist/cjs/src/wallet/index.js` | `./dist/types/src/wallet/index.d.ts`
`./dist/cjs/src/wallet/index.d.ts` | -| `./wallet/*` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` | -| `./wallet/substrates` | `./dist/esm/src/wallet/substrates/index.js`
`./dist/cjs/src/wallet/substrates/index.js` | `./dist/types/src/wallet/substrates/index.d.ts`
`./dist/cjs/src/wallet/substrates/index.d.ts` | -| `./wallet/substrates/*` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` | -| `./auth` | `./dist/esm/src/auth/index.js`
`./dist/cjs/src/auth/index.js` | `./dist/types/src/auth/index.d.ts`
`./dist/cjs/src/auth/index.d.ts` | -| `./auth/*` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` | -| `./auth/certificate` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` | -| `./auth/certificate/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | -| `./auth/certificates` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` | -| `./auth/certificates/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | -| `./overlay-tools` | `./dist/esm/src/overlay-tools/index.js`
`./dist/cjs/src/overlay-tools/index.js` | `./dist/types/src/overlay-tools/index.d.ts`
`./dist/cjs/src/overlay-tools/index.d.ts` | -| `./overlay-tools/*` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` | -| `./telemetry` | `./dist/esm/src/telemetry/index.js`
`./dist/cjs/src/telemetry/index.js` | `./dist/types/src/telemetry/index.d.ts`
`./dist/cjs/src/telemetry/index.d.ts` | -| `./telemetry/*` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` | -| `./storage` | `./dist/esm/src/storage/index.js`
`./dist/cjs/src/storage/index.js` | `./dist/types/src/storage/index.d.ts`
`./dist/cjs/src/storage/index.d.ts` | -| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | -| `./kvstore` | `./dist/esm/src/kvstore/index.js`
`./dist/cjs/src/kvstore/index.js` | `./dist/types/src/kvstore/index.d.ts`
`./dist/cjs/src/kvstore/index.d.ts` | -| `./kvstore/*` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` | -| `./remittance` | `./dist/esm/src/remittance/index.js`
`./dist/cjs/src/remittance/index.js` | `./dist/types/src/remittance/index.d.ts`
`./dist/cjs/src/remittance/index.d.ts` | -| `./remittance/*` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` | -| `./umd` | `./dist/umd/bundle.js` | `./dist/types/mod.d.ts` | +| Public subpath | Runtime target(s) | Declaration target(s) | +| ---------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` | +| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` | +| `./primitives` | `./dist/esm/src/primitives/index.js`
`./dist/cjs/src/primitives/index.js` | `./dist/types/src/primitives/index.d.ts`
`./dist/cjs/src/primitives/index.d.ts` | +| `./primitives/*.ts` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` | +| `./primitives/*` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` | +| `./script` | `./dist/esm/src/script/index.js`
`./dist/cjs/src/script/index.js` | `./dist/types/src/script/index.d.ts`
`./dist/cjs/src/script/index.d.ts` | +| `./script/*.ts` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` | +| `./script/*` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` | +| `./script/templates` | `./dist/esm/src/script/templates/index.js`
`./dist/cjs/src/script/templates/index.js` | `./dist/types/src/script/templates/index.d.ts`
`./dist/cjs/src/script/templates/index.d.ts` | +| `./script/templates/*.ts` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` | +| `./script/templates/*` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` | +| `./transaction` | `./dist/esm/src/transaction/index.js`
`./dist/cjs/src/transaction/index.js` | `./dist/types/src/transaction/index.d.ts`
`./dist/cjs/src/transaction/index.d.ts` | +| `./transaction/*.ts` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` | +| `./transaction/*` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` | +| `./transaction/broadcaster` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` | +| `./transaction/broadcaster/*.ts` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | +| `./transaction/broadcaster/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | +| `./transaction/broadcasters` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` | +| `./transaction/broadcasters/*.ts` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | +| `./transaction/broadcasters/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` | +| `./transaction/chaintrackers` | `./dist/esm/src/transaction/chaintrackers/index.js`
`./dist/cjs/src/transaction/chaintrackers/index.js` | `./dist/types/src/transaction/chaintrackers/index.d.ts`
`./dist/cjs/src/transaction/chaintrackers/index.d.ts` | +| `./transaction/chaintrackers/*.ts` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` | +| `./transaction/chaintrackers/*` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` | +| `./transaction/http` | `./dist/esm/src/transaction/http/index.js`
`./dist/cjs/src/transaction/http/index.js` | `./dist/types/src/transaction/http/index.d.ts`
`./dist/cjs/src/transaction/http/index.d.ts` | +| `./transaction/http/*.ts` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` | +| `./transaction/http/*` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` | +| `./transaction/fee-model` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` | +| `./transaction/fee-model/*.ts` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | +| `./transaction/fee-model/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | +| `./transaction/fee-models` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` | +| `./transaction/fee-models/*.ts` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | +| `./transaction/fee-models/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` | +| `./messages` | `./dist/esm/src/messages/index.js`
`./dist/cjs/src/messages/index.js` | `./dist/types/src/messages/index.d.ts`
`./dist/cjs/src/messages/index.d.ts` | +| `./messages/*.ts` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` | +| `./messages/*` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` | +| `./compat` | `./dist/esm/src/compat/index.js`
`./dist/cjs/src/compat/index.js` | `./dist/types/src/compat/index.d.ts`
`./dist/cjs/src/compat/index.d.ts` | +| `./compat/*.ts` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` | +| `./compat/*` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` | +| `./totp` | `./dist/esm/src/totp/index.js`
`./dist/cjs/src/totp/index.js` | `./dist/types/src/totp/index.d.ts`
`./dist/cjs/src/totp/index.d.ts` | +| `./totp/*.ts` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` | +| `./totp/*` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` | +| `./wallet` | `./dist/esm/src/wallet/index.js`
`./dist/cjs/src/wallet/index.js` | `./dist/types/src/wallet/index.d.ts`
`./dist/cjs/src/wallet/index.d.ts` | +| `./wallet/*.ts` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` | +| `./wallet/*` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` | +| `./wallet/substrates` | `./dist/esm/src/wallet/substrates/index.js`
`./dist/cjs/src/wallet/substrates/index.js` | `./dist/types/src/wallet/substrates/index.d.ts`
`./dist/cjs/src/wallet/substrates/index.d.ts` | +| `./wallet/substrates/*.ts` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` | +| `./wallet/substrates/*` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` | +| `./auth` | `./dist/esm/src/auth/index.js`
`./dist/cjs/src/auth/index.js` | `./dist/types/src/auth/index.d.ts`
`./dist/cjs/src/auth/index.d.ts` | +| `./auth/*.ts` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` | +| `./auth/*` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` | +| `./auth/certificate` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` | +| `./auth/certificate/*.ts` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | +| `./auth/certificate/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | +| `./auth/certificates` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` | +| `./auth/certificates/*.ts` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | +| `./auth/certificates/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` | +| `./overlay-tools` | `./dist/esm/src/overlay-tools/index.js`
`./dist/cjs/src/overlay-tools/index.js` | `./dist/types/src/overlay-tools/index.d.ts`
`./dist/cjs/src/overlay-tools/index.d.ts` | +| `./overlay-tools/*.ts` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` | +| `./overlay-tools/*` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` | +| `./telemetry` | `./dist/esm/src/telemetry/index.js`
`./dist/cjs/src/telemetry/index.js` | `./dist/types/src/telemetry/index.d.ts`
`./dist/cjs/src/telemetry/index.d.ts` | +| `./telemetry/*.ts` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` | +| `./telemetry/*` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` | +| `./storage` | `./dist/esm/src/storage/index.js`
`./dist/cjs/src/storage/index.js` | `./dist/types/src/storage/index.d.ts`
`./dist/cjs/src/storage/index.d.ts` | +| `./storage/*.ts` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | +| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` | +| `./kvstore` | `./dist/esm/src/kvstore/index.js`
`./dist/cjs/src/kvstore/index.js` | `./dist/types/src/kvstore/index.d.ts`
`./dist/cjs/src/kvstore/index.d.ts` | +| `./kvstore/*.ts` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` | +| `./kvstore/*` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` | +| `./remittance` | `./dist/esm/src/remittance/index.js`
`./dist/cjs/src/remittance/index.js` | `./dist/types/src/remittance/index.d.ts`
`./dist/cjs/src/remittance/index.d.ts` | +| `./remittance/*.ts` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` | +| `./remittance/*` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` | +| `./umd` | `./dist/umd/bundle.js` | `./dist/types/mod.d.ts` | ## @bsv/simple diff --git a/docs/reference/release-operations.md b/docs/reference/release-operations.md index ac39a65d5..dfcf877f8 100644 --- a/docs/reference/release-operations.md +++ b/docs/reference/release-operations.md @@ -2,9 +2,9 @@ id: release-operations title: 'Release and Operations Guide' kind: reference -version: '1.1.0' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +version: '1.1.1' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: [reference, releases, operations, rollback, npm, containers] @@ -77,6 +77,15 @@ mobile, CLI, WASM, clean-consumer, and `pack:check` lanes selected by CI. The full release workflow repeats artifact-critical checks; local success is not a substitute. +On pull requests, the repository-owned 90% patch-coverage gate is blocking and +uses the merged LCOV reports for changed production lines and branches. +External coverage reporting remains informational only when it cannot enforce +that contract. Exact package checks must prove all conditional/wildcard +exports, declarations, maps, side-effect metadata, peer/optional adapter +metadata, and clean ESM/CommonJS consumers. Browser candidates must also +produce the governed composition report without exceeding their committed +budgets. + Confirm before proceeding: - the target versions are absent from npm; diff --git a/docs/reference/repository-health.md b/docs/reference/repository-health.md index 7f534db74..073919d46 100644 --- a/docs/reference/repository-health.md +++ b/docs/reference/repository-health.md @@ -3,8 +3,8 @@ id: repository-health title: 'Repository Health Controls' kind: reference version: '1.3.3' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: [reference, governance, quality, security, releases] @@ -149,11 +149,15 @@ than its source tree. The shared checker: 1. creates the exact pnpm release tarball with lifecycle scripts disabled; 2. rejects tests, compiler caches, lockfiles, and uncompiled TypeScript in the payload; -3. runs strict `publint` metadata and entry-point validation; -4. runs the `@arethetypeswrong/core` analyzer across every strict Node and +3. proves that every conditional and wildcard export target is packed, + expands every concrete public subpath, validates every referenced source + map, and checks `sideEffects`, optional dependencies, and peer metadata; +4. runs strict `publint` metadata and entry-point validation; +5. runs the `@arethetypeswrong/core` analyzer across every strict Node and bundler resolution mode; and -5. installs the tarball into a clean temporary consumer and exercises every - declared runtime module format. The consumer installs exact tarballs for the +6. installs the tarball into a clean temporary consumer, resolves every + concrete public subpath in every supported module mode, and executes the + declared runtime contracts. The consumer installs exact tarballs for the package's transitive `workspace:` runtime dependency closure, so coordinated unpublished version bumps cannot pass by resolving older registry releases. @@ -170,6 +174,14 @@ before resolving or publishing a release plan. Adding a script therefore adds a blocking release contract; it must not be a placeholder or a source-only check. +Browser packages additionally use +`governance/browser-artifact-policy.json`. It binds every browser-bundler +consumer to its exact entry, byte budget, and reviewed optional-adapter +splitting disposition. CI retains normalized Vite/esbuild module and package +composition reports for 30 days. A budget increase is a versioned source +change requiring composition evidence and explicit review; it cannot be hidden +in routine dependency maintenance. + The workspace typecheck runs after the shared build so cross-package declarations resolve exactly as downstream consumers see them. It catches dual-package hazards where one consumer accidentally combines the ESM and diff --git a/docs/reference/stack-facts.md b/docs/reference/stack-facts.md index 7056fb7c6..9fca11101 100644 --- a/docs/reference/stack-facts.md +++ b/docs/reference/stack-facts.md @@ -3,8 +3,8 @@ id: stack-facts title: 'Generated Stack Facts' kind: reference version: '1.0.0' -last_updated: '2026-07-29' -last_verified: '2026-07-29' +last_updated: '2026-07-30' +last_verified: '2026-07-30' review_cadence_days: 30 status: stable tags: [reference, packages, versions, runtimes, conformance, generated] @@ -37,36 +37,36 @@ authorized release action. | Area | Package | Source version | Project profile | Consumer profiles | Runtime targets | Node engine | Source | | --- | --- | --- | --- | --- | --- | --- | --- | -| helpers | `@bsv/amountinator` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/amountinator](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator) | -| helpers | `@bsv/did` | `0.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/did](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did) | -| helpers | `@bsv/did-client` | `1.2.2` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/helpers/did-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client) | -| helpers | `@bsv/fund-wallet` | `1.4.2` | cli | cli | node | `>=22` | [packages/helpers/fund-wallet](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet) | -| helpers | `@bsv/simple` | `0.4.7` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/simple](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple) | -| helpers | `@bsv/templates` | `1.9.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/ts-templates](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates) | -| helpers | `@bsv/wallet-helper` | `0.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/bsv-wallet-helper](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper) | -| helpers | `create-bsv-app` | `1.0.3` | cli | cli | node | `>=22` | [packages/helpers/create-bsv-app](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app) | -| messaging | `@bsv/authsocket` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/messaging/authsocket](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket) | -| messaging | `@bsv/authsocket-client` | `2.1.2` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/authsocket-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client) | -| messaging | `@bsv/message-box-client` | `2.2.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/message-box-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client) | -| messaging | `@bsv/paymail` | `2.4.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/messaging/ts-paymail](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail) | -| middleware | `@bsv/402-pay` | `0.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/middleware/402-pay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay) | -| middleware | `@bsv/auth` | `0.1.2` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth) | -| middleware | `@bsv/auth-express-middleware` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware) | -| middleware | `@bsv/payment-express-middleware` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/payment-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware) | -| network | `@bsv/teranode-listener` | `1.1.3` | node-library | node-esm | node | `>=22` | [packages/network/ts-p2p](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p) | -| overlays | `@bsv/gasp` | `1.3.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/overlays/gasp-core](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core) | -| overlays | `@bsv/overlay` | `2.2.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay) | -| overlays | `@bsv/overlay-discovery-services` | `2.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-discovery-services](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services) | -| overlays | `@bsv/overlay-express` | `2.4.8` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-express](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express) | -| overlays | `@bsv/overlay-topics` | `1.6.7` | node-library | node-esm | node | `>=22` | [packages/overlays/topics](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics) | -| sdk | `@bsv/sdk` | `2.2.13` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/sdk](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk) | -| sdk | `@bsv/verifast` | `0.3.3` | wasm-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global, wasm-worker | browser, node, umd, wasm, worker | `>=22` | [packages/verifast](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast) | -| wallet | `@bsv/btms` | `1.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/wallet/btms](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms) | -| wallet | `@bsv/btms-permission-module` | `1.1.2` | node-library | node-esm | node | `>=22` | [packages/wallet/btms-permission-module](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms-permission-module) | -| wallet | `@bsv/wallet-relay` | `0.3.2` | cli-library | browser-bundler, browser-esm, cli, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/ts-wallet-relay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/ts-wallet-relay) | -| wallet | `@bsv/wallet-toolbox` | `2.4.18` | node-library | node-cjs | node | `>=22` | [packages/wallet/wallet-toolbox](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox) | -| wallet | `@bsv/wallet-toolbox-client` | `2.4.18` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/wallet-toolbox/client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client) | -| wallet | `@bsv/wallet-toolbox-mobile` | `2.4.18` | react-native-library | react-native-metro | react-native | `>=22` | [packages/wallet/wallet-toolbox/mobile](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile) | +| helpers | `@bsv/amountinator` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/amountinator](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator) | +| helpers | `@bsv/did` | `0.2.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/did](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did) | +| helpers | `@bsv/did-client` | `1.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/helpers/did-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client) | +| helpers | `@bsv/fund-wallet` | `1.4.3` | cli | cli | node | `>=22` | [packages/helpers/fund-wallet](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet) | +| helpers | `@bsv/simple` | `0.4.8` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/simple](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple) | +| helpers | `@bsv/templates` | `1.9.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/ts-templates](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates) | +| helpers | `@bsv/wallet-helper` | `0.1.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/bsv-wallet-helper](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper) | +| helpers | `create-bsv-app` | `1.0.4` | cli | cli | node | `>=22` | [packages/helpers/create-bsv-app](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app) | +| messaging | `@bsv/authsocket` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/messaging/authsocket](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket) | +| messaging | `@bsv/authsocket-client` | `2.1.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/authsocket-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client) | +| messaging | `@bsv/message-box-client` | `2.2.6` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/message-box-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client) | +| messaging | `@bsv/paymail` | `2.4.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/messaging/ts-paymail](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail) | +| middleware | `@bsv/402-pay` | `0.2.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/middleware/402-pay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay) | +| middleware | `@bsv/auth` | `0.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth) | +| middleware | `@bsv/auth-express-middleware` | `2.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware) | +| middleware | `@bsv/payment-express-middleware` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/payment-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware) | +| network | `@bsv/teranode-listener` | `1.1.4` | node-library | node-esm | node | `>=22` | [packages/network/ts-p2p](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p) | +| overlays | `@bsv/gasp` | `1.3.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/overlays/gasp-core](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core) | +| overlays | `@bsv/overlay` | `2.2.7` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay) | +| overlays | `@bsv/overlay-discovery-services` | `2.1.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-discovery-services](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services) | +| overlays | `@bsv/overlay-express` | `2.4.9` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-express](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express) | +| overlays | `@bsv/overlay-topics` | `1.6.8` | node-library | node-esm | node | `>=22` | [packages/overlays/topics](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics) | +| sdk | `@bsv/sdk` | `2.2.14` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/sdk](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk) | +| sdk | `@bsv/verifast` | `0.3.4` | wasm-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global, wasm-worker | browser, node, umd, wasm, worker | `>=22` | [packages/verifast](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast) | +| wallet | `@bsv/btms` | `1.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/wallet/btms](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms) | +| wallet | `@bsv/btms-permission-module` | `1.1.3` | node-library | node-esm | node | `>=22` | [packages/wallet/btms-permission-module](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms-permission-module) | +| wallet | `@bsv/wallet-relay` | `0.3.3` | cli-library | browser-bundler, browser-esm, cli, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/ts-wallet-relay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/ts-wallet-relay) | +| wallet | `@bsv/wallet-toolbox` | `2.4.19` | node-library | node-cjs | node | `>=22` | [packages/wallet/wallet-toolbox](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox) | +| wallet | `@bsv/wallet-toolbox-client` | `2.4.19` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/wallet-toolbox/client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client) | +| wallet | `@bsv/wallet-toolbox-mobile` | `2.4.19` | react-native-library | react-native-metro | react-native | `>=22` | [packages/wallet/wallet-toolbox/mobile](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile) | ## Standalone infrastructure manifests @@ -75,13 +75,13 @@ the separately released and verified image digest. | Service | Package | Manifest version | Node engine | Runtime targets | Release | Source | | --- | --- | --- | --- | --- | --- | --- | -| BSV Chaintracks Server | `chaintracks-server` | `1.0.13` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/chaintracks-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/chaintracks-server) | -| BSV Message Box Server | `@bsv/messagebox-server` | `1.1.18` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/message-box-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/message-box-server) | -| BSV Overlay Server | `@bsv/overlay-express-examples` | `2.1.21` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/overlay-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/overlay-server) | -| BSV UHRP Basic Server | `@bsv/uhrp-lite` | `0.1.14` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-basic](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-basic) | -| BSV UHRP Cloud Bucket Server | `@bsv/uhrp-storage-server` | `0.2.16` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-cloud-bucket](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-cloud-bucket) | -| Wallet Authentication Backend | `@bsv/wab-server` | `1.4.15` | `>=24 <25` | node, linux/amd64 | ghcr-and-aws-marketplace-keyless | [infra/wab](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wab) | -| BSV Wallet Infrastructure | `@bsv/wallet-infra` | `2.0.17` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/wallet-infra](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wallet-infra) | +| BSV Chaintracks Server | `chaintracks-server` | `1.0.14` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/chaintracks-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/chaintracks-server) | +| BSV Message Box Server | `@bsv/messagebox-server` | `1.1.19` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/message-box-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/message-box-server) | +| BSV Overlay Server | `@bsv/overlay-express-examples` | `2.1.22` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/overlay-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/overlay-server) | +| BSV UHRP Basic Server | `@bsv/uhrp-lite` | `0.1.15` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-basic](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-basic) | +| BSV UHRP Cloud Bucket Server | `@bsv/uhrp-storage-server` | `0.2.17` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-cloud-bucket](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-cloud-bucket) | +| Wallet Authentication Backend | `@bsv/wab-server` | `1.4.16` | `>=24 <25` | node, linux/amd64 | ghcr-and-aws-marketplace-keyless | [infra/wab](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wab) | +| BSV Wallet Infrastructure | `@bsv/wallet-infra` | `2.0.18` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/wallet-infra](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wallet-infra) | ## Governed project and release inventory diff --git a/governance/browser-artifact-policy.json b/governance/browser-artifact-policy.json new file mode 100644 index 000000000..1f797d80e --- /dev/null +++ b/governance/browser-artifact-policy.json @@ -0,0 +1,100 @@ +{ + "schemaVersion": 1, + "lastReviewed": "2026-07-30", + "owner": "ts-stack-maintainers", + "reportRetentionDays": 30, + "growthPolicy": "Every browser consumer is measured from its exact packed dependency graph with Vite and esbuild (or the governed platform equivalent). A budget increase requires a versioned source change, composition evidence, and explicit review; generated reports preserve package/module composition for comparison.", + "packages": [ + { + "name": "@bsv/did-client", + "path": "packages/helpers/did-client", + "budget": "packages/helpers/did-client/browser-budget.json", + "entry": ".", + "splittingDisposition": "No optional server adapter is reachable from the browser entry." + }, + { + "name": "@bsv/did", + "path": "packages/helpers/did", + "budget": "packages/helpers/did/browser-budget.json", + "entry": ".", + "splittingDisposition": "The package is browser-native and has no optional server adapter in its entry." + }, + { + "name": "@bsv/simple", + "path": "packages/helpers/simple", + "budget": "packages/helpers/simple/browser-budget.json", + "entry": "./browser", + "splittingDisposition": "Server modules are excluded by the browser export; the optional certification implementation remains a dynamic import." + }, + { + "name": "@bsv/templates", + "path": "packages/helpers/ts-templates", + "budget": "packages/helpers/ts-templates/browser-budget.json", + "entry": ".", + "splittingDisposition": "The browser entry contains no optional server adapter." + }, + { + "name": "@bsv/authsocket-client", + "path": "packages/messaging/authsocket-client", + "budget": "packages/messaging/authsocket-client/browser-budget.json", + "entry": ".", + "splittingDisposition": "The client package is already separated from server-side AuthSocket code." + }, + { + "name": "@bsv/message-box-client", + "path": "packages/messaging/message-box-client", + "budget": "packages/messaging/message-box-client/browser-budget.json", + "entry": ".", + "splittingDisposition": "The client package is already separated from Message Box service code." + }, + { + "name": "@bsv/paymail", + "path": "packages/messaging/ts-paymail", + "budget": "packages/messaging/ts-paymail/browser-budget.json", + "entry": ".", + "splittingDisposition": "Conditional exports select the browser-safe implementation and the composition gate rejects Node/server dependencies." + }, + { + "name": "@bsv/402-pay", + "path": "packages/middleware/402-pay", + "budget": "packages/middleware/402-pay/browser-budget.json", + "entry": "./client", + "splittingDisposition": "The explicit client subpath excludes the server middleware adapter." + }, + { + "name": "@bsv/gasp", + "path": "packages/overlays/gasp-core", + "budget": "packages/overlays/gasp-core/browser-budget.json", + "entry": ".", + "splittingDisposition": "The protocol core has no optional server adapter in its browser graph." + }, + { + "name": "@bsv/sdk", + "path": "packages/sdk", + "budget": "packages/sdk/browser-budget.json", + "entry": ".", + "splittingDisposition": "The SDK browser graph is a public compatibility surface; further splitting requires evidence that it preserves synchronous exports and consumer behavior." + }, + { + "name": "@bsv/verifast", + "path": "packages/verifast", + "budget": "packages/verifast/browser-budget.json", + "entry": ".", + "splittingDisposition": "WASM and worker payloads remain separate packed assets and are measured with the exact browser consumer." + }, + { + "name": "@bsv/wallet-relay", + "path": "packages/wallet/ts-wallet-relay", + "budget": "packages/wallet/ts-wallet-relay/browser-budget.json", + "entry": "./client", + "splittingDisposition": "The client subpath excludes Express and the server-only QR adapter; qrcode is dynamically imported only by the server session manager." + }, + { + "name": "@bsv/wallet-toolbox-client", + "path": "packages/wallet/wallet-toolbox/client", + "budget": "packages/wallet/wallet-toolbox/client/platform-budget.json", + "entry": ".", + "splittingDisposition": "The dedicated browser export excludes Node storage and database adapters and is verified through its platform-specific exact-package gate." + } + ] +} diff --git a/governance/ci-performance-baseline.json b/governance/ci-performance-baseline.json index 4f5569008..76ab95288 100644 --- a/governance/ci-performance-baseline.json +++ b/governance/ci-performance-baseline.json @@ -27,13 +27,7 @@ "per-job and per-step duration", "job queue time", "artifact upload/download step duration" - ], - "unavailableFromActionsApi": [ - "hosted-runner CPU utilization", - "hosted-runner memory utilization", - "action-internal cache hit rate" - ], - "note": "Unavailable metrics require explicit in-run instrumentation; they are not inferred from the GitHub Actions REST API." + ] }, "reference": { "fullScope": { diff --git a/governance/dependency-release-policy.json b/governance/dependency-release-policy.json index ae86ab8e0..a541347c6 100644 --- a/governance/dependency-release-policy.json +++ b/governance/dependency-release-policy.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "lastReviewed": "2026-07-29", + "lastReviewed": "2026-07-30", "owner": "ts-stack-maintainers", "routineUpdates": { "dependabotConfig": ".github/dependabot.yml", @@ -29,12 +29,108 @@ "directLatestInventory": { "cadence": "monthly-and-after-release", "command": "node scripts/dependency-release-governance.mjs inventory", + "minimumReleaseAgeMinutes": 1440, "classifications": [ "current", "compatible-update", + "release-age-hold", "security-urgent", "major-migration", + "coordinated-major-hold", + "toolchain-bridge", + "forward-version", + "supported-peer-range", "first-party-release-held" + ], + "dispositions": [ + { + "dependency": "typescript", + "declaredPrefix": "npm:@typescript/typescript6@", + "classification": "toolchain-bridge", + "rationale": "TypeScript 7 owns every native CLI build while compiler-API consumers use the official TypeScript 6 compatibility package until a stable TypeScript 7 API exists.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-08-27", + "removeWhen": "All compiler-API consumers support the native TypeScript 7 API and the complete declaration, Jest, conformance, browser, mobile, infrastructure, and packed-consumer matrix passes without the alias." + }, + { + "dependency": "hermes-compiler", + "classification": "forward-version", + "rationale": "React Native's tested Hermes compiler build is intentionally newer than the npm latest version metadata and must not be downgraded by a latest-version sweep.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "The React Native toolchain selects a newer compatible Hermes build and the Metro platform contract passes with it." + }, + { + "dependency": "qrcode", + "field": "peerDependencies", + "classification": "supported-peer-range", + "rationale": "The relay accepts the supported qrcode peer family; narrowing the floor to one latest patch would break existing valid consumers.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "A demonstrated incompatible qrcode release requires a semver upper boundary backed by consumer tests." + }, + { + "dependency": "express", + "field": "peerDependencies", + "classification": "supported-peer-range", + "rationale": "The relay preserves its established Express 4 and 5 peer compatibility instead of forcing consumers onto the latest major.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "Tests demonstrate that an admitted Express major cannot satisfy the public adapter contract." + }, + { + "dependency": "react", + "field": "peerDependencies", + "classification": "supported-peer-range", + "rationale": "The optional React adapter preserves its documented React 17 through 19 compatibility and does not force an application-wide React upgrade.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "Tests demonstrate that an admitted React major cannot satisfy the public adapter contract." + }, + { + "dependency": "@types/node", + "manifestPrefix": "infra/", + "classification": "coordinated-major-hold", + "rationale": "Infrastructure compiles and runs against the governed Node 24 LTS line; Node 26 types move only with the runtime migration.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "The governed infrastructure runtime, images, CI matrix, and support policy migrate together to Node 26." + }, + { + "dependency": "@babel/core", + "manifest": "packages/wallet/wallet-toolbox/mobile/package.json", + "classification": "coordinated-major-hold", + "rationale": "Babel 8 is a React Native/Metro migration rather than an isolated development dependency patch.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "The supported React Native and Metro stack declares Babel 8 compatibility and the exact mobile package contract passes." + }, + { + "dependency": "@babel/runtime", + "manifest": "packages/wallet/wallet-toolbox/mobile/package.json", + "classification": "coordinated-major-hold", + "rationale": "Babel runtime must remain aligned with the supported React Native/Metro compiler family.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "Babel core, runtime, React Native, and Metro migrate together with exact-package tests green." + }, + { + "dependency": "chalk", + "classification": "coordinated-major-hold", + "rationale": "Chalk 6 changes the supported Node/tooling boundary and is reviewed as one consumer-compatible migration across all command-line packages.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-10-30", + "removeWhen": "All CLI consumers support Chalk 6 without changing output or supported runtimes." + }, + { + "dependency": "typescript", + "manifest": "tools/codegen/node/package.json", + "classification": "coordinated-major-hold", + "rationale": "The isolated OpenAPI code generator is pinned to its tested compiler API and generated-output reproducibility boundary.", + "owner": "ts-stack-maintainers", + "reviewBy": "2026-08-25", + "removeWhen": "The generator and Redocly closure support the new compiler and deterministic codegen remains byte-for-byte clean." + } ] }, "firstParty": { @@ -47,6 +143,13 @@ "publicationHold": "Source candidates may remain ahead of npm only while publication is explicitly unauthorized. Registry versions may never be ahead of or diverge from source ownership, and release reconciliation must record every held or published package.", "closeImplementationWaveAfterPublication": false }, + "overrideRemovalReview": { + "reviewedAt": "2026-07-30", + "method": "Regenerated each standalone npm lockfile without gaxios, uuid, or brace-expansion overrides and compared the resulting natural graph; separately rechecked the root Jest/minimatch, typed-rest-client/qs, and isolated Redocly codegen closures.", + "retainedCount": 19, + "result": "Every remaining override still prevents a reproduced vulnerable transitive version or preserves the isolated reproducible codegen closure. No override can be removed safely in this wave.", + "nextReview": "Rehearse removal monthly and immediately after upstream Google client, Jest/minimatch, typed-rest-client, or Redocly dependency changes." + }, "overrideRegistry": [ { "source": "pnpm-workspace.yaml", diff --git a/governance/documentation-policy.json b/governance/documentation-policy.json index 0e5c8f2bc..cff8ab19a 100644 --- a/governance/documentation-policy.json +++ b/governance/documentation-policy.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "owner": "ts-stack-maintainers", - "lastReviewed": "2026-07-29", + "lastReviewed": "2026-07-30", "tracker": "https://github.com/bsv-blockchain/ts-stack/issues/324", "publicPackageReadme": { "requiredSections": ["installation", "usage", "license"], diff --git a/governance/package-release-notes.json b/governance/package-release-notes.json index 9ffb868da..2d1357593 100644 --- a/governance/package-release-notes.json +++ b/governance/package-release-notes.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "lastReviewed": "2026-07-29", + "lastReviewed": "2026-07-30", "owner": "ts-stack-maintainers", "entries": [ { diff --git a/governance/repository-health/baselines.json b/governance/repository-health/baselines.json index 3706fbcda..b6d070adb 100644 --- a/governance/repository-health/baselines.json +++ b/governance/repository-health/baselines.json @@ -297,35 +297,35 @@ ] }, "publicPackageVersions": { - "@bsv/amountinator": "2.1.3", - "@bsv/wallet-helper": "0.1.5", - "create-bsv-app": "1.0.3", - "@bsv/did": "0.2.3", - "@bsv/did-client": "1.2.2", - "@bsv/fund-wallet": "1.4.2", - "@bsv/simple": "0.4.7", - "@bsv/templates": "1.9.4", - "@bsv/authsocket": "2.1.3", - "@bsv/authsocket-client": "2.1.2", - "@bsv/message-box-client": "2.2.5", - "@bsv/paymail": "2.4.4", - "@bsv/402-pay": "0.2.3", - "@bsv/auth": "0.1.2", - "@bsv/auth-express-middleware": "2.1.4", - "@bsv/payment-express-middleware": "2.1.3", - "@bsv/teranode-listener": "1.1.3", - "@bsv/gasp": "1.3.4", - "@bsv/overlay": "2.2.6", - "@bsv/overlay-discovery-services": "2.1.5", - "@bsv/overlay-express": "2.4.8", - "@bsv/overlay-topics": "1.6.7", - "@bsv/sdk": "2.2.13", - "@bsv/verifast": "0.3.3", - "@bsv/btms": "1.1.3", - "@bsv/btms-permission-module": "1.1.2", - "@bsv/wallet-relay": "0.3.2", - "@bsv/wallet-toolbox-client": "2.4.18", - "@bsv/wallet-toolbox-mobile": "2.4.18", - "@bsv/wallet-toolbox": "2.4.18" + "@bsv/amountinator": "2.1.4", + "@bsv/wallet-helper": "0.1.6", + "create-bsv-app": "1.0.4", + "@bsv/did": "0.2.4", + "@bsv/did-client": "1.2.3", + "@bsv/fund-wallet": "1.4.3", + "@bsv/simple": "0.4.8", + "@bsv/templates": "1.9.5", + "@bsv/authsocket": "2.1.4", + "@bsv/authsocket-client": "2.1.3", + "@bsv/message-box-client": "2.2.6", + "@bsv/paymail": "2.4.5", + "@bsv/402-pay": "0.2.4", + "@bsv/auth": "0.1.3", + "@bsv/auth-express-middleware": "2.1.5", + "@bsv/payment-express-middleware": "2.1.4", + "@bsv/teranode-listener": "1.1.4", + "@bsv/gasp": "1.3.5", + "@bsv/overlay": "2.2.7", + "@bsv/overlay-discovery-services": "2.1.6", + "@bsv/overlay-express": "2.4.9", + "@bsv/overlay-topics": "1.6.8", + "@bsv/sdk": "2.2.14", + "@bsv/verifast": "0.3.4", + "@bsv/btms": "1.1.4", + "@bsv/btms-permission-module": "1.1.3", + "@bsv/wallet-relay": "0.3.3", + "@bsv/wallet-toolbox-client": "2.4.19", + "@bsv/wallet-toolbox-mobile": "2.4.19", + "@bsv/wallet-toolbox": "2.4.19" } } diff --git a/governance/repository-health/exceptions.json b/governance/repository-health/exceptions.json index 59f4b2f56..672d6f3d8 100644 --- a/governance/repository-health/exceptions.json +++ b/governance/repository-health/exceptions.json @@ -1,6 +1,6 @@ { "schemaVersion": 1, - "lastReviewed": "2026-07-28", + "lastReviewed": "2026-07-30", "exceptions": [ { "id": "scorecard-maintainer-merge-policy", diff --git a/governance/service-edge-browser-policy.json b/governance/service-edge-browser-policy.json new file mode 100644 index 000000000..ca38dab24 --- /dev/null +++ b/governance/service-edge-browser-policy.json @@ -0,0 +1,87 @@ +{ + "schemaVersion": 1, + "lastReviewed": "2026-07-30", + "owner": "ts-stack-maintainers", + "defaultContract": { + "corsMode": "public", + "allowOrigin": "*", + "allowCredentials": false, + "opaqueOrigin": "allowed", + "cspControlsCors": false, + "rationale": "WAB, Overlays, Storage, and the other protocol services are intentionally callable by deployed browser, WUI, mobile-webview, and future applications across unknown domains. Authentication and authorization remain protocol concerns; operators may opt into an exact allowlist, credentials, or disabled cross-origin access." + }, + "canonicalSource": "infra/wab/src/security/edgePolicy.ts", + "synchronizedSources": [ + "infra/uhrp-server-basic/src/security/edgePolicy.ts", + "infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts", + "infra/message-box-server/src/security/edgePolicy.ts", + "infra/chaintracks-server/src/security/edgePolicy.ts", + "packages/overlays/overlay-express/src/security/edgePolicy.ts", + "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts" + ], + "canonicalTest": "infra/wab/src/security/edgePolicy.test.ts", + "synchronizedTests": [ + "packages/overlays/overlay-express/src/security/edgePolicy.test.ts", + "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts" + ], + "requiredContractTests": [ + "keeps public protocol APIs browser-accessible by default", + "allows only explicitly configured browser origins", + "supports an explicit cross-origin disabled mode", + "validates explicit origin and credential options", + "gives service-specific CORS settings precedence over global fallbacks", + "sets the API security-header baseline", + "supports deployment-specific browser security headers", + "keeps CORS accessibility independent from CSP configuration" + ], + "integrations": [ + { + "service": "WAB", + "integration": "infra/wab/src/app.ts", + "environmentPrefix": "WAB", + "source": "infra/wab/src/security/edgePolicy.ts" + }, + { + "service": "UHRP basic", + "integration": "infra/uhrp-server-basic/src/index.ts", + "environmentPrefix": "UHRP", + "source": "infra/uhrp-server-basic/src/security/edgePolicy.ts" + }, + { + "service": "UHRP cloud bucket", + "integration": "infra/uhrp-server-cloud-bucket/src/index.ts", + "environmentPrefix": "UHRP", + "source": "infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts" + }, + { + "service": "Message Box", + "integration": "infra/message-box-server/src/app.ts", + "environmentPrefix": "MESSAGE_BOX", + "source": "infra/message-box-server/src/security/edgePolicy.ts" + }, + { + "service": "Chaintracks API", + "integration": "infra/chaintracks-server/src/server.ts", + "environmentPrefix": "CHAINTRACKS", + "source": "infra/chaintracks-server/src/security/edgePolicy.ts" + }, + { + "service": "Chaintracks CDN", + "integration": "infra/chaintracks-server/src/server.ts", + "environmentPrefix": "CHAINTRACKS_CDN", + "source": "infra/chaintracks-server/src/security/edgePolicy.ts" + }, + { + "service": "OverlayExpress", + "integration": "packages/overlays/overlay-express/src/OverlayExpress.ts", + "environmentPrefix": "OVERLAY", + "source": "packages/overlays/overlay-express/src/security/edgePolicy.ts" + }, + { + "service": "Wallet Storage", + "integration": "packages/wallet/wallet-toolbox/src/storage/remoting/StorageServer.ts", + "environmentPrefix": "WALLET_STORAGE", + "source": "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts" + } + ] +} diff --git a/infra/chaintracks-server/package-lock.json b/infra/chaintracks-server/package-lock.json index 043588822..6ee00fe9a 100644 --- a/infra/chaintracks-server/package-lock.json +++ b/infra/chaintracks-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "chaintracks-server", - "version": "1.0.13", + "version": "1.0.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "chaintracks-server", - "version": "1.0.13", + "version": "1.0.14", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/wallet-toolbox": "^2.4.4", @@ -32,7 +32,7 @@ "@types/express": "^5.0.6", "@types/node": "^24.13.3", "@typescript/native": "npm:typescript@7.0.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-node": "^10.9.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, @@ -1568,9 +1568,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -1585,9 +1585,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -1602,9 +1602,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -1619,9 +1619,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -1636,9 +1636,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -1653,9 +1653,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -1670,9 +1670,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -1687,13 +1687,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1704,13 +1707,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1721,13 +1727,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1738,13 +1747,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1755,13 +1767,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1772,13 +1787,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1789,13 +1807,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1806,13 +1827,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1823,9 +1847,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -1840,9 +1864,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -1857,9 +1881,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -1874,9 +1898,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -3981,9 +4005,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -3996,25 +4020,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/chaintracks-server/package.json b/infra/chaintracks-server/package.json index 2aef0a9a2..bc3757077 100644 --- a/infra/chaintracks-server/package.json +++ b/infra/chaintracks-server/package.json @@ -1,6 +1,6 @@ { "name": "chaintracks-server", - "version": "1.0.13", + "version": "1.0.14", "overrides": { "gaxios": "7.3.0" }, @@ -56,9 +56,9 @@ "devDependencies": { "@types/express": "^5.0.6", "@types/node": "^24.13.3", - "oxlint": "^1.75.0", - "ts-node": "^10.9.2", "@typescript/native": "npm:typescript@7.0.2", + "oxlint": "^1.76.0", + "ts-node": "^10.9.2", "typescript": "npm:@typescript/typescript6@6.0.2" } } diff --git a/infra/message-box-server/package-lock.json b/infra/message-box-server/package-lock.json index fe5babb33..55f75eaaf 100644 --- a/infra/message-box-server/package-lock.json +++ b/infra/message-box-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/messagebox-server", - "version": "1.1.18", + "version": "1.1.19", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/messagebox-server", - "version": "1.1.18", + "version": "1.1.19", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/auth-express-middleware": "^2.1.2", @@ -51,10 +51,10 @@ "@typescript/native": "npm:typescript@7.0.2", "axios": "^1.18.1", "axios-mock-adapter": "^2.1.0", - "better-sqlite3": "^13.0.1", + "better-sqlite3": "^13.0.2", "jest": "^30.4.2", "mock-knex": "^0.4.13", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "prettier": "3.9.6", "rimraf": "^6.1.3", "supertest": "^7.2.2", @@ -3433,9 +3433,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -3450,9 +3450,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -3467,9 +3467,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -3484,9 +3484,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -3501,9 +3501,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -3518,9 +3518,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -3535,9 +3535,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -3552,13 +3552,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3569,13 +3572,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3586,13 +3592,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3603,13 +3612,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3620,13 +3632,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3637,13 +3652,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3654,13 +3672,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3671,13 +3692,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3688,9 +3712,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -3705,9 +3729,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -3722,9 +3746,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -3739,9 +3763,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -5464,11 +5488,10 @@ } }, "node_modules/better-sqlite3": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.1.tgz", - "integrity": "sha512-LYpmOXdkpQYf4wmlxkdzW01XGlOXNIbjLg45yNkh0FQ4814VbK9PdOFmhZpYbej+EZtR/i3FDdhEG98HqZdgnA==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.2.tgz", + "integrity": "sha512-jW6oufeDhXZaiX9Lw5A+oerVClx4iFrI6uDj1zu7SqUAjak9vbJvA0NEcKLNxHiQHb6kYCoFzzXYV0YOauhV3g==", "dev": true, - "hasInstallScript": true, "license": "MIT", "dependencies": { "node-addon-api": "^8.0.0" @@ -9696,9 +9719,9 @@ "peer": true }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -9711,25 +9734,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/message-box-server/package.json b/infra/message-box-server/package.json index 7a44fd2e8..4b579debc 100644 --- a/infra/message-box-server/package.json +++ b/infra/message-box-server/package.json @@ -1,7 +1,7 @@ { "name": "@bsv/messagebox-server", "private": true, - "version": "1.1.18", + "version": "1.1.19", "overrides": { "brace-expansion": "5.0.8", "gaxios": "7.3.0", @@ -50,18 +50,18 @@ "@types/supertest": "^7.2.1", "@types/swagger-jsdoc": "^6.0.4", "@types/swagger-ui-express": "^4.1.8", + "@typescript/native": "npm:typescript@7.0.2", "axios": "^1.18.1", "axios-mock-adapter": "^2.1.0", - "better-sqlite3": "^13.0.1", + "better-sqlite3": "^13.0.2", "jest": "^30.4.2", "mock-knex": "^0.4.13", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "prettier": "3.9.6", "rimraf": "^6.1.3", "supertest": "^7.2.2", "ts-jest": "^29.4.12", "tsx": "^4.23.1", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/infra/overlay-server/package-lock.json b/infra/overlay-server/package-lock.json index 68da582a3..bdbe92dcf 100644 --- a/infra/overlay-server/package-lock.json +++ b/infra/overlay-server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/overlay-express-examples", - "version": "2.1.21", + "version": "2.1.22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/overlay-express-examples", - "version": "2.1.21", + "version": "2.1.22", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/overlay": "^2.2.1", @@ -35,8 +35,8 @@ "devDependencies": { "@types/node": "^24.13.3", "@typescript/native": "npm:typescript@7.0.2", - "oxlint": "^1.75.0", - "tsx": "^4.21.0", + "oxlint": "^1.76.0", + "tsx": "^4.23.1", "typescript": "npm:@typescript/typescript6@6.0.2" }, "engines": { @@ -2077,9 +2077,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -2094,9 +2094,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -2111,9 +2111,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -2128,9 +2128,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -2145,9 +2145,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -2162,9 +2162,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -2179,9 +2179,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -2196,13 +2196,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2213,13 +2216,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2230,13 +2236,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2247,13 +2256,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2264,13 +2276,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2281,13 +2296,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2298,13 +2316,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2315,13 +2336,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2332,9 +2356,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -2349,9 +2373,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -2366,9 +2390,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -2383,9 +2407,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -4312,9 +4336,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -4327,25 +4351,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/overlay-server/package.json b/infra/overlay-server/package.json index 23bd992b9..cca76c503 100644 --- a/infra/overlay-server/package.json +++ b/infra/overlay-server/package.json @@ -1,7 +1,7 @@ { "name": "@bsv/overlay-express-examples", "private": true, - "version": "2.1.21", + "version": "2.1.22", "overrides": { "gaxios": "7.3.0" }, @@ -32,9 +32,9 @@ }, "devDependencies": { "@types/node": "^24.13.3", - "oxlint": "^1.75.0", - "tsx": "^4.21.0", "@typescript/native": "npm:typescript@7.0.2", + "oxlint": "^1.76.0", + "tsx": "^4.23.1", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/infra/uhrp-server-basic/package-lock.json b/infra/uhrp-server-basic/package-lock.json index 5b3f1f682..6146c17e5 100644 --- a/infra/uhrp-server-basic/package-lock.json +++ b/infra/uhrp-server-basic/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/uhrp-lite", - "version": "0.1.14", + "version": "0.1.15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/uhrp-lite", - "version": "0.1.14", + "version": "0.1.15", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/auth-express-middleware": "^2.1.2", @@ -42,7 +42,7 @@ "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", "nodemon": "^3.1.14", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-node": "^10.9.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, @@ -2654,9 +2654,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -2671,9 +2671,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -2688,9 +2688,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -2705,9 +2705,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -2722,9 +2722,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -2739,9 +2739,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -2756,9 +2756,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -2773,13 +2773,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2790,13 +2793,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2807,13 +2813,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2824,13 +2833,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2841,13 +2853,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2858,13 +2873,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2875,13 +2893,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2892,13 +2913,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2909,9 +2933,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -2926,9 +2950,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -2943,9 +2967,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -2960,9 +2984,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -7242,9 +7266,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -7257,25 +7281,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/uhrp-server-basic/package.json b/infra/uhrp-server-basic/package.json index 4c95d7916..4315c370b 100644 --- a/infra/uhrp-server-basic/package.json +++ b/infra/uhrp-server-basic/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/uhrp-lite", - "version": "0.1.14", + "version": "0.1.15", "overrides": { "brace-expansion": "5.0.8", "gaxios": "7.3.0" @@ -67,11 +67,11 @@ "@types/express": "^5.0.6", "@types/node": "^24.13.3", "@types/prettyjson": "^0.0.33", + "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", "nodemon": "^3.1.14", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-node": "^10.9.2", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" } } diff --git a/infra/uhrp-server-cloud-bucket/package-lock.json b/infra/uhrp-server-cloud-bucket/package-lock.json index 201f3a065..3713ee2d5 100644 --- a/infra/uhrp-server-cloud-bucket/package-lock.json +++ b/infra/uhrp-server-cloud-bucket/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/uhrp-storage-server", - "version": "0.2.16", + "version": "0.2.17", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/uhrp-storage-server", - "version": "0.2.16", + "version": "0.2.17", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/auth-express-middleware": "^2.1.2", @@ -50,7 +50,7 @@ "ejs": "^6.0.1", "jest": "^30.4.2", "nodemon": "^3.1.14", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "typescript": "npm:@typescript/typescript6@6.0.2" @@ -2951,9 +2951,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -2968,9 +2968,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -2985,9 +2985,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -3002,9 +3002,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -3019,9 +3019,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -3036,9 +3036,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -3053,9 +3053,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -3070,13 +3070,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3087,13 +3090,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3104,13 +3110,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3121,13 +3130,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3138,13 +3150,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3155,13 +3170,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3172,13 +3190,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -3189,13 +3210,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -3206,9 +3230,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -3223,9 +3247,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -3240,9 +3264,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -3257,9 +3281,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -8454,9 +8478,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -8469,25 +8493,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/uhrp-server-cloud-bucket/package.json b/infra/uhrp-server-cloud-bucket/package.json index ed3f1139e..226a59ecd 100644 --- a/infra/uhrp-server-cloud-bucket/package.json +++ b/infra/uhrp-server-cloud-bucket/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/uhrp-storage-server", - "version": "0.2.16", + "version": "0.2.17", "overrides": { "brace-expansion": "5.0.8", "gaxios": "7.3.0", @@ -77,13 +77,13 @@ "@types/jest": "^30.0.0", "@types/node": "^24.13.3", "@types/prettyjson": "^0.0.33", + "@typescript/native": "npm:typescript@7.0.2", "ejs": "^6.0.1", "jest": "^30.4.2", "nodemon": "^3.1.14", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" } } diff --git a/infra/wab/package-lock.json b/infra/wab/package-lock.json index f9b51e546..080b1d8e5 100644 --- a/infra/wab/package-lock.json +++ b/infra/wab/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/wab-server", - "version": "1.4.15", + "version": "1.4.16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/wab-server", - "version": "1.4.15", + "version": "1.4.16", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/sdk": "^2.2.0", @@ -43,7 +43,7 @@ "@typescript/native": "npm:typescript@7.0.2", "body-parser": "^2.3.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", @@ -2703,9 +2703,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -2720,9 +2720,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -2737,9 +2737,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -2754,9 +2754,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -2771,9 +2771,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -2788,9 +2788,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -2805,9 +2805,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -2822,13 +2822,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2839,13 +2842,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2856,13 +2862,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2873,13 +2882,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2890,13 +2902,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2907,13 +2922,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2924,13 +2942,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -2941,13 +2962,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -2958,9 +2982,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -2975,9 +2999,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -2992,9 +3016,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -3009,9 +3033,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -8009,9 +8033,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -8024,25 +8048,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/wab/package.json b/infra/wab/package.json index 626d5eed2..94cedd25d 100644 --- a/infra/wab/package.json +++ b/infra/wab/package.json @@ -1,7 +1,7 @@ { "name": "@bsv/wab-server", "private": true, - "version": "1.4.15", + "version": "1.4.16", "overrides": { "brace-expansion": "5.0.8", "gaxios": "7.3.0" @@ -53,13 +53,13 @@ "@types/express-serve-static-core": "^5.1.2", "@types/jest": "^30.0.0", "@types/node": "^24.13.3", + "@typescript/native": "npm:typescript@7.0.2", "body-parser": "^2.3.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "ts-node-dev": "^2.0.0", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "license": "SEE LICENSE IN LICENSE.txt" diff --git a/infra/wab/src/security/edgePolicy.test.ts b/infra/wab/src/security/edgePolicy.test.ts index 09df066cf..1e169aee3 100644 --- a/infra/wab/src/security/edgePolicy.test.ts +++ b/infra/wab/src/security/edgePolicy.test.ts @@ -369,6 +369,33 @@ describe('shared service edge policy', () => { } }) + it('keeps CORS accessibility independent from CSP configuration', async () => { + process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:" + delete process.env.TEST_CORS_MODE + delete process.env.TEST_CORS_ALLOWED_ORIGINS + const app = express() + app.use(securityHeaders({ environmentPrefix: 'TEST' })) + app.use(corsPolicy({ + environmentPrefix: 'TEST', + methods: ['GET'] + })) + app.get('/', (_req, res) => res.json({ ok: true })) + const { server, origin } = await listen(app) + + try { + const response = await fetch(origin, { + headers: { Origin: 'https://unknown-deployed-app.example' } + }) + expect(response.status).toBe(200) + expect(response.headers.get('access-control-allow-origin')).toBe('*') + expect(response.headers.get('access-control-allow-credentials')).toBeNull() + expect(response.headers.get('content-security-policy')) + .toBe("default-src 'self'; connect-src https:") + } finally { + await close(server) + } + }) + it('does not trust a raw forwarded-proto header for HSTS', async () => { const app = express() app.use(securityHeaders()) diff --git a/infra/wallet-infra/package-lock.json b/infra/wallet-infra/package-lock.json index e358178b3..268de9d3e 100644 --- a/infra/wallet-infra/package-lock.json +++ b/infra/wallet-infra/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bsv/wallet-infra", - "version": "2.0.17", + "version": "2.0.18", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bsv/wallet-infra", - "version": "2.0.17", + "version": "2.0.18", "license": "SEE LICENSE IN LICENSE.txt", "dependencies": { "@bsv/payment-express-middleware": "^2.1.1", @@ -35,7 +35,7 @@ "devDependencies": { "@types/node": "^24.13.3", "@typescript/native": "npm:typescript@7.0.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "prettier": "^3.9.6", "ts-node": "^10.9.2", "typescript": "npm:@typescript/typescript6@6.0.2" @@ -1571,9 +1571,9 @@ } }, "node_modules/@oxlint/binding-android-arm-eabi": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz", - "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz", + "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==", "cpu": [ "arm" ], @@ -1588,9 +1588,9 @@ } }, "node_modules/@oxlint/binding-android-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz", - "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz", + "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==", "cpu": [ "arm64" ], @@ -1605,9 +1605,9 @@ } }, "node_modules/@oxlint/binding-darwin-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz", - "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz", + "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==", "cpu": [ "arm64" ], @@ -1622,9 +1622,9 @@ } }, "node_modules/@oxlint/binding-darwin-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz", - "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz", + "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==", "cpu": [ "x64" ], @@ -1639,9 +1639,9 @@ } }, "node_modules/@oxlint/binding-freebsd-x64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz", - "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz", + "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==", "cpu": [ "x64" ], @@ -1656,9 +1656,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-gnueabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz", - "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz", + "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==", "cpu": [ "arm" ], @@ -1673,9 +1673,9 @@ } }, "node_modules/@oxlint/binding-linux-arm-musleabihf": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz", - "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz", + "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==", "cpu": [ "arm" ], @@ -1690,13 +1690,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz", - "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz", + "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1707,13 +1710,16 @@ } }, "node_modules/@oxlint/binding-linux-arm64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz", - "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz", + "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1724,13 +1730,16 @@ } }, "node_modules/@oxlint/binding-linux-ppc64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz", - "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz", + "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==", "cpu": [ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1741,13 +1750,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz", - "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz", + "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1758,13 +1770,16 @@ } }, "node_modules/@oxlint/binding-linux-riscv64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz", - "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz", + "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==", "cpu": [ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1775,13 +1790,16 @@ } }, "node_modules/@oxlint/binding-linux-s390x-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz", - "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz", + "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==", "cpu": [ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1792,13 +1810,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-gnu": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz", - "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz", + "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1809,13 +1830,16 @@ } }, "node_modules/@oxlint/binding-linux-x64-musl": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz", - "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz", + "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1826,9 +1850,9 @@ } }, "node_modules/@oxlint/binding-openharmony-arm64": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz", - "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz", + "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==", "cpu": [ "arm64" ], @@ -1843,9 +1867,9 @@ } }, "node_modules/@oxlint/binding-win32-arm64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz", - "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz", + "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==", "cpu": [ "arm64" ], @@ -1860,9 +1884,9 @@ } }, "node_modules/@oxlint/binding-win32-ia32-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz", - "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz", + "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==", "cpu": [ "ia32" ], @@ -1877,9 +1901,9 @@ } }, "node_modules/@oxlint/binding-win32-x64-msvc": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz", - "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz", + "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==", "cpu": [ "x64" ], @@ -3949,9 +3973,9 @@ } }, "node_modules/oxlint": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz", - "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==", + "version": "1.76.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz", + "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==", "dev": true, "license": "MIT", "bin": { @@ -3964,25 +3988,25 @@ "url": "https://github.com/sponsors/Boshen" }, "optionalDependencies": { - "@oxlint/binding-android-arm-eabi": "1.75.0", - "@oxlint/binding-android-arm64": "1.75.0", - "@oxlint/binding-darwin-arm64": "1.75.0", - "@oxlint/binding-darwin-x64": "1.75.0", - "@oxlint/binding-freebsd-x64": "1.75.0", - "@oxlint/binding-linux-arm-gnueabihf": "1.75.0", - "@oxlint/binding-linux-arm-musleabihf": "1.75.0", - "@oxlint/binding-linux-arm64-gnu": "1.75.0", - "@oxlint/binding-linux-arm64-musl": "1.75.0", - "@oxlint/binding-linux-ppc64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-gnu": "1.75.0", - "@oxlint/binding-linux-riscv64-musl": "1.75.0", - "@oxlint/binding-linux-s390x-gnu": "1.75.0", - "@oxlint/binding-linux-x64-gnu": "1.75.0", - "@oxlint/binding-linux-x64-musl": "1.75.0", - "@oxlint/binding-openharmony-arm64": "1.75.0", - "@oxlint/binding-win32-arm64-msvc": "1.75.0", - "@oxlint/binding-win32-ia32-msvc": "1.75.0", - "@oxlint/binding-win32-x64-msvc": "1.75.0" + "@oxlint/binding-android-arm-eabi": "1.76.0", + "@oxlint/binding-android-arm64": "1.76.0", + "@oxlint/binding-darwin-arm64": "1.76.0", + "@oxlint/binding-darwin-x64": "1.76.0", + "@oxlint/binding-freebsd-x64": "1.76.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.76.0", + "@oxlint/binding-linux-arm-musleabihf": "1.76.0", + "@oxlint/binding-linux-arm64-gnu": "1.76.0", + "@oxlint/binding-linux-arm64-musl": "1.76.0", + "@oxlint/binding-linux-ppc64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-gnu": "1.76.0", + "@oxlint/binding-linux-riscv64-musl": "1.76.0", + "@oxlint/binding-linux-s390x-gnu": "1.76.0", + "@oxlint/binding-linux-x64-gnu": "1.76.0", + "@oxlint/binding-linux-x64-musl": "1.76.0", + "@oxlint/binding-openharmony-arm64": "1.76.0", + "@oxlint/binding-win32-arm64-msvc": "1.76.0", + "@oxlint/binding-win32-ia32-msvc": "1.76.0", + "@oxlint/binding-win32-x64-msvc": "1.76.0" }, "peerDependencies": { "oxlint-tsgolint": ">=7.0.2001", diff --git a/infra/wallet-infra/package.json b/infra/wallet-infra/package.json index 9fcb7ba73..f83452313 100644 --- a/infra/wallet-infra/package.json +++ b/infra/wallet-infra/package.json @@ -1,7 +1,7 @@ { "name": "@bsv/wallet-infra", "private": true, - "version": "2.0.17", + "version": "2.0.18", "overrides": { "gaxios": "7.3.0" }, @@ -46,10 +46,10 @@ }, "devDependencies": { "@types/node": "^24.13.3", - "oxlint": "^1.75.0", + "@typescript/native": "npm:typescript@7.0.2", + "oxlint": "^1.76.0", "prettier": "^3.9.6", "ts-node": "^10.9.2", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/package.json b/package.json index 99a6ed529..9bfb014aa 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "check-versions": "node scripts/check-versions.mjs", "typescript:check": "node scripts/typescript-toolchain.mjs", "health:baseline": "node scripts/repository-health.mjs --update-contract-baseline", - "health:check": "node --test scripts/*.test.mjs && pnpm docs:facts:check && pnpm ops:check && node scripts/dependency-release-governance.mjs check && node scripts/typescript-toolchain.mjs && node scripts/package-license-policy.mjs && node scripts/sync-service-rate-limit-policy.mjs --check && node scripts/sync-service-edge-policy.mjs --check && node scripts/repository-health.mjs", + "health:check": "node --test scripts/*.test.mjs && pnpm docs:facts:check && pnpm ops:check && node scripts/dependency-release-governance.mjs check && node scripts/browser-artifact-governance.mjs && node scripts/typescript-toolchain.mjs && node scripts/package-license-policy.mjs && node scripts/sync-service-rate-limit-policy.mjs --check && node scripts/sync-service-edge-policy.mjs --check && node scripts/repository-health.mjs", "health:report": "node scripts/repository-health.mjs --format markdown", "test:governance": "node scripts/test-governance.mjs", "build:property": "pnpm -r --filter '!@bsv/ts-stack' --filter '!docs-site' --filter '!example-paymail' run build", diff --git a/packages/helpers/amountinator/package.json b/packages/helpers/amountinator/package.json index 00bfb140e..058775d4a 100644 --- a/packages/helpers/amountinator/package.json +++ b/packages/helpers/amountinator/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/amountinator", - "version": "2.1.3", + "version": "2.1.4", "sideEffects": false, "engines": { "node": ">=22" @@ -58,14 +58,14 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/packages/helpers/bsv-wallet-helper/package.json b/packages/helpers/bsv-wallet-helper/package.json index 1fd7f88e1..c7307d11c 100644 --- a/packages/helpers/bsv-wallet-helper/package.json +++ b/packages/helpers/bsv-wallet-helper/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/wallet-helper", - "version": "0.1.5", + "version": "0.1.6", "sideEffects": false, "engines": { "node": ">=22" @@ -61,14 +61,14 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", - "tslib": "^2.8.1", - "oxlint": "^1.75.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", + "tslib": "^2.8.1", "typescript": "npm:@typescript/typescript6@6.0.2" }, "bugs": { diff --git a/packages/helpers/create-bsv-app/package.json b/packages/helpers/create-bsv-app/package.json index 42182567d..a95a50259 100644 --- a/packages/helpers/create-bsv-app/package.json +++ b/packages/helpers/create-bsv-app/package.json @@ -1,6 +1,6 @@ { "name": "create-bsv-app", - "version": "1.0.3", + "version": "1.0.4", "sideEffects": false, "description": "The unified CLI and starter catalogue for creating BSV applications", "type": "module", @@ -40,13 +40,13 @@ "devDependencies": { "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "publishConfig": { "access": "public" diff --git a/packages/helpers/did-client/package.json b/packages/helpers/did-client/package.json index 4e59ba6ec..cdfb0ab19 100644 --- a/packages/helpers/did-client/package.json +++ b/packages/helpers/did-client/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/did-client", - "version": "1.2.2", + "version": "1.2.3", "sideEffects": false, "engines": { "node": ">=22" @@ -63,17 +63,17 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", - "webpack": "^5.109.0", - "webpack-cli": "^7.2.1", - "oxlint": "^1.75.0" + "webpack": "^5.109.2", + "webpack-cli": "^7.2.2" }, "dependencies": { "@bsv/wallet-toolbox-client": "workspace:^" diff --git a/packages/helpers/did/package.json b/packages/helpers/did/package.json index 6b40ad8d8..8daee8e2d 100644 --- a/packages/helpers/did/package.json +++ b/packages/helpers/did/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/did", - "version": "0.2.3", + "version": "0.2.4", "sideEffects": false, "engines": { "node": ">=22" @@ -69,15 +69,15 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@types/qrcode": "^1.5.6", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "repository": { "type": "git", diff --git a/packages/helpers/fund-wallet/package.json b/packages/helpers/fund-wallet/package.json index acec7b4b9..610d84340 100644 --- a/packages/helpers/fund-wallet/package.json +++ b/packages/helpers/fund-wallet/package.json @@ -1,7 +1,7 @@ { "name": "@bsv/fund-wallet", "private": false, - "version": "1.4.2", + "version": "1.4.3", "sideEffects": false, "engines": { "node": ">=22" @@ -43,12 +43,12 @@ }, "devDependencies": { "@bsv/sdk": "workspace:^", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "@vitest/coverage-v8": "4.1.10", "fast-check": "^4.9.0", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", "vitest": "^4.1.10" }, diff --git a/packages/helpers/simple/package.json b/packages/helpers/simple/package.json index 3c9daf68d..c1aaa0bc6 100644 --- a/packages/helpers/simple/package.json +++ b/packages/helpers/simple/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/simple", - "version": "0.4.7", + "version": "0.4.8", "sideEffects": false, "engines": { "node": ">=22" @@ -96,14 +96,14 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "dotenv": "^17.4.2", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "files": [ "dist", diff --git a/packages/helpers/ts-templates/package.json b/packages/helpers/ts-templates/package.json index d1307be11..6361721b9 100644 --- a/packages/helpers/ts-templates/package.json +++ b/packages/helpers/ts-templates/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/templates", - "version": "1.9.4", + "version": "1.9.5", "sideEffects": false, "engines": { "node": ">=22" @@ -77,14 +77,14 @@ "@bsv/sdk": "workspace:^", "@bsv/wallet-toolbox": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { "@bsv/sdk": "^2.1.6" diff --git a/packages/messaging/authsocket-client/package.json b/packages/messaging/authsocket-client/package.json index 56bad6d32..b8adc6780 100644 --- a/packages/messaging/authsocket-client/package.json +++ b/packages/messaging/authsocket-client/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/authsocket-client", - "version": "2.1.2", + "version": "2.1.3", "sideEffects": false, "engines": { "node": ">=22" @@ -71,16 +71,16 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", - "webpack": "^5.109.0", - "webpack-cli": "^7.2.1" + "webpack": "^5.109.2", + "webpack-cli": "^7.2.2" }, "peerDependencies": { "@bsv/sdk": "^2.1.6" diff --git a/packages/messaging/authsocket/package.json b/packages/messaging/authsocket/package.json index f9f367410..ad027ead8 100644 --- a/packages/messaging/authsocket/package.json +++ b/packages/messaging/authsocket/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/authsocket", - "version": "2.1.3", + "version": "2.1.4", "sideEffects": false, "engines": { "node": ">=22" @@ -68,13 +68,13 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { diff --git a/packages/messaging/message-box-client/package.json b/packages/messaging/message-box-client/package.json index ca7dbae14..8208c8ba3 100644 --- a/packages/messaging/message-box-client/package.json +++ b/packages/messaging/message-box-client/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/message-box-client", - "version": "2.2.5", + "version": "2.2.6", "sideEffects": false, "engines": { "node": ">=22" @@ -72,17 +72,17 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "rimraf": "^6.1.3", "ts-jest": "^29.4.12", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", - "webpack": "^5.109.0", - "webpack-cli": "^7.2.1" + "webpack": "^5.109.2", + "webpack-cli": "^7.2.2" }, "dependencies": { "@bsv/authsocket-client": "workspace:^" diff --git a/packages/messaging/ts-paymail/docs/examples/package.json b/packages/messaging/ts-paymail/docs/examples/package.json index 874d602dd..5826ff19c 100644 --- a/packages/messaging/ts-paymail/docs/examples/package.json +++ b/packages/messaging/ts-paymail/docs/examples/package.json @@ -25,10 +25,10 @@ "jwt-simple": "^0.5.6" }, "devDependencies": { - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "oxlint": "^1.76.0", + "typescript": "npm:@typescript/typescript6@6.0.2" }, "repository": { "type": "git", diff --git a/packages/messaging/ts-paymail/package.json b/packages/messaging/ts-paymail/package.json index c6c0bfd68..5d0db0bb8 100644 --- a/packages/messaging/ts-paymail/package.json +++ b/packages/messaging/ts-paymail/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/paymail", - "version": "2.4.4", + "version": "2.4.5", "sideEffects": false, "engines": { "node": ">=22" @@ -195,16 +195,16 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@types/supertest": "^7.2.1", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "supertest": "^7.2.2", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { diff --git a/packages/middleware/402-pay/package.json b/packages/middleware/402-pay/package.json index df411d112..bfc575a36 100644 --- a/packages/middleware/402-pay/package.json +++ b/packages/middleware/402-pay/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/402-pay", - "version": "0.2.3", + "version": "0.2.4", "sideEffects": false, "engines": { "node": ">=22" @@ -93,12 +93,12 @@ }, "devDependencies": { "@bsv/sdk": "workspace:^", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "@vitest/coverage-v8": "4.1.10", "fast-check": "^4.9.0", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", "vitest": "^4.1.10" }, diff --git a/packages/middleware/auth-express-middleware/package.json b/packages/middleware/auth-express-middleware/package.json index 754426103..9224d515f 100644 --- a/packages/middleware/auth-express-middleware/package.json +++ b/packages/middleware/auth-express-middleware/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/auth-express-middleware", - "version": "2.1.4", + "version": "2.1.5", "sideEffects": false, "engines": { "node": ">=22" @@ -68,14 +68,14 @@ "@types/body-parser": "^1.19.6", "@types/jest": "^30.0.0", "@types/mime-types": "^3.0.1", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/packages/middleware/auth/package.json b/packages/middleware/auth/package.json index 0fa810c15..8383017da 100644 --- a/packages/middleware/auth/package.json +++ b/packages/middleware/auth/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/auth", - "version": "0.1.2", + "version": "0.1.3", "sideEffects": false, "engines": { "node": ">=22" @@ -59,14 +59,14 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", - "tslib": "^2.8.1", - "oxlint": "^1.75.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", + "tslib": "^2.8.1", "typescript": "npm:@typescript/typescript6@6.0.2" }, "bugs": { diff --git a/packages/middleware/payment-express-middleware/package.json b/packages/middleware/payment-express-middleware/package.json index e565b7623..6c899982d 100644 --- a/packages/middleware/payment-express-middleware/package.json +++ b/packages/middleware/payment-express-middleware/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/payment-express-middleware", - "version": "2.1.3", + "version": "2.1.4", "sideEffects": false, "engines": { "node": ">=22" @@ -64,14 +64,14 @@ "@bsv/sdk": "workspace:^", "@types/body-parser": "^1.19.6", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/packages/network/ts-p2p/package.json b/packages/network/ts-p2p/package.json index 6819d9d67..38921ffb6 100644 --- a/packages/network/ts-p2p/package.json +++ b/packages/network/ts-p2p/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/teranode-listener", - "version": "1.1.3", + "version": "1.1.4", "sideEffects": false, "publishConfig": { "access": "public" @@ -55,15 +55,15 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", - "@typescript/native": "npm:typescript@7.0.2", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "tsx": "^4.23.1", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "keywords": [ "teranode", diff --git a/packages/overlays/btms-backend/package.json b/packages/overlays/btms-backend/package.json index ee374f40a..97e60e63f 100644 --- a/packages/overlays/btms-backend/package.json +++ b/packages/overlays/btms-backend/package.json @@ -40,17 +40,17 @@ "devDependencies": { "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", "mongodb-memory-server": "^11.2.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { "@bsv/overlay": "workspace:^", diff --git a/packages/overlays/gasp-core/package.json b/packages/overlays/gasp-core/package.json index 02c42970c..cf50888e6 100644 --- a/packages/overlays/gasp-core/package.json +++ b/packages/overlays/gasp-core/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/gasp", - "version": "1.3.4", + "version": "1.3.5", "sideEffects": false, "engines": { "node": ">=22" @@ -78,14 +78,14 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { "@bsv/sdk": "^2.1.6" diff --git a/packages/overlays/overlay-discovery-services/package.json b/packages/overlays/overlay-discovery-services/package.json index 9d5d51569..71a095e8e 100644 --- a/packages/overlays/overlay-discovery-services/package.json +++ b/packages/overlays/overlay-discovery-services/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/overlay-discovery-services", - "version": "2.1.5", + "version": "2.1.6", "sideEffects": false, "engines": { "node": ">=22" @@ -77,16 +77,16 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", "mongodb-memory-server": "^11.2.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { "@bsv/overlay": "workspace:^", diff --git a/packages/overlays/overlay-express/package.json b/packages/overlays/overlay-express/package.json index f7d658b00..71bb97f58 100644 --- a/packages/overlays/overlay-express/package.json +++ b/packages/overlays/overlay-express/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/overlay-express", - "version": "2.4.8", + "version": "2.4.9", "sideEffects": false, "engines": { "node": ">=22" @@ -81,15 +81,15 @@ "@jest/globals": "^30.4.1", "@types/body-parser": "^1.19.6", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { "@bsv/auth-express-middleware": "workspace:^", diff --git a/packages/overlays/overlay-express/src/security/edgePolicy.test.ts b/packages/overlays/overlay-express/src/security/edgePolicy.test.ts index 09df066cf..1e169aee3 100644 --- a/packages/overlays/overlay-express/src/security/edgePolicy.test.ts +++ b/packages/overlays/overlay-express/src/security/edgePolicy.test.ts @@ -369,6 +369,33 @@ describe('shared service edge policy', () => { } }) + it('keeps CORS accessibility independent from CSP configuration', async () => { + process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:" + delete process.env.TEST_CORS_MODE + delete process.env.TEST_CORS_ALLOWED_ORIGINS + const app = express() + app.use(securityHeaders({ environmentPrefix: 'TEST' })) + app.use(corsPolicy({ + environmentPrefix: 'TEST', + methods: ['GET'] + })) + app.get('/', (_req, res) => res.json({ ok: true })) + const { server, origin } = await listen(app) + + try { + const response = await fetch(origin, { + headers: { Origin: 'https://unknown-deployed-app.example' } + }) + expect(response.status).toBe(200) + expect(response.headers.get('access-control-allow-origin')).toBe('*') + expect(response.headers.get('access-control-allow-credentials')).toBeNull() + expect(response.headers.get('content-security-policy')) + .toBe("default-src 'self'; connect-src https:") + } finally { + await close(server) + } + }) + it('does not trust a raw forwarded-proto header for HSTS', async () => { const app = express() app.use(securityHeaders()) diff --git a/packages/overlays/overlay/package.json b/packages/overlays/overlay/package.json index 47019d9e6..2ad0ad3ba 100644 --- a/packages/overlays/overlay/package.json +++ b/packages/overlays/overlay/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/overlay", - "version": "2.2.6", + "version": "2.2.7", "sideEffects": false, "engines": { "node": ">=22" @@ -50,6 +50,16 @@ "default": "./dist/cjs/src/storage/Storage.js" } }, + "./storage/*.ts": { + "import": { + "types": "./dist/types/src/storage/*.d.ts", + "default": "./dist/esm/src/storage/*.js" + }, + "require": { + "types": "./dist/cjs/src/storage/*.d.ts", + "default": "./dist/cjs/src/storage/*.js" + } + }, "./storage/*": { "import": { "types": "./dist/types/src/storage/*.d.ts", @@ -97,15 +107,15 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { "@bsv/gasp": "workspace:^", diff --git a/packages/overlays/topics/package.json b/packages/overlays/topics/package.json index a1179991c..0269ff707 100644 --- a/packages/overlays/topics/package.json +++ b/packages/overlays/topics/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/overlay-topics", - "version": "1.6.7", + "version": "1.6.8", "sideEffects": false, "engines": { "node": ">=22" @@ -45,14 +45,14 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", "mongodb-memory-server": "^11.2.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "license": "SEE LICENSE IN LICENSE.txt", "author": "BSV Blockchain Association", diff --git a/packages/sdk/package.json b/packages/sdk/package.json index e4e77824a..79641e8aa 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/sdk", - "version": "2.2.13", + "version": "2.2.14", "sideEffects": false, "engines": { "node": ">=22" @@ -51,6 +51,16 @@ "default": "./dist/cjs/src/primitives/index.js" } }, + "./primitives/*.ts": { + "import": { + "types": "./dist/types/src/primitives/*.d.ts", + "default": "./dist/esm/src/primitives/*.js" + }, + "require": { + "types": "./dist/cjs/src/primitives/*.d.ts", + "default": "./dist/cjs/src/primitives/*.js" + } + }, "./primitives/*": { "import": { "types": "./dist/types/src/primitives/*.d.ts", @@ -71,6 +81,16 @@ "default": "./dist/cjs/src/script/index.js" } }, + "./script/*.ts": { + "import": { + "types": "./dist/types/src/script/*.d.ts", + "default": "./dist/esm/src/script/*.js" + }, + "require": { + "types": "./dist/cjs/src/script/*.d.ts", + "default": "./dist/cjs/src/script/*.js" + } + }, "./script/*": { "import": { "types": "./dist/types/src/script/*.d.ts", @@ -91,6 +111,16 @@ "default": "./dist/cjs/src/script/templates/index.js" } }, + "./script/templates/*.ts": { + "import": { + "types": "./dist/types/src/script/templates/*.d.ts", + "default": "./dist/esm/src/script/templates/*.js" + }, + "require": { + "types": "./dist/cjs/src/script/templates/*.d.ts", + "default": "./dist/cjs/src/script/templates/*.js" + } + }, "./script/templates/*": { "import": { "types": "./dist/types/src/script/templates/*.d.ts", @@ -111,6 +141,16 @@ "default": "./dist/cjs/src/transaction/index.js" } }, + "./transaction/*.ts": { + "import": { + "types": "./dist/types/src/transaction/*.d.ts", + "default": "./dist/esm/src/transaction/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/*.d.ts", + "default": "./dist/cjs/src/transaction/*.js" + } + }, "./transaction/*": { "import": { "types": "./dist/types/src/transaction/*.d.ts", @@ -131,6 +171,16 @@ "default": "./dist/cjs/src/transaction/broadcasters/index.js" } }, + "./transaction/broadcaster/*.ts": { + "import": { + "types": "./dist/types/src/transaction/broadcasters/*.d.ts", + "default": "./dist/esm/src/transaction/broadcasters/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/broadcasters/*.d.ts", + "default": "./dist/cjs/src/transaction/broadcasters/*.js" + } + }, "./transaction/broadcaster/*": { "import": { "types": "./dist/types/src/transaction/broadcasters/*.d.ts", @@ -151,6 +201,16 @@ "default": "./dist/cjs/src/transaction/broadcasters/index.js" } }, + "./transaction/broadcasters/*.ts": { + "import": { + "types": "./dist/types/src/transaction/broadcasters/*.d.ts", + "default": "./dist/esm/src/transaction/broadcasters/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/broadcasters/*.d.ts", + "default": "./dist/cjs/src/transaction/broadcasters/*.js" + } + }, "./transaction/broadcasters/*": { "import": { "types": "./dist/types/src/transaction/broadcasters/*.d.ts", @@ -171,6 +231,16 @@ "default": "./dist/cjs/src/transaction/chaintrackers/index.js" } }, + "./transaction/chaintrackers/*.ts": { + "import": { + "types": "./dist/types/src/transaction/chaintrackers/*.d.ts", + "default": "./dist/esm/src/transaction/chaintrackers/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/chaintrackers/*.d.ts", + "default": "./dist/cjs/src/transaction/chaintrackers/*.js" + } + }, "./transaction/chaintrackers/*": { "import": { "types": "./dist/types/src/transaction/chaintrackers/*.d.ts", @@ -191,6 +261,16 @@ "default": "./dist/cjs/src/transaction/http/index.js" } }, + "./transaction/http/*.ts": { + "import": { + "types": "./dist/types/src/transaction/http/*.d.ts", + "default": "./dist/esm/src/transaction/http/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/http/*.d.ts", + "default": "./dist/cjs/src/transaction/http/*.js" + } + }, "./transaction/http/*": { "import": { "types": "./dist/types/src/transaction/http/*.d.ts", @@ -211,6 +291,16 @@ "default": "./dist/cjs/src/transaction/fee-models/index.js" } }, + "./transaction/fee-model/*.ts": { + "import": { + "types": "./dist/types/src/transaction/fee-models/*.d.ts", + "default": "./dist/esm/src/transaction/fee-models/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/fee-models/*.d.ts", + "default": "./dist/cjs/src/transaction/fee-models/*.js" + } + }, "./transaction/fee-model/*": { "import": { "types": "./dist/types/src/transaction/fee-models/*.d.ts", @@ -231,6 +321,16 @@ "default": "./dist/cjs/src/transaction/fee-models/index.js" } }, + "./transaction/fee-models/*.ts": { + "import": { + "types": "./dist/types/src/transaction/fee-models/*.d.ts", + "default": "./dist/esm/src/transaction/fee-models/*.js" + }, + "require": { + "types": "./dist/cjs/src/transaction/fee-models/*.d.ts", + "default": "./dist/cjs/src/transaction/fee-models/*.js" + } + }, "./transaction/fee-models/*": { "import": { "types": "./dist/types/src/transaction/fee-models/*.d.ts", @@ -251,6 +351,16 @@ "default": "./dist/cjs/src/messages/index.js" } }, + "./messages/*.ts": { + "import": { + "types": "./dist/types/src/messages/*.d.ts", + "default": "./dist/esm/src/messages/*.js" + }, + "require": { + "types": "./dist/cjs/src/messages/*.d.ts", + "default": "./dist/cjs/src/messages/*.js" + } + }, "./messages/*": { "import": { "types": "./dist/types/src/messages/*.d.ts", @@ -271,6 +381,16 @@ "default": "./dist/cjs/src/compat/index.js" } }, + "./compat/*.ts": { + "import": { + "types": "./dist/types/src/compat/*.d.ts", + "default": "./dist/esm/src/compat/*.js" + }, + "require": { + "types": "./dist/cjs/src/compat/*.d.ts", + "default": "./dist/cjs/src/compat/*.js" + } + }, "./compat/*": { "import": { "types": "./dist/types/src/compat/*.d.ts", @@ -291,6 +411,16 @@ "default": "./dist/cjs/src/totp/index.js" } }, + "./totp/*.ts": { + "import": { + "types": "./dist/types/src/totp/*.d.ts", + "default": "./dist/esm/src/totp/*.js" + }, + "require": { + "types": "./dist/cjs/src/totp/*.d.ts", + "default": "./dist/cjs/src/totp/*.js" + } + }, "./totp/*": { "import": { "types": "./dist/types/src/totp/*.d.ts", @@ -311,6 +441,16 @@ "default": "./dist/cjs/src/wallet/index.js" } }, + "./wallet/*.ts": { + "import": { + "types": "./dist/types/src/wallet/*.d.ts", + "default": "./dist/esm/src/wallet/*.js" + }, + "require": { + "types": "./dist/cjs/src/wallet/*.d.ts", + "default": "./dist/cjs/src/wallet/*.js" + } + }, "./wallet/*": { "import": { "types": "./dist/types/src/wallet/*.d.ts", @@ -331,6 +471,16 @@ "default": "./dist/cjs/src/wallet/substrates/index.js" } }, + "./wallet/substrates/*.ts": { + "import": { + "types": "./dist/types/src/wallet/substrates/*.d.ts", + "default": "./dist/esm/src/wallet/substrates/*.js" + }, + "require": { + "types": "./dist/cjs/src/wallet/substrates/*.d.ts", + "default": "./dist/cjs/src/wallet/substrates/*.js" + } + }, "./wallet/substrates/*": { "import": { "types": "./dist/types/src/wallet/substrates/*.d.ts", @@ -351,6 +501,16 @@ "default": "./dist/cjs/src/auth/index.js" } }, + "./auth/*.ts": { + "import": { + "types": "./dist/types/src/auth/*.d.ts", + "default": "./dist/esm/src/auth/*.js" + }, + "require": { + "types": "./dist/cjs/src/auth/*.d.ts", + "default": "./dist/cjs/src/auth/*.js" + } + }, "./auth/*": { "import": { "types": "./dist/types/src/auth/*.d.ts", @@ -371,6 +531,16 @@ "default": "./dist/cjs/src/auth/certificates/index.js" } }, + "./auth/certificate/*.ts": { + "import": { + "types": "./dist/types/src/auth/certificates/*.d.ts", + "default": "./dist/esm/src/auth/certificates/*.js" + }, + "require": { + "types": "./dist/cjs/src/auth/certificates/*.d.ts", + "default": "./dist/cjs/src/auth/certificates/*.js" + } + }, "./auth/certificate/*": { "import": { "types": "./dist/types/src/auth/certificates/*.d.ts", @@ -391,6 +561,16 @@ "default": "./dist/cjs/src/auth/certificates/index.js" } }, + "./auth/certificates/*.ts": { + "import": { + "types": "./dist/types/src/auth/certificates/*.d.ts", + "default": "./dist/esm/src/auth/certificates/*.js" + }, + "require": { + "types": "./dist/cjs/src/auth/certificates/*.d.ts", + "default": "./dist/cjs/src/auth/certificates/*.js" + } + }, "./auth/certificates/*": { "import": { "types": "./dist/types/src/auth/certificates/*.d.ts", @@ -411,6 +591,16 @@ "default": "./dist/cjs/src/overlay-tools/index.js" } }, + "./overlay-tools/*.ts": { + "import": { + "types": "./dist/types/src/overlay-tools/*.d.ts", + "default": "./dist/esm/src/overlay-tools/*.js" + }, + "require": { + "types": "./dist/cjs/src/overlay-tools/*.d.ts", + "default": "./dist/cjs/src/overlay-tools/*.js" + } + }, "./overlay-tools/*": { "import": { "types": "./dist/types/src/overlay-tools/*.d.ts", @@ -431,6 +621,16 @@ "default": "./dist/cjs/src/telemetry/index.js" } }, + "./telemetry/*.ts": { + "import": { + "types": "./dist/types/src/telemetry/*.d.ts", + "default": "./dist/esm/src/telemetry/*.js" + }, + "require": { + "types": "./dist/cjs/src/telemetry/*.d.ts", + "default": "./dist/cjs/src/telemetry/*.js" + } + }, "./telemetry/*": { "import": { "types": "./dist/types/src/telemetry/*.d.ts", @@ -451,6 +651,16 @@ "default": "./dist/cjs/src/storage/index.js" } }, + "./storage/*.ts": { + "import": { + "types": "./dist/types/src/storage/*.d.ts", + "default": "./dist/esm/src/storage/*.js" + }, + "require": { + "types": "./dist/cjs/src/storage/*.d.ts", + "default": "./dist/cjs/src/storage/*.js" + } + }, "./storage/*": { "import": { "types": "./dist/types/src/storage/*.d.ts", @@ -471,6 +681,16 @@ "default": "./dist/cjs/src/kvstore/index.js" } }, + "./kvstore/*.ts": { + "import": { + "types": "./dist/types/src/kvstore/*.d.ts", + "default": "./dist/esm/src/kvstore/*.js" + }, + "require": { + "types": "./dist/cjs/src/kvstore/*.d.ts", + "default": "./dist/cjs/src/kvstore/*.js" + } + }, "./kvstore/*": { "import": { "types": "./dist/types/src/kvstore/*.d.ts", @@ -491,6 +711,16 @@ "default": "./dist/cjs/src/remittance/index.js" } }, + "./remittance/*.ts": { + "import": { + "types": "./dist/types/src/remittance/*.d.ts", + "default": "./dist/esm/src/remittance/*.js" + }, + "require": { + "types": "./dist/cjs/src/remittance/*.d.ts", + "default": "./dist/cjs/src/remittance/*.js" + } + }, "./remittance/*": { "import": { "types": "./dist/types/src/remittance/*.d.ts", @@ -547,20 +777,20 @@ "homepage": "https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk#readme", "devDependencies": { "@jest/globals": "^30.4.1", - "@rspack/cli": "^2.1.5", - "@rspack/core": "^2.1.5", + "@rspack/cli": "^2.1.7", + "@rspack/core": "^2.1.7", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts-loader": "^9.6.2", "ts2md": "^0.2.8", "tsconfig-to-dual-package": "^1.2.0", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "typesVersions": { "*": { diff --git a/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts b/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts index 475f6e803..f7f57f960 100644 --- a/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts +++ b/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts @@ -83,22 +83,15 @@ describe('SatoshisPerKilobyte', () => { // computeFee – happy path // ------------------------------------------------------------------------- describe('computeFee', () => { - it('returns 0 for empty transaction with value 0', async () => { - const model = new SatoshisPerKilobyte(0) + it.each([ + { rate: 0, expected: 0, scenario: 'zero rate' }, + { rate: 1, expected: 1, scenario: 'fractional fee rounded up' }, + { rate: 1000, expected: 10, scenario: 'one satoshi per byte' } + ])('computes the empty-transaction fee for $scenario', async ({ rate, expected }) => { + const model = new SatoshisPerKilobyte(rate) const tx = makeTx([], []) - // size = 4 (version) + 1 (input count varint) + 1 (output count varint) + 4 (locktime) = 10 - // fee = ceil(10/1000 * 0) = 0 - const fee = await model.computeFee(tx) - expect(fee).toBe(0) - }) - - it('computes correct fee for an empty transaction (no inputs, no outputs)', async () => { - const model = new SatoshisPerKilobyte(1000) // 1 sat/byte - const tx = makeTx([], []) - // size = 4 + 1 + 1 + 4 = 10 bytes - // fee = ceil(10/1000 * 1000) = ceil(10) = 10 - const fee = await model.computeFee(tx) - expect(fee).toBe(10) + // Empty size = 4-byte version + two 1-byte counts + 4-byte lock time. + expect(await model.computeFee(tx)).toBe(expected) }) it('computes fee for one input with an unlocking script', async () => { @@ -140,15 +133,6 @@ describe('SatoshisPerKilobyte', () => { expect(fee).toBe(Math.ceil((192 / 1000) * 1000)) }) - it('uses Math.ceil to round up fractional fees', async () => { - // Choose a value where the result is not a whole satoshi - const model = new SatoshisPerKilobyte(1) // very small rate - const tx = makeTx([], []) - // size = 10 bytes → fee = ceil(10/1000 * 1) = ceil(0.01) = 1 - const fee = await model.computeFee(tx) - expect(fee).toBe(1) - }) - it('fee scales proportionally with sat/kb rate', async () => { const tx = makeTx([], []) const fee100 = await new SatoshisPerKilobyte(100).computeFee(tx) diff --git a/packages/verifast/package.json b/packages/verifast/package.json index 6f061e6c8..0da070feb 100644 --- a/packages/verifast/package.json +++ b/packages/verifast/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/verifast", - "version": "0.3.3", + "version": "0.3.4", "sideEffects": false, "publishConfig": { "access": "public" @@ -86,20 +86,20 @@ "devDependencies": { "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", - "@rspack/cli": "^2.1.5", - "@rspack/core": "^2.1.5", + "@rspack/cli": "^2.1.7", + "@rspack/core": "^2.1.7", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "puppeteer-core": "^25.4.0", "ts-jest": "^29.4.12", "ts-loader": "^9.6.2", "tsx": "^4.23.1", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", - "vite": "^8.1.5", - "oxlint": "^1.75.0" + "vite": "^8.1.5" }, "peerDependencies": { "@bsv/sdk": "^2.1.8" diff --git a/packages/wallet/btms-permission-module/package.json b/packages/wallet/btms-permission-module/package.json index ce5bf287e..0fcb15a46 100644 --- a/packages/wallet/btms-permission-module/package.json +++ b/packages/wallet/btms-permission-module/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/btms-permission-module", - "version": "1.1.2", + "version": "1.1.3", "sideEffects": false, "engines": { "node": ">=22" @@ -59,13 +59,13 @@ "@bsv/wallet-toolbox-client": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "repository": { diff --git a/packages/wallet/btms/package.json b/packages/wallet/btms/package.json index 0d1b07e9b..dd48404ea 100644 --- a/packages/wallet/btms/package.json +++ b/packages/wallet/btms/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/btms", - "version": "1.1.3", + "version": "1.1.4", "sideEffects": false, "engines": { "node": ">=22" @@ -62,15 +62,15 @@ "@bsv/sdk": "workspace:^", "@jest/globals": "^30.4.1", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "fast-check": "^4.9.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "ts-jest": "^29.4.12", "ts2md": "^0.2.8", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { "@bsv/sdk": "^2.1.6" diff --git a/packages/wallet/ts-wallet-relay/package.json b/packages/wallet/ts-wallet-relay/package.json index b3f59d8a9..576a6d5a7 100644 --- a/packages/wallet/ts-wallet-relay/package.json +++ b/packages/wallet/ts-wallet-relay/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/wallet-relay", - "version": "0.3.2", + "version": "0.3.3", "sideEffects": false, "engines": { "node": ">=22" @@ -103,22 +103,22 @@ "@testing-library/jest-dom": "^7.0.0", "@testing-library/react": "^16.3.2", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@types/qrcode": "^1.5.6", "@types/react": "^19.2.17", "@types/ws": "^8.18.1", + "@typescript/native": "npm:typescript@7.0.2", + "esbuild": "^0.28.1", "express": "^5.2.1", "fast-check": "^4.9.0", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", + "oxlint": "^1.76.0", "qrcode": "^1.5.4", "react": "^19.2.8", "react-dom": "^19.2.8", "ts-jest": "^29.4.12", - "esbuild": "^0.28.1", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { "@types/express": "^5.0.6", diff --git a/packages/wallet/wallet-toolbox-examples/package.json b/packages/wallet/wallet-toolbox-examples/package.json index 15676fc8a..64dbbfa7a 100644 --- a/packages/wallet/wallet-toolbox-examples/package.json +++ b/packages/wallet/wallet-toolbox-examples/package.json @@ -36,21 +36,21 @@ "devDependencies": { "@types/fs-extra": "^11.0.4", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@types/node-fetch": "^2.6.13", + "@typescript/native": "npm:typescript@7.0.2", "chalk": "^5.6.2", "dotenv": "^17.4.2", "fake-indexeddb": "^6.2.5", "fs-extra": "^11.4.0", "jest": "^30.4.2", "jest-diff": "^30.4.1", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "prettier": "^3.9.6", "sqlite3": "^6.0.1", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "ts2md": "^0.2.8", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2" }, "dependencies": { diff --git a/packages/wallet/wallet-toolbox/client/package.json b/packages/wallet/wallet-toolbox/client/package.json index 21e2e215a..4ad1af44c 100644 --- a/packages/wallet/wallet-toolbox/client/package.json +++ b/packages/wallet/wallet-toolbox/client/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/wallet-toolbox-client", - "version": "2.4.18", + "version": "2.4.19", "type": "module", "sideEffects": false, "engines": { @@ -78,12 +78,12 @@ }, "devDependencies": { "@bsv/sdk": "workspace:^", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "@vitest/coverage-v8": "4.1.10", - "@types/node": "^26.1.1", "esbuild": "0.28.1", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", "vite": "8.1.5", "vitest": "^4.1.10" diff --git a/packages/wallet/wallet-toolbox/mobile/package.json b/packages/wallet/wallet-toolbox/mobile/package.json index 04f1b1a99..ebe50033b 100644 --- a/packages/wallet/wallet-toolbox/mobile/package.json +++ b/packages/wallet/wallet-toolbox/mobile/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/wallet-toolbox-mobile", - "version": "2.4.18", + "version": "2.4.19", "type": "module", "sideEffects": false, "engines": { @@ -81,14 +81,14 @@ "@babel/core": "7.29.7", "@bsv/sdk": "workspace:^", "@react-native/babel-preset": "0.86.2", + "@types/node": "^26.1.2", + "@typescript/native": "npm:typescript@7.0.2", "@vitest/coverage-v8": "4.1.10", - "@types/node": "^26.1.1", "hermes-compiler": "260318099.0.1", "metro": "0.87.0", "metro-config": "0.87.0", - "oxlint": "^1.75.0", + "oxlint": "^1.76.0", "tsdown": "0.22.14", - "@typescript/native": "npm:typescript@7.0.2", "typescript": "npm:@typescript/typescript6@6.0.2", "vitest": "^4.1.10" } diff --git a/packages/wallet/wallet-toolbox/package.json b/packages/wallet/wallet-toolbox/package.json index e0dcc9308..fe5134867 100644 --- a/packages/wallet/wallet-toolbox/package.json +++ b/packages/wallet/wallet-toolbox/package.json @@ -1,6 +1,6 @@ { "name": "@bsv/wallet-toolbox", - "version": "2.4.18", + "version": "2.4.19", "sideEffects": false, "type": "commonjs", "engines": { @@ -77,7 +77,7 @@ "@bsv/auth-express-middleware": "workspace:^", "@bsv/payment-express-middleware": "workspace:^", "@types/express": "^5.0.6", - "better-sqlite3": "^13.0.1", + "better-sqlite3": "^13.0.2", "body-parser": "^2.3.0", "dotenv": "^17.4.2", "express": "^5.2.1", @@ -95,20 +95,20 @@ "@types/cors": "^2.8.19", "@types/fs-extra": "^11.0.4", "@types/jest": "^30.0.0", - "@types/node": "^26.1.1", + "@types/node": "^26.1.2", "@types/ws": "^8.18.1", + "@typescript/native": "npm:typescript@7.0.2", "cors": "^2.8.6", "fake-indexeddb": "^6.2.5", "fast-check": "^4.9.0", "fs-extra": "^11.4.0", "jest": "^30.4.2", + "oxlint": "^1.76.0", "picocolors": "^1.1.1", "ts-jest": "^29.4.12", "ts-node": "^10.9.2", "ts2md": "^0.2.8", - "@typescript/native": "npm:typescript@7.0.2", - "typescript": "npm:@typescript/typescript6@6.0.2", - "oxlint": "^1.75.0" + "typescript": "npm:@typescript/typescript6@6.0.2" }, "peerDependencies": { "@bsv/sdk": "^2.1.8" diff --git a/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts b/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts index 34926a9bf..14166968f 100644 --- a/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +++ b/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts @@ -15,13 +15,20 @@ import { describe('generateChange tests', () => { jest.setTimeout(99999999) - test('logs only a redacted parameter summary when diagnostics are enabled', async () => { + test.each([ + { randomVals: [...randomValsUsed1], randomValsCount: randomValsUsed1.length }, + { randomVals: undefined, randomValsCount: 0 } + ])('logs only a redacted parameter summary when diagnostics are enabled', async ({ + randomVals, + randomValsCount + }) => { const params: GenerateChangeSdkParams = { ...defParams, fixedOutputs: [ { satoshis: 1234, lockingScriptLength: 1739091 }, { satoshis: 2, lockingScriptLength: 25 } ], + randomVals, noLogging: false } const { allocateChangeInput, releaseChangeInput } = generateChangeSdkMakeStorage([...defAvailableChange()]) @@ -36,10 +43,11 @@ describe('generateChange tests', () => { targetNetCount: undefined, changeInitialSatoshis: 1000, changeFirstSatoshis: 285, - randomValsCount: params.randomVals?.length + randomValsCount }) expect(JSON.stringify(log.mock.calls)).not.toContain('lockingScriptLength') - expect(JSON.stringify(log.mock.calls)).not.toContain(JSON.stringify(params.randomVals)) + expect(JSON.stringify(log.mock.calls)) + .not.toContain(JSON.stringify(params.randomVals) ?? 'undefined') } finally { log.mockRestore() } diff --git a/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts b/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts index 09df066cf..1e169aee3 100644 --- a/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts +++ b/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts @@ -369,6 +369,33 @@ describe('shared service edge policy', () => { } }) + it('keeps CORS accessibility independent from CSP configuration', async () => { + process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:" + delete process.env.TEST_CORS_MODE + delete process.env.TEST_CORS_ALLOWED_ORIGINS + const app = express() + app.use(securityHeaders({ environmentPrefix: 'TEST' })) + app.use(corsPolicy({ + environmentPrefix: 'TEST', + methods: ['GET'] + })) + app.get('/', (_req, res) => res.json({ ok: true })) + const { server, origin } = await listen(app) + + try { + const response = await fetch(origin, { + headers: { Origin: 'https://unknown-deployed-app.example' } + }) + expect(response.status).toBe(200) + expect(response.headers.get('access-control-allow-origin')).toBe('*') + expect(response.headers.get('access-control-allow-credentials')).toBeNull() + expect(response.headers.get('content-security-policy')) + .toBe("default-src 'self'; connect-src https:") + } finally { + await close(server) + } + }) + it('does not trust a raw forwarded-proto header for HSTS', async () => { const app = express() app.use(securityHeaders()) diff --git a/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts b/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts index a70a23a63..a3b4aeafb 100644 --- a/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts +++ b/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts @@ -145,7 +145,7 @@ export async function createOneSatTestOutput( let noSendChange: OutpointString[] | undefined = undefined let txids: string[] = [] - let vargs: Validation.ValidCreateActionArgs + let isNoSend = false for (let i = 0; i < howMany; i++) { const args: CreateActionArgs = { @@ -167,7 +167,8 @@ export async function createOneSatTestOutput( noSendChange } } - Validation.validateCreateActionArgs(args) + const validatedArgs = Validation.validateCreateActionArgs(args) + isNoSend = validatedArgs.isNoSend car = await setup.wallet.createAction(args) expect(car.txid).toMatch(/^[0-9a-f]{64}$/) txids.push(car.txid!) @@ -176,7 +177,7 @@ export async function createOneSatTestOutput( const req = await EntityProvenTxReq.fromStorageTxid(setup.activeStorage, car.txid!) expect(req?.history.notes).toBeDefined() if (req?.history.notes) { - if (vargs.isNoSend) { + if (isNoSend) { expect(req.status === 'nosend').toBe(true) expect(req.history.notes.length).toBe(1) const n = req.history.notes[0] @@ -190,7 +191,7 @@ export async function createOneSatTestOutput( } } - if (vargs!.isNoSend) { + if (isNoSend) { // Create final sending transaction const args: CreateActionArgs = { description: 'send batch', @@ -199,7 +200,7 @@ export async function createOneSatTestOutput( sendWith: txids } } - vargs = Validation.validateCreateActionArgs(args) + Validation.validateCreateActionArgs(args) car = await setup.wallet.createAction(args) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f25fe4e2..610b5a6a8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,13 +17,13 @@ importers: version: 0.18.5 '@stryker-mutator/core': specifier: 9.6.1 - version: 9.6.1(@types/node@26.1.1) + version: 9.6.1(@types/node@26.1.2) '@stryker-mutator/jest-runner': specifier: 9.6.1 - version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1)) + version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2)) '@stryker-mutator/vitest-runner': specifier: 9.6.1 - version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))(vitest@4.1.10) + version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))(vitest@4.1.10) esbuild: specifier: 0.28.1 version: 0.28.1 @@ -41,7 +41,7 @@ importers: version: 0.3.22 vite: specifier: 8.1.5 - version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) yaml: specifier: ^2.9.0 version: 2.9.0 @@ -56,8 +56,8 @@ importers: specifier: npm:typescript@7.0.2 version: typescript@7.0.2 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 prettier: specifier: ^3.9.6 version: 3.9.6 @@ -74,23 +74,23 @@ importers: specifier: ^30.4.1 version: 30.4.1 '@types/node': - specifier: ^24.13.3 - version: 24.13.3 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@24.13.3) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 prettier: specifier: ^3.9.6 version: 3.9.6 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@24.13.3)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' @@ -127,7 +127,7 @@ importers: version: typescript@7.0.2 '@vitejs/plugin-react': specifier: ^6.0.4 - version: 6.0.4(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)) + version: 6.0.4(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)) ajv: specifier: ^8.20.0 version: 8.20.0 @@ -141,8 +141,8 @@ importers: specifier: ^11.16.0 version: 11.16.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 pagefind: specifier: ^1.5.2 version: 1.5.2 @@ -172,7 +172,7 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: ^8.1.5 - version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages/helpers/amountinator: dependencies: @@ -187,8 +187,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -197,16 +197,16 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2) + version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -230,8 +230,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -240,13 +240,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -270,8 +270,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -280,13 +280,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' @@ -304,8 +304,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@types/qrcode': specifier: ^1.5.6 version: 1.5.6 @@ -317,13 +317,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -347,23 +347,23 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-environment-jsdom: specifier: ^30.4.1 version: 30.4.1 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -374,11 +374,11 @@ importers: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' webpack: - specifier: ^5.109.0 - version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1) + specifier: ^5.109.2 + version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2) webpack-cli: - specifier: ^7.2.1 - version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0) + specifier: ^7.2.2 + version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2) packages/helpers/fund-wallet: dependencies: @@ -393,8 +393,8 @@ importers: specifier: workspace:^ version: link:../../sdk '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -405,8 +405,8 @@ importers: specifier: ^4.9.0 version: 4.9.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -415,7 +415,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: ^4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages/helpers/simple: dependencies: @@ -436,8 +436,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -446,13 +446,13 @@ importers: version: 17.4.2 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -472,8 +472,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -482,13 +482,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -509,20 +509,20 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -546,20 +546,20 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -570,11 +570,11 @@ importers: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' webpack: - specifier: ^5.109.0 - version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1) + specifier: ^5.109.2 + version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2) webpack-cli: - specifier: ^7.2.1 - version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0) + specifier: ^7.2.2 + version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2) packages/messaging/message-box-client: dependencies: @@ -589,8 +589,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -599,16 +599,16 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 rimraf: specifier: ^6.1.3 version: 6.1.3 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -616,11 +616,11 @@ importers: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' webpack: - specifier: ^5.109.0 - version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1) + specifier: ^5.109.2 + version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2) webpack-cli: - specifier: ^7.2.1 - version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0) + specifier: ^7.2.2 + version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2) packages/messaging/ts-paymail: dependencies: @@ -647,8 +647,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@types/supertest': specifier: ^7.2.1 version: 7.2.1 @@ -660,16 +660,16 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 supertest: specifier: ^7.2.2 version: 7.2.2 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -696,14 +696,14 @@ importers: version: 0.5.6 devDependencies: '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' @@ -714,8 +714,8 @@ importers: specifier: workspace:^ version: link:../../sdk '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -726,8 +726,8 @@ importers: specifier: ^4.9.0 version: 4.9.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -736,7 +736,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: ^4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages/middleware/auth: devDependencies: @@ -750,8 +750,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -760,13 +760,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -802,8 +802,8 @@ importers: specifier: ^3.0.1 version: 3.0.1 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -812,13 +812,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -851,8 +851,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -861,13 +861,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -936,8 +936,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -946,13 +946,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsx: specifier: ^4.23.1 version: 4.23.1 @@ -979,8 +979,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -989,19 +989,19 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) mongodb-memory-server: specifier: ^11.2.0 version: 11.2.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2) + version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1028,13 +1028,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1052,7 +1052,7 @@ importers: version: link:../gasp-core knex: specifier: ^3.3.0 - version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1)) + version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2)) devDependencies: '@bsv/sdk': specifier: workspace:^ @@ -1061,8 +1061,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1071,13 +1071,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1110,8 +1110,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1120,16 +1120,16 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) mongodb-memory-server: specifier: ^11.2.0 version: 11.2.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1168,7 +1168,7 @@ importers: version: 5.2.1 knex: specifier: ^3.3.0 - version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1)) + version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2)) mongodb: specifier: ^7.5.0 version: 7.5.0 @@ -1189,8 +1189,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1199,13 +1199,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1238,8 +1238,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1248,16 +1248,16 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) mongodb-memory-server: specifier: ^11.2.0 version: 11.2.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' @@ -1268,17 +1268,17 @@ importers: specifier: ^30.4.1 version: 30.4.1 '@rspack/cli': - specifier: ^2.1.5 - version: 2.1.5(@rspack/core@2.1.5) + specifier: ^2.1.7 + version: 2.1.7(@rspack/core@2.1.7) '@rspack/core': - specifier: ^2.1.5 - version: 2.1.5 + specifier: ^2.1.7 + version: 2.1.7 '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1287,19 +1287,19 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-environment-jsdom: specifier: ^30.4.1 version: 30.4.1 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-loader: specifier: ^9.6.2 - version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1)) + version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1)) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1319,17 +1319,17 @@ importers: specifier: ^30.4.1 version: 30.4.1 '@rspack/cli': - specifier: ^2.1.5 - version: 2.1.5(@rspack/core@2.1.5) + specifier: ^2.1.7 + version: 2.1.7(@rspack/core@2.1.7) '@rspack/core': - specifier: ^2.1.5 - version: 2.1.5 + specifier: ^2.1.7 + version: 2.1.7 '@types/jest': specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1338,19 +1338,19 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 puppeteer-core: specifier: ^25.4.0 version: 25.4.0(yauzl@3.4.0) ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-loader: specifier: ^9.6.2 - version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1)) + version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1)) tsx: specifier: ^4.23.1 version: 4.23.1 @@ -1359,7 +1359,7 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: ^8.1.5 - version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages/wallet/btms: devDependencies: @@ -1373,8 +1373,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1383,13 +1383,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1418,8 +1418,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1428,13 +1428,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -1467,8 +1467,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@types/qrcode': specifier: ^1.5.6 version: 1.5.6 @@ -1492,13 +1492,13 @@ importers: version: 4.9.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-environment-jsdom: specifier: ^30.4.1 version: 30.4.1 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 qrcode: specifier: ^1.5.4 version: 1.5.4 @@ -1510,7 +1510,7 @@ importers: version: 19.2.8(react@19.2.8) ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) typescript: specifier: npm:@typescript/typescript6@6.0.2 version: '@typescript/typescript6@6.0.2' @@ -1527,8 +1527,8 @@ importers: specifier: ^5.0.6 version: 5.0.6 better-sqlite3: - specifier: ^13.0.1 - version: 13.0.1 + specifier: ^13.0.2 + version: 13.0.2 body-parser: specifier: ^2.3.0 version: 2.3.0 @@ -1549,10 +1549,10 @@ importers: version: 8.0.3 knex: specifier: ^3.3.0 - version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1)) + version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2)) mysql2: specifier: ^3.23.2 - version: 3.23.2(@types/node@26.1.1) + version: 3.23.2(@types/node@26.1.2) ws: specifier: ^8.21.1 version: 8.21.1 @@ -1576,8 +1576,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@types/ws': specifier: ^8.18.1 version: 8.18.1 @@ -1598,19 +1598,19 @@ importers: version: 11.4.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 picocolors: specifier: ^1.1.1 version: 1.1.1 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2) + version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1634,8 +1634,8 @@ importers: specifier: ^30.0.0 version: 30.0.0 '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@types/node-fetch': specifier: ^2.6.13 version: 2.6.13 @@ -1656,13 +1656,13 @@ importers: version: 11.4.0 jest: specifier: ^30.4.2 - version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-diff: specifier: ^30.4.1 version: 30.4.1 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 prettier: specifier: ^3.9.6 version: 3.9.6 @@ -1671,10 +1671,10 @@ importers: version: 6.0.1 ts-jest: specifier: ^29.4.12 - version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))) + version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))) ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2) + version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2) ts2md: specifier: ^0.2.8 version: 0.2.8 @@ -1695,8 +1695,8 @@ importers: specifier: workspace:^ version: link:../../../sdk '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1707,8 +1707,8 @@ importers: specifier: 0.28.1 version: 0.28.1 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -1717,10 +1717,10 @@ importers: version: '@typescript/typescript6@6.0.2' vite: specifier: 8.1.5 - version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) vitest: specifier: ^4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages/wallet/wallet-toolbox/mobile: dependencies: @@ -1744,8 +1744,8 @@ importers: specifier: 0.86.2 version: 0.86.2(@babel/core@7.29.7) '@types/node': - specifier: ^26.1.1 - version: 26.1.1 + specifier: ^26.1.2 + version: 26.1.2 '@typescript/native': specifier: npm:typescript@7.0.2 version: typescript@7.0.2 @@ -1762,8 +1762,8 @@ importers: specifier: 0.87.0 version: 0.87.0 oxlint: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 tsdown: specifier: 0.22.14 version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1) @@ -1772,7 +1772,7 @@ importers: version: '@typescript/typescript6@6.0.2' vitest: specifier: ^4.1.10 - version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) packages: @@ -2909,97 +2909,48 @@ packages: '@oxc-project/types@0.140.0': resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==} - '@oxlint/binding-android-arm-eabi@1.75.0': - resolution: {integrity: sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [android] - '@oxlint/binding-android-arm-eabi@1.76.0': resolution: {integrity: sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.75.0': - resolution: {integrity: sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@oxlint/binding-android-arm64@1.76.0': resolution: {integrity: sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.75.0': - resolution: {integrity: sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@oxlint/binding-darwin-arm64@1.76.0': resolution: {integrity: sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.75.0': - resolution: {integrity: sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@oxlint/binding-darwin-x64@1.76.0': resolution: {integrity: sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.75.0': - resolution: {integrity: sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - '@oxlint/binding-freebsd-x64@1.76.0': resolution: {integrity: sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.75.0': - resolution: {integrity: sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@oxlint/binding-linux-arm-gnueabihf@1.76.0': resolution: {integrity: sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.75.0': - resolution: {integrity: sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.76.0': resolution: {integrity: sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.75.0': - resolution: {integrity: sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@oxlint/binding-linux-arm64-gnu@1.76.0': resolution: {integrity: sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3007,13 +2958,6 @@ packages: os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.75.0': - resolution: {integrity: sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@oxlint/binding-linux-arm64-musl@1.76.0': resolution: {integrity: sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3021,13 +2965,6 @@ packages: os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.75.0': - resolution: {integrity: sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@oxlint/binding-linux-ppc64-gnu@1.76.0': resolution: {integrity: sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3035,13 +2972,6 @@ packages: os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.75.0': - resolution: {integrity: sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.76.0': resolution: {integrity: sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3049,13 +2979,6 @@ packages: os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.75.0': - resolution: {integrity: sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [riscv64] - os: [linux] - libc: [musl] - '@oxlint/binding-linux-riscv64-musl@1.76.0': resolution: {integrity: sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3063,13 +2986,6 @@ packages: os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.75.0': - resolution: {integrity: sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@oxlint/binding-linux-s390x-gnu@1.76.0': resolution: {integrity: sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3077,13 +2993,6 @@ packages: os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.75.0': - resolution: {integrity: sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.76.0': resolution: {integrity: sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3091,13 +3000,6 @@ packages: os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.75.0': - resolution: {integrity: sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@oxlint/binding-linux-x64-musl@1.76.0': resolution: {integrity: sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3105,48 +3007,24 @@ packages: os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.75.0': - resolution: {integrity: sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@oxlint/binding-openharmony-arm64@1.76.0': resolution: {integrity: sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.75.0': - resolution: {integrity: sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@oxlint/binding-win32-arm64-msvc@1.76.0': resolution: {integrity: sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.75.0': - resolution: {integrity: sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ia32] - os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.76.0': resolution: {integrity: sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.75.0': - resolution: {integrity: sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@oxlint/binding-win32-x64-msvc@1.76.0': resolution: {integrity: sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3575,76 +3453,76 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding-darwin-arm64@2.1.5': - resolution: {integrity: sha512-XLAN6YSU36qkciJtV9DY9z57pdHOjKy/f1HyoqpZenRg8p46jnXPziV45lfrTZpG+FF6g/jtTUc4dKbeyoWqPw==} + '@rspack/binding-darwin-arm64@2.1.7': + resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@2.1.5': - resolution: {integrity: sha512-KLW7PV86jyCOyqJSqrkZdvYUWYCFX/Q4LsGmVc8tyDA8jBYLMHJDewC/lNf9ot3rU2SoLDZKhDUh7q7dX0FRmg==} + '@rspack/binding-darwin-x64@2.1.7': + resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@2.1.5': - resolution: {integrity: sha512-KOooAC8L+Ljx5sY7ZuMeaXCQ310FNWaPWXcYQJpFPApF3qyLeSfuOftUGwxcxeo5U0mS5OY3zxp7/5CaHWKYjg==} + '@rspack/binding-linux-arm64-gnu@2.1.7': + resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==} cpu: [arm64] os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@2.1.5': - resolution: {integrity: sha512-0GFc07gT71+uRbHtejDecBfSL0fs7dQAwCtXYieXboACauL7UvS3Hwr6v8A91aGtAcvLotnCaIa3CWWYwtYlYQ==} + '@rspack/binding-linux-arm64-musl@2.1.7': + resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==} cpu: [arm64] os: [linux] libc: [musl] - '@rspack/binding-linux-riscv64-gnu@2.1.5': - resolution: {integrity: sha512-isQQDp3fBzPSZpLVFzPqVXIVA4I9b9mKs58TfUgOzDP/1g1582YSV3iFopgFogvEliihXDuuXvM6aAkP+w8Z+Q==} + '@rspack/binding-linux-riscv64-gnu@2.1.7': + resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rspack/binding-linux-riscv64-musl@2.1.5': - resolution: {integrity: sha512-/SP6VknY4kH60BYplI2FDNAJCo4U4DUszLxhKsgVlgA5ImgHC8Ew2AsKgidk7ceiYV9OcKzYuWYe9tVpysBYVA==} + '@rspack/binding-linux-riscv64-musl@2.1.7': + resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==} cpu: [riscv64] os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@2.1.5': - resolution: {integrity: sha512-/GJmS+buA4pilT10gs5mfAhAZxSHXpDD8veZ3QpYvNUuoU9gvempAq9TgjbyNN/vc5pf76GdXPXKFMiehudYSA==} + '@rspack/binding-linux-x64-gnu@2.1.7': + resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==} cpu: [x64] os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@2.1.5': - resolution: {integrity: sha512-iwS3t75nZ2TnUjB05KtvpvjpdkOy/nLxbaOnwjbdnNZZXpUaMadLbllGAWayHPGCMsL2yKBEhVEESZpR7tK3SA==} + '@rspack/binding-linux-x64-musl@2.1.7': + resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==} cpu: [x64] os: [linux] libc: [musl] - '@rspack/binding-wasm32-wasi@2.1.5': - resolution: {integrity: sha512-jOhW69t1H/jcRaSMB5U8jVzWP18j0YQIlo0nT8W+KvNVScJeyOze4FFc+5RIS7VmuT8/jid7hUyydZOfm6UgqA==} + '@rspack/binding-wasm32-wasi@2.1.7': + resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@2.1.5': - resolution: {integrity: sha512-OLfMXmtFBcrWr9BRGKXJYrWgYR0JSaoAWr3EVFDjKGi/YR5aUwQSGc3AJPBph9g0YsdSqRuUhtQGtCk84DeeEA==} + '@rspack/binding-win32-arm64-msvc@2.1.7': + resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@2.1.5': - resolution: {integrity: sha512-p4OSmnj21+AY8vpIADveLEBXfXJRXonOTYim2VLVWV4TbXfhYNMLiX3qESHCdNnn6lVJM0q6zxxzEUfTyAKydw==} + '@rspack/binding-win32-ia32-msvc@2.1.7': + resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@2.1.5': - resolution: {integrity: sha512-YCkLLDGMkHsw5CpcsFtFhzCu+JZEsNrcH9O1GpWMkyxR2ku2Fq1i2wEHYSm26HyW+PJ3+Fv347MPWMFZIz9q2g==} + '@rspack/binding-win32-x64-msvc@2.1.7': + resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==} cpu: [x64] os: [win32] - '@rspack/binding@2.1.5': - resolution: {integrity: sha512-lF3ZLeeyV0AN3BL0m2jAmNZD5pP9IHsQ8gUXN7mo0g4xsW6nf6hsN7o9CnEHECz5uUZb+EoWsuWzAAmnA9Ip8Q==} + '@rspack/binding@2.1.7': + resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==} - '@rspack/cli@2.1.5': - resolution: {integrity: sha512-N6Bm8sxHwatNoiZR68+/VKvVMDh19ya39t2Nfxu1/fBmGCrQX1ct8uPooVSysLtUF2Qx31sSRl1DX1SS0eYt2A==} + '@rspack/cli@2.1.7': + resolution: {integrity: sha512-1hmCC6OsJM4zJC7gWi122/kbl2h7lxZl4Wi1kdPYak0pqth6FGTmyHV+bwB+3yzAb6e/B2ttNqvXU1Zbj+Z+gQ==} hasBin: true peerDependencies: '@rspack/core': ^2.0.0-0 @@ -3653,8 +3531,8 @@ packages: '@rspack/dev-server': optional: true - '@rspack/core@2.1.5': - resolution: {integrity: sha512-YHjL7xVXycAWsjJtF39cRZ2u+ddiNFxY+FcNgEBe6Y8OaLeUfMfjba3gK+B1Oj32UcKD6BmXGsPfu9p+OII/Yw==} + '@rspack/core@2.1.7': + resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: '@module-federation/runtime-tools': ^0.24.1 || ^2.0.0 @@ -3990,11 +3868,8 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@24.13.3': - resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} - - '@types/node@26.1.1': - resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==} + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} '@types/qrcode@1.5.6': resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} @@ -4561,6 +4436,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + agent-base@7.1.4: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} @@ -4774,8 +4654,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - better-sqlite3@13.0.1: - resolution: {integrity: sha512-LYpmOXdkpQYf4wmlxkdzW01XGlOXNIbjLg45yNkh0FQ4814VbK9PdOFmhZpYbej+EZtR/i3FDdhEG98HqZdgnA==} + better-sqlite3@13.0.2: + resolution: {integrity: sha512-jW6oufeDhXZaiX9Lw5A+oerVClx4iFrI6uDj1zu7SqUAjak9vbJvA0NEcKLNxHiQHb6kYCoFzzXYV0YOauhV3g==} engines: {node: '>=22'} bindings@1.5.0: @@ -5414,8 +5294,8 @@ packages: resolution: {integrity: sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.24.3: - resolution: {integrity: sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ==} + enhanced-resolve@5.24.4: + resolution: {integrity: sha512-GVoi+ICHocoOIU7qVVM48wOJziRsqrsyqlI0Ce0LdowRn6v3bcH2zUa9kp85ncx0nwIb9/HOCOLS3fdThDG/XQ==} engines: {node: '>=10.13.0'} entities@6.0.1: @@ -7173,19 +7053,6 @@ packages: oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - oxlint@1.75.0: - resolution: {integrity: sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - oxlint-tsgolint: '>=7.0.2001' - vite-plus: '*' - peerDependenciesMeta: - oxlint-tsgolint: - optional: true - vite-plus: - optional: true - oxlint@1.76.0: resolution: {integrity: sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -8246,9 +8113,6 @@ packages: underscore@1.13.8: resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==} - undici-types@7.18.2: - resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==} - undici-types@8.3.0: resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} @@ -8473,8 +8337,8 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} - webpack-cli@7.2.1: - resolution: {integrity: sha512-YwSGbcZdfz12DM8JIseVPr3oBb09IgVCVc4vY3oDvZnI/mALTGPAP1QiqOi4/bBLSJrRHaqDIXeHcNA0+G38aw==} + webpack-cli@7.2.2: + resolution: {integrity: sha512-lD0pALneslq8FfV+rwvm1BMW0AFAJrHHhNupAGN4asYjMvqrtRsenU4iKpiBo09gS4ntMxKGUxl9jhTEzVt0oA==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -8504,8 +8368,8 @@ packages: resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==} engines: {node: '>=10.13.0'} - webpack@5.109.0: - resolution: {integrity: sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg==} + webpack@5.109.2: + resolution: {integrity: sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -9471,122 +9335,122 @@ snapshots: '@inquirer/ansi@2.0.7': {} - '@inquirer/checkbox@5.2.1(@types/node@26.1.1)': + '@inquirer/checkbox@5.2.1(@types/node@26.1.2)': dependencies: '@inquirer/ansi': 2.0.7 - '@inquirer/core': 11.2.1(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/confirm@6.1.1(@types/node@26.1.1)': + '@inquirer/confirm@6.1.1(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/core@11.2.1(@types/node@26.1.1)': + '@inquirer/core@11.2.1(@types/node@26.1.2)': dependencies: '@inquirer/ansi': 2.0.7 '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/type': 4.0.7(@types/node@26.1.2) cli-width: 4.1.0 fast-wrap-ansi: 0.2.2 mute-stream: 3.0.0 signal-exit: 4.1.0 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/editor@5.2.2(@types/node@26.1.1)': + '@inquirer/editor@5.2.2(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/external-editor': 3.0.3(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/external-editor': 3.0.3(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/expand@5.1.1(@types/node@26.1.1)': + '@inquirer/expand@5.1.1(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/external-editor@3.0.3(@types/node@26.1.1)': + '@inquirer/external-editor@3.0.3(@types/node@26.1.2)': dependencies: chardet: 2.2.0 iconv-lite: 0.7.3 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@inquirer/figures@2.0.7': {} - '@inquirer/input@5.1.2(@types/node@26.1.1)': + '@inquirer/input@5.1.2(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/number@4.1.1(@types/node@26.1.1)': + '@inquirer/number@4.1.1(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/password@5.1.1(@types/node@26.1.1)': + '@inquirer/password@5.1.1(@types/node@26.1.2)': dependencies: '@inquirer/ansi': 2.0.7 - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 - - '@inquirer/prompts@8.5.2(@types/node@26.1.1)': - dependencies: - '@inquirer/checkbox': 5.2.1(@types/node@26.1.1) - '@inquirer/confirm': 6.1.1(@types/node@26.1.1) - '@inquirer/editor': 5.2.2(@types/node@26.1.1) - '@inquirer/expand': 5.1.1(@types/node@26.1.1) - '@inquirer/input': 5.1.2(@types/node@26.1.1) - '@inquirer/number': 4.1.1(@types/node@26.1.1) - '@inquirer/password': 5.1.1(@types/node@26.1.1) - '@inquirer/rawlist': 5.3.1(@types/node@26.1.1) - '@inquirer/search': 4.2.1(@types/node@26.1.1) - '@inquirer/select': 5.2.1(@types/node@26.1.1) + '@types/node': 26.1.2 + + '@inquirer/prompts@8.5.2(@types/node@26.1.2)': + dependencies: + '@inquirer/checkbox': 5.2.1(@types/node@26.1.2) + '@inquirer/confirm': 6.1.1(@types/node@26.1.2) + '@inquirer/editor': 5.2.2(@types/node@26.1.2) + '@inquirer/expand': 5.1.1(@types/node@26.1.2) + '@inquirer/input': 5.1.2(@types/node@26.1.2) + '@inquirer/number': 4.1.1(@types/node@26.1.2) + '@inquirer/password': 5.1.1(@types/node@26.1.2) + '@inquirer/rawlist': 5.3.1(@types/node@26.1.2) + '@inquirer/search': 4.2.1(@types/node@26.1.2) + '@inquirer/select': 5.2.1(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/rawlist@5.3.1(@types/node@26.1.1)': + '@inquirer/rawlist@5.3.1(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/search@4.2.1(@types/node@26.1.1)': + '@inquirer/search@4.2.1(@types/node@26.1.2)': dependencies: - '@inquirer/core': 11.2.1(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/select@5.2.1(@types/node@26.1.1)': + '@inquirer/select@5.2.1(@types/node@26.1.2)': dependencies: '@inquirer/ansi': 2.0.7 - '@inquirer/core': 11.2.1(@types/node@26.1.1) + '@inquirer/core': 11.2.1(@types/node@26.1.2) '@inquirer/figures': 2.0.7 - '@inquirer/type': 4.0.7(@types/node@26.1.1) + '@inquirer/type': 4.0.7(@types/node@26.1.2) optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 - '@inquirer/type@4.0.7(@types/node@26.1.1)': + '@inquirer/type@4.0.7(@types/node@26.1.2)': optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@isaacs/cliui@8.0.2': dependencies: @@ -9614,13 +9478,13 @@ snapshots: '@jest/console@30.4.1': dependencies: '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 jest-message-util: 30.4.1 jest-util: 30.4.1 slash: 3.0.0 - '@jest/core@30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))': + '@jest/core@30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))': dependencies: '@jest/console': 30.4.1 '@jest/pattern': 30.4.0 @@ -9628,7 +9492,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.4.0 @@ -9636,7 +9500,7 @@ snapshots: fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 jest-changed-files: 30.4.1 - jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + jest-config: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-haste-map: 30.4.1 jest-message-util: 30.4.1 jest-regex-util: 30.4.0 @@ -9664,7 +9528,7 @@ snapshots: '@jest/fake-timers': 30.4.1 '@jest/types': 30.4.1 '@types/jsdom': 21.1.7 - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-mock: 30.4.1 jest-util: 30.4.1 jsdom: 26.1.0 @@ -9673,7 +9537,7 @@ snapshots: dependencies: '@jest/fake-timers': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-mock: 30.4.1 '@jest/expect-utils@30.4.1': @@ -9691,7 +9555,7 @@ snapshots: dependencies: '@jest/types': 30.4.1 '@sinonjs/fake-timers': 15.4.0 - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-message-util: 30.4.1 jest-mock: 30.4.1 jest-util: 30.4.1 @@ -9709,7 +9573,7 @@ snapshots: '@jest/pattern@30.4.0': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-regex-util: 30.4.0 '@jest/reporters@30.4.1': @@ -9720,7 +9584,7 @@ snapshots: '@jest/transform': 30.4.1 '@jest/types': 30.4.1 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -9799,7 +9663,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -9809,7 +9673,7 @@ snapshots: '@jest/schemas': 30.4.1 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -10318,117 +10182,60 @@ snapshots: '@oxc-project/types@0.140.0': {} - '@oxlint/binding-android-arm-eabi@1.75.0': - optional: true - '@oxlint/binding-android-arm-eabi@1.76.0': optional: true - '@oxlint/binding-android-arm64@1.75.0': - optional: true - '@oxlint/binding-android-arm64@1.76.0': optional: true - '@oxlint/binding-darwin-arm64@1.75.0': - optional: true - '@oxlint/binding-darwin-arm64@1.76.0': optional: true - '@oxlint/binding-darwin-x64@1.75.0': - optional: true - '@oxlint/binding-darwin-x64@1.76.0': optional: true - '@oxlint/binding-freebsd-x64@1.75.0': - optional: true - '@oxlint/binding-freebsd-x64@1.76.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.75.0': - optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.76.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.75.0': - optional: true - '@oxlint/binding-linux-arm-musleabihf@1.76.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.75.0': - optional: true - '@oxlint/binding-linux-arm64-gnu@1.76.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.75.0': - optional: true - '@oxlint/binding-linux-arm64-musl@1.76.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.75.0': - optional: true - '@oxlint/binding-linux-ppc64-gnu@1.76.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.75.0': - optional: true - '@oxlint/binding-linux-riscv64-gnu@1.76.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.75.0': - optional: true - '@oxlint/binding-linux-riscv64-musl@1.76.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.75.0': - optional: true - '@oxlint/binding-linux-s390x-gnu@1.76.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.75.0': - optional: true - '@oxlint/binding-linux-x64-gnu@1.76.0': optional: true - '@oxlint/binding-linux-x64-musl@1.75.0': - optional: true - '@oxlint/binding-linux-x64-musl@1.76.0': optional: true - '@oxlint/binding-openharmony-arm64@1.75.0': - optional: true - '@oxlint/binding-openharmony-arm64@1.76.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.75.0': - optional: true - '@oxlint/binding-win32-arm64-msvc@1.76.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.75.0': - optional: true - '@oxlint/binding-win32-ia32-msvc@1.76.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.75.0': - optional: true - '@oxlint/binding-win32-x64-msvc@1.76.0': optional: true @@ -10716,68 +10523,68 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.62.3': optional: true - '@rspack/binding-darwin-arm64@2.1.5': + '@rspack/binding-darwin-arm64@2.1.7': optional: true - '@rspack/binding-darwin-x64@2.1.5': + '@rspack/binding-darwin-x64@2.1.7': optional: true - '@rspack/binding-linux-arm64-gnu@2.1.5': + '@rspack/binding-linux-arm64-gnu@2.1.7': optional: true - '@rspack/binding-linux-arm64-musl@2.1.5': + '@rspack/binding-linux-arm64-musl@2.1.7': optional: true - '@rspack/binding-linux-riscv64-gnu@2.1.5': + '@rspack/binding-linux-riscv64-gnu@2.1.7': optional: true - '@rspack/binding-linux-riscv64-musl@2.1.5': + '@rspack/binding-linux-riscv64-musl@2.1.7': optional: true - '@rspack/binding-linux-x64-gnu@2.1.5': + '@rspack/binding-linux-x64-gnu@2.1.7': optional: true - '@rspack/binding-linux-x64-musl@2.1.5': + '@rspack/binding-linux-x64-musl@2.1.7': optional: true - '@rspack/binding-wasm32-wasi@2.1.5': + '@rspack/binding-wasm32-wasi@2.1.7': dependencies: '@emnapi/core': 1.11.2 '@emnapi/runtime': 1.11.2 '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@rspack/binding-win32-arm64-msvc@2.1.5': + '@rspack/binding-win32-arm64-msvc@2.1.7': optional: true - '@rspack/binding-win32-ia32-msvc@2.1.5': + '@rspack/binding-win32-ia32-msvc@2.1.7': optional: true - '@rspack/binding-win32-x64-msvc@2.1.5': + '@rspack/binding-win32-x64-msvc@2.1.7': optional: true - '@rspack/binding@2.1.5': + '@rspack/binding@2.1.7': optionalDependencies: - '@rspack/binding-darwin-arm64': 2.1.5 - '@rspack/binding-darwin-x64': 2.1.5 - '@rspack/binding-linux-arm64-gnu': 2.1.5 - '@rspack/binding-linux-arm64-musl': 2.1.5 - '@rspack/binding-linux-riscv64-gnu': 2.1.5 - '@rspack/binding-linux-riscv64-musl': 2.1.5 - '@rspack/binding-linux-x64-gnu': 2.1.5 - '@rspack/binding-linux-x64-musl': 2.1.5 - '@rspack/binding-wasm32-wasi': 2.1.5 - '@rspack/binding-win32-arm64-msvc': 2.1.5 - '@rspack/binding-win32-ia32-msvc': 2.1.5 - '@rspack/binding-win32-x64-msvc': 2.1.5 + '@rspack/binding-darwin-arm64': 2.1.7 + '@rspack/binding-darwin-x64': 2.1.7 + '@rspack/binding-linux-arm64-gnu': 2.1.7 + '@rspack/binding-linux-arm64-musl': 2.1.7 + '@rspack/binding-linux-riscv64-gnu': 2.1.7 + '@rspack/binding-linux-riscv64-musl': 2.1.7 + '@rspack/binding-linux-x64-gnu': 2.1.7 + '@rspack/binding-linux-x64-musl': 2.1.7 + '@rspack/binding-wasm32-wasi': 2.1.7 + '@rspack/binding-win32-arm64-msvc': 2.1.7 + '@rspack/binding-win32-ia32-msvc': 2.1.7 + '@rspack/binding-win32-x64-msvc': 2.1.7 - '@rspack/cli@2.1.5(@rspack/core@2.1.5)': + '@rspack/cli@2.1.7(@rspack/core@2.1.7)': dependencies: - '@rspack/core': 2.1.5 + '@rspack/core': 2.1.7 - '@rspack/core@2.1.5': + '@rspack/core@2.1.7': dependencies: - '@rspack/binding': 2.1.5 + '@rspack/binding': 2.1.7 '@sec-ant/readable-stream@0.4.1': {} @@ -10857,9 +10664,9 @@ snapshots: tslib: 2.8.1 typed-inject: 5.0.0 - '@stryker-mutator/core@9.6.1(@types/node@26.1.1)': + '@stryker-mutator/core@9.6.1(@types/node@26.1.2)': dependencies: - '@inquirer/prompts': 8.5.2(@types/node@26.1.1) + '@inquirer/prompts': 8.5.2(@types/node@26.1.2) '@stryker-mutator/api': 9.6.1 '@stryker-mutator/instrumenter': 9.6.1 '@stryker-mutator/util': 9.6.1 @@ -10906,24 +10713,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@stryker-mutator/jest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))': + '@stryker-mutator/jest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))': dependencies: '@stryker-mutator/api': 9.6.1 - '@stryker-mutator/core': 9.6.1(@types/node@26.1.1) + '@stryker-mutator/core': 9.6.1(@types/node@26.1.2) '@stryker-mutator/util': 9.6.1 semver: 7.7.4 tslib: 2.8.1 '@stryker-mutator/util@9.6.1': {} - '@stryker-mutator/vitest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))(vitest@4.1.10)': + '@stryker-mutator/vitest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))(vitest@4.1.10)': dependencies: '@stryker-mutator/api': 9.6.1 - '@stryker-mutator/core': 9.6.1(@types/node@26.1.1) + '@stryker-mutator/core': 9.6.1(@types/node@26.1.2) '@stryker-mutator/util': 9.6.1 semver: 7.8.5 tslib: 2.8.1 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) '@testing-library/dom@10.4.1': dependencies: @@ -10995,7 +10802,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/chai@5.2.3': dependencies: @@ -11004,13 +10811,13 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/cookiejar@2.1.5': {} '@types/cors@2.8.19': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/d3-array@3.2.2': {} @@ -11143,7 +10950,7 @@ snapshots: '@types/express-serve-static-core@5.1.2': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/qs': 6.15.1 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -11157,7 +10964,7 @@ snapshots: '@types/fs-extra@11.0.4': dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/geojson@7946.0.16': {} @@ -11184,7 +10991,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -11192,7 +10999,7 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/mdast@4.0.4': dependencies: @@ -11208,20 +11015,16 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 form-data: 4.0.6 - '@types/node@24.13.3': - dependencies: - undici-types: 7.18.2 - - '@types/node@26.1.1': + '@types/node@26.1.2': dependencies: undici-types: 8.3.0 '@types/qrcode@1.5.6': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/qs@6.15.1': {} @@ -11237,12 +11040,12 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/stack-utils@2.0.3': {} @@ -11250,7 +11053,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 26.1.1 + '@types/node': 26.1.2 form-data: 4.0.6 '@types/supertest@7.2.1': @@ -11275,7 +11078,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/yargs-parser@21.0.3': {} @@ -11424,10 +11227,10 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) '@vitest/coverage-v8@4.1.10(vitest@4.1.10)': dependencies: @@ -11441,7 +11244,7 @@ snapshots: obug: 2.1.4 std-env: 4.2.0 tinyrainbow: 3.1.0 - vitest: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) '@vitest/expect@4.1.10': dependencies: @@ -11452,13 +11255,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) '@vitest/pretty-format@4.1.10': dependencies: @@ -11657,6 +11460,8 @@ snapshots: acorn@8.17.0: {} + acorn@8.18.0: {} + agent-base@7.1.4: {} ajv-formats@2.1.1: @@ -11872,7 +11677,7 @@ snapshots: baseline-browser-mapping@2.11.1: {} - better-sqlite3@13.0.1: + better-sqlite3@13.0.2: dependencies: node-addon-api: 8.9.0 @@ -12468,7 +12273,7 @@ snapshots: engine.io@6.6.9: dependencies: '@types/cors': 2.8.19 - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@types/ws': 8.18.1 accepts: 1.3.8 base64id: 2.0.0 @@ -12482,7 +12287,7 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.24.3: + enhanced-resolve@5.24.4: dependencies: graceful-fs: 4.2.11 tapable: 2.3.3 @@ -13367,7 +13172,7 @@ snapshots: '@jest/expect': 30.4.1 '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.2 @@ -13387,15 +13192,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.4.2(@types/node@24.13.3): + jest-cli@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)): dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.4.2(@types/node@24.13.3) + jest-config: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) jest-util: 30.4.1 jest-validate: 30.4.1 yargs: 17.7.3 @@ -13406,45 +13211,7 @@ snapshots: - supports-color - ts-node - jest-cli@30.4.2(@types/node@26.1.1): - dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - '@jest/test-result': 30.4.1 - '@jest/types': 30.4.1 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - jest-util: 30.4.1 - jest-validate: 30.4.1 - yargs: 17.7.3 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - jest-cli@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)): - dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - '@jest/test-result': 30.4.1 - '@jest/types': 30.4.1 - chalk: 4.1.2 - exit-x: 0.2.2 - import-local: 3.2.0 - jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - jest-util: 30.4.1 - jest-validate: 30.4.1 - yargs: 17.7.3 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - jest-config@30.4.2(@types/node@24.13.3): + jest-config@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)): dependencies: '@babel/core': 7.29.7 '@jest/get-type': 30.1.0 @@ -13470,39 +13237,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 24.13.3 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)): - dependencies: - '@babel/core': 7.29.7 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.4.0 - '@jest/test-sequencer': 30.4.1 - '@jest/types': 30.4.1 - babel-jest: 30.4.1(@babel/core@7.29.7) - chalk: 4.1.2 - ci-info: 4.4.0 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.4.2 - jest-docblock: 30.4.0 - jest-environment-node: 30.4.1 - jest-regex-util: 30.4.0 - jest-resolve: 30.4.1 - jest-runner: 30.4.2 - jest-util: 30.4.1 - jest-validate: 30.4.1 - parse-json: 5.2.0 - pretty-format: 30.4.1 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 26.1.1 - ts-node: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2) + '@types/node': 26.1.2 + ts-node: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -13541,7 +13277,7 @@ snapshots: '@jest/environment': 30.4.1 '@jest/fake-timers': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-mock: 30.4.1 jest-util: 30.4.1 jest-validate: 30.4.1 @@ -13551,7 +13287,7 @@ snapshots: jest-haste-map@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -13591,7 +13327,7 @@ snapshots: jest-mock@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-util: 30.4.1 jest-pnp-resolver@1.2.3(jest-resolve@30.4.1): @@ -13625,7 +13361,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -13654,7 +13390,7 @@ snapshots: '@jest/test-result': 30.4.1 '@jest/transform': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 cjs-module-lexer: 2.2.0 collect-v8-coverage: 1.0.3 @@ -13701,7 +13437,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -13710,7 +13446,7 @@ snapshots: jest-util@30.4.1: dependencies: '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 @@ -13738,7 +13474,7 @@ snapshots: dependencies: '@jest/test-result': 30.4.1 '@jest/types': 30.4.1 - '@types/node': 26.1.1 + '@types/node': 26.1.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -13747,57 +13483,31 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.4.1: dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@ungap/structured-clone': 1.3.3 jest-util: 30.4.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.4.2(@types/node@24.13.3): - dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - '@jest/types': 30.4.1 - import-local: 3.2.0 - jest-cli: 30.4.2(@types/node@24.13.3) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - jest@30.4.2(@types/node@26.1.1): + jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)): dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) '@jest/types': 30.4.1 import-local: 3.2.0 - jest-cli: 30.4.2(@types/node@26.1.1) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - esbuild-register - - supports-color - - ts-node - - jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)): - dependencies: - '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - '@jest/types': 30.4.1 - import-local: 3.2.0 - jest-cli: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) + jest-cli: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -13881,7 +13591,7 @@ snapshots: kind-of@6.0.3: {} - knex@3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1)): + knex@3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2)): dependencies: colorette: 2.0.19 commander: 10.0.1 @@ -13898,8 +13608,8 @@ snapshots: tarn: 3.1.2 tildify: 2.0.0 optionalDependencies: - better-sqlite3: 13.0.1 - mysql2: 3.23.2(@types/node@26.1.1) + better-sqlite3: 13.0.2 + mysql2: 3.23.2(@types/node@26.1.2) transitivePeerDependencies: - supports-color @@ -14753,23 +14463,23 @@ snapshots: minimist@1.2.8: {} - minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.0(esbuild@0.28.1)): + minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.2(esbuild@0.28.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.49.0 - webpack: 5.109.0(esbuild@0.28.1) + webpack: 5.109.2(esbuild@0.28.1) optionalDependencies: esbuild: 0.28.1 - minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.0): + minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.49.0 - webpack: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1) + webpack: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2) optionalDependencies: esbuild: 0.28.1 @@ -14874,9 +14584,9 @@ snapshots: mute-stream@3.0.0: {} - mysql2@3.23.2(@types/node@26.1.1): + mysql2@3.23.2(@types/node@26.1.2): dependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 aws-ssl-profiles: 1.1.2 denque: 2.1.0 generate-function: 2.3.1 @@ -14994,28 +14704,6 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - oxlint@1.75.0: - optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.75.0 - '@oxlint/binding-android-arm64': 1.75.0 - '@oxlint/binding-darwin-arm64': 1.75.0 - '@oxlint/binding-darwin-x64': 1.75.0 - '@oxlint/binding-freebsd-x64': 1.75.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.75.0 - '@oxlint/binding-linux-arm-musleabihf': 1.75.0 - '@oxlint/binding-linux-arm64-gnu': 1.75.0 - '@oxlint/binding-linux-arm64-musl': 1.75.0 - '@oxlint/binding-linux-ppc64-gnu': 1.75.0 - '@oxlint/binding-linux-riscv64-gnu': 1.75.0 - '@oxlint/binding-linux-riscv64-musl': 1.75.0 - '@oxlint/binding-linux-s390x-gnu': 1.75.0 - '@oxlint/binding-linux-x64-gnu': 1.75.0 - '@oxlint/binding-linux-x64-musl': 1.75.0 - '@oxlint/binding-openharmony-arm64': 1.75.0 - '@oxlint/binding-win32-arm64-msvc': 1.75.0 - '@oxlint/binding-win32-ia32-msvc': 1.75.0 - '@oxlint/binding-win32-x64-msvc': 1.75.0 - oxlint@1.76.0: optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.76.0 @@ -16088,54 +15776,12 @@ snapshots: ts-dedent@2.3.0: {} - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@24.13.3)): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.9 - jest: 30.4.2(@types/node@24.13.3) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.8.5 - type-fest: 4.41.0 - typescript: '@typescript/typescript6@6.0.2' - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.29.7 - '@jest/transform': 30.4.1 - '@jest/types': 30.4.1 - babel-jest: 30.4.1(@babel/core@7.29.7) - esbuild: 0.28.1 - jest-util: 30.4.1 - - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - handlebars: 4.7.9 - jest: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)) - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.8.5 - type-fest: 4.41.0 - typescript: '@typescript/typescript6@6.0.2' - yargs-parser: 21.1.1 - optionalDependencies: - '@babel/core': 7.29.7 - '@jest/transform': 30.4.1 - '@jest/types': 30.4.1 - babel-jest: 30.4.1(@babel/core@7.29.7) - esbuild: 0.28.1 - jest-util: 30.4.1 - - ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)): + ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.9 - jest: 30.4.2(@types/node@26.1.1) + jest: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -16151,22 +15797,22 @@ snapshots: esbuild: 0.28.1 jest-util: 30.4.1 - ts-loader@9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1)): + ts-loader@9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1)): dependencies: chalk: 4.1.2 picomatch: 4.0.5 source-map: 0.7.6 typescript: '@typescript/typescript6@6.0.2' - webpack: 5.109.0(esbuild@0.28.1) + webpack: 5.109.2(esbuild@0.28.1) - ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2): + ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 26.1.1 + '@types/node': 26.1.2 acorn: 8.17.0 acorn-walk: 8.3.5 arg: 4.1.3 @@ -16318,8 +15964,6 @@ snapshots: underscore@1.13.8: {} - undici-types@7.18.2: {} - undici-types@8.3.0: {} undici@6.28.0: @@ -16456,7 +16100,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0): + vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 @@ -16464,17 +16108,17 @@ snapshots: rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 esbuild: 0.28.1 fsevents: 2.3.3 terser: 5.49.0 tsx: 4.23.1 yaml: 2.9.0 - vitest@4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0): + vitest@4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0): dependencies: '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -16491,10 +16135,10 @@ snapshots: tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) + vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 26.1.1 + '@types/node': 26.1.2 '@vitest/coverage-v8': 4.1.10(vitest@4.1.10) jsdom: 26.1.0 transitivePeerDependencies: @@ -16538,7 +16182,7 @@ snapshots: webidl-conversions@7.0.0: {} - webpack-cli@7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0): + webpack-cli@7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2): dependencies: '@discoveryjs/json-ext': 1.1.0 commander: 14.0.3 @@ -16547,7 +16191,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1) + webpack: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2) webpack-merge: 6.0.1 optionalDependencies: json5: 2.2.3 @@ -16561,23 +16205,23 @@ snapshots: webpack-sources@3.5.1: {} - webpack@5.109.0(esbuild@0.28.1): + webpack@5.109.2(esbuild@0.28.1): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.17.0 + acorn: 8.18.0 browserslist: 4.28.7 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.24.3 + enhanced-resolve: 5.24.4 es-module-lexer: 2.3.1 eslint-scope: 5.1.1 events: 3.3.0 graceful-fs: 4.2.11 mime-db: 1.54.0 - minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.0(esbuild@0.28.1)) + minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.2(esbuild@0.28.1)) neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 @@ -16597,30 +16241,30 @@ snapshots: - postcss - uglify-js - webpack@5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1): + webpack@5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2): dependencies: '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.17.0 + acorn: 8.18.0 browserslist: 4.28.7 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.24.3 + enhanced-resolve: 5.24.4 es-module-lexer: 2.3.1 eslint-scope: 5.1.1 events: 3.3.0 graceful-fs: 4.2.11 mime-db: 1.54.0 - minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.0) + minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.2) neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 watchpack: 2.5.2 webpack-sources: 3.5.1 optionalDependencies: - webpack-cli: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0) + webpack-cli: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2) transitivePeerDependencies: - '@minify-html/node' - '@swc/core' diff --git a/scripts/browser-artifact-governance.mjs b/scripts/browser-artifact-governance.mjs new file mode 100644 index 000000000..63a7aa8ea --- /dev/null +++ b/scripts/browser-artifact-governance.mjs @@ -0,0 +1,79 @@ +#!/usr/bin/env node + +import fs from 'node:fs' +import path from 'node:path' +import process from 'node:process' +import { fileURLToPath, pathToFileURL } from 'node:url' + +export const REPOSITORY_ROOT = fileURLToPath(new URL('..', import.meta.url)) +const POLICY_PATH = path.join(REPOSITORY_ROOT, 'governance/browser-artifact-policy.json') +const PROJECTS_PATH = path.join(REPOSITORY_ROOT, 'governance/repository-health/projects.json') + +function readJson(filePath) { + return JSON.parse(fs.readFileSync(filePath, 'utf8')) +} + +function isNonEmptyString(value) { + return typeof value === 'string' && value.trim().length > 0 +} + +function policyErrors(policy) { + const errors = [] + if (policy.schemaVersion !== 1) errors.push('browser artifact policy schemaVersion must be 1') + if (!Number.isSafeInteger(policy.reportRetentionDays) || policy.reportRetentionDays < 1) { + errors.push('browser artifact report retention must be positive') + } + if (!isNonEmptyString(policy.growthPolicy)) errors.push('browser growth policy is required') + return errors +} + +function governedBrowserNames(registry) { + return new Set( + registry.projects + .filter(project => (project.consumerProfiles ?? []).includes('browser-bundler')) + .map(project => project.name) + ) +} + +function browserEntryErrors(root, entry, governedNames) { + const errors = [] + if (!governedNames.has(entry.name)) { + errors.push(`stale browser artifact disposition for ${entry.name}`) + } + const manifest = readJson(path.join(root, entry.path, 'package.json')) + const budget = readJson(path.join(root, entry.budget)) + if (manifest.name !== entry.name) errors.push(`${entry.path} does not identify ${entry.name}`) + if (budget.profile !== 'browser') errors.push(`${entry.budget} is not a browser budget`) + if (budget.entry !== undefined && budget.entry !== entry.entry) { + errors.push(`${entry.name} policy entry differs from its browser budget`) + } + if (!isNonEmptyString(entry.splittingDisposition)) { + errors.push(`${entry.name} requires an optional-adapter splitting disposition`) + } + return errors +} + +export function validateBrowserArtifactGovernance(root = REPOSITORY_ROOT) { + const policy = readJson(path.join(root, path.relative(REPOSITORY_ROOT, POLICY_PATH))) + const registry = readJson(path.join(root, path.relative(REPOSITORY_ROOT, PROJECTS_PATH))) + const errors = policyErrors(policy) + const governedNames = governedBrowserNames(registry) + const policyNames = new Set(policy.packages.map(item => item.name)) + for (const name of governedNames) { + if (!policyNames.has(name)) errors.push(`missing browser artifact disposition for ${name}`) + } + for (const entry of policy.packages) { + errors.push(...browserEntryErrors(root, entry, governedNames)) + } + return errors +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + const errors = validateBrowserArtifactGovernance() + if (errors.length > 0) { + console.error(errors.join('\n')) + process.exitCode = 1 + } else { + console.log('Browser artifact growth and optional-adapter dispositions are complete.') + } +} diff --git a/scripts/browser-artifact-governance.test.mjs b/scripts/browser-artifact-governance.test.mjs new file mode 100644 index 000000000..b51a55c74 --- /dev/null +++ b/scripts/browser-artifact-governance.test.mjs @@ -0,0 +1,8 @@ +import assert from 'node:assert/strict' +import test from 'node:test' + +import { validateBrowserArtifactGovernance } from './browser-artifact-governance.mjs' + +test('every browser package has a measured growth and adapter-splitting disposition', () => { + assert.deepEqual(validateBrowserArtifactGovernance(), []) +}) diff --git a/scripts/check-browser-package.mjs b/scripts/check-browser-package.mjs index fd78fa54c..d9a167ffa 100644 --- a/scripts/check-browser-package.mjs +++ b/scripts/check-browser-package.mjs @@ -71,6 +71,22 @@ function compareText(left, right) { return left.localeCompare(right) } +function packageNameFromModuleId(moduleId) { + const normalized = moduleId.replaceAll('\\', '/') + const installed = normalized.split('/node_modules/').at(-1) + if (!installed || installed === normalized) return undefined + const parts = installed.split('/') + return parts[0].startsWith('@') ? parts.slice(0, 2).join('/') : parts[0] +} + +export function bundleComposition(moduleIds, files) { + return { + chunks: files.filter(file => /\.[cm]?js$/.test(file)).length, + modules: new Set(moduleIds).size, + packages: [...new Set(moduleIds.map(packageNameFromModuleId).filter(Boolean))].sort(compareText) + } +} + const run = createCommandRunner({ timeoutMs: COMMAND_TIMEOUT_MS, maxBufferBytes: MAX_BUFFER_BYTES, @@ -336,7 +352,10 @@ async function checkVite(consumerDirectory, entryPath, budget) { assertBrowserComposition([...moduleIds], bundle.code.toString('utf8'), 'Vite browser bundle') const measurements = bundleSizes(bundle.code) validateBundleBudget(measurements, budget, 'Vite browser bundle') - return measurements + return { + bytes: measurements, + composition: bundleComposition([...moduleIds], bundle.files) + } } async function checkEsbuild(consumerDirectory, entryPath, budget) { @@ -368,7 +387,10 @@ async function checkEsbuild(consumerDirectory, entryPath, budget) { ) const measurements = bundleSizes(bundle.code) validateBundleBudget(measurements, budget, 'esbuild browser bundle') - return measurements + return { + bytes: measurements, + composition: bundleComposition(Object.keys(result.metafile.inputs), bundle.files) + } } function installedPackageDirectory(consumerDirectory, packageName) { @@ -425,7 +447,14 @@ async function checkUmd(consumerDirectory, manifest, budget) { } const measurements = aggregateBundleSizes(payloads) validateBundleBudget(measurements, budget.umd.maximumBytes, 'UMD browser payload') - return measurements + return { + bytes: measurements, + composition: { + chunks: payloads.filter((_payload, index) => /\.[cm]?js$/.test(payloadPaths[index])).length, + modules: sourceMap.sources.length, + packages: [] + } + } } export async function checkBrowserPackage(packageDirectory) { @@ -481,6 +510,28 @@ async function main(arguments_) { await fs.readFile(path.join(packageDirectory, 'package.json'), 'utf8') ) const measurements = await checkBrowserPackage(packageDirectory) + const outputDirectory = process.env.BROWSER_COMPOSITION_DIRECTORY + if (outputDirectory) { + await fs.mkdir(outputDirectory, { recursive: true }) + const slug = manifest.name.replace(/^@/, '').replaceAll('/', '-') + const budget = JSON.parse( + await fs.readFile(path.join(packageDirectory, 'browser-budget.json'), 'utf8') + ) + await fs.writeFile( + path.join(outputDirectory, `${slug}.json`), + `${JSON.stringify( + { + schemaVersion: 1, + package: manifest.name, + version: manifest.version, + entry: budget.entry, + measurements + }, + null, + 2 + )}\n` + ) + } console.log( `Verified ${manifest.name}@${manifest.version} exact-tarball browser contract: ` + JSON.stringify(measurements) diff --git a/scripts/check-browser-package.test.mjs b/scripts/check-browser-package.test.mjs index 961acbab6..60a736803 100644 --- a/scripts/check-browser-package.test.mjs +++ b/scripts/check-browser-package.test.mjs @@ -3,6 +3,7 @@ import { test } from 'node:test' import { aggregateBundleSizes, + bundleComposition, bundleSizes, prohibitedModuleIds, prohibitedRuntimeSpecifiers, @@ -37,6 +38,24 @@ test('browser bundle composition rejects Node and server dependencies', () => { ) }) +test('browser composition reports stable chunk, module, and package evidence', () => { + assert.deepEqual( + bundleComposition( + [ + '/consumer/node_modules/@bsv/sdk/mod.js', + '/consumer/node_modules/.pnpm/uuid@11/node_modules/uuid/index.js', + '/consumer/entry.mjs' + ], + ['/tmp/consumer.mjs', '/tmp/chunk.js', '/tmp/consumer.mjs.map'] + ), + { + chunks: 2, + modules: 3, + packages: ['@bsv/sdk', 'uuid'] + } + ) +}) + test('browser bundle budgets validate every compression dimension', () => { const actual = bundleSizes(Buffer.from('browser-contract'.repeat(100))) validateBundleBudget(actual, actual, 'exact') diff --git a/scripts/check-package-artifact.mjs b/scripts/check-package-artifact.mjs index 484894742..67e438b7e 100644 --- a/scripts/check-package-artifact.mjs +++ b/scripts/check-package-artifact.mjs @@ -132,6 +132,185 @@ function identityErrors(packResult, manifest) { return errors } +function escapeRegularExpression(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`) +} + +function exportTargets(value, location = 'exports') { + if (value === null) return [] + if (typeof value === 'string') return [{ location, target: value }] + if (Array.isArray(value)) { + return value.flatMap((item, index) => exportTargets(item, `${location}[${index}]`)) + } + if (typeof value === 'object') { + return Object.entries(value).flatMap(([condition, target]) => + exportTargets(target, `${location}.${condition}`) + ) + } + return [{ location, target: value }] +} + +function exportSubpathEntries(exports_) { + if (exports_ === undefined || exports_ === null) return [] + if (typeof exports_ === 'object' && exports_ !== null && !Array.isArray(exports_)) { + const keys = Object.keys(exports_) + if (keys.some(key => key.startsWith('.'))) { + return Object.entries(exports_).filter(([key]) => key.startsWith('.')) + } + } + return [['.', exports_]] +} + +function wildcardExpression(pattern) { + return new RegExp(`^${pattern.split('*').map(escapeRegularExpression).join('(.+)')}$`) +} + +function expandExportTarget(subpath, target, files) { + if (!target.includes('*')) return files.includes(target.slice(2)) ? [subpath] : [] + const expression = wildcardExpression(target.slice(2)) + return files.flatMap(file => { + const match = expression.exec(file) + if (!match) return [] + let expanded = subpath + for (const value of match.slice(1)) expanded = expanded.replace('*', value) + return [expanded] + }) +} + +export function validateManifestArtifactContract(manifest, files) { + const errors = sideEffectsErrors(manifest) + errors.push(...peerMetadataErrors(manifest), ...optionalDependencyErrors(manifest)) + for (const [subpath, value] of exportSubpathEntries(manifest.exports)) { + const targets = exportTargets(value, `exports.${subpath}`) + if (targets.length === 0) errors.push(`${subpath} has no export target`) + for (const { location, target } of targets) { + errors.push(...exportTargetErrors(location, target, subpath, files)) + } + } + return errors +} + +function sideEffectsErrors(manifest) { + if ( + typeof manifest.sideEffects !== 'boolean' && + !( + Array.isArray(manifest.sideEffects) && + manifest.sideEffects.every(value => typeof value === 'string' && value.length > 0) + ) + ) { + return ['package.json sideEffects must be an explicit boolean or string array'] + } + return [] +} + +function peerMetadataErrors(manifest) { + const errors = [] + const peerNames = new Set(Object.keys(manifest.peerDependencies ?? {})) + for (const [name, metadata] of Object.entries(manifest.peerDependenciesMeta ?? {})) { + if (!peerNames.has(name)) errors.push(`peerDependenciesMeta contains undeclared peer ${name}`) + if ( + typeof metadata !== 'object' || + metadata === null || + Array.isArray(metadata) || + Object.keys(metadata).some(key => key !== 'optional') || + (metadata.optional !== undefined && typeof metadata.optional !== 'boolean') + ) { + errors.push(`peerDependenciesMeta.${name} must contain only an optional boolean`) + } + } + return errors +} + +function optionalDependencyErrors(manifest) { + const errors = [] + const optionalNames = new Set(Object.keys(manifest.optionalDependencies ?? {})) + for (const name of Object.keys(manifest.dependencies ?? {})) { + if (optionalNames.has(name)) { + errors.push(`${name} cannot be both a dependency and optionalDependency`) + } + } + return errors +} + +function exportTargetErrors(location, target, subpath, files) { + if (typeof target !== 'string') { + return [`${location} must resolve to a string or null`] + } + if (!target.startsWith('./') || target.includes('\\') || target.split('/').includes('..')) { + return [`${location} has unsafe package target ${JSON.stringify(target)}`] + } + return expandExportTarget(subpath, target, files).length === 0 + ? [`${location} target ${target} does not match a packed file`] + : [] +} + +export function concretePublicEntrypoints(manifest, files) { + const entrypoints = new Set() + for (const [subpath, value] of exportSubpathEntries(manifest.exports)) { + for (const { target } of exportTargets(value)) { + if (typeof target !== 'string' || !target.startsWith('./')) continue + if (isDeclarationFile(target.replaceAll('*', 'entry'))) continue + for (const entrypoint of expandExportTarget(subpath, target, files)) { + entrypoints.add(entrypoint) + } + } + } + return [...entrypoints].sort((left, right) => left.localeCompare(right)) +} + +function exportedJavaScriptTargets(manifest, files) { + const javascriptTargets = new Set() + for (const [, value] of exportSubpathEntries(manifest.exports)) { + for (const { target } of exportTargets(value)) { + if (typeof target !== 'string' || !target.startsWith('./')) continue + addExportedJavaScriptFiles(javascriptTargets, target, files) + } + } + return javascriptTargets +} + +function addExportedJavaScriptFiles(javascriptTargets, target, files) { + const targetPattern = target.slice(2) + const expression = target.includes('*') ? wildcardExpression(targetPattern) : undefined + for (const file of files) { + if (isExportedJavaScriptFile(file, targetPattern, expression)) { + javascriptTargets.add(file) + } + } +} + +function isExportedJavaScriptFile(file, targetPattern, expression) { + const targetMatches = expression ? expression.test(file) : file === targetPattern + return targetMatches && /\.[cm]?js$/i.test(file) +} + +async function sourceMapErrors(packageDirectory, file, files) { + const source = await fs.readFile(path.join(packageDirectory, file), 'utf8') + const match = /\/\/[#@]\s*sourceMappingURL=([^\s]+)\s*$/.exec(source) + if (!match || match[1].startsWith('data:')) return [] + const mapFile = path.posix.normalize(path.posix.join(path.posix.dirname(file), match[1])) + if (mapFile.startsWith('../') || !files.includes(mapFile)) { + return [`${file} references missing packed source map ${match[1]}`] + } + try { + const sourceMap = JSON.parse(await fs.readFile(path.join(packageDirectory, mapFile), 'utf8')) + return !Array.isArray(sourceMap.sources) || sourceMap.sources.length === 0 + ? [`${mapFile} must contain at least one source`] + : [] + } catch (error) { + return [`${mapFile} is not a valid source map: ${error.message}`] + } +} + +export async function validateReferencedSourceMaps(packageDirectory, manifest, files) { + const errors = [] + const javascriptTargets = exportedJavaScriptTargets(manifest, files) + for (const file of javascriptTargets) { + errors.push(...(await sourceMapErrors(packageDirectory, file, files))) + } + return errors +} + export function validatePackedFiles(packResult, manifest, allowedSourcePrefixes = []) { const normalizedSourcePrefixes = normalizeSourcePrefixes(allowedSourcePrefixes) const files = (packResult.files ?? []).map(file => file.path) @@ -139,7 +318,8 @@ export function validatePackedFiles(packResult, manifest, allowedSourcePrefixes ...requiredFileErrors(files), ...readmeErrors(files), ...files.flatMap(file => packedFileErrors(file, normalizedSourcePrefixes)), - ...identityErrors(packResult, manifest) + ...identityErrors(packResult, manifest), + ...validateManifestArtifactContract(manifest, files) ] } @@ -268,7 +448,9 @@ async function checkConsumer({ binName, binArguments, consumerDependencies, - localConsumerDependencyTarballs + localConsumerDependencyTarballs, + publicEntrypoints, + esmOnlyEntrypoints }) { const consumerDirectory = await fs.mkdtemp(path.join(os.tmpdir(), 'ts-stack-package-consumer-')) try { @@ -314,6 +496,25 @@ async function checkConsumer({ ) } } + for (const subpath of publicEntrypoints) { + const specifier = packageSpecifier(manifest.name, subpath) + if (modes.includes('esm')) { + await run( + 'node', + [ + '--input-type=module', + '--eval', + `await import.meta.resolve(${JSON.stringify(specifier)})` + ], + { cwd: consumerDirectory } + ) + } + if (modes.includes('cjs') && !esmOnlyEntrypoints.includes(subpath)) { + await run('node', ['--eval', `require.resolve(${JSON.stringify(specifier)})`], { + cwd: consumerDirectory + }) + } + } await checkInstalledBin(consumerDirectory, manifest, binName, binArguments) } finally { await fs.rm(consumerDirectory, { recursive: true, force: true }) @@ -373,7 +574,11 @@ export async function checkPackageArtifact({ )) { localDependencies.push(await packPackage(dependencyDirectory)) } - const payloadErrors = validatePackedFiles(packed.result, manifest, allowedSourcePrefixes) + const packedFiles = (packed.result.files ?? []).map(file => file.path) + const payloadErrors = [ + ...validatePackedFiles(packed.result, manifest, allowedSourcePrefixes), + ...(await validateReferencedSourceMaps(packageDirectory, manifest, packedFiles)) + ] const publintErrors = await checkPublint(packed.tarballPath) const errors = [...payloadErrors, ...publintErrors] if (errors.length > 0) { @@ -390,7 +595,9 @@ export async function checkPackageArtifact({ binName, binArguments, consumerDependencies, - localConsumerDependencyTarballs: localDependencies.map(dependency => dependency.tarballPath) + localConsumerDependencyTarballs: localDependencies.map(dependency => dependency.tarballPath), + publicEntrypoints: concretePublicEntrypoints(manifest, packedFiles), + esmOnlyEntrypoints }) return manifest } finally { @@ -447,6 +654,8 @@ async function main(arguments_) { }) const validations = [ 'packed payload', + 'all conditional and wildcard exports', + 'referenced source maps', 'publint', ...(validateTypes ? ['strict type resolution'] : []), `${modes.join('/')} clean consumers`, diff --git a/scripts/check-package-artifact.test.mjs b/scripts/check-package-artifact.test.mjs index a6cedfd03..1adebdb1e 100644 --- a/scripts/check-package-artifact.test.mjs +++ b/scripts/check-package-artifact.test.mjs @@ -1,15 +1,23 @@ import assert from 'node:assert/strict' +import fs from 'node:fs/promises' +import os from 'node:os' +import path from 'node:path' import test from 'node:test' import { + concretePublicEntrypoints, typeProblemsForModes, + validateManifestArtifactContract, validatePackedFiles, + validateReferencedSourceMaps, workspaceRuntimeClosure } from './check-package-artifact.mjs' const manifest = { name: '@bsv/example', - version: '1.2.3' + version: '1.2.3', + sideEffects: false, + exports: './dist/index.js' } test('packed artifact policy accepts a minimal compiled package', () => { @@ -107,6 +115,92 @@ test('strict type policy ignores only the unsupported CommonJS mode for ESM-only assert.deepEqual(typeProblemsForModes(problems, ['esm', 'cjs'], [], ['.']), []) }) +test('artifact contract expands every concrete wildcard export and validates target payloads', () => { + const exportedManifest = { + ...manifest, + exports: { + '.': { import: './dist/index.js', types: './dist/index.d.ts' }, + './*.ts': { + import: './dist/src/*.js', + types: './dist/src/*.d.ts' + } + }, + peerDependencies: { react: '>=18' }, + peerDependenciesMeta: { react: { optional: true } } + } + const files = [ + 'dist/index.d.ts', + 'dist/index.js', + 'dist/src/type-only.d.ts', + 'dist/src/alpha.d.ts', + 'dist/src/alpha.js', + 'dist/src/nested/beta.d.ts', + 'dist/src/nested/beta.js' + ] + + assert.deepEqual(validateManifestArtifactContract(exportedManifest, files), []) + assert.deepEqual(concretePublicEntrypoints(exportedManifest, files), [ + '.', + './alpha.ts', + './nested/beta.ts' + ]) + assert.ok( + validateManifestArtifactContract( + { + ...exportedManifest, + exports: { '.': './dist/missing.js' }, + peerDependenciesMeta: { missing: { optional: true } } + }, + files + ).some(error => error.includes('does not match a packed file')) + ) +}) + +test('artifact contract permits a bin-only package without runtime exports', () => { + assert.deepEqual( + validateManifestArtifactContract( + { + name: '@bsv/cli', + version: '1.0.0', + sideEffects: false, + bin: { cli: './dist/index.mjs' } + }, + ['dist/index.mjs'] + ), + [] + ) +}) + +test('artifact contract validates each referenced packed source map', async t => { + const directory = await fs.mkdtemp(path.join(os.tmpdir(), 'artifact-source-map-')) + t.after(async () => await fs.rm(directory, { recursive: true, force: true })) + await fs.mkdir(path.join(directory, 'dist')) + await fs.writeFile( + path.join(directory, 'dist/index.js'), + 'export const value = 1\n//# sourceMappingURL=index.js.map\n' + ) + await fs.writeFile( + path.join(directory, 'dist/index.js.map'), + JSON.stringify({ version: 3, sources: ['../src/index.ts'], mappings: '' }) + ) + const sourceMapManifest = { + ...manifest, + exports: { '.': './dist/index.js' } + } + assert.deepEqual( + await validateReferencedSourceMaps(directory, sourceMapManifest, [ + 'dist/index.js', + 'dist/index.js.map' + ]), + [] + ) + assert.ok( + (await validateReferencedSourceMaps(directory, sourceMapManifest, ['dist/index.js'])).some( + error => error.includes('missing packed source map') + ) + ) +}) + test('packed consumers use the exact transitive workspace runtime closure', () => { const root = { name: '@bsv/root', diff --git a/scripts/check-wallet-toolbox-platform.mjs b/scripts/check-wallet-toolbox-platform.mjs index 539b28654..331139ca5 100644 --- a/scripts/check-wallet-toolbox-platform.mjs +++ b/scripts/check-wallet-toolbox-platform.mjs @@ -101,6 +101,20 @@ function compareText(left, right) { return left.localeCompare(right) } +function packageNames(moduleIds) { + return [ + ...new Set( + moduleIds.flatMap(moduleId => { + const normalized = moduleId.replaceAll('\\', '/') + const installed = normalized.split('/node_modules/').at(-1) + if (!installed || installed === normalized) return [] + const parts = installed.split('/') + return [parts[0].startsWith('@') ? parts.slice(0, 2).join('/') : parts[0]] + }) + ) + ].sort(compareText) +} + const run = createCommandRunner({ timeoutMs: COMMAND_TIMEOUT_MS, maxBufferBytes: MAX_BUFFER_BYTES, @@ -345,7 +359,22 @@ async function checkBrowser(consumerDirectory, budget) { const esbuildSizes = sizes(esbuildBundle.code) validateBudget(esbuildSizes, budget.esbuild, 'esbuild browser bundle') - return { vite: viteSizes, esbuild: esbuildSizes } + return { + vite: { + bytes: viteSizes, + composition: { + modules: viteModules.size, + packages: packageNames([...viteModules]) + } + }, + esbuild: { + bytes: esbuildSizes, + composition: { + modules: Object.keys(esbuildResult.metafile.inputs).length, + packages: packageNames(Object.keys(esbuildResult.metafile.inputs)) + } + } + } } function hermesCompilerPath() { @@ -486,6 +515,23 @@ async function main() { profile === 'browser' ? await checkBrowser(consumerDirectory, budget.maximumBytes) : await checkMobile(consumerDirectory, budget.maximumBytes) + if (profile === 'browser' && process.env.BROWSER_COMPOSITION_DIRECTORY) { + await fs.mkdir(process.env.BROWSER_COMPOSITION_DIRECTORY, { recursive: true }) + await fs.writeFile( + path.join(process.env.BROWSER_COMPOSITION_DIRECTORY, 'bsv-wallet-toolbox-client.json'), + `${JSON.stringify( + { + schemaVersion: 1, + package: manifest.name, + version: manifest.version, + entry: '.', + measurements + }, + null, + 2 + )}\n` + ) + } console.log( `Verified ${manifest.name}@${manifest.version} ${profile} platform contract: ` + `${JSON.stringify(measurements)}` diff --git a/scripts/ci-orchestration.test.mjs b/scripts/ci-orchestration.test.mjs index 70c5ba849..0b5f51a20 100644 --- a/scripts/ci-orchestration.test.mjs +++ b/scripts/ci-orchestration.test.mjs @@ -21,6 +21,11 @@ test('CI shares one audited build across coverage and browser consumer lanes', ( /^ matrix: \$\{\{ fromJSON\(needs\.prepare\.outputs\.browser-matrix\) \}\}$/m ) assert.match(workflow, /PREBUILT_PACKAGE_OUTPUTS: '1'/) + assert.match(workflow, /BROWSER_COMPOSITION_DIRECTORY:/) + assert.match(workflow, /name: browser-composition-\$\{\{ matrix\.shard \}\}/) + assert.match(workflow, /name: browser-composition-sdk/) + assert.match(workflow, /name: browser-composition-verifast/) + assert.match(workflow, /name: browser-composition-wallet/) assert.match(workflow, /run-prebuilt-package-script\.mjs" \\\n\s+--script test:browser/) assert.match(workflow, /run-prebuilt-package-script\.mjs" \\\n\s+--script test:coverage/) assert.doesNotMatch(workflow, /@bsv\/sdk run test:coverage/) diff --git a/scripts/ci-performance.mjs b/scripts/ci-performance.mjs index 1502ec14b..42963dd46 100644 --- a/scripts/ci-performance.mjs +++ b/scripts/ci-performance.mjs @@ -137,13 +137,7 @@ export function createReport({ 'per-job and per-step duration', 'job queue time', 'artifact upload/download step duration' - ], - unavailableFromActionsApi: [ - 'hosted-runner CPU utilization', - 'hosted-runner memory utilization', - 'action-internal cache hit rate' - ], - note: 'Unavailable metrics require explicit in-run instrumentation; they are not inferred from the GitHub Actions REST API.' + ] }, groups: Object.fromEntries( Object.entries(groups).map(([name, runs]) => [name, { summary: groupSummary(runs), runs }]) @@ -407,12 +401,7 @@ function renderSummary(report, comparisons) { comparisons.length === 0 ? 'Performance budget: passed.' : ['Performance budget: failed.', '', comparisonDetails].join('\n') - lines.push( - '', - budgetStatus, - '', - 'GitHub-hosted CPU, memory, and action-internal cache-hit data are not exposed by the Actions REST API and remain an explicit instrumentation gap.' - ) + lines.push('', budgetStatus) return `${lines.join('\n')}\n` } diff --git a/scripts/dependency-release-governance.mjs b/scripts/dependency-release-governance.mjs index 8d8136962..52c39aaf1 100644 --- a/scripts/dependency-release-governance.mjs +++ b/scripts/dependency-release-governance.mjs @@ -198,6 +198,61 @@ function validateOverrideRegistry(policy, exceptions, errors) { for (const registration of policy.overrideRegistry) { validateOverrideException(registration, byId, policy.owner, today, errors) } + const review = policy.overrideRemovalReview + if ( + review?.reviewedAt !== policy.lastReviewed || + review?.retainedCount !== actual.length || + !isNonEmptyString(review?.method) || + !isNonEmptyString(review?.result) || + !isNonEmptyString(review?.nextReview) + ) { + errors.push('overrideRemovalReview must record the current complete removal rehearsal') + } +} + +function dispositionMatches(disposition, declaration) { + return ( + disposition.dependency === declaration.name && + (disposition.field === undefined || disposition.field === declaration.field) && + (disposition.manifest === undefined || disposition.manifest === declaration.manifest) && + (disposition.manifestPrefix === undefined || + declaration.manifest.startsWith(disposition.manifestPrefix)) && + (disposition.declared === undefined || disposition.declared === declaration.declared) && + (disposition.declaredPrefix === undefined || + declaration.declared.startsWith(disposition.declaredPrefix)) + ) +} + +function validateDirectInventoryPolicy(policy, errors) { + const inventory = policy.directLatestInventory + if ( + !Number.isSafeInteger(inventory.minimumReleaseAgeMinutes) || + inventory.minimumReleaseAgeMinutes < 1 + ) { + errors.push('directLatestInventory.minimumReleaseAgeMinutes must be positive') + } + const classifications = new Set(inventory.classifications) + const declarations = dependencyDeclarations() + for (const disposition of inventory.dispositions ?? []) { + for (const field of [ + 'dependency', + 'classification', + 'rationale', + 'owner', + 'reviewBy', + 'removeWhen' + ]) { + if (!isNonEmptyString(disposition[field])) { + errors.push(`dependency disposition must define ${field}`) + } + } + if (!classifications.has(disposition.classification)) { + errors.push(`unknown dependency disposition classification ${disposition.classification}`) + } + if (!declarations.some(declaration => dispositionMatches(disposition, declaration))) { + errors.push(`stale dependency disposition for ${disposition.dependency}`) + } + } } function validateOverrideException(registration, exceptionsById, owner, today, errors) { @@ -252,6 +307,7 @@ export function validateDependencyReleaseGovernance(root = ROOT) { validateRoutinePolicy(policy, errors) validateEvidenceTemplate(policy, errors) validateFirstParty(policy, projects, errors) + validateDirectInventoryPolicy(policy, errors) validateOverrideRegistry(policy, exceptions, errors) validateScheduledVerification(policy, errors) return errors @@ -304,13 +360,53 @@ function declaredMajor(value) { return match ? Number(match[1]) : undefined } -export async function createDirectLatestInventory() { +function releaseAgeMinutes(publishedAt, now) { + if (!publishedAt) return undefined + const milliseconds = now.getTime() - new Date(publishedAt).getTime() + return Number.isFinite(milliseconds) ? Math.floor(milliseconds / 60_000) : undefined +} + +export function classifyDirectDependency(declaration, registry, policy, now = new Date()) { + if (declaration.name.startsWith('@bsv/')) return 'first-party-release-held' + const disposition = (policy.directLatestInventory.dispositions ?? []).find(candidate => + dispositionMatches(candidate, declaration) + ) + if (disposition) return disposition.classification + + const declared = declaredMajor(declaration.declared) + const latest = declaredMajor(registry.latest) + if (registry.latest && !String(declaration.declared).includes(registry.latest)) { + const age = releaseAgeMinutes(registry.publishedAt, now) + if ( + age !== undefined && + age >= 0 && + age < policy.directLatestInventory.minimumReleaseAgeMinutes + ) { + return 'release-age-hold' + } + } + if (declared !== undefined && latest !== undefined && declared < latest) { + return 'major-migration' + } + if (registry.latest && !String(declaration.declared).includes(registry.latest)) { + return 'compatible-update' + } + return 'current' +} + +export async function createDirectLatestInventory(now = new Date()) { + const policy = readJson(POLICY_PATH) const declarations = dependencyDeclarations() const names = [...new Set(declarations.map(item => item.name))].sort(compareText) const metadata = await mapWithConcurrency(names, 8, async name => { try { - const latest = await npmView(name, ['name', 'version']) - return { name, latest: latest.version, queryStatus: 'ok' } + const latest = await npmView(name, ['name', 'version', 'time']) + return { + name, + latest: latest.version, + publishedAt: latest.time?.[latest.version], + queryStatus: 'ok' + } } catch (error) { return { name, queryStatus: 'unavailable', error: String(error.message).slice(0, 500) } } @@ -318,16 +414,12 @@ export async function createDirectLatestInventory() { const byName = new Map(metadata.map(item => [item.name, item])) const rows = declarations.map(declaration => { const registry = byName.get(declaration.name) - const declared = declaredMajor(declaration.declared) - const latest = declaredMajor(registry.latest) - let classification = 'current' - if (declaration.name.startsWith('@bsv/')) classification = 'first-party-release-held' - else if (declared !== undefined && latest !== undefined && declared < latest) { - classification = 'major-migration' - } else if (registry.latest && !String(declaration.declared).includes(registry.latest)) { - classification = 'compatible-update' + return { + ...declaration, + latest: registry.latest, + latestPublishedAt: registry.publishedAt, + classification: classifyDirectDependency(declaration, registry, policy, now) } - return { ...declaration, latest: registry.latest, classification } }) return { schemaVersion: 1, diff --git a/scripts/dependency-release-governance.test.mjs b/scripts/dependency-release-governance.test.mjs index 7fb24ea3c..75b3dc520 100644 --- a/scripts/dependency-release-governance.test.mjs +++ b/scripts/dependency-release-governance.test.mjs @@ -1,7 +1,10 @@ import assert from 'node:assert/strict' +import fs from 'node:fs' +import path from 'node:path' import test from 'node:test' import { + classifyDirectDependency, collectOverrides, immutableDeploymentImages, parsePnpmOverrides, @@ -9,6 +12,10 @@ import { validatePullRequestEvidence } from './dependency-release-governance.mjs' +const dependencyPolicy = JSON.parse( + fs.readFileSync(path.join(process.cwd(), 'governance/dependency-release-policy.json'), 'utf8') +) + test('dependency and release governance is internally complete', () => { assert.deepEqual(validateDependencyReleaseGovernance(), []) @@ -35,6 +42,48 @@ trustPolicy: no-downgrade ) }) +test('direct dependency inventory distinguishes freshness holds and governed compatibility', () => { + const declaration = { + name: 'example', + declared: '^1.0.0', + field: 'dependencies', + manifest: 'package.json' + } + const now = new Date('2026-07-30T18:00:00.000Z') + assert.equal( + classifyDirectDependency( + declaration, + { latest: '1.1.0', publishedAt: '2026-07-30T17:30:00.000Z' }, + dependencyPolicy, + now + ), + 'release-age-hold' + ) + assert.equal( + classifyDirectDependency( + declaration, + { latest: '1.1.0', publishedAt: '2026-07-28T17:30:00.000Z' }, + dependencyPolicy, + now + ), + 'compatible-update' + ) + assert.equal( + classifyDirectDependency( + { + name: 'typescript', + declared: 'npm:@typescript/typescript6@6.0.2', + field: 'devDependencies', + manifest: 'packages/sdk/package.json' + }, + { latest: '7.0.2', publishedAt: '2026-07-01T00:00:00.000Z' }, + dependencyPolicy, + now + ), + 'toolchain-bridge' + ) +}) + test('dependency evidence is required only for dependency-shaped changes', () => { assert.deepEqual(validatePullRequestEvidence('', ['packages/sdk/src/index.ts']), []) assert.deepEqual(validatePullRequestEvidence('', ['pnpm-lock.yaml']), [ diff --git a/scripts/patch-coverage.mjs b/scripts/patch-coverage.mjs new file mode 100644 index 000000000..17d3f20a5 --- /dev/null +++ b/scripts/patch-coverage.mjs @@ -0,0 +1,198 @@ +#!/usr/bin/env node + +import { execFileSync } from 'node:child_process' +import fs from 'node:fs' +import path from 'node:path' +import process from 'node:process' +import { fileURLToPath, pathToFileURL } from 'node:url' + +export const REPOSITORY_ROOT = fileURLToPath(new URL('..', import.meta.url)) + +const EXCLUDED_SOURCE_PATTERNS = [ + /(?:^|\/)__tests__(?:\/|$)/, + /(?:^|\/)tests?(?:\/|$)/, + /\.(?:spec|test)\.[cm]?[jt]sx?$/ +] + +function normalizedPath(value) { + return value.split(path.sep).join('/').replace(/^\.\//, '') +} + +function isGovernedSource(file) { + return ( + file.startsWith('packages/') && + /\.[cm]?[jt]sx?$/.test(file) && + !EXCLUDED_SOURCE_PATTERNS.some(pattern => pattern.test(file)) + ) +} + +function governedDiffFile(line) { + const target = line.slice(4) + if (target === '/dev/null') return undefined + const file = normalizedPath(target.replace(/^b\//, '')) + return isGovernedSource(file) ? file : undefined +} + +function addChangedHunkLines(line, changedLines) { + const match = /\+(\d+)(?:,(\d+))?/.exec(line) + if (!match) return + const start = Number(match[1]) + const count = match[2] === undefined ? 1 : Number(match[2]) + for (let offset = 0; offset < count; offset++) changedLines.add(start + offset) +} + +export function changedLinesFromDiff(diff) { + const changed = new Map() + let file + for (const line of diff.split(/\r?\n/)) { + if (line.startsWith('+++ ')) { + file = governedDiffFile(line) + if (file && !changed.has(file)) changed.set(file, new Set()) + continue + } + if (!file || !changed.has(file) || !line.startsWith('@@ ')) continue + addChangedHunkLines(line, changed.get(file)) + } + return changed +} + +function coverageFile(coverage, source) { + const normalized = normalizedPath(source) + if (!coverage.has(normalized)) { + coverage.set(normalized, { lines: new Map(), branches: new Map() }) + } + return coverage.get(normalized) +} + +export function mergeLcov(texts) { + const coverage = new Map() + for (const text of texts) { + let current + for (const line of text.split(/\r?\n/)) { + if (line.startsWith('SF:')) { + current = coverageFile(coverage, line.slice(3)) + } else if (current && line.startsWith('DA:')) { + const [lineNumber, hits] = line.slice(3).split(',') + const key = Number(lineNumber) + current.lines.set(key, Math.max(current.lines.get(key) ?? 0, Number(hits))) + } else if (current && line.startsWith('BRDA:')) { + const [lineNumber, block, branch, taken] = line.slice(5).split(',') + const key = `${lineNumber}:${block}:${branch}` + const hits = taken === '-' ? 0 : Number(taken) + current.branches.set(key, Math.max(current.branches.get(key) ?? 0, hits)) + } else if (line === 'end_of_record') { + current = undefined + } + } + } + return coverage +} + +export function evaluatePatchCoverage(changed, coverage) { + const misses = [] + const missingFiles = [] + const points = { covered: 0, total: 0 } + for (const [file, lines] of changed) { + const fileCoverage = coverage.get(file) + if (!fileCoverage) { + missingFiles.push(file) + continue + } + addFileCoverage(file, lines, fileCoverage, points, misses) + } + return { + ...points, + percent: points.total === 0 ? 100 : (points.covered / points.total) * 100, + misses, + missingFiles + } +} + +function addFileCoverage(file, lines, fileCoverage, points, misses) { + for (const line of [...lines].sort((left, right) => left - right)) { + addLineCoverage(file, line, fileCoverage, points, misses) + addBranchCoverage(file, line, fileCoverage, points, misses) + } +} + +function addLineCoverage(file, line, fileCoverage, points, misses) { + if (!fileCoverage.lines.has(line)) return + points.total++ + if (fileCoverage.lines.get(line) > 0) points.covered++ + else misses.push(`${file}:${line} (line)`) +} + +function addBranchCoverage(file, line, fileCoverage, points, misses) { + for (const [key, hits] of fileCoverage.branches) { + if (!key.startsWith(`${line}:`)) continue + points.total++ + if (hits > 0) points.covered++ + else misses.push(`${file}:${line} (branch ${key.slice(String(line).length + 1)})`) + } +} + +function option(arguments_, name) { + const index = arguments_.indexOf(name) + return index === -1 ? undefined : arguments_[index + 1] +} + +function lcovFiles(directory) { + const files = [] + for (const entry of fs.readdirSync(directory, { withFileTypes: true })) { + const entryPath = path.join(directory, entry.name) + if (entry.isDirectory()) files.push(...lcovFiles(entryPath)) + else if (entry.isFile() && entry.name.endsWith('.lcov.info')) files.push(entryPath) + } + return files.sort((left, right) => left.localeCompare(right)) +} + +async function main(arguments_) { + const base = option(arguments_, '--base') + const directory = option(arguments_, '--lcov-directory') + const target = Number(option(arguments_, '--target') ?? 90) + if (!base || !directory || !Number.isFinite(target) || target <= 0 || target > 100) { + throw new Error('Usage: patch-coverage.mjs --base --lcov-directory [--target 90]') + } + const diff = execFileSync( + '/usr/bin/git', + ['diff', '--unified=0', '--diff-filter=AMRC', `${base}...HEAD`, '--', 'packages'], + { cwd: REPOSITORY_ROOT, encoding: 'utf8', maxBuffer: 20 * 1024 * 1024 } + ) + const changed = changedLinesFromDiff(diff) + const directoryPath = path.resolve(directory) + const files = fs.existsSync(directoryPath) ? lcovFiles(directoryPath) : [] + if (changed.size > 0 && files.length === 0) { + throw new Error(`Changed production files require LCOV inputs beneath ${directory}`) + } + const result = evaluatePatchCoverage( + changed, + mergeLcov(files.map(file => fs.readFileSync(file, 'utf8'))) + ) + const summary = + `Patch coverage ${result.percent.toFixed(2)}% ` + + `(${result.covered}/${result.total} changed line/branch points; target ${target.toFixed(2)}%).` + console.log(summary) + if (process.env.GITHUB_STEP_SUMMARY) { + fs.appendFileSync( + process.env.GITHUB_STEP_SUMMARY, + `## Repository patch coverage\n\n${summary}\n` + ) + } + if (result.missingFiles.length > 0) { + throw new Error( + `${summary}\nChanged production files absent from LCOV:\n${result.missingFiles.join('\n')}` + ) + } + if (result.percent + Number.EPSILON < target) { + throw new Error(`${summary}\nUncovered:\n${result.misses.join('\n')}`) + } +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) { + try { + await main(process.argv.slice(2)) + } catch (error) { + console.error(error.message) + process.exitCode = 1 + } +} diff --git a/scripts/patch-coverage.test.mjs b/scripts/patch-coverage.test.mjs new file mode 100644 index 000000000..26ce00b3e --- /dev/null +++ b/scripts/patch-coverage.test.mjs @@ -0,0 +1,78 @@ +import assert from 'node:assert/strict' +import test from 'node:test' + +import { changedLinesFromDiff, evaluatePatchCoverage, mergeLcov } from './patch-coverage.mjs' + +test('patch coverage intersects changed production lines with merged LCOV line and branch data', () => { + const changed = + changedLinesFromDiff(`diff --git a/packages/sdk/src/example.ts b/packages/sdk/src/example.ts ++++ b/packages/sdk/src/example.ts +@@ -1,0 +2,3 @@ +`) + const coverage = mergeLcov([ + `SF:packages/sdk/src/example.ts +DA:2,1 +DA:3,1 +DA:4,0 +BRDA:3,0,0,1 +BRDA:3,0,1,0 +end_of_record +`, + `SF:packages/sdk/src/example.ts +DA:4,1 +BRDA:3,0,1,1 +end_of_record +` + ]) + + assert.deepEqual(evaluatePatchCoverage(changed, coverage), { + covered: 5, + total: 5, + percent: 100, + misses: [], + missingFiles: [] + }) +}) + +test('patch coverage ignores tests and reports uncovered production branches', () => { + const changed = + changedLinesFromDiff(`diff --git a/packages/sdk/src/example.ts b/packages/sdk/src/example.ts ++++ b/packages/sdk/src/example.ts +@@ -3 +3 @@ +diff --git a/packages/sdk/src/example.test.ts b/packages/sdk/src/example.test.ts ++++ b/packages/sdk/src/example.test.ts +@@ -1,0 +1,20 @@ +`) + const coverage = mergeLcov([ + `SF:packages/sdk/src/example.ts +DA:3,1 +BRDA:3,0,0,1 +BRDA:3,0,1,0 +end_of_record +` + ]) + const result = evaluatePatchCoverage(changed, coverage) + + assert.equal(changed.size, 1) + assert.equal(result.covered, 2) + assert.equal(result.total, 3) + assert.ok(Math.abs(result.percent - 200 / 3) < Number.EPSILON * 100) + assert.deepEqual(result.misses, ['packages/sdk/src/example.ts:3 (branch 0:1)']) + assert.deepEqual(result.missingFiles, []) +}) + +test('patch coverage fails closed when a changed production file is absent from LCOV', () => { + const changed = + changedLinesFromDiff(`diff --git a/packages/sdk/src/missing.ts b/packages/sdk/src/missing.ts ++++ b/packages/sdk/src/missing.ts +@@ -0,0 +1,2 @@ +`) + + assert.deepEqual(evaluatePatchCoverage(changed, new Map()), { + covered: 0, + total: 0, + percent: 100, + misses: [], + missingFiles: ['packages/sdk/src/missing.ts'] + }) +}) diff --git a/scripts/repository-health.test.mjs b/scripts/repository-health.test.mjs index e7003df6b..650a5f216 100644 --- a/scripts/repository-health.test.mjs +++ b/scripts/repository-health.test.mjs @@ -62,7 +62,7 @@ test('workspace discovery exactly matches the 37-project registry', () => { }) test('current repository health controls and ratchet are internally consistent', () => { - const result = evaluateRepositoryHealth({ today: '2026-07-28' }) + const result = evaluateRepositoryHealth({ today: '2026-07-30' }) assert.deepEqual(result.errors, []) assert.equal(result.projects.length, 37) @@ -73,10 +73,11 @@ test('current repository health controls and ratchet are internally consistent', test('CI performance baseline retains representative full and targeted cohorts', () => { const baseline = readJson(path.join(REPOSITORY_ROOT, 'governance/ci-performance-baseline.json')) assert.deepEqual(validateCiPerformanceBaseline(baseline), []) - assert.deepEqual(baseline.observability.unavailableFromActionsApi, [ - 'hosted-runner CPU utilization', - 'hosted-runner memory utilization', - 'action-internal cache hit rate' + assert.deepEqual(baseline.observability.captured, [ + 'run duration and variance', + 'per-job and per-step duration', + 'job queue time', + 'artifact upload/download step duration' ]) }) diff --git a/scripts/sync-service-edge-policy.mjs b/scripts/sync-service-edge-policy.mjs index 795930281..78acd298e 100644 --- a/scripts/sync-service-edge-policy.mjs +++ b/scripts/sync-service-edge-policy.mjs @@ -7,26 +7,51 @@ import { fileURLToPath } from 'node:url' import { readUtf8FileIfExists, writeUtf8FileAtomic } from './file-system.mjs' const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') -const canonicalPath = 'infra/wab/src/security/edgePolicy.ts' -const synchronizedPaths = [ - 'infra/uhrp-server-basic/src/security/edgePolicy.ts', - 'infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts', - 'infra/message-box-server/src/security/edgePolicy.ts', - 'infra/chaintracks-server/src/security/edgePolicy.ts', - 'packages/overlays/overlay-express/src/security/edgePolicy.ts', - 'packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts' -] -const canonicalTestPath = 'infra/wab/src/security/edgePolicy.test.ts' -const synchronizedTestPaths = [ - 'packages/overlays/overlay-express/src/security/edgePolicy.test.ts', - 'packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts' -] +const policy = JSON.parse( + fs.readFileSync(path.join(repositoryRoot, 'governance/service-edge-browser-policy.json'), 'utf8') +) +const canonicalPath = policy.canonicalSource +const synchronizedPaths = policy.synchronizedSources +const canonicalTestPath = policy.canonicalTest +const synchronizedTestPaths = policy.synchronizedTests const canonical = fs.readFileSync(path.join(repositoryRoot, canonicalPath), 'utf8') const canonicalTest = fs.readFileSync(path.join(repositoryRoot, canonicalTestPath), 'utf8') const checkOnly = process.argv.includes('--check') let drift = false +const policyErrors = [] +if (policy.schemaVersion !== 1 || policy.defaultContract?.corsMode !== 'public') { + policyErrors.push('service edge browser policy must preserve the version 1 public default') +} +if ( + policy.defaultContract?.allowOrigin !== '*' || + policy.defaultContract?.allowCredentials !== false || + policy.defaultContract?.opaqueOrigin !== 'allowed' || + policy.defaultContract?.cspControlsCors !== false +) { + policyErrors.push('service edge browser policy changed the public/no-credentials contract') +} +for (const testName of policy.requiredContractTests ?? []) { + if (!canonicalTest.includes(`it('${testName}'`)) { + policyErrors.push(`canonical edge contract is missing ${JSON.stringify(testName)}`) + } +} +for (const integration of policy.integrations ?? []) { + const integrationPath = path.join(repositoryRoot, integration.integration) + const sourcePath = path.join(repositoryRoot, integration.source) + if (!fs.existsSync(sourcePath)) policyErrors.push(`${integration.service} source does not exist`) + if (!fs.existsSync(integrationPath)) { + policyErrors.push(`${integration.service} integration does not exist`) + continue + } + const source = fs.readFileSync(integrationPath, 'utf8') + for (const fragment of ['corsPolicy(', 'securityHeaders(', integration.environmentPrefix]) { + if (!source.includes(fragment)) { + policyErrors.push(`${integration.service} integration is missing ${JSON.stringify(fragment)}`) + } + } +} for (const [sourcePath, source, relativePath] of [ ...synchronizedPaths.map(relativePath => [canonicalPath, canonical, relativePath]), ...synchronizedTestPaths.map(relativePath => [canonicalTestPath, canonicalTest, relativePath]) @@ -44,12 +69,16 @@ for (const [sourcePath, source, relativePath] of [ } } -if (checkOnly && drift) { +if (policyErrors.length > 0) { + for (const error of policyErrors) console.error(error) + process.exitCode = 1 +} else if (checkOnly && drift) { console.error('Run `pnpm sync:service-edge-policy` and commit the synchronized files.') process.exitCode = 1 } else if (checkOnly) { console.log( `Service edge policy is synchronized across ${synchronizedPaths.length + 1} contexts; ` + - `the contract test is synchronized across ${synchronizedTestPaths.length + 1} contexts.` + `the contract test is synchronized across ${synchronizedTestPaths.length + 1} contexts; ` + + `${policy.integrations.length} public service integrations preserve the browser contract.` ) }