From 96518c3af683ebe3653f4b706b0707bd1a066b64 Mon Sep 17 00:00:00 2001 From: Ty J Everett Date: Thu, 30 Jul 2026 09:40:07 -0700 Subject: [PATCH 1/3] chore: complete Wave 38 release readiness --- .github/workflows/ci.yml | 54 +- .github/workflows/mutation-tests.yml | 3 - conformance/runner/package.json | 4 +- conformance/runner/ts/package.json | 6 +- docs-site/package.json | 4 +- docs/infrastructure/service-edge-security.md | 12 +- docs/packages/helpers/amountinator.md | 6 +- docs/packages/helpers/create-bsv-app.md | 6 +- docs/packages/helpers/did-client.md | 6 +- docs/packages/helpers/did.md | 6 +- docs/packages/helpers/fund-wallet.md | 6 +- docs/packages/helpers/simple.md | 6 +- docs/packages/helpers/templates.md | 6 +- docs/packages/helpers/wallet-helper.md | 6 +- docs/packages/messaging/authsocket-client.md | 6 +- docs/packages/messaging/authsocket.md | 6 +- docs/packages/messaging/message-box-client.md | 6 +- docs/packages/messaging/paymail.md | 6 +- docs/packages/middleware/402-pay.md | 6 +- .../middleware/auth-express-middleware.md | 6 +- docs/packages/middleware/auth.md | 6 +- .../middleware/payment-express-middleware.md | 6 +- docs/packages/network/teranode-listener.md | 6 +- docs/packages/overlays/gasp.md | 6 +- .../overlays/overlay-discovery-services.md | 6 +- docs/packages/overlays/overlay-express.md | 6 +- docs/packages/overlays/overlay-topics.md | 6 +- docs/packages/overlays/overlay.md | 6 +- docs/packages/sdk/bsv-sdk.md | 6 +- docs/packages/sdk/verifast.md | 6 +- .../packages/wallet/btms-permission-module.md | 6 +- docs/packages/wallet/btms.md | 6 +- docs/packages/wallet/wallet-relay.md | 6 +- docs/packages/wallet/wallet-toolbox-client.md | 6 +- docs/packages/wallet/wallet-toolbox-mobile.md | 6 +- docs/packages/wallet/wallet-toolbox.md | 6 +- docs/reference/ci-performance.md | 12 +- docs/reference/dependency-policy.md | 21 +- docs/reference/package-api-migrations.md | 202 +-- docs/reference/release-operations.md | 15 +- docs/reference/repository-health.md | 24 +- docs/reference/stack-facts.md | 78 +- governance/browser-artifact-policy.json | 100 ++ governance/ci-performance-baseline.json | 8 +- governance/dependency-release-policy.json | 105 +- governance/documentation-policy.json | 2 +- governance/package-release-notes.json | 2 +- governance/repository-health/baselines.json | 60 +- governance/repository-health/exceptions.json | 2 +- governance/service-edge-browser-policy.json | 87 ++ infra/chaintracks-server/package-lock.json | 188 +-- infra/chaintracks-server/package.json | 6 +- infra/message-box-server/package-lock.json | 197 +-- infra/message-box-server/package.json | 8 +- infra/overlay-server/package-lock.json | 190 +-- infra/overlay-server/package.json | 6 +- infra/uhrp-server-basic/package-lock.json | 188 +-- infra/uhrp-server-basic/package.json | 6 +- .../package-lock.json | 188 +-- infra/uhrp-server-cloud-bucket/package.json | 6 +- infra/wab/package-lock.json | 188 +-- infra/wab/package.json | 6 +- infra/wab/src/security/edgePolicy.test.ts | 27 + infra/wallet-infra/package-lock.json | 188 +-- infra/wallet-infra/package.json | 6 +- package.json | 2 +- packages/helpers/amountinator/package.json | 8 +- .../helpers/bsv-wallet-helper/package.json | 10 +- packages/helpers/create-bsv-app/package.json | 10 +- packages/helpers/did-client/package.json | 12 +- packages/helpers/did/package.json | 10 +- packages/helpers/fund-wallet/package.json | 8 +- packages/helpers/simple/package.json | 10 +- packages/helpers/ts-templates/package.json | 10 +- .../messaging/authsocket-client/package.json | 12 +- packages/messaging/authsocket/package.json | 8 +- .../messaging/message-box-client/package.json | 12 +- .../ts-paymail/docs/examples/package.json | 6 +- packages/messaging/ts-paymail/package.json | 8 +- packages/middleware/402-pay/package.json | 8 +- .../auth-express-middleware/package.json | 8 +- packages/middleware/auth/package.json | 10 +- .../payment-express-middleware/package.json | 8 +- packages/network/ts-p2p/package.json | 10 +- packages/overlays/btms-backend/package.json | 8 +- packages/overlays/gasp-core/package.json | 8 +- .../overlay-discovery-services/package.json | 10 +- .../overlays/overlay-express/package.json | 10 +- .../src/security/edgePolicy.test.ts | 27 + packages/overlays/overlay/package.json | 20 +- packages/overlays/topics/package.json | 10 +- packages/sdk/package.json | 244 +++- .../__tests/SatoshisPerKilobyte.test.ts | 32 +- packages/verifast/package.json | 14 +- .../btms-permission-module/package.json | 8 +- packages/wallet/btms/package.json | 10 +- packages/wallet/ts-wallet-relay/package.json | 12 +- .../wallet-toolbox-examples/package.json | 6 +- .../wallet/wallet-toolbox/client/package.json | 8 +- .../wallet/wallet-toolbox/mobile/package.json | 8 +- packages/wallet/wallet-toolbox/package.json | 12 +- .../GenerateChange/generateChangeSdk.test.ts | 14 +- .../src/storage/remoting/edgePolicy.test.ts | 27 + .../test/utils/localWalletMethods.ts | 11 +- pnpm-lock.yaml | 1298 ++++++----------- scripts/browser-artifact-governance.mjs | 65 + scripts/browser-artifact-governance.test.mjs | 8 + scripts/check-browser-package.mjs | 57 +- scripts/check-browser-package.test.mjs | 19 + scripts/check-package-artifact.mjs | 193 ++- scripts/check-package-artifact.test.mjs | 96 +- scripts/check-wallet-toolbox-platform.mjs | 48 +- scripts/ci-orchestration.test.mjs | 5 + scripts/ci-performance.mjs | 15 +- scripts/dependency-release-governance.mjs | 116 +- .../dependency-release-governance.test.mjs | 49 + scripts/patch-coverage.mjs | 179 +++ scripts/patch-coverage.test.mjs | 78 + scripts/repository-health.test.mjs | 11 +- scripts/sync-service-edge-policy.mjs | 61 +- 120 files changed, 3380 insertions(+), 1966 deletions(-) create mode 100644 governance/browser-artifact-policy.json create mode 100644 governance/service-edge-browser-policy.json create mode 100644 scripts/browser-artifact-governance.mjs create mode 100644 scripts/browser-artifact-governance.test.mjs create mode 100644 scripts/patch-coverage.mjs create mode 100644 scripts/patch-coverage.test.mjs 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..fcab53e26 --- /dev/null +++ b/scripts/browser-artifact-governance.mjs @@ -0,0 +1,65 @@ +#!/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 +} + +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 = [] + 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') + + const governedNames = new Set( + registry.projects + .filter(project => (project.consumerProfiles ?? []).includes('browser-bundler')) + .map(project => project.name) + ) + 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) { + 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 +} + +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..0f296e012 100644 --- a/scripts/check-package-artifact.mjs +++ b/scripts/check-package-artifact.mjs @@ -132,6 +132,161 @@ function identityErrors(packResult, manifest) { return errors } +function escapeRegularExpression(value) { + return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') +} + +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 = [] + if ( + typeof manifest.sideEffects !== 'boolean' && + !( + Array.isArray(manifest.sideEffects) && + manifest.sideEffects.every(value => typeof value === 'string' && value.length > 0) + ) + ) { + errors.push('package.json sideEffects must be an explicit boolean or string array') + } + + 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`) + } + } + + 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`) + } + } + + 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) { + if (typeof target !== 'string') { + errors.push(`${location} must resolve to a string or null`) + continue + } + if ( + !target.startsWith('./') || + target.includes('\\') || + target.split('/').some(segment => segment === '..') + ) { + errors.push(`${location} has unsafe package target ${JSON.stringify(target)}`) + continue + } + if (expandExportTarget(subpath, target, files).length === 0) { + errors.push(`${location} target ${target} does not match a packed file`) + } + } + } + return errors +} + +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() +} + +export async function validateReferencedSourceMaps(packageDirectory, manifest, files) { + const errors = [] + const javascriptTargets = new Set() + for (const [, value] of exportSubpathEntries(manifest.exports)) { + for (const { target } of exportTargets(value)) { + if (typeof target !== 'string' || !target.startsWith('./')) continue + const targetPattern = target.slice(2) + const expression = target.includes('*') ? wildcardExpression(targetPattern) : undefined + for (const file of files) { + if ( + (expression ? expression.test(file) : file === targetPattern) && + /\.[cm]?js$/i.test(file) + ) { + javascriptTargets.add(file) + } + } + } + } + for (const file of javascriptTargets) { + const source = await fs.readFile(path.join(packageDirectory, file), 'utf8') + const match = /\/\/[#@]\s*sourceMappingURL=([^\s]+)\s*$/.exec(source) + if (!match || match[1].startsWith('data:')) continue + const mapFile = path.posix.normalize(path.posix.join(path.posix.dirname(file), match[1])) + if (mapFile.startsWith('../') || !files.includes(mapFile)) { + errors.push(`${file} references missing packed source map ${match[1]}`) + continue + } + try { + const sourceMap = JSON.parse(await fs.readFile(path.join(packageDirectory, mapFile), 'utf8')) + if (!Array.isArray(sourceMap.sources) || sourceMap.sources.length === 0) { + errors.push(`${mapFile} must contain at least one source`) + } + } catch (error) { + errors.push(`${mapFile} is not a valid source map: ${error.message}`) + } + } + return errors +} + export function validatePackedFiles(packResult, manifest, allowedSourcePrefixes = []) { const normalizedSourcePrefixes = normalizeSourcePrefixes(allowedSourcePrefixes) const files = (packResult.files ?? []).map(file => file.path) @@ -139,7 +294,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 +424,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 +472,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 +550,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 +571,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 +630,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..1f4948786 --- /dev/null +++ b/scripts/patch-coverage.mjs @@ -0,0 +1,179 @@ +#!/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)) + ) +} + +export function changedLinesFromDiff(diff) { + const changed = new Map() + let file + for (const line of diff.split(/\r?\n/)) { + if (line.startsWith('+++ ')) { + const target = line.slice(4) + file = target === '/dev/null' ? undefined : normalizedPath(target.replace(/^b\//, '')) + if (file && isGovernedSource(file) && !changed.has(file)) changed.set(file, new Set()) + continue + } + if (!file || !changed.has(file) || !line.startsWith('@@ ')) continue + const match = /\+(\d+)(?:,(\d+))?/.exec(line) + if (!match) continue + const start = Number(match[1]) + const count = match[2] === undefined ? 1 : Number(match[2]) + for (let offset = 0; offset < count; offset++) changed.get(file).add(start + offset) + } + 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) { + let covered = 0 + let total = 0 + const misses = [] + const missingFiles = [] + for (const [file, lines] of changed) { + const fileCoverage = coverage.get(file) + if (!fileCoverage) { + missingFiles.push(file) + continue + } + for (const line of [...lines].sort((left, right) => left - right)) { + if (fileCoverage.lines.has(line)) { + total++ + if (fileCoverage.lines.get(line) > 0) covered++ + else misses.push(`${file}:${line} (line)`) + } + for (const [key, hits] of fileCoverage.branches) { + if (!key.startsWith(`${line}:`)) continue + total++ + if (hits > 0) covered++ + else misses.push(`${file}:${line} (branch ${key.slice(String(line).length + 1)})`) + } + } + } + return { + covered, + total, + percent: total === 0 ? 100 : (covered / total) * 100, + misses, + missingFiles + } +} + +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() +} + +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( + '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.` ) } From 7898cb0408d91db2336e1234b4ced4e5949a2f18 Mon Sep 17 00:00:00 2001 From: Ty J Everett Date: Thu, 30 Jul 2026 09:47:00 -0700 Subject: [PATCH 2/3] refactor: clear Wave 38 quality findings --- scripts/browser-artifact-governance.mjs | 48 ++++++---- scripts/check-package-artifact.mjs | 114 ++++++++++++++---------- scripts/patch-coverage.mjs | 75 ++++++++++------ 3 files changed, 145 insertions(+), 92 deletions(-) diff --git a/scripts/browser-artifact-governance.mjs b/scripts/browser-artifact-governance.mjs index fcab53e26..63a7aa8ea 100644 --- a/scripts/browser-artifact-governance.mjs +++ b/scripts/browser-artifact-governance.mjs @@ -17,39 +17,53 @@ function isNonEmptyString(value) { return typeof value === 'string' && value.trim().length > 0 } -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))) +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 +} - const governedNames = new Set( +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) { - 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`) - } + errors.push(...browserEntryErrors(root, entry, governedNames)) } return errors } diff --git a/scripts/check-package-artifact.mjs b/scripts/check-package-artifact.mjs index 0f296e012..c60c4905a 100644 --- a/scripts/check-package-artifact.mjs +++ b/scripts/check-package-artifact.mjs @@ -133,7 +133,7 @@ function identityErrors(packResult, manifest) { } function escapeRegularExpression(value) { - return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + return value.replace(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`) } function exportTargets(value, location = 'exports') { @@ -178,7 +178,19 @@ function expandExportTarget(subpath, target, files) { } export function validateManifestArtifactContract(manifest, files) { - const errors = [] + 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' && !( @@ -186,9 +198,13 @@ export function validateManifestArtifactContract(manifest, files) { manifest.sideEffects.every(value => typeof value === 'string' && value.length > 0) ) ) { - errors.push('package.json sideEffects must be an explicit boolean or string array') + 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}`) @@ -202,36 +218,30 @@ export function validateManifestArtifactContract(manifest, files) { 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 +} - 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) { - if (typeof target !== 'string') { - errors.push(`${location} must resolve to a string or null`) - continue - } - if ( - !target.startsWith('./') || - target.includes('\\') || - target.split('/').some(segment => segment === '..') - ) { - errors.push(`${location} has unsafe package target ${JSON.stringify(target)}`) - continue - } - if (expandExportTarget(subpath, target, files).length === 0) { - errors.push(`${location} target ${target} does not match a packed file`) - } - } +function exportTargetErrors(location, target, subpath, files) { + if (typeof target !== 'string') { + return [`${location} must resolve to a string or null`] } - return errors + 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) { @@ -245,11 +255,10 @@ export function concretePublicEntrypoints(manifest, files) { } } } - return [...entrypoints].sort() + return [...entrypoints].sort((left, right) => left.localeCompare(right)) } -export async function validateReferencedSourceMaps(packageDirectory, manifest, files) { - const errors = [] +function exportedJavaScriptTargets(manifest, files) { const javascriptTargets = new Set() for (const [, value] of exportSubpathEntries(manifest.exports)) { for (const { target } of exportTargets(value)) { @@ -257,32 +266,43 @@ export async function validateReferencedSourceMaps(packageDirectory, manifest, f const targetPattern = target.slice(2) const expression = target.includes('*') ? wildcardExpression(targetPattern) : undefined for (const file of files) { - if ( - (expression ? expression.test(file) : file === targetPattern) && - /\.[cm]?js$/i.test(file) - ) { + if (isExportedJavaScriptFile(file, targetPattern, expression)) { javascriptTargets.add(file) } } } } + return javascriptTargets +} + +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) { - const source = await fs.readFile(path.join(packageDirectory, file), 'utf8') - const match = /\/\/[#@]\s*sourceMappingURL=([^\s]+)\s*$/.exec(source) - if (!match || match[1].startsWith('data:')) continue - const mapFile = path.posix.normalize(path.posix.join(path.posix.dirname(file), match[1])) - if (mapFile.startsWith('../') || !files.includes(mapFile)) { - errors.push(`${file} references missing packed source map ${match[1]}`) - continue - } - try { - const sourceMap = JSON.parse(await fs.readFile(path.join(packageDirectory, mapFile), 'utf8')) - if (!Array.isArray(sourceMap.sources) || sourceMap.sources.length === 0) { - errors.push(`${mapFile} must contain at least one source`) - } - } catch (error) { - errors.push(`${mapFile} is not a valid source map: ${error.message}`) - } + errors.push(...(await sourceMapErrors(packageDirectory, file, files))) } return errors } diff --git a/scripts/patch-coverage.mjs b/scripts/patch-coverage.mjs index 1f4948786..17d3f20a5 100644 --- a/scripts/patch-coverage.mjs +++ b/scripts/patch-coverage.mjs @@ -26,22 +26,32 @@ function isGovernedSource(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('+++ ')) { - const target = line.slice(4) - file = target === '/dev/null' ? undefined : normalizedPath(target.replace(/^b\//, '')) - if (file && isGovernedSource(file) && !changed.has(file)) changed.set(file, new Set()) + file = governedDiffFile(line) + if (file && !changed.has(file)) changed.set(file, new Set()) continue } if (!file || !changed.has(file) || !line.startsWith('@@ ')) continue - const match = /\+(\d+)(?:,(\d+))?/.exec(line) - if (!match) continue - const start = Number(match[1]) - const count = match[2] === undefined ? 1 : Number(match[2]) - for (let offset = 0; offset < count; offset++) changed.get(file).add(start + offset) + addChangedHunkLines(line, changed.get(file)) } return changed } @@ -79,39 +89,48 @@ export function mergeLcov(texts) { } export function evaluatePatchCoverage(changed, coverage) { - let covered = 0 - let total = 0 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 } - for (const line of [...lines].sort((left, right) => left - right)) { - if (fileCoverage.lines.has(line)) { - total++ - if (fileCoverage.lines.get(line) > 0) covered++ - else misses.push(`${file}:${line} (line)`) - } - for (const [key, hits] of fileCoverage.branches) { - if (!key.startsWith(`${line}:`)) continue - total++ - if (hits > 0) covered++ - else misses.push(`${file}:${line} (branch ${key.slice(String(line).length + 1)})`) - } - } + addFileCoverage(file, lines, fileCoverage, points, misses) } return { - covered, - total, - percent: total === 0 ? 100 : (covered / total) * 100, + ...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] @@ -124,7 +143,7 @@ function lcovFiles(directory) { if (entry.isDirectory()) files.push(...lcovFiles(entryPath)) else if (entry.isFile() && entry.name.endsWith('.lcov.info')) files.push(entryPath) } - return files.sort() + return files.sort((left, right) => left.localeCompare(right)) } async function main(arguments_) { @@ -135,7 +154,7 @@ async function main(arguments_) { throw new Error('Usage: patch-coverage.mjs --base --lcov-directory [--target 90]') } const diff = execFileSync( - 'git', + '/usr/bin/git', ['diff', '--unified=0', '--diff-filter=AMRC', `${base}...HEAD`, '--', 'packages'], { cwd: REPOSITORY_ROOT, encoding: 'utf8', maxBuffer: 20 * 1024 * 1024 } ) From 33656c3d1595f35d1fdbfa0cd7a24c4ff9897f34 Mon Sep 17 00:00:00 2001 From: Ty J Everett Date: Thu, 30 Jul 2026 09:49:30 -0700 Subject: [PATCH 3/3] refactor: simplify export composition scan --- scripts/check-package-artifact.mjs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/scripts/check-package-artifact.mjs b/scripts/check-package-artifact.mjs index c60c4905a..67e438b7e 100644 --- a/scripts/check-package-artifact.mjs +++ b/scripts/check-package-artifact.mjs @@ -263,18 +263,22 @@ function exportedJavaScriptTargets(manifest, files) { for (const [, value] of exportSubpathEntries(manifest.exports)) { for (const { target } of exportTargets(value)) { if (typeof target !== 'string' || !target.startsWith('./')) continue - 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) - } - } + 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)