diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4c2347100..fc6e19a8d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -321,8 +321,6 @@ jobs:
cache: pnpm
- name: Install frozen dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- - name: Rebuild the audited workspace build tool
- run: pnpm rebuild esbuild
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: build-outputs
@@ -431,6 +429,7 @@ jobs:
- name: Verify affected exact-tarball browser consumers
env:
BROWSER_PACKAGES: ${{ needs.prepare.outputs.browser-packages }}
+ BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition
PREBUILT_PACKAGE_OUTPUTS: '1'
run: |
packages=()
@@ -455,6 +454,14 @@ jobs:
else
echo "No affected browser packages in this shard."
fi
+ - name: Retain exact browser composition evidence
+ if: always()
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
+ with:
+ name: browser-composition-${{ matrix.shard }}
+ path: .browser-composition/
+ if-no-files-found: ignore
+ retention-days: 30
wallet-browser-platform:
name: Platform / wallet browser
@@ -477,7 +484,17 @@ jobs:
path: .ci-artifacts
- run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz
- name: Verify packed browser consumer with Vite and esbuild
+ env:
+ BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition
run: pnpm --filter @bsv/wallet-toolbox-client run test:browser
+ - name: Retain wallet browser composition evidence
+ if: always()
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
+ with:
+ name: browser-composition-wallet
+ path: .browser-composition/
+ if-no-files-found: ignore
+ retention-days: 30
wallet-mobile-platform:
name: Platform / wallet mobile
@@ -524,6 +541,7 @@ jobs:
- run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz
- name: Generate SDK coverage and verify the packed browser consumer
env:
+ BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition
PREBUILT_PACKAGE_OUTPUTS: '1'
run: |
pnpm --filter @bsv/sdk exec node \
@@ -535,6 +553,14 @@ jobs:
node scripts/normalize-lcov-paths.mjs packages/sdk/coverage/lcov.info packages/sdk
mkdir -p .coverage-output
cp packages/sdk/coverage/lcov.info .coverage-output/sdk.lcov.info
+ - name: Retain SDK browser composition evidence
+ if: always()
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
+ with:
+ name: browser-composition-sdk
+ path: .browser-composition/
+ if-no-files-found: ignore
+ retention-days: 30
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: coverage-sdk
@@ -691,6 +717,7 @@ jobs:
- run: tar --extract --gzip --file .ci-artifacts/build-outputs.tar.gz
- name: Generate VeriFast coverage and run packaged-consumer checks
env:
+ BROWSER_COMPOSITION_DIRECTORY: ${{ github.workspace }}/.browser-composition
PREBUILT_PACKAGE_OUTPUTS: '1'
run: |
pnpm --filter @bsv/verifast exec node \
@@ -698,9 +725,19 @@ jobs:
--script test:coverage
pnpm --filter @bsv/verifast exec node scripts/test-node-consumers.mjs
pnpm --filter @bsv/verifast exec node scripts/test-browser-bundler.mjs
+ pnpm --filter @bsv/verifast exec node \
+ "$GITHUB_WORKSPACE/scripts/check-browser-package.mjs" .
node scripts/normalize-lcov-paths.mjs packages/verifast/coverage/lcov.info packages/verifast
mkdir -p .coverage-output
cp packages/verifast/coverage/lcov.info .coverage-output/verifast.lcov.info
+ - name: Retain VeriFast browser composition evidence
+ if: always()
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
+ with:
+ name: browser-composition-verifast
+ path: .browser-composition/
+ if-no-files-found: ignore
+ retention-days: 30
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
with:
name: coverage-verifast
@@ -727,6 +764,11 @@ jobs:
node-version: 24
cache: pnpm
- run: pnpm install --frozen-lockfile --ignore-scripts
+ - name: Restore the immutable MongoDB test binary
+ uses: actions/cache@caa296126883cff596d87d8935842f9db880ef25 # v5
+ with:
+ path: ${{ runner.temp }}/mongodb-binaries
+ key: mongodb-memory-server-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: build-outputs
@@ -828,6 +870,14 @@ jobs:
fi
echo "files=$FILES" >> "$GITHUB_OUTPUT"
+ - name: Enforce the repository-owned 90% patch-coverage gate
+ if: github.event_name == 'pull_request'
+ run: >-
+ node scripts/patch-coverage.mjs
+ --base "${{ github.event.pull_request.base.sha }}"
+ --lcov-directory .coverage-artifacts
+ --target 90
+
- name: Upload coverage to Codecov
if: steps.cov.outputs.has-coverage == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
diff --git a/.github/workflows/mutation-tests.yml b/.github/workflows/mutation-tests.yml
index 31f7fc2cc..390e8aa77 100644
--- a/.github/workflows/mutation-tests.yml
+++ b/.github/workflows/mutation-tests.yml
@@ -97,9 +97,6 @@ jobs:
- name: Install frozen dependencies
run: pnpm install --frozen-lockfile --ignore-scripts
- - name: Rebuild the audited workspace build tool
- run: pnpm rebuild esbuild
-
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
name: mutation-build-outputs
diff --git a/conformance/runner/package.json b/conformance/runner/package.json
index 7f7aef3ad..cab730c36 100644
--- a/conformance/runner/package.json
+++ b/conformance/runner/package.json
@@ -16,9 +16,9 @@
"ajv": "^8.20.0"
},
"devDependencies": {
- "oxlint": "^1.75.0",
- "prettier": "^3.9.6",
"@typescript/native": "npm:typescript@7.0.2",
+ "oxlint": "^1.76.0",
+ "prettier": "^3.9.6",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"license": "SEE LICENSE IN LICENSE.txt"
diff --git a/conformance/runner/ts/package.json b/conformance/runner/ts/package.json
index 272b780e8..6ec3f9e1c 100644
--- a/conformance/runner/ts/package.json
+++ b/conformance/runner/ts/package.json
@@ -11,12 +11,12 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
- "@types/node": "^24.13.3",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"prettier": "^3.9.6",
"ts-jest": "^29.4.12",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"license": "SEE LICENSE IN LICENSE.txt"
diff --git a/docs-site/package.json b/docs-site/package.json
index 19433861a..8f7817fb2 100644
--- a/docs-site/package.json
+++ b/docs-site/package.json
@@ -24,12 +24,13 @@
"@shikijs/rehype": "^4.3.1",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
+ "@typescript/native": "npm:typescript@7.0.2",
"@vitejs/plugin-react": "^6.0.4",
"ajv": "^8.20.0",
"ajv-formats": "^3.0.1",
"gray-matter": "^4.0.3",
"mermaid": "^11.16.0",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"pagefind": "^1.5.2",
"prettier": "^3.9.6",
"rehype-autolink-headings": "^7.1.0",
@@ -38,7 +39,6 @@
"remark-gfm": "^4.0.1",
"remark-mdx-frontmatter": "^5.2.0",
"rollup": "^4.62.3",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
"vite": "^8.1.5"
},
diff --git a/docs/infrastructure/service-edge-security.md b/docs/infrastructure/service-edge-security.md
index ed3dbdae8..aa0d6b2a8 100644
--- a/docs/infrastructure/service-edge-security.md
+++ b/docs/infrastructure/service-edge-security.md
@@ -3,8 +3,8 @@ id: infra-service-edge-security
title: "Public Service Edge Security"
kind: reference
version: "1.0.0"
-last_updated: "2026-07-25"
-last_verified: "2026-07-25"
+last_updated: "2026-07-30"
+last_verified: "2026-07-30"
review_cadence_days: 30
status: stable
tags: [infrastructure, security, cors, rate-limits, authentication, operations]
@@ -69,6 +69,14 @@ JavaScript attempt the same signed or token-authenticated protocol call that a
mobile or server client can attempt. No service in this inventory uses ambient
browser cookies as its authorization boundary.
+`governance/service-edge-browser-policy.json` records this contract and every
+WAB, UHRP, Message Box, Chaintracks, OverlayExpress, and Wallet Storage
+integration. Repository health verifies the public wildcard/no-credentials
+default, opaque-origin support, opt-in exact allowlists and credentials,
+disabled mode, service/global precedence, and the independence of CSP and
+CORS. The canonical tests are synchronized across the reusable Overlay and
+Storage implementations.
+
### CSP and other response headers
API responses use `nosniff`, deny framing, no-referrer, a restrictive
diff --git a/docs/packages/helpers/amountinator.md b/docs/packages/helpers/amountinator.md
index b96b435a1..18e8a6380 100644
--- a/docs/packages/helpers/amountinator.md
+++ b/docs/packages/helpers/amountinator.md
@@ -3,10 +3,10 @@ id: pkg-amountinator
title: '@bsv/amountinator'
kind: package
domain: helpers
-version: '2.1.3'
+version: '2.1.4'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/amountinator'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator'
diff --git a/docs/packages/helpers/create-bsv-app.md b/docs/packages/helpers/create-bsv-app.md
index 700963edf..ebfbb324c 100644
--- a/docs/packages/helpers/create-bsv-app.md
+++ b/docs/packages/helpers/create-bsv-app.md
@@ -3,9 +3,9 @@ id: pkg-create-bsv-app
title: 'create-bsv-app'
kind: package
domain: helpers
-version: '1.0.3'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.0.4'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/create-bsv-app'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app'
diff --git a/docs/packages/helpers/did-client.md b/docs/packages/helpers/did-client.md
index f42f20464..d5e0e535c 100644
--- a/docs/packages/helpers/did-client.md
+++ b/docs/packages/helpers/did-client.md
@@ -3,10 +3,10 @@ id: pkg-did-client
title: '@bsv/did-client'
kind: package
domain: helpers
-version: '1.2.2'
+version: '1.2.3'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/did-client'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client'
diff --git a/docs/packages/helpers/did.md b/docs/packages/helpers/did.md
index 325e21687..d1efb3de1 100644
--- a/docs/packages/helpers/did.md
+++ b/docs/packages/helpers/did.md
@@ -3,10 +3,10 @@ id: pkg-did
title: '@bsv/did'
kind: package
domain: helpers
-version: '0.2.3'
+version: '0.2.4'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/did'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did'
diff --git a/docs/packages/helpers/fund-wallet.md b/docs/packages/helpers/fund-wallet.md
index 3eb4e11be..ebd986830 100644
--- a/docs/packages/helpers/fund-wallet.md
+++ b/docs/packages/helpers/fund-wallet.md
@@ -3,10 +3,10 @@ id: pkg-fund-wallet
title: '@bsv/fund-wallet'
kind: package
domain: helpers
-version: '1.4.2'
+version: '1.4.3'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/fund-wallet'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet'
diff --git a/docs/packages/helpers/simple.md b/docs/packages/helpers/simple.md
index dc65c9384..aa7aa7d2e 100644
--- a/docs/packages/helpers/simple.md
+++ b/docs/packages/helpers/simple.md
@@ -3,10 +3,10 @@ id: pkg-simple
title: '@bsv/simple'
kind: package
domain: helpers
-version: '0.4.7'
+version: '0.4.8'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/simple'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple'
diff --git a/docs/packages/helpers/templates.md b/docs/packages/helpers/templates.md
index fb5f02efb..b362fdc28 100644
--- a/docs/packages/helpers/templates.md
+++ b/docs/packages/helpers/templates.md
@@ -3,10 +3,10 @@ id: pkg-templates
title: '@bsv/templates'
kind: package
domain: helpers
-version: '1.9.4'
+version: '1.9.5'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/templates'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates'
diff --git a/docs/packages/helpers/wallet-helper.md b/docs/packages/helpers/wallet-helper.md
index 99b934b71..c710d5948 100644
--- a/docs/packages/helpers/wallet-helper.md
+++ b/docs/packages/helpers/wallet-helper.md
@@ -3,10 +3,10 @@ id: pkg-wallet-helper
title: '@bsv/wallet-helper'
kind: package
domain: helpers
-version: '0.1.5'
+version: '0.1.6'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/wallet-helper'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper'
diff --git a/docs/packages/messaging/authsocket-client.md b/docs/packages/messaging/authsocket-client.md
index 43e860272..36b43eebb 100644
--- a/docs/packages/messaging/authsocket-client.md
+++ b/docs/packages/messaging/authsocket-client.md
@@ -3,10 +3,10 @@ id: pkg-authsocket-client
title: '@bsv/authsocket-client'
kind: package
domain: messaging
-version: '2.1.2'
+version: '2.1.3'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/authsocket-client'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client'
diff --git a/docs/packages/messaging/authsocket.md b/docs/packages/messaging/authsocket.md
index d4f8a6773..8d66ad6ee 100644
--- a/docs/packages/messaging/authsocket.md
+++ b/docs/packages/messaging/authsocket.md
@@ -3,10 +3,10 @@ id: pkg-authsocket
title: '@bsv/authsocket'
kind: package
domain: messaging
-version: '2.1.3'
+version: '2.1.4'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/authsocket'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket'
diff --git a/docs/packages/messaging/message-box-client.md b/docs/packages/messaging/message-box-client.md
index f4062cbde..0a03d5308 100644
--- a/docs/packages/messaging/message-box-client.md
+++ b/docs/packages/messaging/message-box-client.md
@@ -3,10 +3,10 @@ id: pkg-message-box-client
title: '@bsv/message-box-client'
kind: package
domain: messaging
-version: '2.2.5'
+version: '2.2.6'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/message-box-client'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client'
diff --git a/docs/packages/messaging/paymail.md b/docs/packages/messaging/paymail.md
index c9f477589..8476f667c 100644
--- a/docs/packages/messaging/paymail.md
+++ b/docs/packages/messaging/paymail.md
@@ -3,10 +3,10 @@ id: pkg-paymail
title: '@bsv/paymail'
kind: package
domain: messaging
-version: '2.4.4'
+version: '2.4.5'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/paymail'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail'
diff --git a/docs/packages/middleware/402-pay.md b/docs/packages/middleware/402-pay.md
index adda10704..d7d7b6e59 100644
--- a/docs/packages/middleware/402-pay.md
+++ b/docs/packages/middleware/402-pay.md
@@ -3,10 +3,10 @@ id: pkg-402-pay
title: '@bsv/402-pay'
kind: package
domain: middleware
-version: '0.2.3'
+version: '0.2.4'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/402-pay'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay'
diff --git a/docs/packages/middleware/auth-express-middleware.md b/docs/packages/middleware/auth-express-middleware.md
index 03023a360..aa806f445 100644
--- a/docs/packages/middleware/auth-express-middleware.md
+++ b/docs/packages/middleware/auth-express-middleware.md
@@ -3,10 +3,10 @@ id: pkg-auth-express-middleware
title: '@bsv/auth-express-middleware'
kind: package
domain: middleware
-version: '2.1.4'
+version: '2.1.5'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/auth-express-middleware'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware'
diff --git a/docs/packages/middleware/auth.md b/docs/packages/middleware/auth.md
index 423fead6b..a8dbe293e 100644
--- a/docs/packages/middleware/auth.md
+++ b/docs/packages/middleware/auth.md
@@ -3,9 +3,9 @@ id: pkg-auth
title: '@bsv/auth'
kind: package
domain: middleware
-version: '0.1.2'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '0.1.3'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/auth'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth'
diff --git a/docs/packages/middleware/payment-express-middleware.md b/docs/packages/middleware/payment-express-middleware.md
index 23e89f830..040a5609b 100644
--- a/docs/packages/middleware/payment-express-middleware.md
+++ b/docs/packages/middleware/payment-express-middleware.md
@@ -3,10 +3,10 @@ id: pkg-payment-express-middleware
title: '@bsv/payment-express-middleware'
kind: package
domain: middleware
-version: '2.1.3'
+version: '2.1.4'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/payment-express-middleware'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware'
diff --git a/docs/packages/network/teranode-listener.md b/docs/packages/network/teranode-listener.md
index 4bbc3c81b..caf7b85ec 100644
--- a/docs/packages/network/teranode-listener.md
+++ b/docs/packages/network/teranode-listener.md
@@ -4,9 +4,9 @@ title: '@bsv/teranode-listener'
kind: package
domain: network
npm: '@bsv/teranode-listener'
-version: '1.1.3'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.1.4'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p'
status: stable
diff --git a/docs/packages/overlays/gasp.md b/docs/packages/overlays/gasp.md
index 7f4abb600..4429fcee3 100644
--- a/docs/packages/overlays/gasp.md
+++ b/docs/packages/overlays/gasp.md
@@ -3,10 +3,10 @@ id: pkg-gasp
title: '@bsv/gasp'
kind: package
domain: overlays
-version: '1.3.4'
+version: '1.3.5'
source_repo: 'bsv-blockchain/ts-stack'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/gasp'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core'
diff --git a/docs/packages/overlays/overlay-discovery-services.md b/docs/packages/overlays/overlay-discovery-services.md
index adf81ea77..082baa415 100644
--- a/docs/packages/overlays/overlay-discovery-services.md
+++ b/docs/packages/overlays/overlay-discovery-services.md
@@ -4,9 +4,9 @@ title: '@bsv/overlay-discovery-services'
kind: package
domain: overlays
npm: '@bsv/overlay-discovery-services'
-version: '2.1.5'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.1.6'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services'
status: stable
diff --git a/docs/packages/overlays/overlay-express.md b/docs/packages/overlays/overlay-express.md
index 002e0ed69..6cb4c6b8b 100644
--- a/docs/packages/overlays/overlay-express.md
+++ b/docs/packages/overlays/overlay-express.md
@@ -4,9 +4,9 @@ title: '@bsv/overlay-express'
kind: package
domain: overlays
npm: '@bsv/overlay-express'
-version: '2.4.8'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.4.9'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express'
status: stable
diff --git a/docs/packages/overlays/overlay-topics.md b/docs/packages/overlays/overlay-topics.md
index f4543400a..a15d98e1b 100644
--- a/docs/packages/overlays/overlay-topics.md
+++ b/docs/packages/overlays/overlay-topics.md
@@ -4,9 +4,9 @@ title: '@bsv/overlay-topics'
kind: package
domain: overlays
npm: '@bsv/overlay-topics'
-version: '1.6.7'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.6.8'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics'
status: stable
diff --git a/docs/packages/overlays/overlay.md b/docs/packages/overlays/overlay.md
index f88ff5947..2cc6f01e7 100644
--- a/docs/packages/overlays/overlay.md
+++ b/docs/packages/overlays/overlay.md
@@ -4,9 +4,9 @@ title: '@bsv/overlay'
kind: package
domain: overlays
npm: '@bsv/overlay'
-version: '2.2.6'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.2.7'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay'
status: stable
diff --git a/docs/packages/sdk/bsv-sdk.md b/docs/packages/sdk/bsv-sdk.md
index bd65582a3..bdf41b06b 100644
--- a/docs/packages/sdk/bsv-sdk.md
+++ b/docs/packages/sdk/bsv-sdk.md
@@ -3,10 +3,10 @@ id: bsv-sdk
title: '@bsv/sdk'
kind: package
domain: sdk
-version: '2.2.13'
+version: '2.2.14'
npm: '@bsv/sdk'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: ['sdk', 'crypto', 'transactions']
diff --git a/docs/packages/sdk/verifast.md b/docs/packages/sdk/verifast.md
index 32928102e..08ab890c2 100644
--- a/docs/packages/sdk/verifast.md
+++ b/docs/packages/sdk/verifast.md
@@ -3,9 +3,9 @@ id: pkg-verifast
title: '@bsv/verifast'
kind: package
domain: sdk
-version: '0.3.3'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '0.3.4'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/verifast'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast'
diff --git a/docs/packages/wallet/btms-permission-module.md b/docs/packages/wallet/btms-permission-module.md
index afa8b80d0..b729ec657 100644
--- a/docs/packages/wallet/btms-permission-module.md
+++ b/docs/packages/wallet/btms-permission-module.md
@@ -4,9 +4,9 @@ title: '@bsv/btms-permission-module'
kind: package
domain: wallet
npm: '@bsv/btms-permission-module'
-version: '1.1.2'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.1.3'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: ['tokens', 'permissions']
diff --git a/docs/packages/wallet/btms.md b/docs/packages/wallet/btms.md
index b4ad81186..ea6816e56 100644
--- a/docs/packages/wallet/btms.md
+++ b/docs/packages/wallet/btms.md
@@ -4,9 +4,9 @@ title: '@bsv/btms'
kind: package
domain: wallet
npm: '@bsv/btms'
-version: '1.1.3'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.1.4'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: ['tokens', 'protocol']
diff --git a/docs/packages/wallet/wallet-relay.md b/docs/packages/wallet/wallet-relay.md
index 1746bbc5c..592c94848 100644
--- a/docs/packages/wallet/wallet-relay.md
+++ b/docs/packages/wallet/wallet-relay.md
@@ -4,9 +4,9 @@ title: '@bsv/wallet-relay'
kind: package
domain: wallet
npm: '@bsv/wallet-relay'
-version: '0.3.2'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '0.3.3'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: ['wallet', 'relay']
diff --git a/docs/packages/wallet/wallet-toolbox-client.md b/docs/packages/wallet/wallet-toolbox-client.md
index f7fbdf076..9c4143d92 100644
--- a/docs/packages/wallet/wallet-toolbox-client.md
+++ b/docs/packages/wallet/wallet-toolbox-client.md
@@ -3,9 +3,9 @@ id: pkg-wallet-toolbox-client
title: '@bsv/wallet-toolbox-client'
kind: package
domain: wallet
-version: '2.4.18'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.4.19'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/wallet-toolbox-client'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client'
diff --git a/docs/packages/wallet/wallet-toolbox-mobile.md b/docs/packages/wallet/wallet-toolbox-mobile.md
index c0cc92c55..31c031c82 100644
--- a/docs/packages/wallet/wallet-toolbox-mobile.md
+++ b/docs/packages/wallet/wallet-toolbox-mobile.md
@@ -3,9 +3,9 @@ id: pkg-wallet-toolbox-mobile
title: '@bsv/wallet-toolbox-mobile'
kind: package
domain: wallet
-version: '2.4.18'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.4.19'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
npm: 'https://www.npmjs.com/package/@bsv/wallet-toolbox-mobile'
repo: 'https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile'
diff --git a/docs/packages/wallet/wallet-toolbox.md b/docs/packages/wallet/wallet-toolbox.md
index ed23a3328..ac8e2694f 100644
--- a/docs/packages/wallet/wallet-toolbox.md
+++ b/docs/packages/wallet/wallet-toolbox.md
@@ -4,9 +4,9 @@ title: '@bsv/wallet-toolbox'
kind: package
domain: wallet
npm: '@bsv/wallet-toolbox'
-version: '2.4.18'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '2.4.19'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: ['wallet', 'brc100']
diff --git a/docs/reference/ci-performance.md b/docs/reference/ci-performance.md
index 0856b9b60..e83e8558a 100644
--- a/docs/reference/ci-performance.md
+++ b/docs/reference/ci-performance.md
@@ -23,11 +23,13 @@ prepare-job duration; artifact upload/download duration; and variance. This
separates targeted feedback from the complete merge gate so a changing PR mix
cannot make the trend appear faster or slower by accident.
-GitHub's Actions REST API does not expose hosted-runner CPU utilization, memory
-utilization, or action-internal cache-hit results. Those fields remain an
-explicit instrumentation gap in the baseline rather than being estimated from
-wall-clock time. Add deliberate in-run instrumentation before claiming those
-metrics.
+The main CI workflow builds the workspace once and shares immutable outputs
+with isolated test lanes, skips empty affected-package lanes, installs through
+the setup-node pnpm cache, caches the immutable MongoDB test binary, and
+rebuilds native/build tools only in jobs that execute them. Browser lanes
+retain exact package-composition reports without rebuilding the workspace.
+These optimizations reduce repeated CPU, network, and setup work without
+removing coverage, mutation, platform, security, or package-consumer checks.
To refresh the evidence without changing the baseline:
diff --git a/docs/reference/dependency-policy.md b/docs/reference/dependency-policy.md
index 4686becd5..9c3d7aa1f 100644
--- a/docs/reference/dependency-policy.md
+++ b/docs/reference/dependency-policy.md
@@ -3,8 +3,8 @@ id: dependency-release-policy
title: 'Dependency and Release Policy'
kind: reference
version: '1.3.0'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: [reference, dependencies, security, releases]
@@ -139,6 +139,15 @@ frozen graph stayed clean without it. The machine-readable registry now maps
every remaining selector and exact value to its exception. CI rejects a new,
changed, stale, expired, unowned, or upstream-unlinked override.
+Wave 38 repeated the removal rehearsal by regenerating every standalone lock
+without its `gaxios`, `uuid`, and `brace-expansion` substitutions and checking
+the natural dependency graph. It also rechecked the root Jest/minimatch,
+typed-rest-client/qs, and isolated Redocly closures. All 19 remaining
+selectors still prevent a reproduced vulnerable resolution or preserve the
+governed reproducible generator, so none can be removed safely yet. The
+method, result, count, and next rehearsal are enforced in
+`governance/dependency-release-policy.json`.
+
The independently locked OpenAPI generator also carries a narrow Redocly
compatibility override. It is isolated from runtime packages, registered with
the same owner/review/removal fields, and must regenerate identical checked-in
@@ -159,7 +168,9 @@ scheduled verification. On the first day of every month and after successful
npm or infrastructure release workflows, the read-only verification workflow:
- generates a direct-versus-latest inventory and separates compatible updates
- from major migration projects;
+ from major migration projects, versions younger than the repository's
+ 24-hour release-age floor, supported peer ranges, coordinated runtime/tool
+ migrations, the TypeScript compiler-API bridge, and forward vendor builds;
- reconciles all 30 source manifests, recorded published baselines, and npm
`latest`, explicitly reporting source candidates held by an operator's
publication decision;
@@ -196,7 +207,9 @@ consumer and development graphs first.
## Update and release flow
-1. Refresh direct dependencies within their declared semver ranges.
+1. Refresh mature direct dependencies within their declared semver ranges.
+ Never bypass the 24-hour release-age floor merely to make the inventory
+ report `current`.
2. Remove obsolete or unused packages before considering overrides.
3. Run the frozen install, version checks, audit, lint, build, tests,
conformance, and documentation build.
diff --git a/docs/reference/package-api-migrations.md b/docs/reference/package-api-migrations.md
index 229b30e42..9bc09d2a2 100644
--- a/docs/reference/package-api-migrations.md
+++ b/docs/reference/package-api-migrations.md
@@ -3,8 +3,8 @@ id: package-api-migrations
title: 'Package API, Declarations, and Migration Ledger'
kind: reference
version: '1.0.0'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: [reference, packages, api, declarations, migrations, release-notes]
@@ -25,36 +25,36 @@ and clean-consumer tests remain the executable type authority.
| Package | npm baseline | Source | Candidate | API | Migration |
| --------------------------------- | ------------ | -------- | --------- | --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `@bsv/402-pay` | `0.2.1` | `0.2.3` | patch | [API and usage](../packages/middleware/402-pay.md) | No consumer migration is required; client and server exports, payment protocol behavior, and runtime defaults are unchanged. |
-| `@bsv/amountinator` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/helpers/amountinator.md) | No consumer migration is required; this is a backward-compatible patch candidate. |
-| `@bsv/auth` | `0.1.1` | `0.1.2` | patch | [API and usage](../packages/middleware/auth.md) | No consumer migration is required; authentication APIs, wire behavior, and runtime defaults are unchanged. |
-| `@bsv/auth-express-middleware` | `2.1.2` | `2.1.4` | patch | [API and usage](../packages/middleware/auth-express-middleware.md) | No consumer migration is required; existing public CORS defaults and middleware APIs are retained. |
-| `@bsv/authsocket` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/messaging/authsocket.md) | No existing behavior changes automatically; service owners can call await server.close() during graceful shutdown. |
-| `@bsv/authsocket-client` | `2.1.1` | `2.1.2` | patch | [API and usage](../packages/messaging/authsocket-client.md) | No consumer migration is required; client APIs, authenticated socket behavior, and supported imports are unchanged. |
-| `@bsv/btms` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/wallet/btms.md) | No consumer migration is required; token and lookup wire contracts are unchanged. |
-| `@bsv/btms-permission-module` | `1.1.1` | `1.1.2` | patch | [API and usage](../packages/wallet/btms-permission-module.md) | No consumer migration is required; permission-module APIs and token semantics are unchanged. |
-| `@bsv/did` | `0.2.1` | `0.2.3` | patch | [API and usage](../packages/helpers/did.md) | No consumer migration is required; DID APIs, encodings, credential behavior, and supported import forms are unchanged. |
-| `@bsv/did-client` | `1.2.1` | `1.2.2` | patch | [API and usage](../packages/helpers/did-client.md) | No consumer migration is required; DID client APIs, encodings, and supported imports are unchanged. |
-| `@bsv/fund-wallet` | `1.4.1` | `1.4.2` | patch | [API and usage](../packages/helpers/fund-wallet.md) | No consumer migration is required; wallet funding APIs and transaction behavior are unchanged. |
-| `@bsv/gasp` | `1.3.1` | `1.3.4` | patch | [API and usage](../packages/overlays/gasp.md) | No consumer migration is required; existing constructor calls, imports, synchronization behavior, and wire semantics are unchanged. |
-| `@bsv/message-box-client` | `2.2.2` | `2.2.5` | patch | [API and usage](../packages/messaging/message-box-client.md) | No consumer migration is required; Message Box protocol and client entry points are unchanged. |
-| `@bsv/overlay` | `2.2.1` | `2.2.6` | patch | [API and usage](../packages/overlays/overlay.md) | No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged. |
-| `@bsv/overlay-discovery-services` | `2.1.1` | `2.1.5` | patch | [API and usage](../packages/overlays/overlay-discovery-services.md) | No consumer migration is required; discovery records and public network behavior are unchanged. |
-| `@bsv/overlay-express` | `2.4.2` | `2.4.8` | patch | [API and usage](../packages/overlays/overlay-express.md) | No consumer migration is required; wildcard credential-free public access remains the default and runtimes may opt into the new close method. |
-| `@bsv/overlay-topics` | `1.6.1` | `1.6.7` | patch | [API and usage](../packages/overlays/overlay-topics.md) | No consumer migration is required; topic IDs, lookup contracts, and persisted formats are unchanged. |
-| `@bsv/paymail` | `2.4.2` | `2.4.4` | patch | [API and usage](../packages/messaging/paymail.md) | No consumer migration is required; existing Paymail client APIs and protocol semantics are retained. |
-| `@bsv/payment-express-middleware` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/middleware/payment-express-middleware.md) | No consumer migration is required; legacy x-bsv-payment JSON behavior remains supported. |
-| `@bsv/sdk` | `2.2.0` | `2.2.13` | patch | [API and usage](../packages/sdk/bsv-sdk.md) | No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms. |
-| `@bsv/simple` | `0.4.1` | `0.4.7` | patch | [API and usage](../packages/helpers/simple.md) | No consumer migration is required; the browser and server entry points remain compatible. |
-| `@bsv/templates` | `1.9.1` | `1.9.4` | patch | [API and usage](../packages/helpers/templates.md) | No consumer migration is required; template APIs, supported imports, and generated script semantics are unchanged. |
-| `@bsv/teranode-listener` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/network/teranode-listener.md) | No consumer migration is required; listener APIs, topics, and network configuration are unchanged. |
-| `@bsv/verifast` | `0.3.0` | `0.3.3` | patch | [API and usage](../packages/sdk/verifast.md) | No consumer migration is required; exports, verification behavior, worker protocols, package paths, and runtime defaults are unchanged. |
-| `@bsv/wallet-helper` | `0.1.1` | `0.1.5` | patch | [API and usage](../packages/helpers/wallet-helper.md) | No consumer migration is required; fluent builder APIs and transaction semantics are unchanged. |
-| `@bsv/wallet-relay` | `0.2.2` | `0.3.2` | minor | [API and usage](../packages/wallet/wallet-relay.md) | QRPairingCode now renders a native button and accepts button wrapper attributes. Existing className, style, data, and ARIA props continue to work; update div-specific wrapper selectors or explicitly typed div event handlers. |
-| `@bsv/wallet-toolbox` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox.md) | No consumer migration is required; persisted schemas, provider behavior, transaction construction, monitor behavior, and the 2.x wallet and storage interfaces remain compatible. |
-| `@bsv/wallet-toolbox-client` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox-client.md) | No consumer migration is required; client entry points and remote storage contracts remain compatible. |
-| `@bsv/wallet-toolbox-mobile` | `2.4.4` | `2.4.18` | patch | [API and usage](../packages/wallet/wallet-toolbox-mobile.md) | No consumer migration is required; React Native and mobile bridge contracts remain compatible. |
-| `create-bsv-app` | `1.0.2` | `1.0.3` | patch | [API and usage](../packages/helpers/create-bsv-app.md) | No consumer migration is required; generated application structure and CLI behavior are unchanged. |
+| `@bsv/402-pay` | `0.2.1` | `0.2.4` | patch | [API and usage](../packages/middleware/402-pay.md) | No consumer migration is required; client and server exports, payment protocol behavior, and runtime defaults are unchanged. |
+| `@bsv/amountinator` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/helpers/amountinator.md) | No consumer migration is required; this is a backward-compatible patch candidate. |
+| `@bsv/auth` | `0.1.1` | `0.1.3` | patch | [API and usage](../packages/middleware/auth.md) | No consumer migration is required; authentication APIs, wire behavior, and runtime defaults are unchanged. |
+| `@bsv/auth-express-middleware` | `2.1.2` | `2.1.5` | patch | [API and usage](../packages/middleware/auth-express-middleware.md) | No consumer migration is required; existing public CORS defaults and middleware APIs are retained. |
+| `@bsv/authsocket` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/messaging/authsocket.md) | No existing behavior changes automatically; service owners can call await server.close() during graceful shutdown. |
+| `@bsv/authsocket-client` | `2.1.1` | `2.1.3` | patch | [API and usage](../packages/messaging/authsocket-client.md) | No consumer migration is required; client APIs, authenticated socket behavior, and supported imports are unchanged. |
+| `@bsv/btms` | `1.1.1` | `1.1.4` | patch | [API and usage](../packages/wallet/btms.md) | No consumer migration is required; token and lookup wire contracts are unchanged. |
+| `@bsv/btms-permission-module` | `1.1.1` | `1.1.3` | patch | [API and usage](../packages/wallet/btms-permission-module.md) | No consumer migration is required; permission-module APIs and token semantics are unchanged. |
+| `@bsv/did` | `0.2.1` | `0.2.4` | patch | [API and usage](../packages/helpers/did.md) | No consumer migration is required; DID APIs, encodings, credential behavior, and supported import forms are unchanged. |
+| `@bsv/did-client` | `1.2.1` | `1.2.3` | patch | [API and usage](../packages/helpers/did-client.md) | No consumer migration is required; DID client APIs, encodings, and supported imports are unchanged. |
+| `@bsv/fund-wallet` | `1.4.1` | `1.4.3` | patch | [API and usage](../packages/helpers/fund-wallet.md) | No consumer migration is required; wallet funding APIs and transaction behavior are unchanged. |
+| `@bsv/gasp` | `1.3.1` | `1.3.5` | patch | [API and usage](../packages/overlays/gasp.md) | No consumer migration is required; existing constructor calls, imports, synchronization behavior, and wire semantics are unchanged. |
+| `@bsv/message-box-client` | `2.2.2` | `2.2.6` | patch | [API and usage](../packages/messaging/message-box-client.md) | No consumer migration is required; Message Box protocol and client entry points are unchanged. |
+| `@bsv/overlay` | `2.2.1` | `2.2.7` | patch | [API and usage](../packages/overlays/overlay.md) | No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged. |
+| `@bsv/overlay-discovery-services` | `2.1.1` | `2.1.6` | patch | [API and usage](../packages/overlays/overlay-discovery-services.md) | No consumer migration is required; discovery records and public network behavior are unchanged. |
+| `@bsv/overlay-express` | `2.4.2` | `2.4.9` | patch | [API and usage](../packages/overlays/overlay-express.md) | No consumer migration is required; wildcard credential-free public access remains the default and runtimes may opt into the new close method. |
+| `@bsv/overlay-topics` | `1.6.1` | `1.6.8` | patch | [API and usage](../packages/overlays/overlay-topics.md) | No consumer migration is required; topic IDs, lookup contracts, and persisted formats are unchanged. |
+| `@bsv/paymail` | `2.4.2` | `2.4.5` | patch | [API and usage](../packages/messaging/paymail.md) | No consumer migration is required; existing Paymail client APIs and protocol semantics are retained. |
+| `@bsv/payment-express-middleware` | `2.1.1` | `2.1.4` | patch | [API and usage](../packages/middleware/payment-express-middleware.md) | No consumer migration is required; legacy x-bsv-payment JSON behavior remains supported. |
+| `@bsv/sdk` | `2.2.0` | `2.2.14` | patch | [API and usage](../packages/sdk/bsv-sdk.md) | No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms. |
+| `@bsv/simple` | `0.4.1` | `0.4.8` | patch | [API and usage](../packages/helpers/simple.md) | No consumer migration is required; the browser and server entry points remain compatible. |
+| `@bsv/templates` | `1.9.1` | `1.9.5` | patch | [API and usage](../packages/helpers/templates.md) | No consumer migration is required; template APIs, supported imports, and generated script semantics are unchanged. |
+| `@bsv/teranode-listener` | `1.1.1` | `1.1.4` | patch | [API and usage](../packages/network/teranode-listener.md) | No consumer migration is required; listener APIs, topics, and network configuration are unchanged. |
+| `@bsv/verifast` | `0.3.0` | `0.3.4` | patch | [API and usage](../packages/sdk/verifast.md) | No consumer migration is required; exports, verification behavior, worker protocols, package paths, and runtime defaults are unchanged. |
+| `@bsv/wallet-helper` | `0.1.1` | `0.1.6` | patch | [API and usage](../packages/helpers/wallet-helper.md) | No consumer migration is required; fluent builder APIs and transaction semantics are unchanged. |
+| `@bsv/wallet-relay` | `0.2.2` | `0.3.3` | minor | [API and usage](../packages/wallet/wallet-relay.md) | QRPairingCode now renders a native button and accepts button wrapper attributes. Existing className, style, data, and ARIA props continue to work; update div-specific wrapper selectors or explicitly typed div event handlers. |
+| `@bsv/wallet-toolbox` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox.md) | No consumer migration is required; persisted schemas, provider behavior, transaction construction, monitor behavior, and the 2.x wallet and storage interfaces remain compatible. |
+| `@bsv/wallet-toolbox-client` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox-client.md) | No consumer migration is required; client entry points and remote storage contracts remain compatible. |
+| `@bsv/wallet-toolbox-mobile` | `2.4.4` | `2.4.19` | patch | [API and usage](../packages/wallet/wallet-toolbox-mobile.md) | No consumer migration is required; React Native and mobile bridge contracts remain compatible. |
+| `create-bsv-app` | `1.0.2` | `1.0.4` | patch | [API and usage](../packages/helpers/create-bsv-app.md) | No consumer migration is required; generated application structure and CLI behavior are unchanged. |
`none` means the source manifest matches the recorded npm baseline. Any other
value is an unpublished candidate. Publication, tags, releases, registry
@@ -225,12 +225,13 @@ CLI entry points: `{"fund-metanet":"./dist/index.mjs"}`.
- Release note: Repairs the documented storage export and decomposes Engine submission validation, broadcast, storage, notification, and propagation orchestration while preserving execution order and behavior.
- Migration: No consumer migration is required; existing imports, submission results, notification contracts, storage order, and network behavior remain unchanged.
-| Public subpath | Runtime target(s) | Declaration target(s) |
-| -------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
-| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` |
-| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` |
-| `./storage` | `./dist/esm/src/storage/Storage.js`
`./dist/cjs/src/storage/Storage.js` | `./dist/types/src/storage/Storage.d.ts`
`./dist/cjs/src/storage/Storage.d.ts` |
-| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
+| Public subpath | Runtime target(s) | Declaration target(s) |
+| ---------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
+| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` |
+| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` |
+| `./storage` | `./dist/esm/src/storage/Storage.js`
`./dist/cjs/src/storage/Storage.js` | `./dist/types/src/storage/Storage.d.ts`
`./dist/cjs/src/storage/Storage.d.ts` |
+| `./storage/*.ts` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
+| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
## @bsv/overlay-discovery-services
@@ -306,57 +307,80 @@ CLI entry points: `{"fund-metanet":"./dist/index.mjs"}`.
- Release note: Accumulates security and correctness hardening, transaction and action-batch performance work, strict package contracts, safer text and telemetry handling, and behavior-preserving maintainability remediation across cryptographic, transaction, remittance, lookup, script-interpreter, broadcaster, and wallet-wire paths.
- Migration: No consumer migration is required; the source candidate preserves the 2.x public API, wire encodings, script semantics, errors, and supported import forms.
-| Public subpath | Runtime target(s) | Declaration target(s) |
-| ------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
-| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` |
-| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` |
-| `./primitives` | `./dist/esm/src/primitives/index.js`
`./dist/cjs/src/primitives/index.js` | `./dist/types/src/primitives/index.d.ts`
`./dist/cjs/src/primitives/index.d.ts` |
-| `./primitives/*` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` |
-| `./script` | `./dist/esm/src/script/index.js`
`./dist/cjs/src/script/index.js` | `./dist/types/src/script/index.d.ts`
`./dist/cjs/src/script/index.d.ts` |
-| `./script/*` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` |
-| `./script/templates` | `./dist/esm/src/script/templates/index.js`
`./dist/cjs/src/script/templates/index.js` | `./dist/types/src/script/templates/index.d.ts`
`./dist/cjs/src/script/templates/index.d.ts` |
-| `./script/templates/*` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` |
-| `./transaction` | `./dist/esm/src/transaction/index.js`
`./dist/cjs/src/transaction/index.js` | `./dist/types/src/transaction/index.d.ts`
`./dist/cjs/src/transaction/index.d.ts` |
-| `./transaction/*` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` |
-| `./transaction/broadcaster` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` |
-| `./transaction/broadcaster/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
-| `./transaction/broadcasters` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` |
-| `./transaction/broadcasters/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
-| `./transaction/chaintrackers` | `./dist/esm/src/transaction/chaintrackers/index.js`
`./dist/cjs/src/transaction/chaintrackers/index.js` | `./dist/types/src/transaction/chaintrackers/index.d.ts`
`./dist/cjs/src/transaction/chaintrackers/index.d.ts` |
-| `./transaction/chaintrackers/*` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` |
-| `./transaction/http` | `./dist/esm/src/transaction/http/index.js`
`./dist/cjs/src/transaction/http/index.js` | `./dist/types/src/transaction/http/index.d.ts`
`./dist/cjs/src/transaction/http/index.d.ts` |
-| `./transaction/http/*` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` |
-| `./transaction/fee-model` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` |
-| `./transaction/fee-model/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
-| `./transaction/fee-models` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` |
-| `./transaction/fee-models/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
-| `./messages` | `./dist/esm/src/messages/index.js`
`./dist/cjs/src/messages/index.js` | `./dist/types/src/messages/index.d.ts`
`./dist/cjs/src/messages/index.d.ts` |
-| `./messages/*` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` |
-| `./compat` | `./dist/esm/src/compat/index.js`
`./dist/cjs/src/compat/index.js` | `./dist/types/src/compat/index.d.ts`
`./dist/cjs/src/compat/index.d.ts` |
-| `./compat/*` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` |
-| `./totp` | `./dist/esm/src/totp/index.js`
`./dist/cjs/src/totp/index.js` | `./dist/types/src/totp/index.d.ts`
`./dist/cjs/src/totp/index.d.ts` |
-| `./totp/*` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` |
-| `./wallet` | `./dist/esm/src/wallet/index.js`
`./dist/cjs/src/wallet/index.js` | `./dist/types/src/wallet/index.d.ts`
`./dist/cjs/src/wallet/index.d.ts` |
-| `./wallet/*` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` |
-| `./wallet/substrates` | `./dist/esm/src/wallet/substrates/index.js`
`./dist/cjs/src/wallet/substrates/index.js` | `./dist/types/src/wallet/substrates/index.d.ts`
`./dist/cjs/src/wallet/substrates/index.d.ts` |
-| `./wallet/substrates/*` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` |
-| `./auth` | `./dist/esm/src/auth/index.js`
`./dist/cjs/src/auth/index.js` | `./dist/types/src/auth/index.d.ts`
`./dist/cjs/src/auth/index.d.ts` |
-| `./auth/*` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` |
-| `./auth/certificate` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` |
-| `./auth/certificate/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
-| `./auth/certificates` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` |
-| `./auth/certificates/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
-| `./overlay-tools` | `./dist/esm/src/overlay-tools/index.js`
`./dist/cjs/src/overlay-tools/index.js` | `./dist/types/src/overlay-tools/index.d.ts`
`./dist/cjs/src/overlay-tools/index.d.ts` |
-| `./overlay-tools/*` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` |
-| `./telemetry` | `./dist/esm/src/telemetry/index.js`
`./dist/cjs/src/telemetry/index.js` | `./dist/types/src/telemetry/index.d.ts`
`./dist/cjs/src/telemetry/index.d.ts` |
-| `./telemetry/*` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` |
-| `./storage` | `./dist/esm/src/storage/index.js`
`./dist/cjs/src/storage/index.js` | `./dist/types/src/storage/index.d.ts`
`./dist/cjs/src/storage/index.d.ts` |
-| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
-| `./kvstore` | `./dist/esm/src/kvstore/index.js`
`./dist/cjs/src/kvstore/index.js` | `./dist/types/src/kvstore/index.d.ts`
`./dist/cjs/src/kvstore/index.d.ts` |
-| `./kvstore/*` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` |
-| `./remittance` | `./dist/esm/src/remittance/index.js`
`./dist/cjs/src/remittance/index.js` | `./dist/types/src/remittance/index.d.ts`
`./dist/cjs/src/remittance/index.d.ts` |
-| `./remittance/*` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` |
-| `./umd` | `./dist/umd/bundle.js` | `./dist/types/mod.d.ts` |
+| Public subpath | Runtime target(s) | Declaration target(s) |
+| ---------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
+| `.` | `./dist/esm/mod.js`
`./dist/cjs/mod.js` | `./dist/types/mod.d.ts`
`./dist/cjs/mod.d.ts` |
+| `./*.ts` | `./dist/esm/src/*.js`
`./dist/cjs/src/*.js` | `./dist/types/src/*.d.ts`
`./dist/cjs/src/*.d.ts` |
+| `./primitives` | `./dist/esm/src/primitives/index.js`
`./dist/cjs/src/primitives/index.js` | `./dist/types/src/primitives/index.d.ts`
`./dist/cjs/src/primitives/index.d.ts` |
+| `./primitives/*.ts` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` |
+| `./primitives/*` | `./dist/esm/src/primitives/*.js`
`./dist/cjs/src/primitives/*.js` | `./dist/types/src/primitives/*.d.ts`
`./dist/cjs/src/primitives/*.d.ts` |
+| `./script` | `./dist/esm/src/script/index.js`
`./dist/cjs/src/script/index.js` | `./dist/types/src/script/index.d.ts`
`./dist/cjs/src/script/index.d.ts` |
+| `./script/*.ts` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` |
+| `./script/*` | `./dist/esm/src/script/*.js`
`./dist/cjs/src/script/*.js` | `./dist/types/src/script/*.d.ts`
`./dist/cjs/src/script/*.d.ts` |
+| `./script/templates` | `./dist/esm/src/script/templates/index.js`
`./dist/cjs/src/script/templates/index.js` | `./dist/types/src/script/templates/index.d.ts`
`./dist/cjs/src/script/templates/index.d.ts` |
+| `./script/templates/*.ts` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` |
+| `./script/templates/*` | `./dist/esm/src/script/templates/*.js`
`./dist/cjs/src/script/templates/*.js` | `./dist/types/src/script/templates/*.d.ts`
`./dist/cjs/src/script/templates/*.d.ts` |
+| `./transaction` | `./dist/esm/src/transaction/index.js`
`./dist/cjs/src/transaction/index.js` | `./dist/types/src/transaction/index.d.ts`
`./dist/cjs/src/transaction/index.d.ts` |
+| `./transaction/*.ts` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` |
+| `./transaction/*` | `./dist/esm/src/transaction/*.js`
`./dist/cjs/src/transaction/*.js` | `./dist/types/src/transaction/*.d.ts`
`./dist/cjs/src/transaction/*.d.ts` |
+| `./transaction/broadcaster` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` |
+| `./transaction/broadcaster/*.ts` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
+| `./transaction/broadcaster/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
+| `./transaction/broadcasters` | `./dist/esm/src/transaction/broadcasters/index.js`
`./dist/cjs/src/transaction/broadcasters/index.js` | `./dist/types/src/transaction/broadcasters/index.d.ts`
`./dist/cjs/src/transaction/broadcasters/index.d.ts` |
+| `./transaction/broadcasters/*.ts` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
+| `./transaction/broadcasters/*` | `./dist/esm/src/transaction/broadcasters/*.js`
`./dist/cjs/src/transaction/broadcasters/*.js` | `./dist/types/src/transaction/broadcasters/*.d.ts`
`./dist/cjs/src/transaction/broadcasters/*.d.ts` |
+| `./transaction/chaintrackers` | `./dist/esm/src/transaction/chaintrackers/index.js`
`./dist/cjs/src/transaction/chaintrackers/index.js` | `./dist/types/src/transaction/chaintrackers/index.d.ts`
`./dist/cjs/src/transaction/chaintrackers/index.d.ts` |
+| `./transaction/chaintrackers/*.ts` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` |
+| `./transaction/chaintrackers/*` | `./dist/esm/src/transaction/chaintrackers/*.js`
`./dist/cjs/src/transaction/chaintrackers/*.js` | `./dist/types/src/transaction/chaintrackers/*.d.ts`
`./dist/cjs/src/transaction/chaintrackers/*.d.ts` |
+| `./transaction/http` | `./dist/esm/src/transaction/http/index.js`
`./dist/cjs/src/transaction/http/index.js` | `./dist/types/src/transaction/http/index.d.ts`
`./dist/cjs/src/transaction/http/index.d.ts` |
+| `./transaction/http/*.ts` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` |
+| `./transaction/http/*` | `./dist/esm/src/transaction/http/*.js`
`./dist/cjs/src/transaction/http/*.js` | `./dist/types/src/transaction/http/*.d.ts`
`./dist/cjs/src/transaction/http/*.d.ts` |
+| `./transaction/fee-model` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` |
+| `./transaction/fee-model/*.ts` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
+| `./transaction/fee-model/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
+| `./transaction/fee-models` | `./dist/esm/src/transaction/fee-models/index.js`
`./dist/cjs/src/transaction/fee-models/index.js` | `./dist/types/src/transaction/fee-models/index.d.ts`
`./dist/cjs/src/transaction/fee-models/index.d.ts` |
+| `./transaction/fee-models/*.ts` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
+| `./transaction/fee-models/*` | `./dist/esm/src/transaction/fee-models/*.js`
`./dist/cjs/src/transaction/fee-models/*.js` | `./dist/types/src/transaction/fee-models/*.d.ts`
`./dist/cjs/src/transaction/fee-models/*.d.ts` |
+| `./messages` | `./dist/esm/src/messages/index.js`
`./dist/cjs/src/messages/index.js` | `./dist/types/src/messages/index.d.ts`
`./dist/cjs/src/messages/index.d.ts` |
+| `./messages/*.ts` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` |
+| `./messages/*` | `./dist/esm/src/messages/*.js`
`./dist/cjs/src/messages/*.js` | `./dist/types/src/messages/*.d.ts`
`./dist/cjs/src/messages/*.d.ts` |
+| `./compat` | `./dist/esm/src/compat/index.js`
`./dist/cjs/src/compat/index.js` | `./dist/types/src/compat/index.d.ts`
`./dist/cjs/src/compat/index.d.ts` |
+| `./compat/*.ts` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` |
+| `./compat/*` | `./dist/esm/src/compat/*.js`
`./dist/cjs/src/compat/*.js` | `./dist/types/src/compat/*.d.ts`
`./dist/cjs/src/compat/*.d.ts` |
+| `./totp` | `./dist/esm/src/totp/index.js`
`./dist/cjs/src/totp/index.js` | `./dist/types/src/totp/index.d.ts`
`./dist/cjs/src/totp/index.d.ts` |
+| `./totp/*.ts` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` |
+| `./totp/*` | `./dist/esm/src/totp/*.js`
`./dist/cjs/src/totp/*.js` | `./dist/types/src/totp/*.d.ts`
`./dist/cjs/src/totp/*.d.ts` |
+| `./wallet` | `./dist/esm/src/wallet/index.js`
`./dist/cjs/src/wallet/index.js` | `./dist/types/src/wallet/index.d.ts`
`./dist/cjs/src/wallet/index.d.ts` |
+| `./wallet/*.ts` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` |
+| `./wallet/*` | `./dist/esm/src/wallet/*.js`
`./dist/cjs/src/wallet/*.js` | `./dist/types/src/wallet/*.d.ts`
`./dist/cjs/src/wallet/*.d.ts` |
+| `./wallet/substrates` | `./dist/esm/src/wallet/substrates/index.js`
`./dist/cjs/src/wallet/substrates/index.js` | `./dist/types/src/wallet/substrates/index.d.ts`
`./dist/cjs/src/wallet/substrates/index.d.ts` |
+| `./wallet/substrates/*.ts` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` |
+| `./wallet/substrates/*` | `./dist/esm/src/wallet/substrates/*.js`
`./dist/cjs/src/wallet/substrates/*.js` | `./dist/types/src/wallet/substrates/*.d.ts`
`./dist/cjs/src/wallet/substrates/*.d.ts` |
+| `./auth` | `./dist/esm/src/auth/index.js`
`./dist/cjs/src/auth/index.js` | `./dist/types/src/auth/index.d.ts`
`./dist/cjs/src/auth/index.d.ts` |
+| `./auth/*.ts` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` |
+| `./auth/*` | `./dist/esm/src/auth/*.js`
`./dist/cjs/src/auth/*.js` | `./dist/types/src/auth/*.d.ts`
`./dist/cjs/src/auth/*.d.ts` |
+| `./auth/certificate` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` |
+| `./auth/certificate/*.ts` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
+| `./auth/certificate/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
+| `./auth/certificates` | `./dist/esm/src/auth/certificates/index.js`
`./dist/cjs/src/auth/certificates/index.js` | `./dist/types/src/auth/certificates/index.d.ts`
`./dist/cjs/src/auth/certificates/index.d.ts` |
+| `./auth/certificates/*.ts` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
+| `./auth/certificates/*` | `./dist/esm/src/auth/certificates/*.js`
`./dist/cjs/src/auth/certificates/*.js` | `./dist/types/src/auth/certificates/*.d.ts`
`./dist/cjs/src/auth/certificates/*.d.ts` |
+| `./overlay-tools` | `./dist/esm/src/overlay-tools/index.js`
`./dist/cjs/src/overlay-tools/index.js` | `./dist/types/src/overlay-tools/index.d.ts`
`./dist/cjs/src/overlay-tools/index.d.ts` |
+| `./overlay-tools/*.ts` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` |
+| `./overlay-tools/*` | `./dist/esm/src/overlay-tools/*.js`
`./dist/cjs/src/overlay-tools/*.js` | `./dist/types/src/overlay-tools/*.d.ts`
`./dist/cjs/src/overlay-tools/*.d.ts` |
+| `./telemetry` | `./dist/esm/src/telemetry/index.js`
`./dist/cjs/src/telemetry/index.js` | `./dist/types/src/telemetry/index.d.ts`
`./dist/cjs/src/telemetry/index.d.ts` |
+| `./telemetry/*.ts` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` |
+| `./telemetry/*` | `./dist/esm/src/telemetry/*.js`
`./dist/cjs/src/telemetry/*.js` | `./dist/types/src/telemetry/*.d.ts`
`./dist/cjs/src/telemetry/*.d.ts` |
+| `./storage` | `./dist/esm/src/storage/index.js`
`./dist/cjs/src/storage/index.js` | `./dist/types/src/storage/index.d.ts`
`./dist/cjs/src/storage/index.d.ts` |
+| `./storage/*.ts` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
+| `./storage/*` | `./dist/esm/src/storage/*.js`
`./dist/cjs/src/storage/*.js` | `./dist/types/src/storage/*.d.ts`
`./dist/cjs/src/storage/*.d.ts` |
+| `./kvstore` | `./dist/esm/src/kvstore/index.js`
`./dist/cjs/src/kvstore/index.js` | `./dist/types/src/kvstore/index.d.ts`
`./dist/cjs/src/kvstore/index.d.ts` |
+| `./kvstore/*.ts` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` |
+| `./kvstore/*` | `./dist/esm/src/kvstore/*.js`
`./dist/cjs/src/kvstore/*.js` | `./dist/types/src/kvstore/*.d.ts`
`./dist/cjs/src/kvstore/*.d.ts` |
+| `./remittance` | `./dist/esm/src/remittance/index.js`
`./dist/cjs/src/remittance/index.js` | `./dist/types/src/remittance/index.d.ts`
`./dist/cjs/src/remittance/index.d.ts` |
+| `./remittance/*.ts` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` |
+| `./remittance/*` | `./dist/esm/src/remittance/*.js`
`./dist/cjs/src/remittance/*.js` | `./dist/types/src/remittance/*.d.ts`
`./dist/cjs/src/remittance/*.d.ts` |
+| `./umd` | `./dist/umd/bundle.js` | `./dist/types/mod.d.ts` |
## @bsv/simple
diff --git a/docs/reference/release-operations.md b/docs/reference/release-operations.md
index ac39a65d5..dfcf877f8 100644
--- a/docs/reference/release-operations.md
+++ b/docs/reference/release-operations.md
@@ -2,9 +2,9 @@
id: release-operations
title: 'Release and Operations Guide'
kind: reference
-version: '1.1.0'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+version: '1.1.1'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: [reference, releases, operations, rollback, npm, containers]
@@ -77,6 +77,15 @@ mobile, CLI, WASM, clean-consumer, and `pack:check` lanes selected by CI. The
full release workflow repeats artifact-critical checks; local success is not a
substitute.
+On pull requests, the repository-owned 90% patch-coverage gate is blocking and
+uses the merged LCOV reports for changed production lines and branches.
+External coverage reporting remains informational only when it cannot enforce
+that contract. Exact package checks must prove all conditional/wildcard
+exports, declarations, maps, side-effect metadata, peer/optional adapter
+metadata, and clean ESM/CommonJS consumers. Browser candidates must also
+produce the governed composition report without exceeding their committed
+budgets.
+
Confirm before proceeding:
- the target versions are absent from npm;
diff --git a/docs/reference/repository-health.md b/docs/reference/repository-health.md
index 7f534db74..073919d46 100644
--- a/docs/reference/repository-health.md
+++ b/docs/reference/repository-health.md
@@ -3,8 +3,8 @@ id: repository-health
title: 'Repository Health Controls'
kind: reference
version: '1.3.3'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: [reference, governance, quality, security, releases]
@@ -149,11 +149,15 @@ than its source tree. The shared checker:
1. creates the exact pnpm release tarball with lifecycle scripts disabled;
2. rejects tests, compiler caches, lockfiles, and uncompiled TypeScript in the
payload;
-3. runs strict `publint` metadata and entry-point validation;
-4. runs the `@arethetypeswrong/core` analyzer across every strict Node and
+3. proves that every conditional and wildcard export target is packed,
+ expands every concrete public subpath, validates every referenced source
+ map, and checks `sideEffects`, optional dependencies, and peer metadata;
+4. runs strict `publint` metadata and entry-point validation;
+5. runs the `@arethetypeswrong/core` analyzer across every strict Node and
bundler resolution mode; and
-5. installs the tarball into a clean temporary consumer and exercises every
- declared runtime module format. The consumer installs exact tarballs for the
+6. installs the tarball into a clean temporary consumer, resolves every
+ concrete public subpath in every supported module mode, and executes the
+ declared runtime contracts. The consumer installs exact tarballs for the
package's transitive `workspace:` runtime dependency closure, so coordinated
unpublished version bumps cannot pass by resolving older registry releases.
@@ -170,6 +174,14 @@ before resolving or publishing a release plan. Adding a script therefore adds
a blocking release contract; it must not be a placeholder or a source-only
check.
+Browser packages additionally use
+`governance/browser-artifact-policy.json`. It binds every browser-bundler
+consumer to its exact entry, byte budget, and reviewed optional-adapter
+splitting disposition. CI retains normalized Vite/esbuild module and package
+composition reports for 30 days. A budget increase is a versioned source
+change requiring composition evidence and explicit review; it cannot be hidden
+in routine dependency maintenance.
+
The workspace typecheck runs after the shared build so cross-package
declarations resolve exactly as downstream consumers see them. It catches
dual-package hazards where one consumer accidentally combines the ESM and
diff --git a/docs/reference/stack-facts.md b/docs/reference/stack-facts.md
index 7056fb7c6..9fca11101 100644
--- a/docs/reference/stack-facts.md
+++ b/docs/reference/stack-facts.md
@@ -3,8 +3,8 @@ id: stack-facts
title: 'Generated Stack Facts'
kind: reference
version: '1.0.0'
-last_updated: '2026-07-29'
-last_verified: '2026-07-29'
+last_updated: '2026-07-30'
+last_verified: '2026-07-30'
review_cadence_days: 30
status: stable
tags: [reference, packages, versions, runtimes, conformance, generated]
@@ -37,36 +37,36 @@ authorized release action.
| Area | Package | Source version | Project profile | Consumer profiles | Runtime targets | Node engine | Source |
| --- | --- | --- | --- | --- | --- | --- | --- |
-| helpers | `@bsv/amountinator` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/amountinator](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator) |
-| helpers | `@bsv/did` | `0.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/did](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did) |
-| helpers | `@bsv/did-client` | `1.2.2` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/helpers/did-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client) |
-| helpers | `@bsv/fund-wallet` | `1.4.2` | cli | cli | node | `>=22` | [packages/helpers/fund-wallet](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet) |
-| helpers | `@bsv/simple` | `0.4.7` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/simple](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple) |
-| helpers | `@bsv/templates` | `1.9.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/ts-templates](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates) |
-| helpers | `@bsv/wallet-helper` | `0.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/bsv-wallet-helper](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper) |
-| helpers | `create-bsv-app` | `1.0.3` | cli | cli | node | `>=22` | [packages/helpers/create-bsv-app](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app) |
-| messaging | `@bsv/authsocket` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/messaging/authsocket](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket) |
-| messaging | `@bsv/authsocket-client` | `2.1.2` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/authsocket-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client) |
-| messaging | `@bsv/message-box-client` | `2.2.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/message-box-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client) |
-| messaging | `@bsv/paymail` | `2.4.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/messaging/ts-paymail](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail) |
-| middleware | `@bsv/402-pay` | `0.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/middleware/402-pay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay) |
-| middleware | `@bsv/auth` | `0.1.2` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth) |
-| middleware | `@bsv/auth-express-middleware` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware) |
-| middleware | `@bsv/payment-express-middleware` | `2.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/payment-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware) |
-| network | `@bsv/teranode-listener` | `1.1.3` | node-library | node-esm | node | `>=22` | [packages/network/ts-p2p](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p) |
-| overlays | `@bsv/gasp` | `1.3.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/overlays/gasp-core](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core) |
-| overlays | `@bsv/overlay` | `2.2.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay) |
-| overlays | `@bsv/overlay-discovery-services` | `2.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-discovery-services](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services) |
-| overlays | `@bsv/overlay-express` | `2.4.8` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-express](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express) |
-| overlays | `@bsv/overlay-topics` | `1.6.7` | node-library | node-esm | node | `>=22` | [packages/overlays/topics](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics) |
-| sdk | `@bsv/sdk` | `2.2.13` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/sdk](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk) |
-| sdk | `@bsv/verifast` | `0.3.3` | wasm-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global, wasm-worker | browser, node, umd, wasm, worker | `>=22` | [packages/verifast](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast) |
-| wallet | `@bsv/btms` | `1.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/wallet/btms](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms) |
-| wallet | `@bsv/btms-permission-module` | `1.1.2` | node-library | node-esm | node | `>=22` | [packages/wallet/btms-permission-module](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms-permission-module) |
-| wallet | `@bsv/wallet-relay` | `0.3.2` | cli-library | browser-bundler, browser-esm, cli, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/ts-wallet-relay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/ts-wallet-relay) |
-| wallet | `@bsv/wallet-toolbox` | `2.4.18` | node-library | node-cjs | node | `>=22` | [packages/wallet/wallet-toolbox](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox) |
-| wallet | `@bsv/wallet-toolbox-client` | `2.4.18` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/wallet-toolbox/client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client) |
-| wallet | `@bsv/wallet-toolbox-mobile` | `2.4.18` | react-native-library | react-native-metro | react-native | `>=22` | [packages/wallet/wallet-toolbox/mobile](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile) |
+| helpers | `@bsv/amountinator` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/amountinator](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/amountinator) |
+| helpers | `@bsv/did` | `0.2.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/did](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did) |
+| helpers | `@bsv/did-client` | `1.2.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/helpers/did-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/did-client) |
+| helpers | `@bsv/fund-wallet` | `1.4.3` | cli | cli | node | `>=22` | [packages/helpers/fund-wallet](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/fund-wallet) |
+| helpers | `@bsv/simple` | `0.4.8` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/simple](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/simple) |
+| helpers | `@bsv/templates` | `1.9.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/helpers/ts-templates](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/ts-templates) |
+| helpers | `@bsv/wallet-helper` | `0.1.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/helpers/bsv-wallet-helper](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/bsv-wallet-helper) |
+| helpers | `create-bsv-app` | `1.0.4` | cli | cli | node | `>=22` | [packages/helpers/create-bsv-app](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/helpers/create-bsv-app) |
+| messaging | `@bsv/authsocket` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/messaging/authsocket](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket) |
+| messaging | `@bsv/authsocket-client` | `2.1.3` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/authsocket-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/authsocket-client) |
+| messaging | `@bsv/message-box-client` | `2.2.6` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/messaging/message-box-client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/message-box-client) |
+| messaging | `@bsv/paymail` | `2.4.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/messaging/ts-paymail](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/messaging/ts-paymail) |
+| middleware | `@bsv/402-pay` | `0.2.4` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/middleware/402-pay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/402-pay) |
+| middleware | `@bsv/auth` | `0.1.3` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth) |
+| middleware | `@bsv/auth-express-middleware` | `2.1.5` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/auth-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/auth-express-middleware) |
+| middleware | `@bsv/payment-express-middleware` | `2.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/middleware/payment-express-middleware](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/middleware/payment-express-middleware) |
+| network | `@bsv/teranode-listener` | `1.1.4` | node-library | node-esm | node | `>=22` | [packages/network/ts-p2p](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/network/ts-p2p) |
+| overlays | `@bsv/gasp` | `1.3.5` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/overlays/gasp-core](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/gasp-core) |
+| overlays | `@bsv/overlay` | `2.2.7` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay) |
+| overlays | `@bsv/overlay-discovery-services` | `2.1.6` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-discovery-services](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-discovery-services) |
+| overlays | `@bsv/overlay-express` | `2.4.9` | node-library | node-cjs, node-esm | node | `>=22` | [packages/overlays/overlay-express](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/overlay-express) |
+| overlays | `@bsv/overlay-topics` | `1.6.8` | node-library | node-esm | node | `>=22` | [packages/overlays/topics](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/overlays/topics) |
+| sdk | `@bsv/sdk` | `2.2.14` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global | browser, node, umd | `>=22` | [packages/sdk](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk) |
+| sdk | `@bsv/verifast` | `0.3.4` | wasm-library | browser-bundler, browser-esm, node-cjs, node-esm, umd-global, wasm-worker | browser, node, umd, wasm, worker | `>=22` | [packages/verifast](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/verifast) |
+| wallet | `@bsv/btms` | `1.1.4` | node-library | node-cjs, node-esm | node | `>=22` | [packages/wallet/btms](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms) |
+| wallet | `@bsv/btms-permission-module` | `1.1.3` | node-library | node-esm | node | `>=22` | [packages/wallet/btms-permission-module](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/btms-permission-module) |
+| wallet | `@bsv/wallet-relay` | `0.3.3` | cli-library | browser-bundler, browser-esm, cli, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/ts-wallet-relay](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/ts-wallet-relay) |
+| wallet | `@bsv/wallet-toolbox` | `2.4.19` | node-library | node-cjs | node | `>=22` | [packages/wallet/wallet-toolbox](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox) |
+| wallet | `@bsv/wallet-toolbox-client` | `2.4.19` | browser-library | browser-bundler, browser-esm, node-cjs, node-esm | browser, node | `>=22` | [packages/wallet/wallet-toolbox/client](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/client) |
+| wallet | `@bsv/wallet-toolbox-mobile` | `2.4.19` | react-native-library | react-native-metro | react-native | `>=22` | [packages/wallet/wallet-toolbox/mobile](https://github.com/bsv-blockchain/ts-stack/tree/main/packages/wallet/wallet-toolbox/mobile) |
## Standalone infrastructure manifests
@@ -75,13 +75,13 @@ the separately released and verified image digest.
| Service | Package | Manifest version | Node engine | Runtime targets | Release | Source |
| --- | --- | --- | --- | --- | --- | --- |
-| BSV Chaintracks Server | `chaintracks-server` | `1.0.13` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/chaintracks-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/chaintracks-server) |
-| BSV Message Box Server | `@bsv/messagebox-server` | `1.1.18` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/message-box-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/message-box-server) |
-| BSV Overlay Server | `@bsv/overlay-express-examples` | `2.1.21` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/overlay-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/overlay-server) |
-| BSV UHRP Basic Server | `@bsv/uhrp-lite` | `0.1.14` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-basic](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-basic) |
-| BSV UHRP Cloud Bucket Server | `@bsv/uhrp-storage-server` | `0.2.16` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-cloud-bucket](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-cloud-bucket) |
-| Wallet Authentication Backend | `@bsv/wab-server` | `1.4.15` | `>=24 <25` | node, linux/amd64 | ghcr-and-aws-marketplace-keyless | [infra/wab](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wab) |
-| BSV Wallet Infrastructure | `@bsv/wallet-infra` | `2.0.17` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/wallet-infra](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wallet-infra) |
+| BSV Chaintracks Server | `chaintracks-server` | `1.0.14` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/chaintracks-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/chaintracks-server) |
+| BSV Message Box Server | `@bsv/messagebox-server` | `1.1.19` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/message-box-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/message-box-server) |
+| BSV Overlay Server | `@bsv/overlay-express-examples` | `2.1.22` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/overlay-server](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/overlay-server) |
+| BSV UHRP Basic Server | `@bsv/uhrp-lite` | `0.1.15` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-basic](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-basic) |
+| BSV UHRP Cloud Bucket Server | `@bsv/uhrp-storage-server` | `0.2.17` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/uhrp-server-cloud-bucket](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/uhrp-server-cloud-bucket) |
+| Wallet Authentication Backend | `@bsv/wab-server` | `1.4.16` | `>=24 <25` | node, linux/amd64 | ghcr-and-aws-marketplace-keyless | [infra/wab](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wab) |
+| BSV Wallet Infrastructure | `@bsv/wallet-infra` | `2.0.18` | `>=24 <25` | node, linux/amd64 | ghcr-keyless | [infra/wallet-infra](https://github.com/bsv-blockchain/ts-stack/tree/main/infra/wallet-infra) |
## Governed project and release inventory
diff --git a/governance/browser-artifact-policy.json b/governance/browser-artifact-policy.json
new file mode 100644
index 000000000..1f797d80e
--- /dev/null
+++ b/governance/browser-artifact-policy.json
@@ -0,0 +1,100 @@
+{
+ "schemaVersion": 1,
+ "lastReviewed": "2026-07-30",
+ "owner": "ts-stack-maintainers",
+ "reportRetentionDays": 30,
+ "growthPolicy": "Every browser consumer is measured from its exact packed dependency graph with Vite and esbuild (or the governed platform equivalent). A budget increase requires a versioned source change, composition evidence, and explicit review; generated reports preserve package/module composition for comparison.",
+ "packages": [
+ {
+ "name": "@bsv/did-client",
+ "path": "packages/helpers/did-client",
+ "budget": "packages/helpers/did-client/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "No optional server adapter is reachable from the browser entry."
+ },
+ {
+ "name": "@bsv/did",
+ "path": "packages/helpers/did",
+ "budget": "packages/helpers/did/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The package is browser-native and has no optional server adapter in its entry."
+ },
+ {
+ "name": "@bsv/simple",
+ "path": "packages/helpers/simple",
+ "budget": "packages/helpers/simple/browser-budget.json",
+ "entry": "./browser",
+ "splittingDisposition": "Server modules are excluded by the browser export; the optional certification implementation remains a dynamic import."
+ },
+ {
+ "name": "@bsv/templates",
+ "path": "packages/helpers/ts-templates",
+ "budget": "packages/helpers/ts-templates/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The browser entry contains no optional server adapter."
+ },
+ {
+ "name": "@bsv/authsocket-client",
+ "path": "packages/messaging/authsocket-client",
+ "budget": "packages/messaging/authsocket-client/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The client package is already separated from server-side AuthSocket code."
+ },
+ {
+ "name": "@bsv/message-box-client",
+ "path": "packages/messaging/message-box-client",
+ "budget": "packages/messaging/message-box-client/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The client package is already separated from Message Box service code."
+ },
+ {
+ "name": "@bsv/paymail",
+ "path": "packages/messaging/ts-paymail",
+ "budget": "packages/messaging/ts-paymail/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "Conditional exports select the browser-safe implementation and the composition gate rejects Node/server dependencies."
+ },
+ {
+ "name": "@bsv/402-pay",
+ "path": "packages/middleware/402-pay",
+ "budget": "packages/middleware/402-pay/browser-budget.json",
+ "entry": "./client",
+ "splittingDisposition": "The explicit client subpath excludes the server middleware adapter."
+ },
+ {
+ "name": "@bsv/gasp",
+ "path": "packages/overlays/gasp-core",
+ "budget": "packages/overlays/gasp-core/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The protocol core has no optional server adapter in its browser graph."
+ },
+ {
+ "name": "@bsv/sdk",
+ "path": "packages/sdk",
+ "budget": "packages/sdk/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The SDK browser graph is a public compatibility surface; further splitting requires evidence that it preserves synchronous exports and consumer behavior."
+ },
+ {
+ "name": "@bsv/verifast",
+ "path": "packages/verifast",
+ "budget": "packages/verifast/browser-budget.json",
+ "entry": ".",
+ "splittingDisposition": "WASM and worker payloads remain separate packed assets and are measured with the exact browser consumer."
+ },
+ {
+ "name": "@bsv/wallet-relay",
+ "path": "packages/wallet/ts-wallet-relay",
+ "budget": "packages/wallet/ts-wallet-relay/browser-budget.json",
+ "entry": "./client",
+ "splittingDisposition": "The client subpath excludes Express and the server-only QR adapter; qrcode is dynamically imported only by the server session manager."
+ },
+ {
+ "name": "@bsv/wallet-toolbox-client",
+ "path": "packages/wallet/wallet-toolbox/client",
+ "budget": "packages/wallet/wallet-toolbox/client/platform-budget.json",
+ "entry": ".",
+ "splittingDisposition": "The dedicated browser export excludes Node storage and database adapters and is verified through its platform-specific exact-package gate."
+ }
+ ]
+}
diff --git a/governance/ci-performance-baseline.json b/governance/ci-performance-baseline.json
index 4f5569008..76ab95288 100644
--- a/governance/ci-performance-baseline.json
+++ b/governance/ci-performance-baseline.json
@@ -27,13 +27,7 @@
"per-job and per-step duration",
"job queue time",
"artifact upload/download step duration"
- ],
- "unavailableFromActionsApi": [
- "hosted-runner CPU utilization",
- "hosted-runner memory utilization",
- "action-internal cache hit rate"
- ],
- "note": "Unavailable metrics require explicit in-run instrumentation; they are not inferred from the GitHub Actions REST API."
+ ]
},
"reference": {
"fullScope": {
diff --git a/governance/dependency-release-policy.json b/governance/dependency-release-policy.json
index ae86ab8e0..a541347c6 100644
--- a/governance/dependency-release-policy.json
+++ b/governance/dependency-release-policy.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
- "lastReviewed": "2026-07-29",
+ "lastReviewed": "2026-07-30",
"owner": "ts-stack-maintainers",
"routineUpdates": {
"dependabotConfig": ".github/dependabot.yml",
@@ -29,12 +29,108 @@
"directLatestInventory": {
"cadence": "monthly-and-after-release",
"command": "node scripts/dependency-release-governance.mjs inventory",
+ "minimumReleaseAgeMinutes": 1440,
"classifications": [
"current",
"compatible-update",
+ "release-age-hold",
"security-urgent",
"major-migration",
+ "coordinated-major-hold",
+ "toolchain-bridge",
+ "forward-version",
+ "supported-peer-range",
"first-party-release-held"
+ ],
+ "dispositions": [
+ {
+ "dependency": "typescript",
+ "declaredPrefix": "npm:@typescript/typescript6@",
+ "classification": "toolchain-bridge",
+ "rationale": "TypeScript 7 owns every native CLI build while compiler-API consumers use the official TypeScript 6 compatibility package until a stable TypeScript 7 API exists.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-08-27",
+ "removeWhen": "All compiler-API consumers support the native TypeScript 7 API and the complete declaration, Jest, conformance, browser, mobile, infrastructure, and packed-consumer matrix passes without the alias."
+ },
+ {
+ "dependency": "hermes-compiler",
+ "classification": "forward-version",
+ "rationale": "React Native's tested Hermes compiler build is intentionally newer than the npm latest version metadata and must not be downgraded by a latest-version sweep.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "The React Native toolchain selects a newer compatible Hermes build and the Metro platform contract passes with it."
+ },
+ {
+ "dependency": "qrcode",
+ "field": "peerDependencies",
+ "classification": "supported-peer-range",
+ "rationale": "The relay accepts the supported qrcode peer family; narrowing the floor to one latest patch would break existing valid consumers.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "A demonstrated incompatible qrcode release requires a semver upper boundary backed by consumer tests."
+ },
+ {
+ "dependency": "express",
+ "field": "peerDependencies",
+ "classification": "supported-peer-range",
+ "rationale": "The relay preserves its established Express 4 and 5 peer compatibility instead of forcing consumers onto the latest major.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "Tests demonstrate that an admitted Express major cannot satisfy the public adapter contract."
+ },
+ {
+ "dependency": "react",
+ "field": "peerDependencies",
+ "classification": "supported-peer-range",
+ "rationale": "The optional React adapter preserves its documented React 17 through 19 compatibility and does not force an application-wide React upgrade.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "Tests demonstrate that an admitted React major cannot satisfy the public adapter contract."
+ },
+ {
+ "dependency": "@types/node",
+ "manifestPrefix": "infra/",
+ "classification": "coordinated-major-hold",
+ "rationale": "Infrastructure compiles and runs against the governed Node 24 LTS line; Node 26 types move only with the runtime migration.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "The governed infrastructure runtime, images, CI matrix, and support policy migrate together to Node 26."
+ },
+ {
+ "dependency": "@babel/core",
+ "manifest": "packages/wallet/wallet-toolbox/mobile/package.json",
+ "classification": "coordinated-major-hold",
+ "rationale": "Babel 8 is a React Native/Metro migration rather than an isolated development dependency patch.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "The supported React Native and Metro stack declares Babel 8 compatibility and the exact mobile package contract passes."
+ },
+ {
+ "dependency": "@babel/runtime",
+ "manifest": "packages/wallet/wallet-toolbox/mobile/package.json",
+ "classification": "coordinated-major-hold",
+ "rationale": "Babel runtime must remain aligned with the supported React Native/Metro compiler family.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "Babel core, runtime, React Native, and Metro migrate together with exact-package tests green."
+ },
+ {
+ "dependency": "chalk",
+ "classification": "coordinated-major-hold",
+ "rationale": "Chalk 6 changes the supported Node/tooling boundary and is reviewed as one consumer-compatible migration across all command-line packages.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-10-30",
+ "removeWhen": "All CLI consumers support Chalk 6 without changing output or supported runtimes."
+ },
+ {
+ "dependency": "typescript",
+ "manifest": "tools/codegen/node/package.json",
+ "classification": "coordinated-major-hold",
+ "rationale": "The isolated OpenAPI code generator is pinned to its tested compiler API and generated-output reproducibility boundary.",
+ "owner": "ts-stack-maintainers",
+ "reviewBy": "2026-08-25",
+ "removeWhen": "The generator and Redocly closure support the new compiler and deterministic codegen remains byte-for-byte clean."
+ }
]
},
"firstParty": {
@@ -47,6 +143,13 @@
"publicationHold": "Source candidates may remain ahead of npm only while publication is explicitly unauthorized. Registry versions may never be ahead of or diverge from source ownership, and release reconciliation must record every held or published package.",
"closeImplementationWaveAfterPublication": false
},
+ "overrideRemovalReview": {
+ "reviewedAt": "2026-07-30",
+ "method": "Regenerated each standalone npm lockfile without gaxios, uuid, or brace-expansion overrides and compared the resulting natural graph; separately rechecked the root Jest/minimatch, typed-rest-client/qs, and isolated Redocly codegen closures.",
+ "retainedCount": 19,
+ "result": "Every remaining override still prevents a reproduced vulnerable transitive version or preserves the isolated reproducible codegen closure. No override can be removed safely in this wave.",
+ "nextReview": "Rehearse removal monthly and immediately after upstream Google client, Jest/minimatch, typed-rest-client, or Redocly dependency changes."
+ },
"overrideRegistry": [
{
"source": "pnpm-workspace.yaml",
diff --git a/governance/documentation-policy.json b/governance/documentation-policy.json
index 0e5c8f2bc..cff8ab19a 100644
--- a/governance/documentation-policy.json
+++ b/governance/documentation-policy.json
@@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"owner": "ts-stack-maintainers",
- "lastReviewed": "2026-07-29",
+ "lastReviewed": "2026-07-30",
"tracker": "https://github.com/bsv-blockchain/ts-stack/issues/324",
"publicPackageReadme": {
"requiredSections": ["installation", "usage", "license"],
diff --git a/governance/package-release-notes.json b/governance/package-release-notes.json
index 9ffb868da..2d1357593 100644
--- a/governance/package-release-notes.json
+++ b/governance/package-release-notes.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
- "lastReviewed": "2026-07-29",
+ "lastReviewed": "2026-07-30",
"owner": "ts-stack-maintainers",
"entries": [
{
diff --git a/governance/repository-health/baselines.json b/governance/repository-health/baselines.json
index 3706fbcda..b6d070adb 100644
--- a/governance/repository-health/baselines.json
+++ b/governance/repository-health/baselines.json
@@ -297,35 +297,35 @@
]
},
"publicPackageVersions": {
- "@bsv/amountinator": "2.1.3",
- "@bsv/wallet-helper": "0.1.5",
- "create-bsv-app": "1.0.3",
- "@bsv/did": "0.2.3",
- "@bsv/did-client": "1.2.2",
- "@bsv/fund-wallet": "1.4.2",
- "@bsv/simple": "0.4.7",
- "@bsv/templates": "1.9.4",
- "@bsv/authsocket": "2.1.3",
- "@bsv/authsocket-client": "2.1.2",
- "@bsv/message-box-client": "2.2.5",
- "@bsv/paymail": "2.4.4",
- "@bsv/402-pay": "0.2.3",
- "@bsv/auth": "0.1.2",
- "@bsv/auth-express-middleware": "2.1.4",
- "@bsv/payment-express-middleware": "2.1.3",
- "@bsv/teranode-listener": "1.1.3",
- "@bsv/gasp": "1.3.4",
- "@bsv/overlay": "2.2.6",
- "@bsv/overlay-discovery-services": "2.1.5",
- "@bsv/overlay-express": "2.4.8",
- "@bsv/overlay-topics": "1.6.7",
- "@bsv/sdk": "2.2.13",
- "@bsv/verifast": "0.3.3",
- "@bsv/btms": "1.1.3",
- "@bsv/btms-permission-module": "1.1.2",
- "@bsv/wallet-relay": "0.3.2",
- "@bsv/wallet-toolbox-client": "2.4.18",
- "@bsv/wallet-toolbox-mobile": "2.4.18",
- "@bsv/wallet-toolbox": "2.4.18"
+ "@bsv/amountinator": "2.1.4",
+ "@bsv/wallet-helper": "0.1.6",
+ "create-bsv-app": "1.0.4",
+ "@bsv/did": "0.2.4",
+ "@bsv/did-client": "1.2.3",
+ "@bsv/fund-wallet": "1.4.3",
+ "@bsv/simple": "0.4.8",
+ "@bsv/templates": "1.9.5",
+ "@bsv/authsocket": "2.1.4",
+ "@bsv/authsocket-client": "2.1.3",
+ "@bsv/message-box-client": "2.2.6",
+ "@bsv/paymail": "2.4.5",
+ "@bsv/402-pay": "0.2.4",
+ "@bsv/auth": "0.1.3",
+ "@bsv/auth-express-middleware": "2.1.5",
+ "@bsv/payment-express-middleware": "2.1.4",
+ "@bsv/teranode-listener": "1.1.4",
+ "@bsv/gasp": "1.3.5",
+ "@bsv/overlay": "2.2.7",
+ "@bsv/overlay-discovery-services": "2.1.6",
+ "@bsv/overlay-express": "2.4.9",
+ "@bsv/overlay-topics": "1.6.8",
+ "@bsv/sdk": "2.2.14",
+ "@bsv/verifast": "0.3.4",
+ "@bsv/btms": "1.1.4",
+ "@bsv/btms-permission-module": "1.1.3",
+ "@bsv/wallet-relay": "0.3.3",
+ "@bsv/wallet-toolbox-client": "2.4.19",
+ "@bsv/wallet-toolbox-mobile": "2.4.19",
+ "@bsv/wallet-toolbox": "2.4.19"
}
}
diff --git a/governance/repository-health/exceptions.json b/governance/repository-health/exceptions.json
index 59f4b2f56..672d6f3d8 100644
--- a/governance/repository-health/exceptions.json
+++ b/governance/repository-health/exceptions.json
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
- "lastReviewed": "2026-07-28",
+ "lastReviewed": "2026-07-30",
"exceptions": [
{
"id": "scorecard-maintainer-merge-policy",
diff --git a/governance/service-edge-browser-policy.json b/governance/service-edge-browser-policy.json
new file mode 100644
index 000000000..ca38dab24
--- /dev/null
+++ b/governance/service-edge-browser-policy.json
@@ -0,0 +1,87 @@
+{
+ "schemaVersion": 1,
+ "lastReviewed": "2026-07-30",
+ "owner": "ts-stack-maintainers",
+ "defaultContract": {
+ "corsMode": "public",
+ "allowOrigin": "*",
+ "allowCredentials": false,
+ "opaqueOrigin": "allowed",
+ "cspControlsCors": false,
+ "rationale": "WAB, Overlays, Storage, and the other protocol services are intentionally callable by deployed browser, WUI, mobile-webview, and future applications across unknown domains. Authentication and authorization remain protocol concerns; operators may opt into an exact allowlist, credentials, or disabled cross-origin access."
+ },
+ "canonicalSource": "infra/wab/src/security/edgePolicy.ts",
+ "synchronizedSources": [
+ "infra/uhrp-server-basic/src/security/edgePolicy.ts",
+ "infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts",
+ "infra/message-box-server/src/security/edgePolicy.ts",
+ "infra/chaintracks-server/src/security/edgePolicy.ts",
+ "packages/overlays/overlay-express/src/security/edgePolicy.ts",
+ "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts"
+ ],
+ "canonicalTest": "infra/wab/src/security/edgePolicy.test.ts",
+ "synchronizedTests": [
+ "packages/overlays/overlay-express/src/security/edgePolicy.test.ts",
+ "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts"
+ ],
+ "requiredContractTests": [
+ "keeps public protocol APIs browser-accessible by default",
+ "allows only explicitly configured browser origins",
+ "supports an explicit cross-origin disabled mode",
+ "validates explicit origin and credential options",
+ "gives service-specific CORS settings precedence over global fallbacks",
+ "sets the API security-header baseline",
+ "supports deployment-specific browser security headers",
+ "keeps CORS accessibility independent from CSP configuration"
+ ],
+ "integrations": [
+ {
+ "service": "WAB",
+ "integration": "infra/wab/src/app.ts",
+ "environmentPrefix": "WAB",
+ "source": "infra/wab/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "UHRP basic",
+ "integration": "infra/uhrp-server-basic/src/index.ts",
+ "environmentPrefix": "UHRP",
+ "source": "infra/uhrp-server-basic/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "UHRP cloud bucket",
+ "integration": "infra/uhrp-server-cloud-bucket/src/index.ts",
+ "environmentPrefix": "UHRP",
+ "source": "infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "Message Box",
+ "integration": "infra/message-box-server/src/app.ts",
+ "environmentPrefix": "MESSAGE_BOX",
+ "source": "infra/message-box-server/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "Chaintracks API",
+ "integration": "infra/chaintracks-server/src/server.ts",
+ "environmentPrefix": "CHAINTRACKS",
+ "source": "infra/chaintracks-server/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "Chaintracks CDN",
+ "integration": "infra/chaintracks-server/src/server.ts",
+ "environmentPrefix": "CHAINTRACKS_CDN",
+ "source": "infra/chaintracks-server/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "OverlayExpress",
+ "integration": "packages/overlays/overlay-express/src/OverlayExpress.ts",
+ "environmentPrefix": "OVERLAY",
+ "source": "packages/overlays/overlay-express/src/security/edgePolicy.ts"
+ },
+ {
+ "service": "Wallet Storage",
+ "integration": "packages/wallet/wallet-toolbox/src/storage/remoting/StorageServer.ts",
+ "environmentPrefix": "WALLET_STORAGE",
+ "source": "packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts"
+ }
+ ]
+}
diff --git a/infra/chaintracks-server/package-lock.json b/infra/chaintracks-server/package-lock.json
index 043588822..6ee00fe9a 100644
--- a/infra/chaintracks-server/package-lock.json
+++ b/infra/chaintracks-server/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "chaintracks-server",
- "version": "1.0.13",
+ "version": "1.0.14",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "chaintracks-server",
- "version": "1.0.13",
+ "version": "1.0.14",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/wallet-toolbox": "^2.4.4",
@@ -32,7 +32,7 @@
"@types/express": "^5.0.6",
"@types/node": "^24.13.3",
"@typescript/native": "npm:typescript@7.0.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-node": "^10.9.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
@@ -1568,9 +1568,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -1585,9 +1585,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -1602,9 +1602,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -1619,9 +1619,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -1636,9 +1636,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -1653,9 +1653,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -1670,9 +1670,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -1687,13 +1687,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1704,13 +1707,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1721,13 +1727,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1738,13 +1747,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1755,13 +1767,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1772,13 +1787,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1789,13 +1807,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1806,13 +1827,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1823,9 +1847,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -1840,9 +1864,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -1857,9 +1881,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -1874,9 +1898,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -3981,9 +4005,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3996,25 +4020,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/chaintracks-server/package.json b/infra/chaintracks-server/package.json
index 2aef0a9a2..bc3757077 100644
--- a/infra/chaintracks-server/package.json
+++ b/infra/chaintracks-server/package.json
@@ -1,6 +1,6 @@
{
"name": "chaintracks-server",
- "version": "1.0.13",
+ "version": "1.0.14",
"overrides": {
"gaxios": "7.3.0"
},
@@ -56,9 +56,9 @@
"devDependencies": {
"@types/express": "^5.0.6",
"@types/node": "^24.13.3",
- "oxlint": "^1.75.0",
- "ts-node": "^10.9.2",
"@typescript/native": "npm:typescript@7.0.2",
+ "oxlint": "^1.76.0",
+ "ts-node": "^10.9.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
}
}
diff --git a/infra/message-box-server/package-lock.json b/infra/message-box-server/package-lock.json
index fe5babb33..55f75eaaf 100644
--- a/infra/message-box-server/package-lock.json
+++ b/infra/message-box-server/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/messagebox-server",
- "version": "1.1.18",
+ "version": "1.1.19",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/messagebox-server",
- "version": "1.1.18",
+ "version": "1.1.19",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/auth-express-middleware": "^2.1.2",
@@ -51,10 +51,10 @@
"@typescript/native": "npm:typescript@7.0.2",
"axios": "^1.18.1",
"axios-mock-adapter": "^2.1.0",
- "better-sqlite3": "^13.0.1",
+ "better-sqlite3": "^13.0.2",
"jest": "^30.4.2",
"mock-knex": "^0.4.13",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"prettier": "3.9.6",
"rimraf": "^6.1.3",
"supertest": "^7.2.2",
@@ -3433,9 +3433,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -3450,9 +3450,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -3467,9 +3467,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -3484,9 +3484,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -3501,9 +3501,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -3518,9 +3518,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -3535,9 +3535,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -3552,13 +3552,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3569,13 +3572,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3586,13 +3592,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3603,13 +3612,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3620,13 +3632,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3637,13 +3652,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3654,13 +3672,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3671,13 +3692,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3688,9 +3712,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -3705,9 +3729,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -3722,9 +3746,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -3739,9 +3763,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -5464,11 +5488,10 @@
}
},
"node_modules/better-sqlite3": {
- "version": "13.0.1",
- "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.1.tgz",
- "integrity": "sha512-LYpmOXdkpQYf4wmlxkdzW01XGlOXNIbjLg45yNkh0FQ4814VbK9PdOFmhZpYbej+EZtR/i3FDdhEG98HqZdgnA==",
+ "version": "13.0.2",
+ "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.2.tgz",
+ "integrity": "sha512-jW6oufeDhXZaiX9Lw5A+oerVClx4iFrI6uDj1zu7SqUAjak9vbJvA0NEcKLNxHiQHb6kYCoFzzXYV0YOauhV3g==",
"dev": true,
- "hasInstallScript": true,
"license": "MIT",
"dependencies": {
"node-addon-api": "^8.0.0"
@@ -9696,9 +9719,9 @@
"peer": true
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -9711,25 +9734,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/message-box-server/package.json b/infra/message-box-server/package.json
index 7a44fd2e8..4b579debc 100644
--- a/infra/message-box-server/package.json
+++ b/infra/message-box-server/package.json
@@ -1,7 +1,7 @@
{
"name": "@bsv/messagebox-server",
"private": true,
- "version": "1.1.18",
+ "version": "1.1.19",
"overrides": {
"brace-expansion": "5.0.8",
"gaxios": "7.3.0",
@@ -50,18 +50,18 @@
"@types/supertest": "^7.2.1",
"@types/swagger-jsdoc": "^6.0.4",
"@types/swagger-ui-express": "^4.1.8",
+ "@typescript/native": "npm:typescript@7.0.2",
"axios": "^1.18.1",
"axios-mock-adapter": "^2.1.0",
- "better-sqlite3": "^13.0.1",
+ "better-sqlite3": "^13.0.2",
"jest": "^30.4.2",
"mock-knex": "^0.4.13",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"prettier": "3.9.6",
"rimraf": "^6.1.3",
"supertest": "^7.2.2",
"ts-jest": "^29.4.12",
"tsx": "^4.23.1",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/infra/overlay-server/package-lock.json b/infra/overlay-server/package-lock.json
index 68da582a3..bdbe92dcf 100644
--- a/infra/overlay-server/package-lock.json
+++ b/infra/overlay-server/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/overlay-express-examples",
- "version": "2.1.21",
+ "version": "2.1.22",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/overlay-express-examples",
- "version": "2.1.21",
+ "version": "2.1.22",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/overlay": "^2.2.1",
@@ -35,8 +35,8 @@
"devDependencies": {
"@types/node": "^24.13.3",
"@typescript/native": "npm:typescript@7.0.2",
- "oxlint": "^1.75.0",
- "tsx": "^4.21.0",
+ "oxlint": "^1.76.0",
+ "tsx": "^4.23.1",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"engines": {
@@ -2077,9 +2077,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -2094,9 +2094,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -2111,9 +2111,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -2128,9 +2128,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -2145,9 +2145,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -2162,9 +2162,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -2179,9 +2179,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -2196,13 +2196,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2213,13 +2216,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2230,13 +2236,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2247,13 +2256,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2264,13 +2276,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2281,13 +2296,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2298,13 +2316,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2315,13 +2336,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2332,9 +2356,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -2349,9 +2373,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -2366,9 +2390,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -2383,9 +2407,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -4312,9 +4336,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -4327,25 +4351,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/overlay-server/package.json b/infra/overlay-server/package.json
index 23bd992b9..cca76c503 100644
--- a/infra/overlay-server/package.json
+++ b/infra/overlay-server/package.json
@@ -1,7 +1,7 @@
{
"name": "@bsv/overlay-express-examples",
"private": true,
- "version": "2.1.21",
+ "version": "2.1.22",
"overrides": {
"gaxios": "7.3.0"
},
@@ -32,9 +32,9 @@
},
"devDependencies": {
"@types/node": "^24.13.3",
- "oxlint": "^1.75.0",
- "tsx": "^4.21.0",
"@typescript/native": "npm:typescript@7.0.2",
+ "oxlint": "^1.76.0",
+ "tsx": "^4.23.1",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/infra/uhrp-server-basic/package-lock.json b/infra/uhrp-server-basic/package-lock.json
index 5b3f1f682..6146c17e5 100644
--- a/infra/uhrp-server-basic/package-lock.json
+++ b/infra/uhrp-server-basic/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/uhrp-lite",
- "version": "0.1.14",
+ "version": "0.1.15",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/uhrp-lite",
- "version": "0.1.14",
+ "version": "0.1.15",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/auth-express-middleware": "^2.1.2",
@@ -42,7 +42,7 @@
"@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
"nodemon": "^3.1.14",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-node": "^10.9.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
@@ -2654,9 +2654,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -2671,9 +2671,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -2688,9 +2688,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -2705,9 +2705,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -2722,9 +2722,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -2739,9 +2739,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -2756,9 +2756,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -2773,13 +2773,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2790,13 +2793,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2807,13 +2813,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2824,13 +2833,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2841,13 +2853,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2858,13 +2873,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2875,13 +2893,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2892,13 +2913,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2909,9 +2933,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -2926,9 +2950,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -2943,9 +2967,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -2960,9 +2984,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -7242,9 +7266,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -7257,25 +7281,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/uhrp-server-basic/package.json b/infra/uhrp-server-basic/package.json
index 4c95d7916..4315c370b 100644
--- a/infra/uhrp-server-basic/package.json
+++ b/infra/uhrp-server-basic/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/uhrp-lite",
- "version": "0.1.14",
+ "version": "0.1.15",
"overrides": {
"brace-expansion": "5.0.8",
"gaxios": "7.3.0"
@@ -67,11 +67,11 @@
"@types/express": "^5.0.6",
"@types/node": "^24.13.3",
"@types/prettyjson": "^0.0.33",
+ "@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
"nodemon": "^3.1.14",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-node": "^10.9.2",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
}
}
diff --git a/infra/uhrp-server-cloud-bucket/package-lock.json b/infra/uhrp-server-cloud-bucket/package-lock.json
index 201f3a065..3713ee2d5 100644
--- a/infra/uhrp-server-cloud-bucket/package-lock.json
+++ b/infra/uhrp-server-cloud-bucket/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/uhrp-storage-server",
- "version": "0.2.16",
+ "version": "0.2.17",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/uhrp-storage-server",
- "version": "0.2.16",
+ "version": "0.2.17",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/auth-express-middleware": "^2.1.2",
@@ -50,7 +50,7 @@
"ejs": "^6.0.1",
"jest": "^30.4.2",
"nodemon": "^3.1.14",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
@@ -2951,9 +2951,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -2968,9 +2968,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -2985,9 +2985,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -3002,9 +3002,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -3019,9 +3019,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -3036,9 +3036,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -3053,9 +3053,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -3070,13 +3070,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3087,13 +3090,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3104,13 +3110,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3121,13 +3130,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3138,13 +3150,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3155,13 +3170,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3172,13 +3190,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3189,13 +3210,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -3206,9 +3230,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -3223,9 +3247,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -3240,9 +3264,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -3257,9 +3281,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -8454,9 +8478,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -8469,25 +8493,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/uhrp-server-cloud-bucket/package.json b/infra/uhrp-server-cloud-bucket/package.json
index ed3f1139e..226a59ecd 100644
--- a/infra/uhrp-server-cloud-bucket/package.json
+++ b/infra/uhrp-server-cloud-bucket/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/uhrp-storage-server",
- "version": "0.2.16",
+ "version": "0.2.17",
"overrides": {
"brace-expansion": "5.0.8",
"gaxios": "7.3.0",
@@ -77,13 +77,13 @@
"@types/jest": "^30.0.0",
"@types/node": "^24.13.3",
"@types/prettyjson": "^0.0.33",
+ "@typescript/native": "npm:typescript@7.0.2",
"ejs": "^6.0.1",
"jest": "^30.4.2",
"nodemon": "^3.1.14",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
}
}
diff --git a/infra/wab/package-lock.json b/infra/wab/package-lock.json
index f9b51e546..080b1d8e5 100644
--- a/infra/wab/package-lock.json
+++ b/infra/wab/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/wab-server",
- "version": "1.4.15",
+ "version": "1.4.16",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/wab-server",
- "version": "1.4.15",
+ "version": "1.4.16",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/sdk": "^2.2.0",
@@ -43,7 +43,7 @@
"@typescript/native": "npm:typescript@7.0.2",
"body-parser": "^2.3.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"ts-node-dev": "^2.0.0",
@@ -2703,9 +2703,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -2720,9 +2720,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -2737,9 +2737,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -2754,9 +2754,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -2771,9 +2771,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -2788,9 +2788,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -2805,9 +2805,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -2822,13 +2822,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2839,13 +2842,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2856,13 +2862,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2873,13 +2882,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2890,13 +2902,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2907,13 +2922,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2924,13 +2942,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2941,13 +2962,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -2958,9 +2982,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -2975,9 +2999,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -2992,9 +3016,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -3009,9 +3033,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -8009,9 +8033,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -8024,25 +8048,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/wab/package.json b/infra/wab/package.json
index 626d5eed2..94cedd25d 100644
--- a/infra/wab/package.json
+++ b/infra/wab/package.json
@@ -1,7 +1,7 @@
{
"name": "@bsv/wab-server",
"private": true,
- "version": "1.4.15",
+ "version": "1.4.16",
"overrides": {
"brace-expansion": "5.0.8",
"gaxios": "7.3.0"
@@ -53,13 +53,13 @@
"@types/express-serve-static-core": "^5.1.2",
"@types/jest": "^30.0.0",
"@types/node": "^24.13.3",
+ "@typescript/native": "npm:typescript@7.0.2",
"body-parser": "^2.3.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"ts-node-dev": "^2.0.0",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"license": "SEE LICENSE IN LICENSE.txt"
diff --git a/infra/wab/src/security/edgePolicy.test.ts b/infra/wab/src/security/edgePolicy.test.ts
index 09df066cf..1e169aee3 100644
--- a/infra/wab/src/security/edgePolicy.test.ts
+++ b/infra/wab/src/security/edgePolicy.test.ts
@@ -369,6 +369,33 @@ describe('shared service edge policy', () => {
}
})
+ it('keeps CORS accessibility independent from CSP configuration', async () => {
+ process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:"
+ delete process.env.TEST_CORS_MODE
+ delete process.env.TEST_CORS_ALLOWED_ORIGINS
+ const app = express()
+ app.use(securityHeaders({ environmentPrefix: 'TEST' }))
+ app.use(corsPolicy({
+ environmentPrefix: 'TEST',
+ methods: ['GET']
+ }))
+ app.get('/', (_req, res) => res.json({ ok: true }))
+ const { server, origin } = await listen(app)
+
+ try {
+ const response = await fetch(origin, {
+ headers: { Origin: 'https://unknown-deployed-app.example' }
+ })
+ expect(response.status).toBe(200)
+ expect(response.headers.get('access-control-allow-origin')).toBe('*')
+ expect(response.headers.get('access-control-allow-credentials')).toBeNull()
+ expect(response.headers.get('content-security-policy'))
+ .toBe("default-src 'self'; connect-src https:")
+ } finally {
+ await close(server)
+ }
+ })
+
it('does not trust a raw forwarded-proto header for HSTS', async () => {
const app = express()
app.use(securityHeaders())
diff --git a/infra/wallet-infra/package-lock.json b/infra/wallet-infra/package-lock.json
index e358178b3..268de9d3e 100644
--- a/infra/wallet-infra/package-lock.json
+++ b/infra/wallet-infra/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@bsv/wallet-infra",
- "version": "2.0.17",
+ "version": "2.0.18",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@bsv/wallet-infra",
- "version": "2.0.17",
+ "version": "2.0.18",
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@bsv/payment-express-middleware": "^2.1.1",
@@ -35,7 +35,7 @@
"devDependencies": {
"@types/node": "^24.13.3",
"@typescript/native": "npm:typescript@7.0.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"prettier": "^3.9.6",
"ts-node": "^10.9.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
@@ -1571,9 +1571,9 @@
}
},
"node_modules/@oxlint/binding-android-arm-eabi": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.75.0.tgz",
- "integrity": "sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.76.0.tgz",
+ "integrity": "sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==",
"cpu": [
"arm"
],
@@ -1588,9 +1588,9 @@
}
},
"node_modules/@oxlint/binding-android-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.75.0.tgz",
- "integrity": "sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.76.0.tgz",
+ "integrity": "sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==",
"cpu": [
"arm64"
],
@@ -1605,9 +1605,9 @@
}
},
"node_modules/@oxlint/binding-darwin-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.75.0.tgz",
- "integrity": "sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.76.0.tgz",
+ "integrity": "sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==",
"cpu": [
"arm64"
],
@@ -1622,9 +1622,9 @@
}
},
"node_modules/@oxlint/binding-darwin-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.75.0.tgz",
- "integrity": "sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.76.0.tgz",
+ "integrity": "sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==",
"cpu": [
"x64"
],
@@ -1639,9 +1639,9 @@
}
},
"node_modules/@oxlint/binding-freebsd-x64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.75.0.tgz",
- "integrity": "sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.76.0.tgz",
+ "integrity": "sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==",
"cpu": [
"x64"
],
@@ -1656,9 +1656,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-gnueabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.75.0.tgz",
- "integrity": "sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.76.0.tgz",
+ "integrity": "sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==",
"cpu": [
"arm"
],
@@ -1673,9 +1673,9 @@
}
},
"node_modules/@oxlint/binding-linux-arm-musleabihf": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.75.0.tgz",
- "integrity": "sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.76.0.tgz",
+ "integrity": "sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==",
"cpu": [
"arm"
],
@@ -1690,13 +1690,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.75.0.tgz",
- "integrity": "sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.76.0.tgz",
+ "integrity": "sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1707,13 +1710,16 @@
}
},
"node_modules/@oxlint/binding-linux-arm64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.75.0.tgz",
- "integrity": "sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.76.0.tgz",
+ "integrity": "sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==",
"cpu": [
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1724,13 +1730,16 @@
}
},
"node_modules/@oxlint/binding-linux-ppc64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.75.0.tgz",
- "integrity": "sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.76.0.tgz",
+ "integrity": "sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==",
"cpu": [
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1741,13 +1750,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.75.0.tgz",
- "integrity": "sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.76.0.tgz",
+ "integrity": "sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1758,13 +1770,16 @@
}
},
"node_modules/@oxlint/binding-linux-riscv64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.75.0.tgz",
- "integrity": "sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.76.0.tgz",
+ "integrity": "sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==",
"cpu": [
"riscv64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1775,13 +1790,16 @@
}
},
"node_modules/@oxlint/binding-linux-s390x-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.75.0.tgz",
- "integrity": "sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.76.0.tgz",
+ "integrity": "sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1792,13 +1810,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-gnu": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.75.0.tgz",
- "integrity": "sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.76.0.tgz",
+ "integrity": "sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1809,13 +1830,16 @@
}
},
"node_modules/@oxlint/binding-linux-x64-musl": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.75.0.tgz",
- "integrity": "sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.76.0.tgz",
+ "integrity": "sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
@@ -1826,9 +1850,9 @@
}
},
"node_modules/@oxlint/binding-openharmony-arm64": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.75.0.tgz",
- "integrity": "sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.76.0.tgz",
+ "integrity": "sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==",
"cpu": [
"arm64"
],
@@ -1843,9 +1867,9 @@
}
},
"node_modules/@oxlint/binding-win32-arm64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.75.0.tgz",
- "integrity": "sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.76.0.tgz",
+ "integrity": "sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==",
"cpu": [
"arm64"
],
@@ -1860,9 +1884,9 @@
}
},
"node_modules/@oxlint/binding-win32-ia32-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.75.0.tgz",
- "integrity": "sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.76.0.tgz",
+ "integrity": "sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==",
"cpu": [
"ia32"
],
@@ -1877,9 +1901,9 @@
}
},
"node_modules/@oxlint/binding-win32-x64-msvc": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.75.0.tgz",
- "integrity": "sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.76.0.tgz",
+ "integrity": "sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==",
"cpu": [
"x64"
],
@@ -3949,9 +3973,9 @@
}
},
"node_modules/oxlint": {
- "version": "1.75.0",
- "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.75.0.tgz",
- "integrity": "sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==",
+ "version": "1.76.0",
+ "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.76.0.tgz",
+ "integrity": "sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -3964,25 +3988,25 @@
"url": "https://github.com/sponsors/Boshen"
},
"optionalDependencies": {
- "@oxlint/binding-android-arm-eabi": "1.75.0",
- "@oxlint/binding-android-arm64": "1.75.0",
- "@oxlint/binding-darwin-arm64": "1.75.0",
- "@oxlint/binding-darwin-x64": "1.75.0",
- "@oxlint/binding-freebsd-x64": "1.75.0",
- "@oxlint/binding-linux-arm-gnueabihf": "1.75.0",
- "@oxlint/binding-linux-arm-musleabihf": "1.75.0",
- "@oxlint/binding-linux-arm64-gnu": "1.75.0",
- "@oxlint/binding-linux-arm64-musl": "1.75.0",
- "@oxlint/binding-linux-ppc64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-gnu": "1.75.0",
- "@oxlint/binding-linux-riscv64-musl": "1.75.0",
- "@oxlint/binding-linux-s390x-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-gnu": "1.75.0",
- "@oxlint/binding-linux-x64-musl": "1.75.0",
- "@oxlint/binding-openharmony-arm64": "1.75.0",
- "@oxlint/binding-win32-arm64-msvc": "1.75.0",
- "@oxlint/binding-win32-ia32-msvc": "1.75.0",
- "@oxlint/binding-win32-x64-msvc": "1.75.0"
+ "@oxlint/binding-android-arm-eabi": "1.76.0",
+ "@oxlint/binding-android-arm64": "1.76.0",
+ "@oxlint/binding-darwin-arm64": "1.76.0",
+ "@oxlint/binding-darwin-x64": "1.76.0",
+ "@oxlint/binding-freebsd-x64": "1.76.0",
+ "@oxlint/binding-linux-arm-gnueabihf": "1.76.0",
+ "@oxlint/binding-linux-arm-musleabihf": "1.76.0",
+ "@oxlint/binding-linux-arm64-gnu": "1.76.0",
+ "@oxlint/binding-linux-arm64-musl": "1.76.0",
+ "@oxlint/binding-linux-ppc64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-gnu": "1.76.0",
+ "@oxlint/binding-linux-riscv64-musl": "1.76.0",
+ "@oxlint/binding-linux-s390x-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-gnu": "1.76.0",
+ "@oxlint/binding-linux-x64-musl": "1.76.0",
+ "@oxlint/binding-openharmony-arm64": "1.76.0",
+ "@oxlint/binding-win32-arm64-msvc": "1.76.0",
+ "@oxlint/binding-win32-ia32-msvc": "1.76.0",
+ "@oxlint/binding-win32-x64-msvc": "1.76.0"
},
"peerDependencies": {
"oxlint-tsgolint": ">=7.0.2001",
diff --git a/infra/wallet-infra/package.json b/infra/wallet-infra/package.json
index 9fcb7ba73..f83452313 100644
--- a/infra/wallet-infra/package.json
+++ b/infra/wallet-infra/package.json
@@ -1,7 +1,7 @@
{
"name": "@bsv/wallet-infra",
"private": true,
- "version": "2.0.17",
+ "version": "2.0.18",
"overrides": {
"gaxios": "7.3.0"
},
@@ -46,10 +46,10 @@
},
"devDependencies": {
"@types/node": "^24.13.3",
- "oxlint": "^1.75.0",
+ "@typescript/native": "npm:typescript@7.0.2",
+ "oxlint": "^1.76.0",
"prettier": "^3.9.6",
"ts-node": "^10.9.2",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/package.json b/package.json
index 99a6ed529..9bfb014aa 100644
--- a/package.json
+++ b/package.json
@@ -20,7 +20,7 @@
"check-versions": "node scripts/check-versions.mjs",
"typescript:check": "node scripts/typescript-toolchain.mjs",
"health:baseline": "node scripts/repository-health.mjs --update-contract-baseline",
- "health:check": "node --test scripts/*.test.mjs && pnpm docs:facts:check && pnpm ops:check && node scripts/dependency-release-governance.mjs check && node scripts/typescript-toolchain.mjs && node scripts/package-license-policy.mjs && node scripts/sync-service-rate-limit-policy.mjs --check && node scripts/sync-service-edge-policy.mjs --check && node scripts/repository-health.mjs",
+ "health:check": "node --test scripts/*.test.mjs && pnpm docs:facts:check && pnpm ops:check && node scripts/dependency-release-governance.mjs check && node scripts/browser-artifact-governance.mjs && node scripts/typescript-toolchain.mjs && node scripts/package-license-policy.mjs && node scripts/sync-service-rate-limit-policy.mjs --check && node scripts/sync-service-edge-policy.mjs --check && node scripts/repository-health.mjs",
"health:report": "node scripts/repository-health.mjs --format markdown",
"test:governance": "node scripts/test-governance.mjs",
"build:property": "pnpm -r --filter '!@bsv/ts-stack' --filter '!docs-site' --filter '!example-paymail' run build",
diff --git a/packages/helpers/amountinator/package.json b/packages/helpers/amountinator/package.json
index 00bfb140e..058775d4a 100644
--- a/packages/helpers/amountinator/package.json
+++ b/packages/helpers/amountinator/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/amountinator",
- "version": "2.1.3",
+ "version": "2.1.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -58,14 +58,14 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/packages/helpers/bsv-wallet-helper/package.json b/packages/helpers/bsv-wallet-helper/package.json
index 1fd7f88e1..c7307d11c 100644
--- a/packages/helpers/bsv-wallet-helper/package.json
+++ b/packages/helpers/bsv-wallet-helper/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/wallet-helper",
- "version": "0.1.5",
+ "version": "0.1.6",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -61,14 +61,14 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
- "tslib": "^2.8.1",
- "oxlint": "^1.75.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
+ "tslib": "^2.8.1",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"bugs": {
diff --git a/packages/helpers/create-bsv-app/package.json b/packages/helpers/create-bsv-app/package.json
index 42182567d..a95a50259 100644
--- a/packages/helpers/create-bsv-app/package.json
+++ b/packages/helpers/create-bsv-app/package.json
@@ -1,6 +1,6 @@
{
"name": "create-bsv-app",
- "version": "1.0.3",
+ "version": "1.0.4",
"sideEffects": false,
"description": "The unified CLI and starter catalogue for creating BSV applications",
"type": "module",
@@ -40,13 +40,13 @@
"devDependencies": {
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"publishConfig": {
"access": "public"
diff --git a/packages/helpers/did-client/package.json b/packages/helpers/did-client/package.json
index 4e59ba6ec..cdfb0ab19 100644
--- a/packages/helpers/did-client/package.json
+++ b/packages/helpers/did-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/did-client",
- "version": "1.2.2",
+ "version": "1.2.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -63,17 +63,17 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
"jest-environment-jsdom": "^30.4.1",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
- "webpack": "^5.109.0",
- "webpack-cli": "^7.2.1",
- "oxlint": "^1.75.0"
+ "webpack": "^5.109.2",
+ "webpack-cli": "^7.2.2"
},
"dependencies": {
"@bsv/wallet-toolbox-client": "workspace:^"
diff --git a/packages/helpers/did/package.json b/packages/helpers/did/package.json
index 6b40ad8d8..8daee8e2d 100644
--- a/packages/helpers/did/package.json
+++ b/packages/helpers/did/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/did",
- "version": "0.2.3",
+ "version": "0.2.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -69,15 +69,15 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@types/qrcode": "^1.5.6",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"repository": {
"type": "git",
diff --git a/packages/helpers/fund-wallet/package.json b/packages/helpers/fund-wallet/package.json
index acec7b4b9..610d84340 100644
--- a/packages/helpers/fund-wallet/package.json
+++ b/packages/helpers/fund-wallet/package.json
@@ -1,7 +1,7 @@
{
"name": "@bsv/fund-wallet",
"private": false,
- "version": "1.4.2",
+ "version": "1.4.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -43,12 +43,12 @@
},
"devDependencies": {
"@bsv/sdk": "workspace:^",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"@vitest/coverage-v8": "4.1.10",
"fast-check": "^4.9.0",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
"vitest": "^4.1.10"
},
diff --git a/packages/helpers/simple/package.json b/packages/helpers/simple/package.json
index 3c9daf68d..c1aaa0bc6 100644
--- a/packages/helpers/simple/package.json
+++ b/packages/helpers/simple/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/simple",
- "version": "0.4.7",
+ "version": "0.4.8",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -96,14 +96,14 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"dotenv": "^17.4.2",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"files": [
"dist",
diff --git a/packages/helpers/ts-templates/package.json b/packages/helpers/ts-templates/package.json
index d1307be11..6361721b9 100644
--- a/packages/helpers/ts-templates/package.json
+++ b/packages/helpers/ts-templates/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/templates",
- "version": "1.9.4",
+ "version": "1.9.5",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -77,14 +77,14 @@
"@bsv/sdk": "workspace:^",
"@bsv/wallet-toolbox": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.6"
diff --git a/packages/messaging/authsocket-client/package.json b/packages/messaging/authsocket-client/package.json
index 56bad6d32..b8adc6780 100644
--- a/packages/messaging/authsocket-client/package.json
+++ b/packages/messaging/authsocket-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/authsocket-client",
- "version": "2.1.2",
+ "version": "2.1.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -71,16 +71,16 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
- "webpack": "^5.109.0",
- "webpack-cli": "^7.2.1"
+ "webpack": "^5.109.2",
+ "webpack-cli": "^7.2.2"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.6"
diff --git a/packages/messaging/authsocket/package.json b/packages/messaging/authsocket/package.json
index f9f367410..ad027ead8 100644
--- a/packages/messaging/authsocket/package.json
+++ b/packages/messaging/authsocket/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/authsocket",
- "version": "2.1.3",
+ "version": "2.1.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -68,13 +68,13 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
diff --git a/packages/messaging/message-box-client/package.json b/packages/messaging/message-box-client/package.json
index ca7dbae14..8208c8ba3 100644
--- a/packages/messaging/message-box-client/package.json
+++ b/packages/messaging/message-box-client/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/message-box-client",
- "version": "2.2.5",
+ "version": "2.2.6",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -72,17 +72,17 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"rimraf": "^6.1.3",
"ts-jest": "^29.4.12",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
- "webpack": "^5.109.0",
- "webpack-cli": "^7.2.1"
+ "webpack": "^5.109.2",
+ "webpack-cli": "^7.2.2"
},
"dependencies": {
"@bsv/authsocket-client": "workspace:^"
diff --git a/packages/messaging/ts-paymail/docs/examples/package.json b/packages/messaging/ts-paymail/docs/examples/package.json
index 874d602dd..5826ff19c 100644
--- a/packages/messaging/ts-paymail/docs/examples/package.json
+++ b/packages/messaging/ts-paymail/docs/examples/package.json
@@ -25,10 +25,10 @@
"jwt-simple": "^0.5.6"
},
"devDependencies": {
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "oxlint": "^1.76.0",
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"repository": {
"type": "git",
diff --git a/packages/messaging/ts-paymail/package.json b/packages/messaging/ts-paymail/package.json
index c6c0bfd68..5d0db0bb8 100644
--- a/packages/messaging/ts-paymail/package.json
+++ b/packages/messaging/ts-paymail/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/paymail",
- "version": "2.4.4",
+ "version": "2.4.5",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -195,16 +195,16 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@types/supertest": "^7.2.1",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"supertest": "^7.2.2",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
diff --git a/packages/middleware/402-pay/package.json b/packages/middleware/402-pay/package.json
index df411d112..bfc575a36 100644
--- a/packages/middleware/402-pay/package.json
+++ b/packages/middleware/402-pay/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/402-pay",
- "version": "0.2.3",
+ "version": "0.2.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -93,12 +93,12 @@
},
"devDependencies": {
"@bsv/sdk": "workspace:^",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"@vitest/coverage-v8": "4.1.10",
"fast-check": "^4.9.0",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
"vitest": "^4.1.10"
},
diff --git a/packages/middleware/auth-express-middleware/package.json b/packages/middleware/auth-express-middleware/package.json
index 754426103..9224d515f 100644
--- a/packages/middleware/auth-express-middleware/package.json
+++ b/packages/middleware/auth-express-middleware/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/auth-express-middleware",
- "version": "2.1.4",
+ "version": "2.1.5",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -68,14 +68,14 @@
"@types/body-parser": "^1.19.6",
"@types/jest": "^30.0.0",
"@types/mime-types": "^3.0.1",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/packages/middleware/auth/package.json b/packages/middleware/auth/package.json
index 0fa810c15..8383017da 100644
--- a/packages/middleware/auth/package.json
+++ b/packages/middleware/auth/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/auth",
- "version": "0.1.2",
+ "version": "0.1.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -59,14 +59,14 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
- "tslib": "^2.8.1",
- "oxlint": "^1.75.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
+ "tslib": "^2.8.1",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"bugs": {
diff --git a/packages/middleware/payment-express-middleware/package.json b/packages/middleware/payment-express-middleware/package.json
index e565b7623..6c899982d 100644
--- a/packages/middleware/payment-express-middleware/package.json
+++ b/packages/middleware/payment-express-middleware/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/payment-express-middleware",
- "version": "2.1.3",
+ "version": "2.1.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -64,14 +64,14 @@
"@bsv/sdk": "workspace:^",
"@types/body-parser": "^1.19.6",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/packages/network/ts-p2p/package.json b/packages/network/ts-p2p/package.json
index 6819d9d67..38921ffb6 100644
--- a/packages/network/ts-p2p/package.json
+++ b/packages/network/ts-p2p/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/teranode-listener",
- "version": "1.1.3",
+ "version": "1.1.4",
"sideEffects": false,
"publishConfig": {
"access": "public"
@@ -55,15 +55,15 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
- "@typescript/native": "npm:typescript@7.0.2",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"tsx": "^4.23.1",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"keywords": [
"teranode",
diff --git a/packages/overlays/btms-backend/package.json b/packages/overlays/btms-backend/package.json
index ee374f40a..97e60e63f 100644
--- a/packages/overlays/btms-backend/package.json
+++ b/packages/overlays/btms-backend/package.json
@@ -40,17 +40,17 @@
"devDependencies": {
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
"mongodb-memory-server": "^11.2.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
"@bsv/overlay": "workspace:^",
diff --git a/packages/overlays/gasp-core/package.json b/packages/overlays/gasp-core/package.json
index 02c42970c..cf50888e6 100644
--- a/packages/overlays/gasp-core/package.json
+++ b/packages/overlays/gasp-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/gasp",
- "version": "1.3.4",
+ "version": "1.3.5",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -78,14 +78,14 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.6"
diff --git a/packages/overlays/overlay-discovery-services/package.json b/packages/overlays/overlay-discovery-services/package.json
index 9d5d51569..71a095e8e 100644
--- a/packages/overlays/overlay-discovery-services/package.json
+++ b/packages/overlays/overlay-discovery-services/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/overlay-discovery-services",
- "version": "2.1.5",
+ "version": "2.1.6",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -77,16 +77,16 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
"mongodb-memory-server": "^11.2.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
"@bsv/overlay": "workspace:^",
diff --git a/packages/overlays/overlay-express/package.json b/packages/overlays/overlay-express/package.json
index f7d658b00..71bb97f58 100644
--- a/packages/overlays/overlay-express/package.json
+++ b/packages/overlays/overlay-express/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/overlay-express",
- "version": "2.4.8",
+ "version": "2.4.9",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -81,15 +81,15 @@
"@jest/globals": "^30.4.1",
"@types/body-parser": "^1.19.6",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
"@bsv/auth-express-middleware": "workspace:^",
diff --git a/packages/overlays/overlay-express/src/security/edgePolicy.test.ts b/packages/overlays/overlay-express/src/security/edgePolicy.test.ts
index 09df066cf..1e169aee3 100644
--- a/packages/overlays/overlay-express/src/security/edgePolicy.test.ts
+++ b/packages/overlays/overlay-express/src/security/edgePolicy.test.ts
@@ -369,6 +369,33 @@ describe('shared service edge policy', () => {
}
})
+ it('keeps CORS accessibility independent from CSP configuration', async () => {
+ process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:"
+ delete process.env.TEST_CORS_MODE
+ delete process.env.TEST_CORS_ALLOWED_ORIGINS
+ const app = express()
+ app.use(securityHeaders({ environmentPrefix: 'TEST' }))
+ app.use(corsPolicy({
+ environmentPrefix: 'TEST',
+ methods: ['GET']
+ }))
+ app.get('/', (_req, res) => res.json({ ok: true }))
+ const { server, origin } = await listen(app)
+
+ try {
+ const response = await fetch(origin, {
+ headers: { Origin: 'https://unknown-deployed-app.example' }
+ })
+ expect(response.status).toBe(200)
+ expect(response.headers.get('access-control-allow-origin')).toBe('*')
+ expect(response.headers.get('access-control-allow-credentials')).toBeNull()
+ expect(response.headers.get('content-security-policy'))
+ .toBe("default-src 'self'; connect-src https:")
+ } finally {
+ await close(server)
+ }
+ })
+
it('does not trust a raw forwarded-proto header for HSTS', async () => {
const app = express()
app.use(securityHeaders())
diff --git a/packages/overlays/overlay/package.json b/packages/overlays/overlay/package.json
index 47019d9e6..2ad0ad3ba 100644
--- a/packages/overlays/overlay/package.json
+++ b/packages/overlays/overlay/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/overlay",
- "version": "2.2.6",
+ "version": "2.2.7",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -50,6 +50,16 @@
"default": "./dist/cjs/src/storage/Storage.js"
}
},
+ "./storage/*.ts": {
+ "import": {
+ "types": "./dist/types/src/storage/*.d.ts",
+ "default": "./dist/esm/src/storage/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/storage/*.d.ts",
+ "default": "./dist/cjs/src/storage/*.js"
+ }
+ },
"./storage/*": {
"import": {
"types": "./dist/types/src/storage/*.d.ts",
@@ -97,15 +107,15 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
"@bsv/gasp": "workspace:^",
diff --git a/packages/overlays/topics/package.json b/packages/overlays/topics/package.json
index a1179991c..0269ff707 100644
--- a/packages/overlays/topics/package.json
+++ b/packages/overlays/topics/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/overlay-topics",
- "version": "1.6.7",
+ "version": "1.6.8",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -45,14 +45,14 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
"mongodb-memory-server": "^11.2.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"license": "SEE LICENSE IN LICENSE.txt",
"author": "BSV Blockchain Association",
diff --git a/packages/sdk/package.json b/packages/sdk/package.json
index e4e77824a..79641e8aa 100644
--- a/packages/sdk/package.json
+++ b/packages/sdk/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/sdk",
- "version": "2.2.13",
+ "version": "2.2.14",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -51,6 +51,16 @@
"default": "./dist/cjs/src/primitives/index.js"
}
},
+ "./primitives/*.ts": {
+ "import": {
+ "types": "./dist/types/src/primitives/*.d.ts",
+ "default": "./dist/esm/src/primitives/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/primitives/*.d.ts",
+ "default": "./dist/cjs/src/primitives/*.js"
+ }
+ },
"./primitives/*": {
"import": {
"types": "./dist/types/src/primitives/*.d.ts",
@@ -71,6 +81,16 @@
"default": "./dist/cjs/src/script/index.js"
}
},
+ "./script/*.ts": {
+ "import": {
+ "types": "./dist/types/src/script/*.d.ts",
+ "default": "./dist/esm/src/script/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/script/*.d.ts",
+ "default": "./dist/cjs/src/script/*.js"
+ }
+ },
"./script/*": {
"import": {
"types": "./dist/types/src/script/*.d.ts",
@@ -91,6 +111,16 @@
"default": "./dist/cjs/src/script/templates/index.js"
}
},
+ "./script/templates/*.ts": {
+ "import": {
+ "types": "./dist/types/src/script/templates/*.d.ts",
+ "default": "./dist/esm/src/script/templates/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/script/templates/*.d.ts",
+ "default": "./dist/cjs/src/script/templates/*.js"
+ }
+ },
"./script/templates/*": {
"import": {
"types": "./dist/types/src/script/templates/*.d.ts",
@@ -111,6 +141,16 @@
"default": "./dist/cjs/src/transaction/index.js"
}
},
+ "./transaction/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/*.d.ts",
+ "default": "./dist/esm/src/transaction/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/*.d.ts",
+ "default": "./dist/cjs/src/transaction/*.js"
+ }
+ },
"./transaction/*": {
"import": {
"types": "./dist/types/src/transaction/*.d.ts",
@@ -131,6 +171,16 @@
"default": "./dist/cjs/src/transaction/broadcasters/index.js"
}
},
+ "./transaction/broadcaster/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/broadcasters/*.d.ts",
+ "default": "./dist/esm/src/transaction/broadcasters/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/broadcasters/*.d.ts",
+ "default": "./dist/cjs/src/transaction/broadcasters/*.js"
+ }
+ },
"./transaction/broadcaster/*": {
"import": {
"types": "./dist/types/src/transaction/broadcasters/*.d.ts",
@@ -151,6 +201,16 @@
"default": "./dist/cjs/src/transaction/broadcasters/index.js"
}
},
+ "./transaction/broadcasters/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/broadcasters/*.d.ts",
+ "default": "./dist/esm/src/transaction/broadcasters/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/broadcasters/*.d.ts",
+ "default": "./dist/cjs/src/transaction/broadcasters/*.js"
+ }
+ },
"./transaction/broadcasters/*": {
"import": {
"types": "./dist/types/src/transaction/broadcasters/*.d.ts",
@@ -171,6 +231,16 @@
"default": "./dist/cjs/src/transaction/chaintrackers/index.js"
}
},
+ "./transaction/chaintrackers/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/chaintrackers/*.d.ts",
+ "default": "./dist/esm/src/transaction/chaintrackers/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/chaintrackers/*.d.ts",
+ "default": "./dist/cjs/src/transaction/chaintrackers/*.js"
+ }
+ },
"./transaction/chaintrackers/*": {
"import": {
"types": "./dist/types/src/transaction/chaintrackers/*.d.ts",
@@ -191,6 +261,16 @@
"default": "./dist/cjs/src/transaction/http/index.js"
}
},
+ "./transaction/http/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/http/*.d.ts",
+ "default": "./dist/esm/src/transaction/http/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/http/*.d.ts",
+ "default": "./dist/cjs/src/transaction/http/*.js"
+ }
+ },
"./transaction/http/*": {
"import": {
"types": "./dist/types/src/transaction/http/*.d.ts",
@@ -211,6 +291,16 @@
"default": "./dist/cjs/src/transaction/fee-models/index.js"
}
},
+ "./transaction/fee-model/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/fee-models/*.d.ts",
+ "default": "./dist/esm/src/transaction/fee-models/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/fee-models/*.d.ts",
+ "default": "./dist/cjs/src/transaction/fee-models/*.js"
+ }
+ },
"./transaction/fee-model/*": {
"import": {
"types": "./dist/types/src/transaction/fee-models/*.d.ts",
@@ -231,6 +321,16 @@
"default": "./dist/cjs/src/transaction/fee-models/index.js"
}
},
+ "./transaction/fee-models/*.ts": {
+ "import": {
+ "types": "./dist/types/src/transaction/fee-models/*.d.ts",
+ "default": "./dist/esm/src/transaction/fee-models/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/transaction/fee-models/*.d.ts",
+ "default": "./dist/cjs/src/transaction/fee-models/*.js"
+ }
+ },
"./transaction/fee-models/*": {
"import": {
"types": "./dist/types/src/transaction/fee-models/*.d.ts",
@@ -251,6 +351,16 @@
"default": "./dist/cjs/src/messages/index.js"
}
},
+ "./messages/*.ts": {
+ "import": {
+ "types": "./dist/types/src/messages/*.d.ts",
+ "default": "./dist/esm/src/messages/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/messages/*.d.ts",
+ "default": "./dist/cjs/src/messages/*.js"
+ }
+ },
"./messages/*": {
"import": {
"types": "./dist/types/src/messages/*.d.ts",
@@ -271,6 +381,16 @@
"default": "./dist/cjs/src/compat/index.js"
}
},
+ "./compat/*.ts": {
+ "import": {
+ "types": "./dist/types/src/compat/*.d.ts",
+ "default": "./dist/esm/src/compat/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/compat/*.d.ts",
+ "default": "./dist/cjs/src/compat/*.js"
+ }
+ },
"./compat/*": {
"import": {
"types": "./dist/types/src/compat/*.d.ts",
@@ -291,6 +411,16 @@
"default": "./dist/cjs/src/totp/index.js"
}
},
+ "./totp/*.ts": {
+ "import": {
+ "types": "./dist/types/src/totp/*.d.ts",
+ "default": "./dist/esm/src/totp/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/totp/*.d.ts",
+ "default": "./dist/cjs/src/totp/*.js"
+ }
+ },
"./totp/*": {
"import": {
"types": "./dist/types/src/totp/*.d.ts",
@@ -311,6 +441,16 @@
"default": "./dist/cjs/src/wallet/index.js"
}
},
+ "./wallet/*.ts": {
+ "import": {
+ "types": "./dist/types/src/wallet/*.d.ts",
+ "default": "./dist/esm/src/wallet/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/wallet/*.d.ts",
+ "default": "./dist/cjs/src/wallet/*.js"
+ }
+ },
"./wallet/*": {
"import": {
"types": "./dist/types/src/wallet/*.d.ts",
@@ -331,6 +471,16 @@
"default": "./dist/cjs/src/wallet/substrates/index.js"
}
},
+ "./wallet/substrates/*.ts": {
+ "import": {
+ "types": "./dist/types/src/wallet/substrates/*.d.ts",
+ "default": "./dist/esm/src/wallet/substrates/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/wallet/substrates/*.d.ts",
+ "default": "./dist/cjs/src/wallet/substrates/*.js"
+ }
+ },
"./wallet/substrates/*": {
"import": {
"types": "./dist/types/src/wallet/substrates/*.d.ts",
@@ -351,6 +501,16 @@
"default": "./dist/cjs/src/auth/index.js"
}
},
+ "./auth/*.ts": {
+ "import": {
+ "types": "./dist/types/src/auth/*.d.ts",
+ "default": "./dist/esm/src/auth/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/auth/*.d.ts",
+ "default": "./dist/cjs/src/auth/*.js"
+ }
+ },
"./auth/*": {
"import": {
"types": "./dist/types/src/auth/*.d.ts",
@@ -371,6 +531,16 @@
"default": "./dist/cjs/src/auth/certificates/index.js"
}
},
+ "./auth/certificate/*.ts": {
+ "import": {
+ "types": "./dist/types/src/auth/certificates/*.d.ts",
+ "default": "./dist/esm/src/auth/certificates/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/auth/certificates/*.d.ts",
+ "default": "./dist/cjs/src/auth/certificates/*.js"
+ }
+ },
"./auth/certificate/*": {
"import": {
"types": "./dist/types/src/auth/certificates/*.d.ts",
@@ -391,6 +561,16 @@
"default": "./dist/cjs/src/auth/certificates/index.js"
}
},
+ "./auth/certificates/*.ts": {
+ "import": {
+ "types": "./dist/types/src/auth/certificates/*.d.ts",
+ "default": "./dist/esm/src/auth/certificates/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/auth/certificates/*.d.ts",
+ "default": "./dist/cjs/src/auth/certificates/*.js"
+ }
+ },
"./auth/certificates/*": {
"import": {
"types": "./dist/types/src/auth/certificates/*.d.ts",
@@ -411,6 +591,16 @@
"default": "./dist/cjs/src/overlay-tools/index.js"
}
},
+ "./overlay-tools/*.ts": {
+ "import": {
+ "types": "./dist/types/src/overlay-tools/*.d.ts",
+ "default": "./dist/esm/src/overlay-tools/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/overlay-tools/*.d.ts",
+ "default": "./dist/cjs/src/overlay-tools/*.js"
+ }
+ },
"./overlay-tools/*": {
"import": {
"types": "./dist/types/src/overlay-tools/*.d.ts",
@@ -431,6 +621,16 @@
"default": "./dist/cjs/src/telemetry/index.js"
}
},
+ "./telemetry/*.ts": {
+ "import": {
+ "types": "./dist/types/src/telemetry/*.d.ts",
+ "default": "./dist/esm/src/telemetry/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/telemetry/*.d.ts",
+ "default": "./dist/cjs/src/telemetry/*.js"
+ }
+ },
"./telemetry/*": {
"import": {
"types": "./dist/types/src/telemetry/*.d.ts",
@@ -451,6 +651,16 @@
"default": "./dist/cjs/src/storage/index.js"
}
},
+ "./storage/*.ts": {
+ "import": {
+ "types": "./dist/types/src/storage/*.d.ts",
+ "default": "./dist/esm/src/storage/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/storage/*.d.ts",
+ "default": "./dist/cjs/src/storage/*.js"
+ }
+ },
"./storage/*": {
"import": {
"types": "./dist/types/src/storage/*.d.ts",
@@ -471,6 +681,16 @@
"default": "./dist/cjs/src/kvstore/index.js"
}
},
+ "./kvstore/*.ts": {
+ "import": {
+ "types": "./dist/types/src/kvstore/*.d.ts",
+ "default": "./dist/esm/src/kvstore/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/kvstore/*.d.ts",
+ "default": "./dist/cjs/src/kvstore/*.js"
+ }
+ },
"./kvstore/*": {
"import": {
"types": "./dist/types/src/kvstore/*.d.ts",
@@ -491,6 +711,16 @@
"default": "./dist/cjs/src/remittance/index.js"
}
},
+ "./remittance/*.ts": {
+ "import": {
+ "types": "./dist/types/src/remittance/*.d.ts",
+ "default": "./dist/esm/src/remittance/*.js"
+ },
+ "require": {
+ "types": "./dist/cjs/src/remittance/*.d.ts",
+ "default": "./dist/cjs/src/remittance/*.js"
+ }
+ },
"./remittance/*": {
"import": {
"types": "./dist/types/src/remittance/*.d.ts",
@@ -547,20 +777,20 @@
"homepage": "https://github.com/bsv-blockchain/ts-stack/tree/main/packages/sdk#readme",
"devDependencies": {
"@jest/globals": "^30.4.1",
- "@rspack/cli": "^2.1.5",
- "@rspack/core": "^2.1.5",
+ "@rspack/cli": "^2.1.7",
+ "@rspack/core": "^2.1.7",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
"jest-environment-jsdom": "^30.4.1",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts-loader": "^9.6.2",
"ts2md": "^0.2.8",
"tsconfig-to-dual-package": "^1.2.0",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"typesVersions": {
"*": {
diff --git a/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts b/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts
index 475f6e803..f7f57f960 100644
--- a/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts
+++ b/packages/sdk/src/transaction/fee-models/__tests/SatoshisPerKilobyte.test.ts
@@ -83,22 +83,15 @@ describe('SatoshisPerKilobyte', () => {
// computeFee – happy path
// -------------------------------------------------------------------------
describe('computeFee', () => {
- it('returns 0 for empty transaction with value 0', async () => {
- const model = new SatoshisPerKilobyte(0)
+ it.each([
+ { rate: 0, expected: 0, scenario: 'zero rate' },
+ { rate: 1, expected: 1, scenario: 'fractional fee rounded up' },
+ { rate: 1000, expected: 10, scenario: 'one satoshi per byte' }
+ ])('computes the empty-transaction fee for $scenario', async ({ rate, expected }) => {
+ const model = new SatoshisPerKilobyte(rate)
const tx = makeTx([], [])
- // size = 4 (version) + 1 (input count varint) + 1 (output count varint) + 4 (locktime) = 10
- // fee = ceil(10/1000 * 0) = 0
- const fee = await model.computeFee(tx)
- expect(fee).toBe(0)
- })
-
- it('computes correct fee for an empty transaction (no inputs, no outputs)', async () => {
- const model = new SatoshisPerKilobyte(1000) // 1 sat/byte
- const tx = makeTx([], [])
- // size = 4 + 1 + 1 + 4 = 10 bytes
- // fee = ceil(10/1000 * 1000) = ceil(10) = 10
- const fee = await model.computeFee(tx)
- expect(fee).toBe(10)
+ // Empty size = 4-byte version + two 1-byte counts + 4-byte lock time.
+ expect(await model.computeFee(tx)).toBe(expected)
})
it('computes fee for one input with an unlocking script', async () => {
@@ -140,15 +133,6 @@ describe('SatoshisPerKilobyte', () => {
expect(fee).toBe(Math.ceil((192 / 1000) * 1000))
})
- it('uses Math.ceil to round up fractional fees', async () => {
- // Choose a value where the result is not a whole satoshi
- const model = new SatoshisPerKilobyte(1) // very small rate
- const tx = makeTx([], [])
- // size = 10 bytes → fee = ceil(10/1000 * 1) = ceil(0.01) = 1
- const fee = await model.computeFee(tx)
- expect(fee).toBe(1)
- })
-
it('fee scales proportionally with sat/kb rate', async () => {
const tx = makeTx([], [])
const fee100 = await new SatoshisPerKilobyte(100).computeFee(tx)
diff --git a/packages/verifast/package.json b/packages/verifast/package.json
index 6f061e6c8..0da070feb 100644
--- a/packages/verifast/package.json
+++ b/packages/verifast/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/verifast",
- "version": "0.3.3",
+ "version": "0.3.4",
"sideEffects": false,
"publishConfig": {
"access": "public"
@@ -86,20 +86,20 @@
"devDependencies": {
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
- "@rspack/cli": "^2.1.5",
- "@rspack/core": "^2.1.5",
+ "@rspack/cli": "^2.1.7",
+ "@rspack/core": "^2.1.7",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"puppeteer-core": "^25.4.0",
"ts-jest": "^29.4.12",
"ts-loader": "^9.6.2",
"tsx": "^4.23.1",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
- "vite": "^8.1.5",
- "oxlint": "^1.75.0"
+ "vite": "^8.1.5"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.8"
diff --git a/packages/wallet/btms-permission-module/package.json b/packages/wallet/btms-permission-module/package.json
index ce5bf287e..0fcb15a46 100644
--- a/packages/wallet/btms-permission-module/package.json
+++ b/packages/wallet/btms-permission-module/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/btms-permission-module",
- "version": "1.1.2",
+ "version": "1.1.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -59,13 +59,13 @@
"@bsv/wallet-toolbox-client": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"repository": {
diff --git a/packages/wallet/btms/package.json b/packages/wallet/btms/package.json
index 0d1b07e9b..dd48404ea 100644
--- a/packages/wallet/btms/package.json
+++ b/packages/wallet/btms/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/btms",
- "version": "1.1.3",
+ "version": "1.1.4",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -62,15 +62,15 @@
"@bsv/sdk": "workspace:^",
"@jest/globals": "^30.4.1",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"ts-jest": "^29.4.12",
"ts2md": "^0.2.8",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.6"
diff --git a/packages/wallet/ts-wallet-relay/package.json b/packages/wallet/ts-wallet-relay/package.json
index b3f59d8a9..576a6d5a7 100644
--- a/packages/wallet/ts-wallet-relay/package.json
+++ b/packages/wallet/ts-wallet-relay/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/wallet-relay",
- "version": "0.3.2",
+ "version": "0.3.3",
"sideEffects": false,
"engines": {
"node": ">=22"
@@ -103,22 +103,22 @@
"@testing-library/jest-dom": "^7.0.0",
"@testing-library/react": "^16.3.2",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.2.17",
"@types/ws": "^8.18.1",
+ "@typescript/native": "npm:typescript@7.0.2",
+ "esbuild": "^0.28.1",
"express": "^5.2.1",
"fast-check": "^4.9.0",
"jest": "^30.4.2",
"jest-environment-jsdom": "^30.4.1",
+ "oxlint": "^1.76.0",
"qrcode": "^1.5.4",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"ts-jest": "^29.4.12",
- "esbuild": "^0.28.1",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
"@types/express": "^5.0.6",
diff --git a/packages/wallet/wallet-toolbox-examples/package.json b/packages/wallet/wallet-toolbox-examples/package.json
index 15676fc8a..64dbbfa7a 100644
--- a/packages/wallet/wallet-toolbox-examples/package.json
+++ b/packages/wallet/wallet-toolbox-examples/package.json
@@ -36,21 +36,21 @@
"devDependencies": {
"@types/fs-extra": "^11.0.4",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@types/node-fetch": "^2.6.13",
+ "@typescript/native": "npm:typescript@7.0.2",
"chalk": "^5.6.2",
"dotenv": "^17.4.2",
"fake-indexeddb": "^6.2.5",
"fs-extra": "^11.4.0",
"jest": "^30.4.2",
"jest-diff": "^30.4.1",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"prettier": "^3.9.6",
"sqlite3": "^6.0.1",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"ts2md": "^0.2.8",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2"
},
"dependencies": {
diff --git a/packages/wallet/wallet-toolbox/client/package.json b/packages/wallet/wallet-toolbox/client/package.json
index 21e2e215a..4ad1af44c 100644
--- a/packages/wallet/wallet-toolbox/client/package.json
+++ b/packages/wallet/wallet-toolbox/client/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/wallet-toolbox-client",
- "version": "2.4.18",
+ "version": "2.4.19",
"type": "module",
"sideEffects": false,
"engines": {
@@ -78,12 +78,12 @@
},
"devDependencies": {
"@bsv/sdk": "workspace:^",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"@vitest/coverage-v8": "4.1.10",
- "@types/node": "^26.1.1",
"esbuild": "0.28.1",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
"vite": "8.1.5",
"vitest": "^4.1.10"
diff --git a/packages/wallet/wallet-toolbox/mobile/package.json b/packages/wallet/wallet-toolbox/mobile/package.json
index 04f1b1a99..ebe50033b 100644
--- a/packages/wallet/wallet-toolbox/mobile/package.json
+++ b/packages/wallet/wallet-toolbox/mobile/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/wallet-toolbox-mobile",
- "version": "2.4.18",
+ "version": "2.4.19",
"type": "module",
"sideEffects": false,
"engines": {
@@ -81,14 +81,14 @@
"@babel/core": "7.29.7",
"@bsv/sdk": "workspace:^",
"@react-native/babel-preset": "0.86.2",
+ "@types/node": "^26.1.2",
+ "@typescript/native": "npm:typescript@7.0.2",
"@vitest/coverage-v8": "4.1.10",
- "@types/node": "^26.1.1",
"hermes-compiler": "260318099.0.1",
"metro": "0.87.0",
"metro-config": "0.87.0",
- "oxlint": "^1.75.0",
+ "oxlint": "^1.76.0",
"tsdown": "0.22.14",
- "@typescript/native": "npm:typescript@7.0.2",
"typescript": "npm:@typescript/typescript6@6.0.2",
"vitest": "^4.1.10"
}
diff --git a/packages/wallet/wallet-toolbox/package.json b/packages/wallet/wallet-toolbox/package.json
index e0dcc9308..fe5134867 100644
--- a/packages/wallet/wallet-toolbox/package.json
+++ b/packages/wallet/wallet-toolbox/package.json
@@ -1,6 +1,6 @@
{
"name": "@bsv/wallet-toolbox",
- "version": "2.4.18",
+ "version": "2.4.19",
"sideEffects": false,
"type": "commonjs",
"engines": {
@@ -77,7 +77,7 @@
"@bsv/auth-express-middleware": "workspace:^",
"@bsv/payment-express-middleware": "workspace:^",
"@types/express": "^5.0.6",
- "better-sqlite3": "^13.0.1",
+ "better-sqlite3": "^13.0.2",
"body-parser": "^2.3.0",
"dotenv": "^17.4.2",
"express": "^5.2.1",
@@ -95,20 +95,20 @@
"@types/cors": "^2.8.19",
"@types/fs-extra": "^11.0.4",
"@types/jest": "^30.0.0",
- "@types/node": "^26.1.1",
+ "@types/node": "^26.1.2",
"@types/ws": "^8.18.1",
+ "@typescript/native": "npm:typescript@7.0.2",
"cors": "^2.8.6",
"fake-indexeddb": "^6.2.5",
"fast-check": "^4.9.0",
"fs-extra": "^11.4.0",
"jest": "^30.4.2",
+ "oxlint": "^1.76.0",
"picocolors": "^1.1.1",
"ts-jest": "^29.4.12",
"ts-node": "^10.9.2",
"ts2md": "^0.2.8",
- "@typescript/native": "npm:typescript@7.0.2",
- "typescript": "npm:@typescript/typescript6@6.0.2",
- "oxlint": "^1.75.0"
+ "typescript": "npm:@typescript/typescript6@6.0.2"
},
"peerDependencies": {
"@bsv/sdk": "^2.1.8"
diff --git a/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts b/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts
index 34926a9bf..14166968f 100644
--- a/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts
+++ b/packages/wallet/wallet-toolbox/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts
@@ -15,13 +15,20 @@ import {
describe('generateChange tests', () => {
jest.setTimeout(99999999)
- test('logs only a redacted parameter summary when diagnostics are enabled', async () => {
+ test.each([
+ { randomVals: [...randomValsUsed1], randomValsCount: randomValsUsed1.length },
+ { randomVals: undefined, randomValsCount: 0 }
+ ])('logs only a redacted parameter summary when diagnostics are enabled', async ({
+ randomVals,
+ randomValsCount
+ }) => {
const params: GenerateChangeSdkParams = {
...defParams,
fixedOutputs: [
{ satoshis: 1234, lockingScriptLength: 1739091 },
{ satoshis: 2, lockingScriptLength: 25 }
],
+ randomVals,
noLogging: false
}
const { allocateChangeInput, releaseChangeInput } = generateChangeSdkMakeStorage([...defAvailableChange()])
@@ -36,10 +43,11 @@ describe('generateChange tests', () => {
targetNetCount: undefined,
changeInitialSatoshis: 1000,
changeFirstSatoshis: 285,
- randomValsCount: params.randomVals?.length
+ randomValsCount
})
expect(JSON.stringify(log.mock.calls)).not.toContain('lockingScriptLength')
- expect(JSON.stringify(log.mock.calls)).not.toContain(JSON.stringify(params.randomVals))
+ expect(JSON.stringify(log.mock.calls))
+ .not.toContain(JSON.stringify(params.randomVals) ?? 'undefined')
} finally {
log.mockRestore()
}
diff --git a/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts b/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts
index 09df066cf..1e169aee3 100644
--- a/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts
+++ b/packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts
@@ -369,6 +369,33 @@ describe('shared service edge policy', () => {
}
})
+ it('keeps CORS accessibility independent from CSP configuration', async () => {
+ process.env.TEST_CONTENT_SECURITY_POLICY = "default-src 'self'; connect-src https:"
+ delete process.env.TEST_CORS_MODE
+ delete process.env.TEST_CORS_ALLOWED_ORIGINS
+ const app = express()
+ app.use(securityHeaders({ environmentPrefix: 'TEST' }))
+ app.use(corsPolicy({
+ environmentPrefix: 'TEST',
+ methods: ['GET']
+ }))
+ app.get('/', (_req, res) => res.json({ ok: true }))
+ const { server, origin } = await listen(app)
+
+ try {
+ const response = await fetch(origin, {
+ headers: { Origin: 'https://unknown-deployed-app.example' }
+ })
+ expect(response.status).toBe(200)
+ expect(response.headers.get('access-control-allow-origin')).toBe('*')
+ expect(response.headers.get('access-control-allow-credentials')).toBeNull()
+ expect(response.headers.get('content-security-policy'))
+ .toBe("default-src 'self'; connect-src https:")
+ } finally {
+ await close(server)
+ }
+ })
+
it('does not trust a raw forwarded-proto header for HSTS', async () => {
const app = express()
app.use(securityHeaders())
diff --git a/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts b/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts
index a70a23a63..a3b4aeafb 100644
--- a/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts
+++ b/packages/wallet/wallet-toolbox/test/utils/localWalletMethods.ts
@@ -145,7 +145,7 @@ export async function createOneSatTestOutput(
let noSendChange: OutpointString[] | undefined = undefined
let txids: string[] = []
- let vargs: Validation.ValidCreateActionArgs
+ let isNoSend = false
for (let i = 0; i < howMany; i++) {
const args: CreateActionArgs = {
@@ -167,7 +167,8 @@ export async function createOneSatTestOutput(
noSendChange
}
}
- Validation.validateCreateActionArgs(args)
+ const validatedArgs = Validation.validateCreateActionArgs(args)
+ isNoSend = validatedArgs.isNoSend
car = await setup.wallet.createAction(args)
expect(car.txid).toMatch(/^[0-9a-f]{64}$/)
txids.push(car.txid!)
@@ -176,7 +177,7 @@ export async function createOneSatTestOutput(
const req = await EntityProvenTxReq.fromStorageTxid(setup.activeStorage, car.txid!)
expect(req?.history.notes).toBeDefined()
if (req?.history.notes) {
- if (vargs.isNoSend) {
+ if (isNoSend) {
expect(req.status === 'nosend').toBe(true)
expect(req.history.notes.length).toBe(1)
const n = req.history.notes[0]
@@ -190,7 +191,7 @@ export async function createOneSatTestOutput(
}
}
- if (vargs!.isNoSend) {
+ if (isNoSend) {
// Create final sending transaction
const args: CreateActionArgs = {
description: 'send batch',
@@ -199,7 +200,7 @@ export async function createOneSatTestOutput(
sendWith: txids
}
}
- vargs = Validation.validateCreateActionArgs(args)
+ Validation.validateCreateActionArgs(args)
car = await setup.wallet.createAction(args)
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8f25fe4e2..610b5a6a8 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -17,13 +17,13 @@ importers:
version: 0.18.5
'@stryker-mutator/core':
specifier: 9.6.1
- version: 9.6.1(@types/node@26.1.1)
+ version: 9.6.1(@types/node@26.1.2)
'@stryker-mutator/jest-runner':
specifier: 9.6.1
- version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))
+ version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))
'@stryker-mutator/vitest-runner':
specifier: 9.6.1
- version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))(vitest@4.1.10)
+ version: 9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))(vitest@4.1.10)
esbuild:
specifier: 0.28.1
version: 0.28.1
@@ -41,7 +41,7 @@ importers:
version: 0.3.22
vite:
specifier: 8.1.5
- version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
yaml:
specifier: ^2.9.0
version: 2.9.0
@@ -56,8 +56,8 @@ importers:
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
prettier:
specifier: ^3.9.6
version: 3.9.6
@@ -74,23 +74,23 @@ importers:
specifier: ^30.4.1
version: 30.4.1
'@types/node':
- specifier: ^24.13.3
- version: 24.13.3
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@24.13.3)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
prettier:
specifier: ^3.9.6
version: 3.9.6
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@24.13.3))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -127,7 +127,7 @@ importers:
version: typescript@7.0.2
'@vitejs/plugin-react':
specifier: ^6.0.4
- version: 6.0.4(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))
+ version: 6.0.4(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))
ajv:
specifier: ^8.20.0
version: 8.20.0
@@ -141,8 +141,8 @@ importers:
specifier: ^11.16.0
version: 11.16.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
pagefind:
specifier: ^1.5.2
version: 1.5.2
@@ -172,7 +172,7 @@ importers:
version: '@typescript/typescript6@6.0.2'
vite:
specifier: ^8.1.5
- version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages/helpers/amountinator:
dependencies:
@@ -187,8 +187,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -197,16 +197,16 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
+ version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -230,8 +230,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -240,13 +240,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -270,8 +270,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -280,13 +280,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -304,8 +304,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@types/qrcode':
specifier: ^1.5.6
version: 1.5.6
@@ -317,13 +317,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -347,23 +347,23 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-environment-jsdom:
specifier: ^30.4.1
version: 30.4.1
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -374,11 +374,11 @@ importers:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
webpack:
- specifier: ^5.109.0
- version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1)
+ specifier: ^5.109.2
+ version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2)
webpack-cli:
- specifier: ^7.2.1
- version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0)
+ specifier: ^7.2.2
+ version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2)
packages/helpers/fund-wallet:
dependencies:
@@ -393,8 +393,8 @@ importers:
specifier: workspace:^
version: link:../../sdk
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -405,8 +405,8 @@ importers:
specifier: ^4.9.0
version: 4.9.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -415,7 +415,7 @@ importers:
version: '@typescript/typescript6@6.0.2'
vitest:
specifier: ^4.1.10
- version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages/helpers/simple:
dependencies:
@@ -436,8 +436,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -446,13 +446,13 @@ importers:
version: 17.4.2
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -472,8 +472,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -482,13 +482,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -509,20 +509,20 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -546,20 +546,20 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -570,11 +570,11 @@ importers:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
webpack:
- specifier: ^5.109.0
- version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1)
+ specifier: ^5.109.2
+ version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2)
webpack-cli:
- specifier: ^7.2.1
- version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0)
+ specifier: ^7.2.2
+ version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2)
packages/messaging/message-box-client:
dependencies:
@@ -589,8 +589,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -599,16 +599,16 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
rimraf:
specifier: ^6.1.3
version: 6.1.3
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -616,11 +616,11 @@ importers:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
webpack:
- specifier: ^5.109.0
- version: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1)
+ specifier: ^5.109.2
+ version: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2)
webpack-cli:
- specifier: ^7.2.1
- version: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0)
+ specifier: ^7.2.2
+ version: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2)
packages/messaging/ts-paymail:
dependencies:
@@ -647,8 +647,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@types/supertest':
specifier: ^7.2.1
version: 7.2.1
@@ -660,16 +660,16 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
supertest:
specifier: ^7.2.2
version: 7.2.2
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -696,14 +696,14 @@ importers:
version: 0.5.6
devDependencies:
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -714,8 +714,8 @@ importers:
specifier: workspace:^
version: link:../../sdk
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -726,8 +726,8 @@ importers:
specifier: ^4.9.0
version: 4.9.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -736,7 +736,7 @@ importers:
version: '@typescript/typescript6@6.0.2'
vitest:
specifier: ^4.1.10
- version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages/middleware/auth:
devDependencies:
@@ -750,8 +750,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -760,13 +760,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -802,8 +802,8 @@ importers:
specifier: ^3.0.1
version: 3.0.1
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -812,13 +812,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -851,8 +851,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -861,13 +861,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -936,8 +936,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -946,13 +946,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsx:
specifier: ^4.23.1
version: 4.23.1
@@ -979,8 +979,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -989,19 +989,19 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
mongodb-memory-server:
specifier: ^11.2.0
version: 11.2.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
+ version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1028,13 +1028,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1052,7 +1052,7 @@ importers:
version: link:../gasp-core
knex:
specifier: ^3.3.0
- version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1))
+ version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2))
devDependencies:
'@bsv/sdk':
specifier: workspace:^
@@ -1061,8 +1061,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1071,13 +1071,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1110,8 +1110,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1120,16 +1120,16 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
mongodb-memory-server:
specifier: ^11.2.0
version: 11.2.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1168,7 +1168,7 @@ importers:
version: 5.2.1
knex:
specifier: ^3.3.0
- version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1))
+ version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2))
mongodb:
specifier: ^7.5.0
version: 7.5.0
@@ -1189,8 +1189,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1199,13 +1199,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1238,8 +1238,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1248,16 +1248,16 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
mongodb-memory-server:
specifier: ^11.2.0
version: 11.2.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -1268,17 +1268,17 @@ importers:
specifier: ^30.4.1
version: 30.4.1
'@rspack/cli':
- specifier: ^2.1.5
- version: 2.1.5(@rspack/core@2.1.5)
+ specifier: ^2.1.7
+ version: 2.1.7(@rspack/core@2.1.7)
'@rspack/core':
- specifier: ^2.1.5
- version: 2.1.5
+ specifier: ^2.1.7
+ version: 2.1.7
'@types/jest':
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1287,19 +1287,19 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-environment-jsdom:
specifier: ^30.4.1
version: 30.4.1
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-loader:
specifier: ^9.6.2
- version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1))
+ version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1319,17 +1319,17 @@ importers:
specifier: ^30.4.1
version: 30.4.1
'@rspack/cli':
- specifier: ^2.1.5
- version: 2.1.5(@rspack/core@2.1.5)
+ specifier: ^2.1.7
+ version: 2.1.7(@rspack/core@2.1.7)
'@rspack/core':
- specifier: ^2.1.5
- version: 2.1.5
+ specifier: ^2.1.7
+ version: 2.1.7
'@types/jest':
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1338,19 +1338,19 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
puppeteer-core:
specifier: ^25.4.0
version: 25.4.0(yauzl@3.4.0)
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-loader:
specifier: ^9.6.2
- version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1))
+ version: 9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1))
tsx:
specifier: ^4.23.1
version: 4.23.1
@@ -1359,7 +1359,7 @@ importers:
version: '@typescript/typescript6@6.0.2'
vite:
specifier: ^8.1.5
- version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages/wallet/btms:
devDependencies:
@@ -1373,8 +1373,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1383,13 +1383,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1418,8 +1418,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1428,13 +1428,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -1467,8 +1467,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@types/qrcode':
specifier: ^1.5.6
version: 1.5.6
@@ -1492,13 +1492,13 @@ importers:
version: 4.9.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-environment-jsdom:
specifier: ^30.4.1
version: 30.4.1
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
qrcode:
specifier: ^1.5.4
version: 1.5.4
@@ -1510,7 +1510,7 @@ importers:
version: 19.2.8(react@19.2.8)
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
typescript:
specifier: npm:@typescript/typescript6@6.0.2
version: '@typescript/typescript6@6.0.2'
@@ -1527,8 +1527,8 @@ importers:
specifier: ^5.0.6
version: 5.0.6
better-sqlite3:
- specifier: ^13.0.1
- version: 13.0.1
+ specifier: ^13.0.2
+ version: 13.0.2
body-parser:
specifier: ^2.3.0
version: 2.3.0
@@ -1549,10 +1549,10 @@ importers:
version: 8.0.3
knex:
specifier: ^3.3.0
- version: 3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1))
+ version: 3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2))
mysql2:
specifier: ^3.23.2
- version: 3.23.2(@types/node@26.1.1)
+ version: 3.23.2(@types/node@26.1.2)
ws:
specifier: ^8.21.1
version: 8.21.1
@@ -1576,8 +1576,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@types/ws':
specifier: ^8.18.1
version: 8.18.1
@@ -1598,19 +1598,19 @@ importers:
version: 11.4.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
picocolors:
specifier: ^1.1.1
version: 1.1.1
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
+ version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1634,8 +1634,8 @@ importers:
specifier: ^30.0.0
version: 30.0.0
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@types/node-fetch':
specifier: ^2.6.13
version: 2.6.13
@@ -1656,13 +1656,13 @@ importers:
version: 11.4.0
jest:
specifier: ^30.4.2
- version: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ version: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-diff:
specifier: ^30.4.1
version: 30.4.1
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
prettier:
specifier: ^3.9.6
version: 3.9.6
@@ -1671,10 +1671,10 @@ importers:
version: 6.0.1
ts-jest:
specifier: ^29.4.12
- version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)))
+ version: 29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)))
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
+ version: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)
ts2md:
specifier: ^0.2.8
version: 0.2.8
@@ -1695,8 +1695,8 @@ importers:
specifier: workspace:^
version: link:../../../sdk
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1707,8 +1707,8 @@ importers:
specifier: 0.28.1
version: 0.28.1
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -1717,10 +1717,10 @@ importers:
version: '@typescript/typescript6@6.0.2'
vite:
specifier: 8.1.5
- version: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
vitest:
specifier: ^4.1.10
- version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages/wallet/wallet-toolbox/mobile:
dependencies:
@@ -1744,8 +1744,8 @@ importers:
specifier: 0.86.2
version: 0.86.2(@babel/core@7.29.7)
'@types/node':
- specifier: ^26.1.1
- version: 26.1.1
+ specifier: ^26.1.2
+ version: 26.1.2
'@typescript/native':
specifier: npm:typescript@7.0.2
version: typescript@7.0.2
@@ -1762,8 +1762,8 @@ importers:
specifier: 0.87.0
version: 0.87.0
oxlint:
- specifier: ^1.75.0
- version: 1.75.0
+ specifier: ^1.76.0
+ version: 1.76.0
tsdown:
specifier: 0.22.14
version: 0.22.14(@arethetypeswrong/core@0.18.5)(@typescript/typescript6@6.0.2)(publint@0.3.22)(tsx@4.23.1)
@@ -1772,7 +1772,7 @@ importers:
version: '@typescript/typescript6@6.0.2'
vitest:
specifier: ^4.1.10
- version: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ version: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
packages:
@@ -2909,97 +2909,48 @@ packages:
'@oxc-project/types@0.140.0':
resolution: {integrity: sha512-h5LUOzGArYemnW1NMz/DuuQhBi96J6JL2Bk8zE4kvqxB5Sg3jxmCiH4uyOWHDkiKSt5vWlG4FIwCR/DbstcNRQ==}
- '@oxlint/binding-android-arm-eabi@1.75.0':
- resolution: {integrity: sha512-lutovtFzJqlRaqpZrCqSSGaHZzl9nIxxpjLzhSRLunN6dCLylj0uzlCyQGaQDIys7rrv8kVXiFO+R4Zpn0bX7g==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [android]
-
'@oxlint/binding-android-arm-eabi@1.76.0':
resolution: {integrity: sha512-ZHIE5Zt9AsPDcY4nOlofXt0YfneEeo+QrKMPcPzLf2Z6Q8VtV2W73d7SFJ920WUwyik783u/doKCs3KXdwG+7w==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [android]
- '@oxlint/binding-android-arm64@1.75.0':
- resolution: {integrity: sha512-hXI0hDgHkw4w5nfru72aG7y+2iQJmC4waH/KV6H/hbgA6yAP5jYNx0P9yug15Hs0tWl/+mda3Jjn/2gmDT48tw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [android]
-
'@oxlint/binding-android-arm64@1.76.0':
resolution: {integrity: sha512-shm/ngQilHK6bs+ElJWa4oHfNj5vL1Gl/iVEJldTQjpr0/67oSgr0KUpbmcnLig5Fo0v/l6j2567A7TOL89ONA==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
- '@oxlint/binding-darwin-arm64@1.75.0':
- resolution: {integrity: sha512-D91BWbK/dMYfCcrghspPIuKs2D9LF4Z/OabVSQjw1AO6PWxArD7teDA48bm0ySFqWDaPVqmQRl5GMWNglTXyrQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [darwin]
-
'@oxlint/binding-darwin-arm64@1.76.0':
resolution: {integrity: sha512-rvJmrAPKSQ9aWJ6wIS6CK2tJjwzfW0ApQH9qokq6sfDvmHwoyIHxHFMq7z7i7GiV6fdE6s8qvBqWKPTu8RmT6Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
- '@oxlint/binding-darwin-x64@1.75.0':
- resolution: {integrity: sha512-02mpwzf12BonZ6PT0TuQoomvEh2kVl2WGBIKWezCyToIS+rYkQZ6GXnARBAl9A4Ovm2V+Xe7M4KretyqmmcnJQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [darwin]
-
'@oxlint/binding-darwin-x64@1.76.0':
resolution: {integrity: sha512-U/zYdb7VYKGY6pA9Vd2rYl9O/HlCylcOlb5PGPvVLtg+oLGsk6H3XGKEMHKyqD3nmmtmlmwb/8SwU2vfSAtvMw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
- '@oxlint/binding-freebsd-x64@1.75.0':
- resolution: {integrity: sha512-qZJgLnDaBsiL5YESx2t/TZ8eXkL9fEkKoXEdzegROhlz9A0lgyGnZ0dAzJrh7LJAHQl2K9RdRueN2s/9N7+odg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [freebsd]
-
'@oxlint/binding-freebsd-x64@1.76.0':
resolution: {integrity: sha512-WvKG9CAriuo0XNiFzpXjDngUZcRGFNpaK2kLyMUsnJlShxkT96u+BpJQ3KqdQwGOrvI14L6V8bAwXwAYNNY6Jg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
- '@oxlint/binding-linux-arm-gnueabihf@1.75.0':
- resolution: {integrity: sha512-7XlaWA5BJD3XpCfrEqjEe6Zseeb14S7QGa304XfwKignRaKQ+eIj775BQ7nIslggWickl4IsPUFqJ+/gAyNHVg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
'@oxlint/binding-linux-arm-gnueabihf@1.76.0':
resolution: {integrity: sha512-qJ5+RH99TqFRq3UCDxkW0zJJu9c+OAHFY72vGlxZLEpuO+MpKo3POgqb8sYipL9KYm8XY6ofb0HsOuvY6hQNqQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm-musleabihf@1.75.0':
- resolution: {integrity: sha512-av6Tpv8yrcMMMOadOqENBhlsLRcGFXXwoQ0hzHhsmS9FJ4Wioy8we427GbcMe2XTxmL2e60T67H1Dyr3up+tAA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm]
- os: [linux]
-
'@oxlint/binding-linux-arm-musleabihf@1.76.0':
resolution: {integrity: sha512-PvPCVptkgVARsucgIqFQQcSmJ6xc6GtnVB5bRBekRahTc9eObMtjHfMjy5M+C2tHt5UCMttWM9RuSk/H9NqYeg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
- '@oxlint/binding-linux-arm64-gnu@1.75.0':
- resolution: {integrity: sha512-WcUhd8fHT5plrA14lANevl+hOl815mVI5t2hU21oFWrZKFXIVV/Sr4rWQV0NzSvzBupbMLNc5ErEA6Ehxh5jMg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [glibc]
-
'@oxlint/binding-linux-arm64-gnu@1.76.0':
resolution: {integrity: sha512-3KeFDx8Bu4HPAXbuHZOr/oHvN+QT+JQhMw/NYPz7Z071xLSsG27Jfh9PIQVEY7hk1I+jr43ExqRIeJ6VKk2yLw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3007,13 +2958,6 @@ packages:
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-arm64-musl@1.75.0':
- resolution: {integrity: sha512-UWzp5wRHFe/ESO3+eEaxXsTkYTGLYjnTsi/I5neEacXSItQ6WNleapfOAeA4x2b8nyhJ4uQxqvtv9pHv8kWJtQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [linux]
- libc: [musl]
-
'@oxlint/binding-linux-arm64-musl@1.76.0':
resolution: {integrity: sha512-oPFkkKTgl0K/EIg9fQ8oA3IGcI05/Mq1en04iFa41mmNPT+6KEiByVazTOZZJiHMBBrbsns1YJ2e1Scqwzesjw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3021,13 +2965,6 @@ packages:
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-ppc64-gnu@1.75.0':
- resolution: {integrity: sha512-XEVRwGMLKCUKrvhLAz4F6AIh8MJrQVdSZtAmPpRZt9tGPsUnamPOcl3dS/ZQzJnar/Ymgc//+xho0L60Emzuxg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ppc64]
- os: [linux]
- libc: [glibc]
-
'@oxlint/binding-linux-ppc64-gnu@1.76.0':
resolution: {integrity: sha512-gN7yZ0eqflA5Fhf1wvHxGUltIV3FsvmB1zhNMDEK9vSHhc7E6qg9CuPeBgPZab66Tjzq6w6kHAtNEvnTHf4cyw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3035,13 +2972,6 @@ packages:
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-gnu@1.75.0':
- resolution: {integrity: sha512-mAG4DUXqfLC8cTjMD2kt3jDmVzFREYtDyeLNdLdsCcBc4Zbl2EMuiFektGBilQwkNjYnMvCqJs55U+Hyb+b+jw==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [riscv64]
- os: [linux]
- libc: [glibc]
-
'@oxlint/binding-linux-riscv64-gnu@1.76.0':
resolution: {integrity: sha512-S/HqMbn22mQrjtErUxEoS/a55u8kIeXvreIxiJu5G7Le3UecEd6SQZxrDIpuhtgaFnsY/nVra3ytP+pRljDilA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3049,13 +2979,6 @@ packages:
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-riscv64-musl@1.75.0':
- resolution: {integrity: sha512-95hrAvriAlI+pekSomTFIn0+bawMDlDwTNVmdjsFusTHyL2JWh7TWvRNG/Lkim72uN8OiCcO9wcaC6omLP5E3w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [riscv64]
- os: [linux]
- libc: [musl]
-
'@oxlint/binding-linux-riscv64-musl@1.76.0':
resolution: {integrity: sha512-ZIga3097VJZolGZk6SrIAUokIGfRkxRlhiHDUznZptGBfwrhD7pNfD1rzEzsCwvk/1DX0A1bLz+liuNh5QKIVQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3063,13 +2986,6 @@ packages:
os: [linux]
libc: [musl]
- '@oxlint/binding-linux-s390x-gnu@1.75.0':
- resolution: {integrity: sha512-4b6f2+FrtruAESrCqIKcrarzfrSx+wk2QNcp+RT91/Prc+pMQMAfyZ1rG1c3tFQNl8Bc616tx40uNXyxNBRPbQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [s390x]
- os: [linux]
- libc: [glibc]
-
'@oxlint/binding-linux-s390x-gnu@1.76.0':
resolution: {integrity: sha512-ZGiiA7pFzMJSyMWYZTVlPgbTsx+Vl8ihLGMIujPwaslUF7kIPPWAbVmAlTc+9lWDV+DCiB8Ikixu+lSHeOIIWQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3077,13 +2993,6 @@ packages:
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-gnu@1.75.0':
- resolution: {integrity: sha512-nshAhrUvXFUWOvqQ2soIw7HFNWvpvEV4o0cYSqPtzLiPF5gKyYTDOOTJ6Rn8g8K/iGvPIrbDA4v8+5MvnjJrrg==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [glibc]
-
'@oxlint/binding-linux-x64-gnu@1.76.0':
resolution: {integrity: sha512-JLiy5WuvEBFTT6ErIFV35SLzi0R7Iri6MKU6dZbTxfIx8pndbbPs3Mj780nMipBFcPkti+okAPOJ9POKkHFEgg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3091,13 +3000,6 @@ packages:
os: [linux]
libc: [glibc]
- '@oxlint/binding-linux-x64-musl@1.75.0':
- resolution: {integrity: sha512-e4jNxLKnxLC6sYBQRxrI2pgIIxnmMtF8U/VwNYcjTT/CLS+spH624cYVnj07bTKwaEWT37/e025isOs6j/0xqA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [linux]
- libc: [musl]
-
'@oxlint/binding-linux-x64-musl@1.76.0':
resolution: {integrity: sha512-z7lgKQtbo/I1NIe8G5NHLesxJDv0tRSUWTpXKb9Pm3E9nKFKfO4IOSDtFroKgXtOYb0jQbcdH+0wzTyMXVes+A==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3105,48 +3007,24 @@ packages:
os: [linux]
libc: [musl]
- '@oxlint/binding-openharmony-arm64@1.75.0':
- resolution: {integrity: sha512-hZ2lH+1qLf/DiEP9UWuQTK2JWj/BgvMB4jhIV4SmNU1wfEiYYX4TynQyAZXx0j9X4qRYizAL042SKaV+8ynh4w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [openharmony]
-
'@oxlint/binding-openharmony-arm64@1.76.0':
resolution: {integrity: sha512-JOjKymIpb9QcYfEhZsN6h4V9Ivd474W38cNIBRv6bg2TbIvogbMTH0Mg6YWW9TiRDqfcX+/Hyfsbo5vcSE5guQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
- '@oxlint/binding-win32-arm64-msvc@1.75.0':
- resolution: {integrity: sha512-Ilj6PNzGDS3bCU0MSJH7Msh0NhH+T/mRp2shwg+q+GHeVlPwP5LEboW96aW+3kVKFk6zYZy1Xi5pZkqZh6X8KQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [arm64]
- os: [win32]
-
'@oxlint/binding-win32-arm64-msvc@1.76.0':
resolution: {integrity: sha512-pqDWZiwcmByWUEm1NFUBNiT6aentCcaoMWJv0HbXEmuYermJ4sg8ppVrshubYP2MZ6SHccJJcpr6x469PuDFIw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
- '@oxlint/binding-win32-ia32-msvc@1.75.0':
- resolution: {integrity: sha512-QVit2nOEOiPhkmsrksPSkoGCdnZRNkspt8fwoYyP09te1VEbnSj4LAxua4rc8FKTmWkySVe05j8iz9GXYfF1AQ==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [ia32]
- os: [win32]
-
'@oxlint/binding-win32-ia32-msvc@1.76.0':
resolution: {integrity: sha512-Ba0O659kgMv6pwO3z9PdO+K3aMxQRaw9HnG+e6AtOfgwcKFvYilciQYBoUBmxfQvOCKZe1SwjMkuB542NkuDMQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [ia32]
os: [win32]
- '@oxlint/binding-win32-x64-msvc@1.75.0':
- resolution: {integrity: sha512-DSxnNkBUAYARPwJtR12Ig3deWr8w0H997xP6jy33i+e0SyYJw8FKuz4+cZtpmPEhQmvlPJE3X/2vNxDmLkd/rA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- cpu: [x64]
- os: [win32]
-
'@oxlint/binding-win32-x64-msvc@1.76.0':
resolution: {integrity: sha512-5qcirPHO8nKfkoowEVWtpAoVTcYDy6g0UT0NGic450Qv8J2NrOqg4uQ8QppRP4MDTC7Xx47lbZnmadTH03CGGA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -3575,76 +3453,76 @@ packages:
cpu: [x64]
os: [win32]
- '@rspack/binding-darwin-arm64@2.1.5':
- resolution: {integrity: sha512-XLAN6YSU36qkciJtV9DY9z57pdHOjKy/f1HyoqpZenRg8p46jnXPziV45lfrTZpG+FF6g/jtTUc4dKbeyoWqPw==}
+ '@rspack/binding-darwin-arm64@2.1.7':
+ resolution: {integrity: sha512-DwxzrXRctueP/3Pyom9JHcIsRShuEAlHb+mrE5OPT+4cdHI1UnJpbzEvEDLTo4IKJhDb3vjXdHLtjqtL0SYbeA==}
cpu: [arm64]
os: [darwin]
- '@rspack/binding-darwin-x64@2.1.5':
- resolution: {integrity: sha512-KLW7PV86jyCOyqJSqrkZdvYUWYCFX/Q4LsGmVc8tyDA8jBYLMHJDewC/lNf9ot3rU2SoLDZKhDUh7q7dX0FRmg==}
+ '@rspack/binding-darwin-x64@2.1.7':
+ resolution: {integrity: sha512-kPbrYvR/XUHfAMgRVq3QnC71DW/qjwsPj+3hEUuEnRmlploPNy9u8Szf1IHKSVUSrVZBTgDyMoZQdxYLfhResw==}
cpu: [x64]
os: [darwin]
- '@rspack/binding-linux-arm64-gnu@2.1.5':
- resolution: {integrity: sha512-KOooAC8L+Ljx5sY7ZuMeaXCQ310FNWaPWXcYQJpFPApF3qyLeSfuOftUGwxcxeo5U0mS5OY3zxp7/5CaHWKYjg==}
+ '@rspack/binding-linux-arm64-gnu@2.1.7':
+ resolution: {integrity: sha512-VFB+YXM3kZ6IIuLV64H3vgnwqvQIIaqfR/aeGwuxYvwcZsrgblSBmXMeDULdgDjqP8Yr0VaFMBBiD9OtG5KdFw==}
cpu: [arm64]
os: [linux]
libc: [glibc]
- '@rspack/binding-linux-arm64-musl@2.1.5':
- resolution: {integrity: sha512-0GFc07gT71+uRbHtejDecBfSL0fs7dQAwCtXYieXboACauL7UvS3Hwr6v8A91aGtAcvLotnCaIa3CWWYwtYlYQ==}
+ '@rspack/binding-linux-arm64-musl@2.1.7':
+ resolution: {integrity: sha512-Mzbxyg0aJ+ITj526Iuz0enEDYY6WxhFIwEKXqwjQh+Vpd5v/+aPzPo83sSQVX/3puBV1sbmviTURbh6N9e1fvA==}
cpu: [arm64]
os: [linux]
libc: [musl]
- '@rspack/binding-linux-riscv64-gnu@2.1.5':
- resolution: {integrity: sha512-isQQDp3fBzPSZpLVFzPqVXIVA4I9b9mKs58TfUgOzDP/1g1582YSV3iFopgFogvEliihXDuuXvM6aAkP+w8Z+Q==}
+ '@rspack/binding-linux-riscv64-gnu@2.1.7':
+ resolution: {integrity: sha512-mpazwgT/Pse1720mvEJsoXfPkJ+enj0xUqpbe/wL6aedwjGT+9jJNB8HTJXE4XBX0UO7umGqcJMeKA6YsD2CDA==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
- '@rspack/binding-linux-riscv64-musl@2.1.5':
- resolution: {integrity: sha512-/SP6VknY4kH60BYplI2FDNAJCo4U4DUszLxhKsgVlgA5ImgHC8Ew2AsKgidk7ceiYV9OcKzYuWYe9tVpysBYVA==}
+ '@rspack/binding-linux-riscv64-musl@2.1.7':
+ resolution: {integrity: sha512-oU/l3soPRsDEWn7KZic+npyTMM2N1kRdHjoJ+L5IUBXs8bjdTXPLoyTbTdIOza5ZSoT4+UeEiEryj4BB0tQE5w==}
cpu: [riscv64]
os: [linux]
libc: [musl]
- '@rspack/binding-linux-x64-gnu@2.1.5':
- resolution: {integrity: sha512-/GJmS+buA4pilT10gs5mfAhAZxSHXpDD8veZ3QpYvNUuoU9gvempAq9TgjbyNN/vc5pf76GdXPXKFMiehudYSA==}
+ '@rspack/binding-linux-x64-gnu@2.1.7':
+ resolution: {integrity: sha512-7Gtpl3h3jtnOpk1mYQE8mRndXAO2ibI8mnAbs7klevdKey+ZHneWMoMi2yOMQhhI/ifWEFxDzyGJ8bdxo0XTsA==}
cpu: [x64]
os: [linux]
libc: [glibc]
- '@rspack/binding-linux-x64-musl@2.1.5':
- resolution: {integrity: sha512-iwS3t75nZ2TnUjB05KtvpvjpdkOy/nLxbaOnwjbdnNZZXpUaMadLbllGAWayHPGCMsL2yKBEhVEESZpR7tK3SA==}
+ '@rspack/binding-linux-x64-musl@2.1.7':
+ resolution: {integrity: sha512-w+whI2Uy+DYkGN+MVkzMFWweL7B/s1gMqX+nvTE1vhOy3hGV0VyA9H6lqWjSD3I+eGkpYhN9Pr244cYnLpZOUQ==}
cpu: [x64]
os: [linux]
libc: [musl]
- '@rspack/binding-wasm32-wasi@2.1.5':
- resolution: {integrity: sha512-jOhW69t1H/jcRaSMB5U8jVzWP18j0YQIlo0nT8W+KvNVScJeyOze4FFc+5RIS7VmuT8/jid7hUyydZOfm6UgqA==}
+ '@rspack/binding-wasm32-wasi@2.1.7':
+ resolution: {integrity: sha512-cDVgvzRdTgxaeM+a5Lx0+7/VAvunvwO0wNtQ3ATQGOtFCW5b7cUzhNPcytH5ZSJTnFWuxinlGwtar5yfcnkdZQ==}
cpu: [wasm32]
- '@rspack/binding-win32-arm64-msvc@2.1.5':
- resolution: {integrity: sha512-OLfMXmtFBcrWr9BRGKXJYrWgYR0JSaoAWr3EVFDjKGi/YR5aUwQSGc3AJPBph9g0YsdSqRuUhtQGtCk84DeeEA==}
+ '@rspack/binding-win32-arm64-msvc@2.1.7':
+ resolution: {integrity: sha512-JDd85+iYwUvaG9Zrt5X7oIxRZRiTW+76FwkRakoXNy/5VAWQW32Jq4ESjSVz6l6mh0KnZxPq3TLMugacCPnLjw==}
cpu: [arm64]
os: [win32]
- '@rspack/binding-win32-ia32-msvc@2.1.5':
- resolution: {integrity: sha512-p4OSmnj21+AY8vpIADveLEBXfXJRXonOTYim2VLVWV4TbXfhYNMLiX3qESHCdNnn6lVJM0q6zxxzEUfTyAKydw==}
+ '@rspack/binding-win32-ia32-msvc@2.1.7':
+ resolution: {integrity: sha512-y9PKEs6v9BLHV0i/4eaIRtxpATvSgcf/VYQkMT8mp+qWlPjUwDQNwU2ueWVGpff6INO+YAa7zobzziNFRgO7Lg==}
cpu: [ia32]
os: [win32]
- '@rspack/binding-win32-x64-msvc@2.1.5':
- resolution: {integrity: sha512-YCkLLDGMkHsw5CpcsFtFhzCu+JZEsNrcH9O1GpWMkyxR2ku2Fq1i2wEHYSm26HyW+PJ3+Fv347MPWMFZIz9q2g==}
+ '@rspack/binding-win32-x64-msvc@2.1.7':
+ resolution: {integrity: sha512-BjkOzcPY/K8YlRRvyywz0mDWk89MMxqAMhDmgBXCWorh1IjgKTsWDJ2lCGIM8M9CZXUG3khom8AfrOGwRT2I+g==}
cpu: [x64]
os: [win32]
- '@rspack/binding@2.1.5':
- resolution: {integrity: sha512-lF3ZLeeyV0AN3BL0m2jAmNZD5pP9IHsQ8gUXN7mo0g4xsW6nf6hsN7o9CnEHECz5uUZb+EoWsuWzAAmnA9Ip8Q==}
+ '@rspack/binding@2.1.7':
+ resolution: {integrity: sha512-wYqi8TY30hsIzLry503o/Uqu7y9Ec7pEwN5TVmB7Pb3xHrR2eHsQPzdpF/GkCLUjQSgD2Es3CDVV1mr6zO/78g==}
- '@rspack/cli@2.1.5':
- resolution: {integrity: sha512-N6Bm8sxHwatNoiZR68+/VKvVMDh19ya39t2Nfxu1/fBmGCrQX1ct8uPooVSysLtUF2Qx31sSRl1DX1SS0eYt2A==}
+ '@rspack/cli@2.1.7':
+ resolution: {integrity: sha512-1hmCC6OsJM4zJC7gWi122/kbl2h7lxZl4Wi1kdPYak0pqth6FGTmyHV+bwB+3yzAb6e/B2ttNqvXU1Zbj+Z+gQ==}
hasBin: true
peerDependencies:
'@rspack/core': ^2.0.0-0
@@ -3653,8 +3531,8 @@ packages:
'@rspack/dev-server':
optional: true
- '@rspack/core@2.1.5':
- resolution: {integrity: sha512-YHjL7xVXycAWsjJtF39cRZ2u+ddiNFxY+FcNgEBe6Y8OaLeUfMfjba3gK+B1Oj32UcKD6BmXGsPfu9p+OII/Yw==}
+ '@rspack/core@2.1.7':
+ resolution: {integrity: sha512-d5Ju3zXzGgbqQWvlMlLUtek2eFPIzsFe2QOF4nwTAknxo/4OZ64t+kPT9nM6fr3aZX93VK0R3v02/kZYIRrV9Q==}
engines: {node: ^20.19.0 || >=22.12.0}
peerDependencies:
'@module-federation/runtime-tools': ^0.24.1 || ^2.0.0
@@ -3990,11 +3868,8 @@ packages:
'@types/node-fetch@2.6.13':
resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==}
- '@types/node@24.13.3':
- resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==}
-
- '@types/node@26.1.1':
- resolution: {integrity: sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==}
+ '@types/node@26.1.2':
+ resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==}
'@types/qrcode@1.5.6':
resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==}
@@ -4561,6 +4436,11 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
+ acorn@8.18.0:
+ resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
agent-base@7.1.4:
resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==}
engines: {node: '>= 14'}
@@ -4774,8 +4654,8 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- better-sqlite3@13.0.1:
- resolution: {integrity: sha512-LYpmOXdkpQYf4wmlxkdzW01XGlOXNIbjLg45yNkh0FQ4814VbK9PdOFmhZpYbej+EZtR/i3FDdhEG98HqZdgnA==}
+ better-sqlite3@13.0.2:
+ resolution: {integrity: sha512-jW6oufeDhXZaiX9Lw5A+oerVClx4iFrI6uDj1zu7SqUAjak9vbJvA0NEcKLNxHiQHb6kYCoFzzXYV0YOauhV3g==}
engines: {node: '>=22'}
bindings@1.5.0:
@@ -5414,8 +5294,8 @@ packages:
resolution: {integrity: sha512-clKkw4C7nJ22mGgoVcCg6V/W/TxdNyIOTr89k2ONZu81qqkddPFDF0LXcbAwhzPD8DjkiRCjzuiO6Y+fkpD4vg==}
engines: {node: '>=10.2.0'}
- enhanced-resolve@5.24.3:
- resolution: {integrity: sha512-PwKooW9JUzh5chmYfHM3IQl5OkK2u2Nm011MgeZrss3JmFraUx/fqrf78kk8GUMYoibx/14MdwTl/1WKkG7TpQ==}
+ enhanced-resolve@5.24.4:
+ resolution: {integrity: sha512-GVoi+ICHocoOIU7qVVM48wOJziRsqrsyqlI0Ce0LdowRn6v3bcH2zUa9kp85ncx0nwIb9/HOCOLS3fdThDG/XQ==}
engines: {node: '>=10.13.0'}
entities@6.0.1:
@@ -7173,19 +7053,6 @@ packages:
oniguruma-to-es@4.3.6:
resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==}
- oxlint@1.75.0:
- resolution: {integrity: sha512-m9WzjRcRYA/uqIZDa9tclrieoPJ/ln1QYTKdFx6NUOs8uY5DiHlIwRQoCrHT6OM6O3ww3l2skY5gO7G7ZphE7g==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- oxlint-tsgolint: '>=7.0.2001'
- vite-plus: '*'
- peerDependenciesMeta:
- oxlint-tsgolint:
- optional: true
- vite-plus:
- optional: true
-
oxlint@1.76.0:
resolution: {integrity: sha512-6QoFioEU4fNdiUx/2Eo6TRd6NG7H7njnRCz8rhB66cZmMHDTqcm1Rjvl8Wry+ZTQMBAmyb4Mlf62Mk5X+eHSOw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -8246,9 +8113,6 @@ packages:
underscore@1.13.8:
resolution: {integrity: sha512-DXtD3ZtEQzc7M8m4cXotyHR+FAS18C64asBYY5vqZexfYryNNnDc02W4hKg3rdQuqOYas1jkseX0+nZXjTXnvQ==}
- undici-types@7.18.2:
- resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
-
undici-types@8.3.0:
resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
@@ -8473,8 +8337,8 @@ packages:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
engines: {node: '>=12'}
- webpack-cli@7.2.1:
- resolution: {integrity: sha512-YwSGbcZdfz12DM8JIseVPr3oBb09IgVCVc4vY3oDvZnI/mALTGPAP1QiqOi4/bBLSJrRHaqDIXeHcNA0+G38aw==}
+ webpack-cli@7.2.2:
+ resolution: {integrity: sha512-lD0pALneslq8FfV+rwvm1BMW0AFAJrHHhNupAGN4asYjMvqrtRsenU4iKpiBo09gS4ntMxKGUxl9jhTEzVt0oA==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -8504,8 +8368,8 @@ packages:
resolution: {integrity: sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==}
engines: {node: '>=10.13.0'}
- webpack@5.109.0:
- resolution: {integrity: sha512-vomrngskVVXEZF9sMZfYAd4pXZUnfaWdJGlF+BTNF+gJBCKYCQBnOeVPlrh39Ewl7nlCsirDplMy6o5g9xJHBg==}
+ webpack@5.109.2:
+ resolution: {integrity: sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
@@ -9471,122 +9335,122 @@ snapshots:
'@inquirer/ansi@2.0.7': {}
- '@inquirer/checkbox@5.2.1(@types/node@26.1.1)':
+ '@inquirer/checkbox@5.2.1(@types/node@26.1.2)':
dependencies:
'@inquirer/ansi': 2.0.7
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
'@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/confirm@6.1.1(@types/node@26.1.1)':
+ '@inquirer/confirm@6.1.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/core@11.2.1(@types/node@26.1.1)':
+ '@inquirer/core@11.2.1(@types/node@26.1.2)':
dependencies:
'@inquirer/ansi': 2.0.7
'@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
cli-width: 4.1.0
fast-wrap-ansi: 0.2.2
mute-stream: 3.0.0
signal-exit: 4.1.0
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/editor@5.2.2(@types/node@26.1.1)':
+ '@inquirer/editor@5.2.2(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/external-editor': 3.0.3(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/external-editor': 3.0.3(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/expand@5.1.1(@types/node@26.1.1)':
+ '@inquirer/expand@5.1.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/external-editor@3.0.3(@types/node@26.1.1)':
+ '@inquirer/external-editor@3.0.3(@types/node@26.1.2)':
dependencies:
chardet: 2.2.0
iconv-lite: 0.7.3
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@inquirer/figures@2.0.7': {}
- '@inquirer/input@5.1.2(@types/node@26.1.1)':
+ '@inquirer/input@5.1.2(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/number@4.1.1(@types/node@26.1.1)':
+ '@inquirer/number@4.1.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/password@5.1.1(@types/node@26.1.1)':
+ '@inquirer/password@5.1.1(@types/node@26.1.2)':
dependencies:
'@inquirer/ansi': 2.0.7
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
-
- '@inquirer/prompts@8.5.2(@types/node@26.1.1)':
- dependencies:
- '@inquirer/checkbox': 5.2.1(@types/node@26.1.1)
- '@inquirer/confirm': 6.1.1(@types/node@26.1.1)
- '@inquirer/editor': 5.2.2(@types/node@26.1.1)
- '@inquirer/expand': 5.1.1(@types/node@26.1.1)
- '@inquirer/input': 5.1.2(@types/node@26.1.1)
- '@inquirer/number': 4.1.1(@types/node@26.1.1)
- '@inquirer/password': 5.1.1(@types/node@26.1.1)
- '@inquirer/rawlist': 5.3.1(@types/node@26.1.1)
- '@inquirer/search': 4.2.1(@types/node@26.1.1)
- '@inquirer/select': 5.2.1(@types/node@26.1.1)
+ '@types/node': 26.1.2
+
+ '@inquirer/prompts@8.5.2(@types/node@26.1.2)':
+ dependencies:
+ '@inquirer/checkbox': 5.2.1(@types/node@26.1.2)
+ '@inquirer/confirm': 6.1.1(@types/node@26.1.2)
+ '@inquirer/editor': 5.2.2(@types/node@26.1.2)
+ '@inquirer/expand': 5.1.1(@types/node@26.1.2)
+ '@inquirer/input': 5.1.2(@types/node@26.1.2)
+ '@inquirer/number': 4.1.1(@types/node@26.1.2)
+ '@inquirer/password': 5.1.1(@types/node@26.1.2)
+ '@inquirer/rawlist': 5.3.1(@types/node@26.1.2)
+ '@inquirer/search': 4.2.1(@types/node@26.1.2)
+ '@inquirer/select': 5.2.1(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/rawlist@5.3.1(@types/node@26.1.1)':
+ '@inquirer/rawlist@5.3.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/search@4.2.1(@types/node@26.1.1)':
+ '@inquirer/search@4.2.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
'@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/select@5.2.1(@types/node@26.1.1)':
+ '@inquirer/select@5.2.1(@types/node@26.1.2)':
dependencies:
'@inquirer/ansi': 2.0.7
- '@inquirer/core': 11.2.1(@types/node@26.1.1)
+ '@inquirer/core': 11.2.1(@types/node@26.1.2)
'@inquirer/figures': 2.0.7
- '@inquirer/type': 4.0.7(@types/node@26.1.1)
+ '@inquirer/type': 4.0.7(@types/node@26.1.2)
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
- '@inquirer/type@4.0.7(@types/node@26.1.1)':
+ '@inquirer/type@4.0.7(@types/node@26.1.2)':
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@isaacs/cliui@8.0.2':
dependencies:
@@ -9614,13 +9478,13 @@ snapshots:
'@jest/console@30.4.1':
dependencies:
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
jest-message-util: 30.4.1
jest-util: 30.4.1
slash: 3.0.0
- '@jest/core@30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))':
+ '@jest/core@30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))':
dependencies:
'@jest/console': 30.4.1
'@jest/pattern': 30.4.0
@@ -9628,7 +9492,7 @@ snapshots:
'@jest/test-result': 30.4.1
'@jest/transform': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 4.4.0
@@ -9636,7 +9500,7 @@ snapshots:
fast-json-stable-stringify: 2.1.0
graceful-fs: 4.2.11
jest-changed-files: 30.4.1
- jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ jest-config: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-haste-map: 30.4.1
jest-message-util: 30.4.1
jest-regex-util: 30.4.0
@@ -9664,7 +9528,7 @@ snapshots:
'@jest/fake-timers': 30.4.1
'@jest/types': 30.4.1
'@types/jsdom': 21.1.7
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-mock: 30.4.1
jest-util: 30.4.1
jsdom: 26.1.0
@@ -9673,7 +9537,7 @@ snapshots:
dependencies:
'@jest/fake-timers': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-mock: 30.4.1
'@jest/expect-utils@30.4.1':
@@ -9691,7 +9555,7 @@ snapshots:
dependencies:
'@jest/types': 30.4.1
'@sinonjs/fake-timers': 15.4.0
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-message-util: 30.4.1
jest-mock: 30.4.1
jest-util: 30.4.1
@@ -9709,7 +9573,7 @@ snapshots:
'@jest/pattern@30.4.0':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-regex-util: 30.4.0
'@jest/reporters@30.4.1':
@@ -9720,7 +9584,7 @@ snapshots:
'@jest/transform': 30.4.1
'@jest/types': 30.4.1
'@jridgewell/trace-mapping': 0.3.31
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
collect-v8-coverage: 1.0.3
exit-x: 0.2.2
@@ -9799,7 +9663,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -9809,7 +9673,7 @@ snapshots:
'@jest/schemas': 30.4.1
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/yargs': 17.0.35
chalk: 4.1.2
@@ -10318,117 +10182,60 @@ snapshots:
'@oxc-project/types@0.140.0': {}
- '@oxlint/binding-android-arm-eabi@1.75.0':
- optional: true
-
'@oxlint/binding-android-arm-eabi@1.76.0':
optional: true
- '@oxlint/binding-android-arm64@1.75.0':
- optional: true
-
'@oxlint/binding-android-arm64@1.76.0':
optional: true
- '@oxlint/binding-darwin-arm64@1.75.0':
- optional: true
-
'@oxlint/binding-darwin-arm64@1.76.0':
optional: true
- '@oxlint/binding-darwin-x64@1.75.0':
- optional: true
-
'@oxlint/binding-darwin-x64@1.76.0':
optional: true
- '@oxlint/binding-freebsd-x64@1.75.0':
- optional: true
-
'@oxlint/binding-freebsd-x64@1.76.0':
optional: true
- '@oxlint/binding-linux-arm-gnueabihf@1.75.0':
- optional: true
-
'@oxlint/binding-linux-arm-gnueabihf@1.76.0':
optional: true
- '@oxlint/binding-linux-arm-musleabihf@1.75.0':
- optional: true
-
'@oxlint/binding-linux-arm-musleabihf@1.76.0':
optional: true
- '@oxlint/binding-linux-arm64-gnu@1.75.0':
- optional: true
-
'@oxlint/binding-linux-arm64-gnu@1.76.0':
optional: true
- '@oxlint/binding-linux-arm64-musl@1.75.0':
- optional: true
-
'@oxlint/binding-linux-arm64-musl@1.76.0':
optional: true
- '@oxlint/binding-linux-ppc64-gnu@1.75.0':
- optional: true
-
'@oxlint/binding-linux-ppc64-gnu@1.76.0':
optional: true
- '@oxlint/binding-linux-riscv64-gnu@1.75.0':
- optional: true
-
'@oxlint/binding-linux-riscv64-gnu@1.76.0':
optional: true
- '@oxlint/binding-linux-riscv64-musl@1.75.0':
- optional: true
-
'@oxlint/binding-linux-riscv64-musl@1.76.0':
optional: true
- '@oxlint/binding-linux-s390x-gnu@1.75.0':
- optional: true
-
'@oxlint/binding-linux-s390x-gnu@1.76.0':
optional: true
- '@oxlint/binding-linux-x64-gnu@1.75.0':
- optional: true
-
'@oxlint/binding-linux-x64-gnu@1.76.0':
optional: true
- '@oxlint/binding-linux-x64-musl@1.75.0':
- optional: true
-
'@oxlint/binding-linux-x64-musl@1.76.0':
optional: true
- '@oxlint/binding-openharmony-arm64@1.75.0':
- optional: true
-
'@oxlint/binding-openharmony-arm64@1.76.0':
optional: true
- '@oxlint/binding-win32-arm64-msvc@1.75.0':
- optional: true
-
'@oxlint/binding-win32-arm64-msvc@1.76.0':
optional: true
- '@oxlint/binding-win32-ia32-msvc@1.75.0':
- optional: true
-
'@oxlint/binding-win32-ia32-msvc@1.76.0':
optional: true
- '@oxlint/binding-win32-x64-msvc@1.75.0':
- optional: true
-
'@oxlint/binding-win32-x64-msvc@1.76.0':
optional: true
@@ -10716,68 +10523,68 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.62.3':
optional: true
- '@rspack/binding-darwin-arm64@2.1.5':
+ '@rspack/binding-darwin-arm64@2.1.7':
optional: true
- '@rspack/binding-darwin-x64@2.1.5':
+ '@rspack/binding-darwin-x64@2.1.7':
optional: true
- '@rspack/binding-linux-arm64-gnu@2.1.5':
+ '@rspack/binding-linux-arm64-gnu@2.1.7':
optional: true
- '@rspack/binding-linux-arm64-musl@2.1.5':
+ '@rspack/binding-linux-arm64-musl@2.1.7':
optional: true
- '@rspack/binding-linux-riscv64-gnu@2.1.5':
+ '@rspack/binding-linux-riscv64-gnu@2.1.7':
optional: true
- '@rspack/binding-linux-riscv64-musl@2.1.5':
+ '@rspack/binding-linux-riscv64-musl@2.1.7':
optional: true
- '@rspack/binding-linux-x64-gnu@2.1.5':
+ '@rspack/binding-linux-x64-gnu@2.1.7':
optional: true
- '@rspack/binding-linux-x64-musl@2.1.5':
+ '@rspack/binding-linux-x64-musl@2.1.7':
optional: true
- '@rspack/binding-wasm32-wasi@2.1.5':
+ '@rspack/binding-wasm32-wasi@2.1.7':
dependencies:
'@emnapi/core': 1.11.2
'@emnapi/runtime': 1.11.2
'@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)
optional: true
- '@rspack/binding-win32-arm64-msvc@2.1.5':
+ '@rspack/binding-win32-arm64-msvc@2.1.7':
optional: true
- '@rspack/binding-win32-ia32-msvc@2.1.5':
+ '@rspack/binding-win32-ia32-msvc@2.1.7':
optional: true
- '@rspack/binding-win32-x64-msvc@2.1.5':
+ '@rspack/binding-win32-x64-msvc@2.1.7':
optional: true
- '@rspack/binding@2.1.5':
+ '@rspack/binding@2.1.7':
optionalDependencies:
- '@rspack/binding-darwin-arm64': 2.1.5
- '@rspack/binding-darwin-x64': 2.1.5
- '@rspack/binding-linux-arm64-gnu': 2.1.5
- '@rspack/binding-linux-arm64-musl': 2.1.5
- '@rspack/binding-linux-riscv64-gnu': 2.1.5
- '@rspack/binding-linux-riscv64-musl': 2.1.5
- '@rspack/binding-linux-x64-gnu': 2.1.5
- '@rspack/binding-linux-x64-musl': 2.1.5
- '@rspack/binding-wasm32-wasi': 2.1.5
- '@rspack/binding-win32-arm64-msvc': 2.1.5
- '@rspack/binding-win32-ia32-msvc': 2.1.5
- '@rspack/binding-win32-x64-msvc': 2.1.5
+ '@rspack/binding-darwin-arm64': 2.1.7
+ '@rspack/binding-darwin-x64': 2.1.7
+ '@rspack/binding-linux-arm64-gnu': 2.1.7
+ '@rspack/binding-linux-arm64-musl': 2.1.7
+ '@rspack/binding-linux-riscv64-gnu': 2.1.7
+ '@rspack/binding-linux-riscv64-musl': 2.1.7
+ '@rspack/binding-linux-x64-gnu': 2.1.7
+ '@rspack/binding-linux-x64-musl': 2.1.7
+ '@rspack/binding-wasm32-wasi': 2.1.7
+ '@rspack/binding-win32-arm64-msvc': 2.1.7
+ '@rspack/binding-win32-ia32-msvc': 2.1.7
+ '@rspack/binding-win32-x64-msvc': 2.1.7
- '@rspack/cli@2.1.5(@rspack/core@2.1.5)':
+ '@rspack/cli@2.1.7(@rspack/core@2.1.7)':
dependencies:
- '@rspack/core': 2.1.5
+ '@rspack/core': 2.1.7
- '@rspack/core@2.1.5':
+ '@rspack/core@2.1.7':
dependencies:
- '@rspack/binding': 2.1.5
+ '@rspack/binding': 2.1.7
'@sec-ant/readable-stream@0.4.1': {}
@@ -10857,9 +10664,9 @@ snapshots:
tslib: 2.8.1
typed-inject: 5.0.0
- '@stryker-mutator/core@9.6.1(@types/node@26.1.1)':
+ '@stryker-mutator/core@9.6.1(@types/node@26.1.2)':
dependencies:
- '@inquirer/prompts': 8.5.2(@types/node@26.1.1)
+ '@inquirer/prompts': 8.5.2(@types/node@26.1.2)
'@stryker-mutator/api': 9.6.1
'@stryker-mutator/instrumenter': 9.6.1
'@stryker-mutator/util': 9.6.1
@@ -10906,24 +10713,24 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@stryker-mutator/jest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))':
+ '@stryker-mutator/jest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))':
dependencies:
'@stryker-mutator/api': 9.6.1
- '@stryker-mutator/core': 9.6.1(@types/node@26.1.1)
+ '@stryker-mutator/core': 9.6.1(@types/node@26.1.2)
'@stryker-mutator/util': 9.6.1
semver: 7.7.4
tslib: 2.8.1
'@stryker-mutator/util@9.6.1': {}
- '@stryker-mutator/vitest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.1))(vitest@4.1.10)':
+ '@stryker-mutator/vitest-runner@9.6.1(@stryker-mutator/core@9.6.1(@types/node@26.1.2))(vitest@4.1.10)':
dependencies:
'@stryker-mutator/api': 9.6.1
- '@stryker-mutator/core': 9.6.1(@types/node@26.1.1)
+ '@stryker-mutator/core': 9.6.1(@types/node@26.1.2)
'@stryker-mutator/util': 9.6.1
semver: 7.8.5
tslib: 2.8.1
- vitest: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
'@testing-library/dom@10.4.1':
dependencies:
@@ -10995,7 +10802,7 @@ snapshots:
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/chai@5.2.3':
dependencies:
@@ -11004,13 +10811,13 @@ snapshots:
'@types/connect@3.4.38':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/cookiejar@2.1.5': {}
'@types/cors@2.8.19':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/d3-array@3.2.2': {}
@@ -11143,7 +10950,7 @@ snapshots:
'@types/express-serve-static-core@5.1.2':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/qs': 6.15.1
'@types/range-parser': 1.2.7
'@types/send': 1.2.1
@@ -11157,7 +10964,7 @@ snapshots:
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/geojson@7946.0.16': {}
@@ -11184,7 +10991,7 @@ snapshots:
'@types/jsdom@21.1.7':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/tough-cookie': 4.0.5
parse5: 7.3.0
@@ -11192,7 +10999,7 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/mdast@4.0.4':
dependencies:
@@ -11208,20 +11015,16 @@ snapshots:
'@types/node-fetch@2.6.13':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
form-data: 4.0.6
- '@types/node@24.13.3':
- dependencies:
- undici-types: 7.18.2
-
- '@types/node@26.1.1':
+ '@types/node@26.1.2':
dependencies:
undici-types: 8.3.0
'@types/qrcode@1.5.6':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/qs@6.15.1': {}
@@ -11237,12 +11040,12 @@ snapshots:
'@types/send@1.2.1':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/serve-static@2.2.0':
dependencies:
'@types/http-errors': 2.0.5
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/stack-utils@2.0.3': {}
@@ -11250,7 +11053,7 @@ snapshots:
dependencies:
'@types/cookiejar': 2.1.5
'@types/methods': 1.1.4
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
form-data: 4.0.6
'@types/supertest@7.2.1':
@@ -11275,7 +11078,7 @@ snapshots:
'@types/ws@8.18.1':
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/yargs-parser@21.0.3': {}
@@ -11424,10 +11227,10 @@ snapshots:
d3-selection: 3.0.0
d3-transition: 3.0.1(d3-selection@3.0.0)
- '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))':
+ '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
- vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
'@vitest/coverage-v8@4.1.10(vitest@4.1.10)':
dependencies:
@@ -11441,7 +11244,7 @@ snapshots:
obug: 2.1.4
std-env: 4.2.0
tinyrainbow: 3.1.0
- vitest: 4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
'@vitest/expect@4.1.10':
dependencies:
@@ -11452,13 +11255,13 @@ snapshots:
chai: 6.2.2
tinyrainbow: 3.1.0
- '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))':
+ '@vitest/mocker@4.1.10(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))':
dependencies:
'@vitest/spy': 4.1.10
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
'@vitest/pretty-format@4.1.10':
dependencies:
@@ -11657,6 +11460,8 @@ snapshots:
acorn@8.17.0: {}
+ acorn@8.18.0: {}
+
agent-base@7.1.4: {}
ajv-formats@2.1.1:
@@ -11872,7 +11677,7 @@ snapshots:
baseline-browser-mapping@2.11.1: {}
- better-sqlite3@13.0.1:
+ better-sqlite3@13.0.2:
dependencies:
node-addon-api: 8.9.0
@@ -12468,7 +12273,7 @@ snapshots:
engine.io@6.6.9:
dependencies:
'@types/cors': 2.8.19
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@types/ws': 8.18.1
accepts: 1.3.8
base64id: 2.0.0
@@ -12482,7 +12287,7 @@ snapshots:
- supports-color
- utf-8-validate
- enhanced-resolve@5.24.3:
+ enhanced-resolve@5.24.4:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.3
@@ -13367,7 +13172,7 @@ snapshots:
'@jest/expect': 30.4.1
'@jest/test-result': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
co: 4.6.0
dedent: 1.7.2
@@ -13387,15 +13192,15 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@30.4.2(@types/node@24.13.3):
+ jest-cli@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)):
dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
'@jest/test-result': 30.4.1
'@jest/types': 30.4.1
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
- jest-config: 30.4.2(@types/node@24.13.3)
+ jest-config: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
jest-util: 30.4.1
jest-validate: 30.4.1
yargs: 17.7.3
@@ -13406,45 +13211,7 @@ snapshots:
- supports-color
- ts-node
- jest-cli@30.4.2(@types/node@26.1.1):
- dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- '@jest/test-result': 30.4.1
- '@jest/types': 30.4.1
- chalk: 4.1.2
- exit-x: 0.2.2
- import-local: 3.2.0
- jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- jest-util: 30.4.1
- jest-validate: 30.4.1
- yargs: 17.7.3
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- jest-cli@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)):
- dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- '@jest/test-result': 30.4.1
- '@jest/types': 30.4.1
- chalk: 4.1.2
- exit-x: 0.2.2
- import-local: 3.2.0
- jest-config: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- jest-util: 30.4.1
- jest-validate: 30.4.1
- yargs: 17.7.3
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- jest-config@30.4.2(@types/node@24.13.3):
+ jest-config@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)):
dependencies:
'@babel/core': 7.29.7
'@jest/get-type': 30.1.0
@@ -13470,39 +13237,8 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 24.13.3
- transitivePeerDependencies:
- - babel-plugin-macros
- - supports-color
-
- jest-config@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)):
- dependencies:
- '@babel/core': 7.29.7
- '@jest/get-type': 30.1.0
- '@jest/pattern': 30.4.0
- '@jest/test-sequencer': 30.4.1
- '@jest/types': 30.4.1
- babel-jest: 30.4.1(@babel/core@7.29.7)
- chalk: 4.1.2
- ci-info: 4.4.0
- deepmerge: 4.3.1
- glob: 10.5.0
- graceful-fs: 4.2.11
- jest-circus: 30.4.2
- jest-docblock: 30.4.0
- jest-environment-node: 30.4.1
- jest-regex-util: 30.4.0
- jest-resolve: 30.4.1
- jest-runner: 30.4.2
- jest-util: 30.4.1
- jest-validate: 30.4.1
- parse-json: 5.2.0
- pretty-format: 30.4.1
- slash: 3.0.0
- strip-json-comments: 3.1.1
- optionalDependencies:
- '@types/node': 26.1.1
- ts-node: 10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)
+ '@types/node': 26.1.2
+ ts-node: 10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -13541,7 +13277,7 @@ snapshots:
'@jest/environment': 30.4.1
'@jest/fake-timers': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-mock: 30.4.1
jest-util: 30.4.1
jest-validate: 30.4.1
@@ -13551,7 +13287,7 @@ snapshots:
jest-haste-map@30.4.1:
dependencies:
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -13591,7 +13327,7 @@ snapshots:
jest-mock@30.4.1:
dependencies:
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-util: 30.4.1
jest-pnp-resolver@1.2.3(jest-resolve@30.4.1):
@@ -13625,7 +13361,7 @@ snapshots:
'@jest/test-result': 30.4.1
'@jest/transform': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
emittery: 0.13.1
exit-x: 0.2.2
@@ -13654,7 +13390,7 @@ snapshots:
'@jest/test-result': 30.4.1
'@jest/transform': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
cjs-module-lexer: 2.2.0
collect-v8-coverage: 1.0.3
@@ -13701,7 +13437,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -13710,7 +13446,7 @@ snapshots:
jest-util@30.4.1:
dependencies:
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
chalk: 4.1.2
ci-info: 4.4.0
graceful-fs: 4.2.11
@@ -13738,7 +13474,7 @@ snapshots:
dependencies:
'@jest/test-result': 30.4.1
'@jest/types': 30.4.1
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
ansi-escapes: 4.3.2
chalk: 4.1.2
emittery: 0.13.1
@@ -13747,57 +13483,31 @@ snapshots:
jest-worker@27.5.1:
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@29.7.0:
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
jest-worker@30.4.1:
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@ungap/structured-clone': 1.3.3
jest-util: 30.4.1
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@30.4.2(@types/node@24.13.3):
- dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- '@jest/types': 30.4.1
- import-local: 3.2.0
- jest-cli: 30.4.2(@types/node@24.13.3)
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- jest@30.4.2(@types/node@26.1.1):
+ jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2)):
dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
'@jest/types': 30.4.1
import-local: 3.2.0
- jest-cli: 30.4.2(@types/node@26.1.1)
- transitivePeerDependencies:
- - '@types/node'
- - babel-plugin-macros
- - esbuild-register
- - supports-color
- - ts-node
-
- jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2)):
- dependencies:
- '@jest/core': 30.4.2(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- '@jest/types': 30.4.1
- import-local: 3.2.0
- jest-cli: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
+ jest-cli: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -13881,7 +13591,7 @@ snapshots:
kind-of@6.0.3: {}
- knex@3.3.0(better-sqlite3@13.0.1)(mysql2@3.23.2(@types/node@26.1.1)):
+ knex@3.3.0(better-sqlite3@13.0.2)(mysql2@3.23.2(@types/node@26.1.2)):
dependencies:
colorette: 2.0.19
commander: 10.0.1
@@ -13898,8 +13608,8 @@ snapshots:
tarn: 3.1.2
tildify: 2.0.0
optionalDependencies:
- better-sqlite3: 13.0.1
- mysql2: 3.23.2(@types/node@26.1.1)
+ better-sqlite3: 13.0.2
+ mysql2: 3.23.2(@types/node@26.1.2)
transitivePeerDependencies:
- supports-color
@@ -14753,23 +14463,23 @@ snapshots:
minimist@1.2.8: {}
- minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.0(esbuild@0.28.1)):
+ minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.2(esbuild@0.28.1)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
terser: 5.49.0
- webpack: 5.109.0(esbuild@0.28.1)
+ webpack: 5.109.2(esbuild@0.28.1)
optionalDependencies:
esbuild: 0.28.1
- minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.0):
+ minimizer-webpack-plugin@5.6.1(esbuild@0.28.1)(webpack@5.109.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
terser: 5.49.0
- webpack: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1)
+ webpack: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2)
optionalDependencies:
esbuild: 0.28.1
@@ -14874,9 +14584,9 @@ snapshots:
mute-stream@3.0.0: {}
- mysql2@3.23.2(@types/node@26.1.1):
+ mysql2@3.23.2(@types/node@26.1.2):
dependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
aws-ssl-profiles: 1.1.2
denque: 2.1.0
generate-function: 2.3.1
@@ -14994,28 +14704,6 @@ snapshots:
regex: 6.1.0
regex-recursion: 6.0.2
- oxlint@1.75.0:
- optionalDependencies:
- '@oxlint/binding-android-arm-eabi': 1.75.0
- '@oxlint/binding-android-arm64': 1.75.0
- '@oxlint/binding-darwin-arm64': 1.75.0
- '@oxlint/binding-darwin-x64': 1.75.0
- '@oxlint/binding-freebsd-x64': 1.75.0
- '@oxlint/binding-linux-arm-gnueabihf': 1.75.0
- '@oxlint/binding-linux-arm-musleabihf': 1.75.0
- '@oxlint/binding-linux-arm64-gnu': 1.75.0
- '@oxlint/binding-linux-arm64-musl': 1.75.0
- '@oxlint/binding-linux-ppc64-gnu': 1.75.0
- '@oxlint/binding-linux-riscv64-gnu': 1.75.0
- '@oxlint/binding-linux-riscv64-musl': 1.75.0
- '@oxlint/binding-linux-s390x-gnu': 1.75.0
- '@oxlint/binding-linux-x64-gnu': 1.75.0
- '@oxlint/binding-linux-x64-musl': 1.75.0
- '@oxlint/binding-openharmony-arm64': 1.75.0
- '@oxlint/binding-win32-arm64-msvc': 1.75.0
- '@oxlint/binding-win32-ia32-msvc': 1.75.0
- '@oxlint/binding-win32-x64-msvc': 1.75.0
-
oxlint@1.76.0:
optionalDependencies:
'@oxlint/binding-android-arm-eabi': 1.76.0
@@ -16088,54 +15776,12 @@ snapshots:
ts-dedent@2.3.0: {}
- ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@24.13.3)):
- dependencies:
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- handlebars: 4.7.9
- jest: 30.4.2(@types/node@24.13.3)
- json5: 2.2.3
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.8.5
- type-fest: 4.41.0
- typescript: '@typescript/typescript6@6.0.2'
- yargs-parser: 21.1.1
- optionalDependencies:
- '@babel/core': 7.29.7
- '@jest/transform': 30.4.1
- '@jest/types': 30.4.1
- babel-jest: 30.4.1(@babel/core@7.29.7)
- esbuild: 0.28.1
- jest-util: 30.4.1
-
- ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))):
- dependencies:
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- handlebars: 4.7.9
- jest: 30.4.2(@types/node@26.1.1)(ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2))
- json5: 2.2.3
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.8.5
- type-fest: 4.41.0
- typescript: '@typescript/typescript6@6.0.2'
- yargs-parser: 21.1.1
- optionalDependencies:
- '@babel/core': 7.29.7
- '@jest/transform': 30.4.1
- '@jest/types': 30.4.1
- babel-jest: 30.4.1(@babel/core@7.29.7)
- esbuild: 0.28.1
- jest-util: 30.4.1
-
- ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.1)):
+ ts-jest@29.4.12(@babel/core@7.29.7)(@jest/transform@30.4.1)(@jest/types@30.4.1)(@typescript/typescript6@6.0.2)(babel-jest@30.4.1(@babel/core@7.29.7))(esbuild@0.28.1)(jest-util@30.4.1)(jest@30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))):
dependencies:
bs-logger: 0.2.6
fast-json-stable-stringify: 2.1.0
handlebars: 4.7.9
- jest: 30.4.2(@types/node@26.1.1)
+ jest: 30.4.2(@types/node@26.1.2)(ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2))
json5: 2.2.3
lodash.memoize: 4.1.2
make-error: 1.3.6
@@ -16151,22 +15797,22 @@ snapshots:
esbuild: 0.28.1
jest-util: 30.4.1
- ts-loader@9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.0(esbuild@0.28.1)):
+ ts-loader@9.6.2(@typescript/typescript6@6.0.2)(webpack@5.109.2(esbuild@0.28.1)):
dependencies:
chalk: 4.1.2
picomatch: 4.0.5
source-map: 0.7.6
typescript: '@typescript/typescript6@6.0.2'
- webpack: 5.109.0(esbuild@0.28.1)
+ webpack: 5.109.2(esbuild@0.28.1)
- ts-node@10.9.2(@types/node@26.1.1)(@typescript/typescript6@6.0.2):
+ ts-node@10.9.2(@types/node@26.1.2)(@typescript/typescript6@6.0.2):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.12
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
'@tsconfig/node16': 1.0.4
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
acorn: 8.17.0
acorn-walk: 8.3.5
arg: 4.1.3
@@ -16318,8 +15964,6 @@ snapshots:
underscore@1.13.8: {}
- undici-types@7.18.2: {}
-
undici-types@8.3.0: {}
undici@6.28.0:
@@ -16456,7 +16100,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0):
+ vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0):
dependencies:
lightningcss: 1.33.0
picomatch: 4.0.5
@@ -16464,17 +16108,17 @@ snapshots:
rolldown: 1.1.5
tinyglobby: 0.2.17
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
esbuild: 0.28.1
fsevents: 2.3.3
terser: 5.49.0
tsx: 4.23.1
yaml: 2.9.0
- vitest@4.1.10(@types/node@26.1.1)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0):
+ vitest@4.1.10(@types/node@26.1.2)(@vitest/coverage-v8@4.1.10)(esbuild@0.28.1)(jsdom@26.1.0)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0):
dependencies:
'@vitest/expect': 4.1.10
- '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))
+ '@vitest/mocker': 4.1.10(vite@8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0))
'@vitest/pretty-format': 4.1.10
'@vitest/runner': 4.1.10
'@vitest/snapshot': 4.1.10
@@ -16491,10 +16135,10 @@ snapshots:
tinyexec: 1.2.4
tinyglobby: 0.2.17
tinyrainbow: 3.1.0
- vite: 8.1.5(@types/node@26.1.1)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
+ vite: 8.1.5(@types/node@26.1.2)(esbuild@0.28.1)(terser@5.49.0)(tsx@4.23.1)(yaml@2.9.0)
why-is-node-running: 2.3.0
optionalDependencies:
- '@types/node': 26.1.1
+ '@types/node': 26.1.2
'@vitest/coverage-v8': 4.1.10(vitest@4.1.10)
jsdom: 26.1.0
transitivePeerDependencies:
@@ -16538,7 +16182,7 @@ snapshots:
webidl-conversions@7.0.0: {}
- webpack-cli@7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0):
+ webpack-cli@7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2):
dependencies:
'@discoveryjs/json-ext': 1.1.0
commander: 14.0.3
@@ -16547,7 +16191,7 @@ snapshots:
import-local: 3.2.0
interpret: 3.1.1
rechoir: 0.8.0
- webpack: 5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1)
+ webpack: 5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2)
webpack-merge: 6.0.1
optionalDependencies:
json5: 2.2.3
@@ -16561,23 +16205,23 @@ snapshots:
webpack-sources@3.5.1: {}
- webpack@5.109.0(esbuild@0.28.1):
+ webpack@5.109.2(esbuild@0.28.1):
dependencies:
'@types/estree': 1.0.9
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.17.0
+ acorn: 8.18.0
browserslist: 4.28.7
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.24.3
+ enhanced-resolve: 5.24.4
es-module-lexer: 2.3.1
eslint-scope: 5.1.1
events: 3.3.0
graceful-fs: 4.2.11
mime-db: 1.54.0
- minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.0(esbuild@0.28.1))
+ minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.2(esbuild@0.28.1))
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
@@ -16597,30 +16241,30 @@ snapshots:
- postcss
- uglify-js
- webpack@5.109.0(esbuild@0.28.1)(webpack-cli@7.2.1):
+ webpack@5.109.2(esbuild@0.28.1)(webpack-cli@7.2.2):
dependencies:
'@types/estree': 1.0.9
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
- acorn: 8.17.0
+ acorn: 8.18.0
browserslist: 4.28.7
chrome-trace-event: 1.0.4
- enhanced-resolve: 5.24.3
+ enhanced-resolve: 5.24.4
es-module-lexer: 2.3.1
eslint-scope: 5.1.1
events: 3.3.0
graceful-fs: 4.2.11
mime-db: 1.54.0
- minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.0)
+ minimizer-webpack-plugin: 5.6.1(esbuild@0.28.1)(webpack@5.109.2)
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.3
watchpack: 2.5.2
webpack-sources: 3.5.1
optionalDependencies:
- webpack-cli: 7.2.1(json5@2.2.3)(toml@3.0.0)(webpack@5.109.0)
+ webpack-cli: 7.2.2(json5@2.2.3)(toml@3.0.0)(webpack@5.109.2)
transitivePeerDependencies:
- '@minify-html/node'
- '@swc/core'
diff --git a/scripts/browser-artifact-governance.mjs b/scripts/browser-artifact-governance.mjs
new file mode 100644
index 000000000..63a7aa8ea
--- /dev/null
+++ b/scripts/browser-artifact-governance.mjs
@@ -0,0 +1,79 @@
+#!/usr/bin/env node
+
+import fs from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath, pathToFileURL } from 'node:url'
+
+export const REPOSITORY_ROOT = fileURLToPath(new URL('..', import.meta.url))
+const POLICY_PATH = path.join(REPOSITORY_ROOT, 'governance/browser-artifact-policy.json')
+const PROJECTS_PATH = path.join(REPOSITORY_ROOT, 'governance/repository-health/projects.json')
+
+function readJson(filePath) {
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'))
+}
+
+function isNonEmptyString(value) {
+ return typeof value === 'string' && value.trim().length > 0
+}
+
+function policyErrors(policy) {
+ const errors = []
+ if (policy.schemaVersion !== 1) errors.push('browser artifact policy schemaVersion must be 1')
+ if (!Number.isSafeInteger(policy.reportRetentionDays) || policy.reportRetentionDays < 1) {
+ errors.push('browser artifact report retention must be positive')
+ }
+ if (!isNonEmptyString(policy.growthPolicy)) errors.push('browser growth policy is required')
+ return errors
+}
+
+function governedBrowserNames(registry) {
+ return new Set(
+ registry.projects
+ .filter(project => (project.consumerProfiles ?? []).includes('browser-bundler'))
+ .map(project => project.name)
+ )
+}
+
+function browserEntryErrors(root, entry, governedNames) {
+ const errors = []
+ if (!governedNames.has(entry.name)) {
+ errors.push(`stale browser artifact disposition for ${entry.name}`)
+ }
+ const manifest = readJson(path.join(root, entry.path, 'package.json'))
+ const budget = readJson(path.join(root, entry.budget))
+ if (manifest.name !== entry.name) errors.push(`${entry.path} does not identify ${entry.name}`)
+ if (budget.profile !== 'browser') errors.push(`${entry.budget} is not a browser budget`)
+ if (budget.entry !== undefined && budget.entry !== entry.entry) {
+ errors.push(`${entry.name} policy entry differs from its browser budget`)
+ }
+ if (!isNonEmptyString(entry.splittingDisposition)) {
+ errors.push(`${entry.name} requires an optional-adapter splitting disposition`)
+ }
+ return errors
+}
+
+export function validateBrowserArtifactGovernance(root = REPOSITORY_ROOT) {
+ const policy = readJson(path.join(root, path.relative(REPOSITORY_ROOT, POLICY_PATH)))
+ const registry = readJson(path.join(root, path.relative(REPOSITORY_ROOT, PROJECTS_PATH)))
+ const errors = policyErrors(policy)
+ const governedNames = governedBrowserNames(registry)
+ const policyNames = new Set(policy.packages.map(item => item.name))
+ for (const name of governedNames) {
+ if (!policyNames.has(name)) errors.push(`missing browser artifact disposition for ${name}`)
+ }
+ for (const entry of policy.packages) {
+ errors.push(...browserEntryErrors(root, entry, governedNames))
+ }
+ return errors
+}
+
+if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
+ const errors = validateBrowserArtifactGovernance()
+ if (errors.length > 0) {
+ console.error(errors.join('\n'))
+ process.exitCode = 1
+ } else {
+ console.log('Browser artifact growth and optional-adapter dispositions are complete.')
+ }
+}
diff --git a/scripts/browser-artifact-governance.test.mjs b/scripts/browser-artifact-governance.test.mjs
new file mode 100644
index 000000000..b51a55c74
--- /dev/null
+++ b/scripts/browser-artifact-governance.test.mjs
@@ -0,0 +1,8 @@
+import assert from 'node:assert/strict'
+import test from 'node:test'
+
+import { validateBrowserArtifactGovernance } from './browser-artifact-governance.mjs'
+
+test('every browser package has a measured growth and adapter-splitting disposition', () => {
+ assert.deepEqual(validateBrowserArtifactGovernance(), [])
+})
diff --git a/scripts/check-browser-package.mjs b/scripts/check-browser-package.mjs
index fd78fa54c..d9a167ffa 100644
--- a/scripts/check-browser-package.mjs
+++ b/scripts/check-browser-package.mjs
@@ -71,6 +71,22 @@ function compareText(left, right) {
return left.localeCompare(right)
}
+function packageNameFromModuleId(moduleId) {
+ const normalized = moduleId.replaceAll('\\', '/')
+ const installed = normalized.split('/node_modules/').at(-1)
+ if (!installed || installed === normalized) return undefined
+ const parts = installed.split('/')
+ return parts[0].startsWith('@') ? parts.slice(0, 2).join('/') : parts[0]
+}
+
+export function bundleComposition(moduleIds, files) {
+ return {
+ chunks: files.filter(file => /\.[cm]?js$/.test(file)).length,
+ modules: new Set(moduleIds).size,
+ packages: [...new Set(moduleIds.map(packageNameFromModuleId).filter(Boolean))].sort(compareText)
+ }
+}
+
const run = createCommandRunner({
timeoutMs: COMMAND_TIMEOUT_MS,
maxBufferBytes: MAX_BUFFER_BYTES,
@@ -336,7 +352,10 @@ async function checkVite(consumerDirectory, entryPath, budget) {
assertBrowserComposition([...moduleIds], bundle.code.toString('utf8'), 'Vite browser bundle')
const measurements = bundleSizes(bundle.code)
validateBundleBudget(measurements, budget, 'Vite browser bundle')
- return measurements
+ return {
+ bytes: measurements,
+ composition: bundleComposition([...moduleIds], bundle.files)
+ }
}
async function checkEsbuild(consumerDirectory, entryPath, budget) {
@@ -368,7 +387,10 @@ async function checkEsbuild(consumerDirectory, entryPath, budget) {
)
const measurements = bundleSizes(bundle.code)
validateBundleBudget(measurements, budget, 'esbuild browser bundle')
- return measurements
+ return {
+ bytes: measurements,
+ composition: bundleComposition(Object.keys(result.metafile.inputs), bundle.files)
+ }
}
function installedPackageDirectory(consumerDirectory, packageName) {
@@ -425,7 +447,14 @@ async function checkUmd(consumerDirectory, manifest, budget) {
}
const measurements = aggregateBundleSizes(payloads)
validateBundleBudget(measurements, budget.umd.maximumBytes, 'UMD browser payload')
- return measurements
+ return {
+ bytes: measurements,
+ composition: {
+ chunks: payloads.filter((_payload, index) => /\.[cm]?js$/.test(payloadPaths[index])).length,
+ modules: sourceMap.sources.length,
+ packages: []
+ }
+ }
}
export async function checkBrowserPackage(packageDirectory) {
@@ -481,6 +510,28 @@ async function main(arguments_) {
await fs.readFile(path.join(packageDirectory, 'package.json'), 'utf8')
)
const measurements = await checkBrowserPackage(packageDirectory)
+ const outputDirectory = process.env.BROWSER_COMPOSITION_DIRECTORY
+ if (outputDirectory) {
+ await fs.mkdir(outputDirectory, { recursive: true })
+ const slug = manifest.name.replace(/^@/, '').replaceAll('/', '-')
+ const budget = JSON.parse(
+ await fs.readFile(path.join(packageDirectory, 'browser-budget.json'), 'utf8')
+ )
+ await fs.writeFile(
+ path.join(outputDirectory, `${slug}.json`),
+ `${JSON.stringify(
+ {
+ schemaVersion: 1,
+ package: manifest.name,
+ version: manifest.version,
+ entry: budget.entry,
+ measurements
+ },
+ null,
+ 2
+ )}\n`
+ )
+ }
console.log(
`Verified ${manifest.name}@${manifest.version} exact-tarball browser contract: ` +
JSON.stringify(measurements)
diff --git a/scripts/check-browser-package.test.mjs b/scripts/check-browser-package.test.mjs
index 961acbab6..60a736803 100644
--- a/scripts/check-browser-package.test.mjs
+++ b/scripts/check-browser-package.test.mjs
@@ -3,6 +3,7 @@ import { test } from 'node:test'
import {
aggregateBundleSizes,
+ bundleComposition,
bundleSizes,
prohibitedModuleIds,
prohibitedRuntimeSpecifiers,
@@ -37,6 +38,24 @@ test('browser bundle composition rejects Node and server dependencies', () => {
)
})
+test('browser composition reports stable chunk, module, and package evidence', () => {
+ assert.deepEqual(
+ bundleComposition(
+ [
+ '/consumer/node_modules/@bsv/sdk/mod.js',
+ '/consumer/node_modules/.pnpm/uuid@11/node_modules/uuid/index.js',
+ '/consumer/entry.mjs'
+ ],
+ ['/tmp/consumer.mjs', '/tmp/chunk.js', '/tmp/consumer.mjs.map']
+ ),
+ {
+ chunks: 2,
+ modules: 3,
+ packages: ['@bsv/sdk', 'uuid']
+ }
+ )
+})
+
test('browser bundle budgets validate every compression dimension', () => {
const actual = bundleSizes(Buffer.from('browser-contract'.repeat(100)))
validateBundleBudget(actual, actual, 'exact')
diff --git a/scripts/check-package-artifact.mjs b/scripts/check-package-artifact.mjs
index 484894742..67e438b7e 100644
--- a/scripts/check-package-artifact.mjs
+++ b/scripts/check-package-artifact.mjs
@@ -132,6 +132,185 @@ function identityErrors(packResult, manifest) {
return errors
}
+function escapeRegularExpression(value) {
+ return value.replace(/[.*+?^${}()|[\]\\]/g, String.raw`\$&`)
+}
+
+function exportTargets(value, location = 'exports') {
+ if (value === null) return []
+ if (typeof value === 'string') return [{ location, target: value }]
+ if (Array.isArray(value)) {
+ return value.flatMap((item, index) => exportTargets(item, `${location}[${index}]`))
+ }
+ if (typeof value === 'object') {
+ return Object.entries(value).flatMap(([condition, target]) =>
+ exportTargets(target, `${location}.${condition}`)
+ )
+ }
+ return [{ location, target: value }]
+}
+
+function exportSubpathEntries(exports_) {
+ if (exports_ === undefined || exports_ === null) return []
+ if (typeof exports_ === 'object' && exports_ !== null && !Array.isArray(exports_)) {
+ const keys = Object.keys(exports_)
+ if (keys.some(key => key.startsWith('.'))) {
+ return Object.entries(exports_).filter(([key]) => key.startsWith('.'))
+ }
+ }
+ return [['.', exports_]]
+}
+
+function wildcardExpression(pattern) {
+ return new RegExp(`^${pattern.split('*').map(escapeRegularExpression).join('(.+)')}$`)
+}
+
+function expandExportTarget(subpath, target, files) {
+ if (!target.includes('*')) return files.includes(target.slice(2)) ? [subpath] : []
+ const expression = wildcardExpression(target.slice(2))
+ return files.flatMap(file => {
+ const match = expression.exec(file)
+ if (!match) return []
+ let expanded = subpath
+ for (const value of match.slice(1)) expanded = expanded.replace('*', value)
+ return [expanded]
+ })
+}
+
+export function validateManifestArtifactContract(manifest, files) {
+ const errors = sideEffectsErrors(manifest)
+ errors.push(...peerMetadataErrors(manifest), ...optionalDependencyErrors(manifest))
+ for (const [subpath, value] of exportSubpathEntries(manifest.exports)) {
+ const targets = exportTargets(value, `exports.${subpath}`)
+ if (targets.length === 0) errors.push(`${subpath} has no export target`)
+ for (const { location, target } of targets) {
+ errors.push(...exportTargetErrors(location, target, subpath, files))
+ }
+ }
+ return errors
+}
+
+function sideEffectsErrors(manifest) {
+ if (
+ typeof manifest.sideEffects !== 'boolean' &&
+ !(
+ Array.isArray(manifest.sideEffects) &&
+ manifest.sideEffects.every(value => typeof value === 'string' && value.length > 0)
+ )
+ ) {
+ return ['package.json sideEffects must be an explicit boolean or string array']
+ }
+ return []
+}
+
+function peerMetadataErrors(manifest) {
+ const errors = []
+ const peerNames = new Set(Object.keys(manifest.peerDependencies ?? {}))
+ for (const [name, metadata] of Object.entries(manifest.peerDependenciesMeta ?? {})) {
+ if (!peerNames.has(name)) errors.push(`peerDependenciesMeta contains undeclared peer ${name}`)
+ if (
+ typeof metadata !== 'object' ||
+ metadata === null ||
+ Array.isArray(metadata) ||
+ Object.keys(metadata).some(key => key !== 'optional') ||
+ (metadata.optional !== undefined && typeof metadata.optional !== 'boolean')
+ ) {
+ errors.push(`peerDependenciesMeta.${name} must contain only an optional boolean`)
+ }
+ }
+ return errors
+}
+
+function optionalDependencyErrors(manifest) {
+ const errors = []
+ const optionalNames = new Set(Object.keys(manifest.optionalDependencies ?? {}))
+ for (const name of Object.keys(manifest.dependencies ?? {})) {
+ if (optionalNames.has(name)) {
+ errors.push(`${name} cannot be both a dependency and optionalDependency`)
+ }
+ }
+ return errors
+}
+
+function exportTargetErrors(location, target, subpath, files) {
+ if (typeof target !== 'string') {
+ return [`${location} must resolve to a string or null`]
+ }
+ if (!target.startsWith('./') || target.includes('\\') || target.split('/').includes('..')) {
+ return [`${location} has unsafe package target ${JSON.stringify(target)}`]
+ }
+ return expandExportTarget(subpath, target, files).length === 0
+ ? [`${location} target ${target} does not match a packed file`]
+ : []
+}
+
+export function concretePublicEntrypoints(manifest, files) {
+ const entrypoints = new Set()
+ for (const [subpath, value] of exportSubpathEntries(manifest.exports)) {
+ for (const { target } of exportTargets(value)) {
+ if (typeof target !== 'string' || !target.startsWith('./')) continue
+ if (isDeclarationFile(target.replaceAll('*', 'entry'))) continue
+ for (const entrypoint of expandExportTarget(subpath, target, files)) {
+ entrypoints.add(entrypoint)
+ }
+ }
+ }
+ return [...entrypoints].sort((left, right) => left.localeCompare(right))
+}
+
+function exportedJavaScriptTargets(manifest, files) {
+ const javascriptTargets = new Set()
+ for (const [, value] of exportSubpathEntries(manifest.exports)) {
+ for (const { target } of exportTargets(value)) {
+ if (typeof target !== 'string' || !target.startsWith('./')) continue
+ addExportedJavaScriptFiles(javascriptTargets, target, files)
+ }
+ }
+ return javascriptTargets
+}
+
+function addExportedJavaScriptFiles(javascriptTargets, target, files) {
+ const targetPattern = target.slice(2)
+ const expression = target.includes('*') ? wildcardExpression(targetPattern) : undefined
+ for (const file of files) {
+ if (isExportedJavaScriptFile(file, targetPattern, expression)) {
+ javascriptTargets.add(file)
+ }
+ }
+}
+
+function isExportedJavaScriptFile(file, targetPattern, expression) {
+ const targetMatches = expression ? expression.test(file) : file === targetPattern
+ return targetMatches && /\.[cm]?js$/i.test(file)
+}
+
+async function sourceMapErrors(packageDirectory, file, files) {
+ const source = await fs.readFile(path.join(packageDirectory, file), 'utf8')
+ const match = /\/\/[#@]\s*sourceMappingURL=([^\s]+)\s*$/.exec(source)
+ if (!match || match[1].startsWith('data:')) return []
+ const mapFile = path.posix.normalize(path.posix.join(path.posix.dirname(file), match[1]))
+ if (mapFile.startsWith('../') || !files.includes(mapFile)) {
+ return [`${file} references missing packed source map ${match[1]}`]
+ }
+ try {
+ const sourceMap = JSON.parse(await fs.readFile(path.join(packageDirectory, mapFile), 'utf8'))
+ return !Array.isArray(sourceMap.sources) || sourceMap.sources.length === 0
+ ? [`${mapFile} must contain at least one source`]
+ : []
+ } catch (error) {
+ return [`${mapFile} is not a valid source map: ${error.message}`]
+ }
+}
+
+export async function validateReferencedSourceMaps(packageDirectory, manifest, files) {
+ const errors = []
+ const javascriptTargets = exportedJavaScriptTargets(manifest, files)
+ for (const file of javascriptTargets) {
+ errors.push(...(await sourceMapErrors(packageDirectory, file, files)))
+ }
+ return errors
+}
+
export function validatePackedFiles(packResult, manifest, allowedSourcePrefixes = []) {
const normalizedSourcePrefixes = normalizeSourcePrefixes(allowedSourcePrefixes)
const files = (packResult.files ?? []).map(file => file.path)
@@ -139,7 +318,8 @@ export function validatePackedFiles(packResult, manifest, allowedSourcePrefixes
...requiredFileErrors(files),
...readmeErrors(files),
...files.flatMap(file => packedFileErrors(file, normalizedSourcePrefixes)),
- ...identityErrors(packResult, manifest)
+ ...identityErrors(packResult, manifest),
+ ...validateManifestArtifactContract(manifest, files)
]
}
@@ -268,7 +448,9 @@ async function checkConsumer({
binName,
binArguments,
consumerDependencies,
- localConsumerDependencyTarballs
+ localConsumerDependencyTarballs,
+ publicEntrypoints,
+ esmOnlyEntrypoints
}) {
const consumerDirectory = await fs.mkdtemp(path.join(os.tmpdir(), 'ts-stack-package-consumer-'))
try {
@@ -314,6 +496,25 @@ async function checkConsumer({
)
}
}
+ for (const subpath of publicEntrypoints) {
+ const specifier = packageSpecifier(manifest.name, subpath)
+ if (modes.includes('esm')) {
+ await run(
+ 'node',
+ [
+ '--input-type=module',
+ '--eval',
+ `await import.meta.resolve(${JSON.stringify(specifier)})`
+ ],
+ { cwd: consumerDirectory }
+ )
+ }
+ if (modes.includes('cjs') && !esmOnlyEntrypoints.includes(subpath)) {
+ await run('node', ['--eval', `require.resolve(${JSON.stringify(specifier)})`], {
+ cwd: consumerDirectory
+ })
+ }
+ }
await checkInstalledBin(consumerDirectory, manifest, binName, binArguments)
} finally {
await fs.rm(consumerDirectory, { recursive: true, force: true })
@@ -373,7 +574,11 @@ export async function checkPackageArtifact({
)) {
localDependencies.push(await packPackage(dependencyDirectory))
}
- const payloadErrors = validatePackedFiles(packed.result, manifest, allowedSourcePrefixes)
+ const packedFiles = (packed.result.files ?? []).map(file => file.path)
+ const payloadErrors = [
+ ...validatePackedFiles(packed.result, manifest, allowedSourcePrefixes),
+ ...(await validateReferencedSourceMaps(packageDirectory, manifest, packedFiles))
+ ]
const publintErrors = await checkPublint(packed.tarballPath)
const errors = [...payloadErrors, ...publintErrors]
if (errors.length > 0) {
@@ -390,7 +595,9 @@ export async function checkPackageArtifact({
binName,
binArguments,
consumerDependencies,
- localConsumerDependencyTarballs: localDependencies.map(dependency => dependency.tarballPath)
+ localConsumerDependencyTarballs: localDependencies.map(dependency => dependency.tarballPath),
+ publicEntrypoints: concretePublicEntrypoints(manifest, packedFiles),
+ esmOnlyEntrypoints
})
return manifest
} finally {
@@ -447,6 +654,8 @@ async function main(arguments_) {
})
const validations = [
'packed payload',
+ 'all conditional and wildcard exports',
+ 'referenced source maps',
'publint',
...(validateTypes ? ['strict type resolution'] : []),
`${modes.join('/')} clean consumers`,
diff --git a/scripts/check-package-artifact.test.mjs b/scripts/check-package-artifact.test.mjs
index a6cedfd03..1adebdb1e 100644
--- a/scripts/check-package-artifact.test.mjs
+++ b/scripts/check-package-artifact.test.mjs
@@ -1,15 +1,23 @@
import assert from 'node:assert/strict'
+import fs from 'node:fs/promises'
+import os from 'node:os'
+import path from 'node:path'
import test from 'node:test'
import {
+ concretePublicEntrypoints,
typeProblemsForModes,
+ validateManifestArtifactContract,
validatePackedFiles,
+ validateReferencedSourceMaps,
workspaceRuntimeClosure
} from './check-package-artifact.mjs'
const manifest = {
name: '@bsv/example',
- version: '1.2.3'
+ version: '1.2.3',
+ sideEffects: false,
+ exports: './dist/index.js'
}
test('packed artifact policy accepts a minimal compiled package', () => {
@@ -107,6 +115,92 @@ test('strict type policy ignores only the unsupported CommonJS mode for ESM-only
assert.deepEqual(typeProblemsForModes(problems, ['esm', 'cjs'], [], ['.']), [])
})
+test('artifact contract expands every concrete wildcard export and validates target payloads', () => {
+ const exportedManifest = {
+ ...manifest,
+ exports: {
+ '.': { import: './dist/index.js', types: './dist/index.d.ts' },
+ './*.ts': {
+ import: './dist/src/*.js',
+ types: './dist/src/*.d.ts'
+ }
+ },
+ peerDependencies: { react: '>=18' },
+ peerDependenciesMeta: { react: { optional: true } }
+ }
+ const files = [
+ 'dist/index.d.ts',
+ 'dist/index.js',
+ 'dist/src/type-only.d.ts',
+ 'dist/src/alpha.d.ts',
+ 'dist/src/alpha.js',
+ 'dist/src/nested/beta.d.ts',
+ 'dist/src/nested/beta.js'
+ ]
+
+ assert.deepEqual(validateManifestArtifactContract(exportedManifest, files), [])
+ assert.deepEqual(concretePublicEntrypoints(exportedManifest, files), [
+ '.',
+ './alpha.ts',
+ './nested/beta.ts'
+ ])
+ assert.ok(
+ validateManifestArtifactContract(
+ {
+ ...exportedManifest,
+ exports: { '.': './dist/missing.js' },
+ peerDependenciesMeta: { missing: { optional: true } }
+ },
+ files
+ ).some(error => error.includes('does not match a packed file'))
+ )
+})
+
+test('artifact contract permits a bin-only package without runtime exports', () => {
+ assert.deepEqual(
+ validateManifestArtifactContract(
+ {
+ name: '@bsv/cli',
+ version: '1.0.0',
+ sideEffects: false,
+ bin: { cli: './dist/index.mjs' }
+ },
+ ['dist/index.mjs']
+ ),
+ []
+ )
+})
+
+test('artifact contract validates each referenced packed source map', async t => {
+ const directory = await fs.mkdtemp(path.join(os.tmpdir(), 'artifact-source-map-'))
+ t.after(async () => await fs.rm(directory, { recursive: true, force: true }))
+ await fs.mkdir(path.join(directory, 'dist'))
+ await fs.writeFile(
+ path.join(directory, 'dist/index.js'),
+ 'export const value = 1\n//# sourceMappingURL=index.js.map\n'
+ )
+ await fs.writeFile(
+ path.join(directory, 'dist/index.js.map'),
+ JSON.stringify({ version: 3, sources: ['../src/index.ts'], mappings: '' })
+ )
+ const sourceMapManifest = {
+ ...manifest,
+ exports: { '.': './dist/index.js' }
+ }
+ assert.deepEqual(
+ await validateReferencedSourceMaps(directory, sourceMapManifest, [
+ 'dist/index.js',
+ 'dist/index.js.map'
+ ]),
+ []
+ )
+ assert.ok(
+ (await validateReferencedSourceMaps(directory, sourceMapManifest, ['dist/index.js'])).some(
+ error => error.includes('missing packed source map')
+ )
+ )
+})
+
test('packed consumers use the exact transitive workspace runtime closure', () => {
const root = {
name: '@bsv/root',
diff --git a/scripts/check-wallet-toolbox-platform.mjs b/scripts/check-wallet-toolbox-platform.mjs
index 539b28654..331139ca5 100644
--- a/scripts/check-wallet-toolbox-platform.mjs
+++ b/scripts/check-wallet-toolbox-platform.mjs
@@ -101,6 +101,20 @@ function compareText(left, right) {
return left.localeCompare(right)
}
+function packageNames(moduleIds) {
+ return [
+ ...new Set(
+ moduleIds.flatMap(moduleId => {
+ const normalized = moduleId.replaceAll('\\', '/')
+ const installed = normalized.split('/node_modules/').at(-1)
+ if (!installed || installed === normalized) return []
+ const parts = installed.split('/')
+ return [parts[0].startsWith('@') ? parts.slice(0, 2).join('/') : parts[0]]
+ })
+ )
+ ].sort(compareText)
+}
+
const run = createCommandRunner({
timeoutMs: COMMAND_TIMEOUT_MS,
maxBufferBytes: MAX_BUFFER_BYTES,
@@ -345,7 +359,22 @@ async function checkBrowser(consumerDirectory, budget) {
const esbuildSizes = sizes(esbuildBundle.code)
validateBudget(esbuildSizes, budget.esbuild, 'esbuild browser bundle')
- return { vite: viteSizes, esbuild: esbuildSizes }
+ return {
+ vite: {
+ bytes: viteSizes,
+ composition: {
+ modules: viteModules.size,
+ packages: packageNames([...viteModules])
+ }
+ },
+ esbuild: {
+ bytes: esbuildSizes,
+ composition: {
+ modules: Object.keys(esbuildResult.metafile.inputs).length,
+ packages: packageNames(Object.keys(esbuildResult.metafile.inputs))
+ }
+ }
+ }
}
function hermesCompilerPath() {
@@ -486,6 +515,23 @@ async function main() {
profile === 'browser'
? await checkBrowser(consumerDirectory, budget.maximumBytes)
: await checkMobile(consumerDirectory, budget.maximumBytes)
+ if (profile === 'browser' && process.env.BROWSER_COMPOSITION_DIRECTORY) {
+ await fs.mkdir(process.env.BROWSER_COMPOSITION_DIRECTORY, { recursive: true })
+ await fs.writeFile(
+ path.join(process.env.BROWSER_COMPOSITION_DIRECTORY, 'bsv-wallet-toolbox-client.json'),
+ `${JSON.stringify(
+ {
+ schemaVersion: 1,
+ package: manifest.name,
+ version: manifest.version,
+ entry: '.',
+ measurements
+ },
+ null,
+ 2
+ )}\n`
+ )
+ }
console.log(
`Verified ${manifest.name}@${manifest.version} ${profile} platform contract: ` +
`${JSON.stringify(measurements)}`
diff --git a/scripts/ci-orchestration.test.mjs b/scripts/ci-orchestration.test.mjs
index 70c5ba849..0b5f51a20 100644
--- a/scripts/ci-orchestration.test.mjs
+++ b/scripts/ci-orchestration.test.mjs
@@ -21,6 +21,11 @@ test('CI shares one audited build across coverage and browser consumer lanes', (
/^ matrix: \$\{\{ fromJSON\(needs\.prepare\.outputs\.browser-matrix\) \}\}$/m
)
assert.match(workflow, /PREBUILT_PACKAGE_OUTPUTS: '1'/)
+ assert.match(workflow, /BROWSER_COMPOSITION_DIRECTORY:/)
+ assert.match(workflow, /name: browser-composition-\$\{\{ matrix\.shard \}\}/)
+ assert.match(workflow, /name: browser-composition-sdk/)
+ assert.match(workflow, /name: browser-composition-verifast/)
+ assert.match(workflow, /name: browser-composition-wallet/)
assert.match(workflow, /run-prebuilt-package-script\.mjs" \\\n\s+--script test:browser/)
assert.match(workflow, /run-prebuilt-package-script\.mjs" \\\n\s+--script test:coverage/)
assert.doesNotMatch(workflow, /@bsv\/sdk run test:coverage/)
diff --git a/scripts/ci-performance.mjs b/scripts/ci-performance.mjs
index 1502ec14b..42963dd46 100644
--- a/scripts/ci-performance.mjs
+++ b/scripts/ci-performance.mjs
@@ -137,13 +137,7 @@ export function createReport({
'per-job and per-step duration',
'job queue time',
'artifact upload/download step duration'
- ],
- unavailableFromActionsApi: [
- 'hosted-runner CPU utilization',
- 'hosted-runner memory utilization',
- 'action-internal cache hit rate'
- ],
- note: 'Unavailable metrics require explicit in-run instrumentation; they are not inferred from the GitHub Actions REST API.'
+ ]
},
groups: Object.fromEntries(
Object.entries(groups).map(([name, runs]) => [name, { summary: groupSummary(runs), runs }])
@@ -407,12 +401,7 @@ function renderSummary(report, comparisons) {
comparisons.length === 0
? 'Performance budget: passed.'
: ['Performance budget: failed.', '', comparisonDetails].join('\n')
- lines.push(
- '',
- budgetStatus,
- '',
- 'GitHub-hosted CPU, memory, and action-internal cache-hit data are not exposed by the Actions REST API and remain an explicit instrumentation gap.'
- )
+ lines.push('', budgetStatus)
return `${lines.join('\n')}\n`
}
diff --git a/scripts/dependency-release-governance.mjs b/scripts/dependency-release-governance.mjs
index 8d8136962..52c39aaf1 100644
--- a/scripts/dependency-release-governance.mjs
+++ b/scripts/dependency-release-governance.mjs
@@ -198,6 +198,61 @@ function validateOverrideRegistry(policy, exceptions, errors) {
for (const registration of policy.overrideRegistry) {
validateOverrideException(registration, byId, policy.owner, today, errors)
}
+ const review = policy.overrideRemovalReview
+ if (
+ review?.reviewedAt !== policy.lastReviewed ||
+ review?.retainedCount !== actual.length ||
+ !isNonEmptyString(review?.method) ||
+ !isNonEmptyString(review?.result) ||
+ !isNonEmptyString(review?.nextReview)
+ ) {
+ errors.push('overrideRemovalReview must record the current complete removal rehearsal')
+ }
+}
+
+function dispositionMatches(disposition, declaration) {
+ return (
+ disposition.dependency === declaration.name &&
+ (disposition.field === undefined || disposition.field === declaration.field) &&
+ (disposition.manifest === undefined || disposition.manifest === declaration.manifest) &&
+ (disposition.manifestPrefix === undefined ||
+ declaration.manifest.startsWith(disposition.manifestPrefix)) &&
+ (disposition.declared === undefined || disposition.declared === declaration.declared) &&
+ (disposition.declaredPrefix === undefined ||
+ declaration.declared.startsWith(disposition.declaredPrefix))
+ )
+}
+
+function validateDirectInventoryPolicy(policy, errors) {
+ const inventory = policy.directLatestInventory
+ if (
+ !Number.isSafeInteger(inventory.minimumReleaseAgeMinutes) ||
+ inventory.minimumReleaseAgeMinutes < 1
+ ) {
+ errors.push('directLatestInventory.minimumReleaseAgeMinutes must be positive')
+ }
+ const classifications = new Set(inventory.classifications)
+ const declarations = dependencyDeclarations()
+ for (const disposition of inventory.dispositions ?? []) {
+ for (const field of [
+ 'dependency',
+ 'classification',
+ 'rationale',
+ 'owner',
+ 'reviewBy',
+ 'removeWhen'
+ ]) {
+ if (!isNonEmptyString(disposition[field])) {
+ errors.push(`dependency disposition must define ${field}`)
+ }
+ }
+ if (!classifications.has(disposition.classification)) {
+ errors.push(`unknown dependency disposition classification ${disposition.classification}`)
+ }
+ if (!declarations.some(declaration => dispositionMatches(disposition, declaration))) {
+ errors.push(`stale dependency disposition for ${disposition.dependency}`)
+ }
+ }
}
function validateOverrideException(registration, exceptionsById, owner, today, errors) {
@@ -252,6 +307,7 @@ export function validateDependencyReleaseGovernance(root = ROOT) {
validateRoutinePolicy(policy, errors)
validateEvidenceTemplate(policy, errors)
validateFirstParty(policy, projects, errors)
+ validateDirectInventoryPolicy(policy, errors)
validateOverrideRegistry(policy, exceptions, errors)
validateScheduledVerification(policy, errors)
return errors
@@ -304,13 +360,53 @@ function declaredMajor(value) {
return match ? Number(match[1]) : undefined
}
-export async function createDirectLatestInventory() {
+function releaseAgeMinutes(publishedAt, now) {
+ if (!publishedAt) return undefined
+ const milliseconds = now.getTime() - new Date(publishedAt).getTime()
+ return Number.isFinite(milliseconds) ? Math.floor(milliseconds / 60_000) : undefined
+}
+
+export function classifyDirectDependency(declaration, registry, policy, now = new Date()) {
+ if (declaration.name.startsWith('@bsv/')) return 'first-party-release-held'
+ const disposition = (policy.directLatestInventory.dispositions ?? []).find(candidate =>
+ dispositionMatches(candidate, declaration)
+ )
+ if (disposition) return disposition.classification
+
+ const declared = declaredMajor(declaration.declared)
+ const latest = declaredMajor(registry.latest)
+ if (registry.latest && !String(declaration.declared).includes(registry.latest)) {
+ const age = releaseAgeMinutes(registry.publishedAt, now)
+ if (
+ age !== undefined &&
+ age >= 0 &&
+ age < policy.directLatestInventory.minimumReleaseAgeMinutes
+ ) {
+ return 'release-age-hold'
+ }
+ }
+ if (declared !== undefined && latest !== undefined && declared < latest) {
+ return 'major-migration'
+ }
+ if (registry.latest && !String(declaration.declared).includes(registry.latest)) {
+ return 'compatible-update'
+ }
+ return 'current'
+}
+
+export async function createDirectLatestInventory(now = new Date()) {
+ const policy = readJson(POLICY_PATH)
const declarations = dependencyDeclarations()
const names = [...new Set(declarations.map(item => item.name))].sort(compareText)
const metadata = await mapWithConcurrency(names, 8, async name => {
try {
- const latest = await npmView(name, ['name', 'version'])
- return { name, latest: latest.version, queryStatus: 'ok' }
+ const latest = await npmView(name, ['name', 'version', 'time'])
+ return {
+ name,
+ latest: latest.version,
+ publishedAt: latest.time?.[latest.version],
+ queryStatus: 'ok'
+ }
} catch (error) {
return { name, queryStatus: 'unavailable', error: String(error.message).slice(0, 500) }
}
@@ -318,16 +414,12 @@ export async function createDirectLatestInventory() {
const byName = new Map(metadata.map(item => [item.name, item]))
const rows = declarations.map(declaration => {
const registry = byName.get(declaration.name)
- const declared = declaredMajor(declaration.declared)
- const latest = declaredMajor(registry.latest)
- let classification = 'current'
- if (declaration.name.startsWith('@bsv/')) classification = 'first-party-release-held'
- else if (declared !== undefined && latest !== undefined && declared < latest) {
- classification = 'major-migration'
- } else if (registry.latest && !String(declaration.declared).includes(registry.latest)) {
- classification = 'compatible-update'
+ return {
+ ...declaration,
+ latest: registry.latest,
+ latestPublishedAt: registry.publishedAt,
+ classification: classifyDirectDependency(declaration, registry, policy, now)
}
- return { ...declaration, latest: registry.latest, classification }
})
return {
schemaVersion: 1,
diff --git a/scripts/dependency-release-governance.test.mjs b/scripts/dependency-release-governance.test.mjs
index 7fb24ea3c..75b3dc520 100644
--- a/scripts/dependency-release-governance.test.mjs
+++ b/scripts/dependency-release-governance.test.mjs
@@ -1,7 +1,10 @@
import assert from 'node:assert/strict'
+import fs from 'node:fs'
+import path from 'node:path'
import test from 'node:test'
import {
+ classifyDirectDependency,
collectOverrides,
immutableDeploymentImages,
parsePnpmOverrides,
@@ -9,6 +12,10 @@ import {
validatePullRequestEvidence
} from './dependency-release-governance.mjs'
+const dependencyPolicy = JSON.parse(
+ fs.readFileSync(path.join(process.cwd(), 'governance/dependency-release-policy.json'), 'utf8')
+)
+
test('dependency and release governance is internally complete', () => {
assert.deepEqual(validateDependencyReleaseGovernance(), [])
@@ -35,6 +42,48 @@ trustPolicy: no-downgrade
)
})
+test('direct dependency inventory distinguishes freshness holds and governed compatibility', () => {
+ const declaration = {
+ name: 'example',
+ declared: '^1.0.0',
+ field: 'dependencies',
+ manifest: 'package.json'
+ }
+ const now = new Date('2026-07-30T18:00:00.000Z')
+ assert.equal(
+ classifyDirectDependency(
+ declaration,
+ { latest: '1.1.0', publishedAt: '2026-07-30T17:30:00.000Z' },
+ dependencyPolicy,
+ now
+ ),
+ 'release-age-hold'
+ )
+ assert.equal(
+ classifyDirectDependency(
+ declaration,
+ { latest: '1.1.0', publishedAt: '2026-07-28T17:30:00.000Z' },
+ dependencyPolicy,
+ now
+ ),
+ 'compatible-update'
+ )
+ assert.equal(
+ classifyDirectDependency(
+ {
+ name: 'typescript',
+ declared: 'npm:@typescript/typescript6@6.0.2',
+ field: 'devDependencies',
+ manifest: 'packages/sdk/package.json'
+ },
+ { latest: '7.0.2', publishedAt: '2026-07-01T00:00:00.000Z' },
+ dependencyPolicy,
+ now
+ ),
+ 'toolchain-bridge'
+ )
+})
+
test('dependency evidence is required only for dependency-shaped changes', () => {
assert.deepEqual(validatePullRequestEvidence('', ['packages/sdk/src/index.ts']), [])
assert.deepEqual(validatePullRequestEvidence('', ['pnpm-lock.yaml']), [
diff --git a/scripts/patch-coverage.mjs b/scripts/patch-coverage.mjs
new file mode 100644
index 000000000..17d3f20a5
--- /dev/null
+++ b/scripts/patch-coverage.mjs
@@ -0,0 +1,198 @@
+#!/usr/bin/env node
+
+import { execFileSync } from 'node:child_process'
+import fs from 'node:fs'
+import path from 'node:path'
+import process from 'node:process'
+import { fileURLToPath, pathToFileURL } from 'node:url'
+
+export const REPOSITORY_ROOT = fileURLToPath(new URL('..', import.meta.url))
+
+const EXCLUDED_SOURCE_PATTERNS = [
+ /(?:^|\/)__tests__(?:\/|$)/,
+ /(?:^|\/)tests?(?:\/|$)/,
+ /\.(?:spec|test)\.[cm]?[jt]sx?$/
+]
+
+function normalizedPath(value) {
+ return value.split(path.sep).join('/').replace(/^\.\//, '')
+}
+
+function isGovernedSource(file) {
+ return (
+ file.startsWith('packages/') &&
+ /\.[cm]?[jt]sx?$/.test(file) &&
+ !EXCLUDED_SOURCE_PATTERNS.some(pattern => pattern.test(file))
+ )
+}
+
+function governedDiffFile(line) {
+ const target = line.slice(4)
+ if (target === '/dev/null') return undefined
+ const file = normalizedPath(target.replace(/^b\//, ''))
+ return isGovernedSource(file) ? file : undefined
+}
+
+function addChangedHunkLines(line, changedLines) {
+ const match = /\+(\d+)(?:,(\d+))?/.exec(line)
+ if (!match) return
+ const start = Number(match[1])
+ const count = match[2] === undefined ? 1 : Number(match[2])
+ for (let offset = 0; offset < count; offset++) changedLines.add(start + offset)
+}
+
+export function changedLinesFromDiff(diff) {
+ const changed = new Map()
+ let file
+ for (const line of diff.split(/\r?\n/)) {
+ if (line.startsWith('+++ ')) {
+ file = governedDiffFile(line)
+ if (file && !changed.has(file)) changed.set(file, new Set())
+ continue
+ }
+ if (!file || !changed.has(file) || !line.startsWith('@@ ')) continue
+ addChangedHunkLines(line, changed.get(file))
+ }
+ return changed
+}
+
+function coverageFile(coverage, source) {
+ const normalized = normalizedPath(source)
+ if (!coverage.has(normalized)) {
+ coverage.set(normalized, { lines: new Map(), branches: new Map() })
+ }
+ return coverage.get(normalized)
+}
+
+export function mergeLcov(texts) {
+ const coverage = new Map()
+ for (const text of texts) {
+ let current
+ for (const line of text.split(/\r?\n/)) {
+ if (line.startsWith('SF:')) {
+ current = coverageFile(coverage, line.slice(3))
+ } else if (current && line.startsWith('DA:')) {
+ const [lineNumber, hits] = line.slice(3).split(',')
+ const key = Number(lineNumber)
+ current.lines.set(key, Math.max(current.lines.get(key) ?? 0, Number(hits)))
+ } else if (current && line.startsWith('BRDA:')) {
+ const [lineNumber, block, branch, taken] = line.slice(5).split(',')
+ const key = `${lineNumber}:${block}:${branch}`
+ const hits = taken === '-' ? 0 : Number(taken)
+ current.branches.set(key, Math.max(current.branches.get(key) ?? 0, hits))
+ } else if (line === 'end_of_record') {
+ current = undefined
+ }
+ }
+ }
+ return coverage
+}
+
+export function evaluatePatchCoverage(changed, coverage) {
+ const misses = []
+ const missingFiles = []
+ const points = { covered: 0, total: 0 }
+ for (const [file, lines] of changed) {
+ const fileCoverage = coverage.get(file)
+ if (!fileCoverage) {
+ missingFiles.push(file)
+ continue
+ }
+ addFileCoverage(file, lines, fileCoverage, points, misses)
+ }
+ return {
+ ...points,
+ percent: points.total === 0 ? 100 : (points.covered / points.total) * 100,
+ misses,
+ missingFiles
+ }
+}
+
+function addFileCoverage(file, lines, fileCoverage, points, misses) {
+ for (const line of [...lines].sort((left, right) => left - right)) {
+ addLineCoverage(file, line, fileCoverage, points, misses)
+ addBranchCoverage(file, line, fileCoverage, points, misses)
+ }
+}
+
+function addLineCoverage(file, line, fileCoverage, points, misses) {
+ if (!fileCoverage.lines.has(line)) return
+ points.total++
+ if (fileCoverage.lines.get(line) > 0) points.covered++
+ else misses.push(`${file}:${line} (line)`)
+}
+
+function addBranchCoverage(file, line, fileCoverage, points, misses) {
+ for (const [key, hits] of fileCoverage.branches) {
+ if (!key.startsWith(`${line}:`)) continue
+ points.total++
+ if (hits > 0) points.covered++
+ else misses.push(`${file}:${line} (branch ${key.slice(String(line).length + 1)})`)
+ }
+}
+
+function option(arguments_, name) {
+ const index = arguments_.indexOf(name)
+ return index === -1 ? undefined : arguments_[index + 1]
+}
+
+function lcovFiles(directory) {
+ const files = []
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
+ const entryPath = path.join(directory, entry.name)
+ if (entry.isDirectory()) files.push(...lcovFiles(entryPath))
+ else if (entry.isFile() && entry.name.endsWith('.lcov.info')) files.push(entryPath)
+ }
+ return files.sort((left, right) => left.localeCompare(right))
+}
+
+async function main(arguments_) {
+ const base = option(arguments_, '--base')
+ const directory = option(arguments_, '--lcov-directory')
+ const target = Number(option(arguments_, '--target') ?? 90)
+ if (!base || !directory || !Number.isFinite(target) || target <= 0 || target > 100) {
+ throw new Error('Usage: patch-coverage.mjs --base --lcov-directory [--target 90]')
+ }
+ const diff = execFileSync(
+ '/usr/bin/git',
+ ['diff', '--unified=0', '--diff-filter=AMRC', `${base}...HEAD`, '--', 'packages'],
+ { cwd: REPOSITORY_ROOT, encoding: 'utf8', maxBuffer: 20 * 1024 * 1024 }
+ )
+ const changed = changedLinesFromDiff(diff)
+ const directoryPath = path.resolve(directory)
+ const files = fs.existsSync(directoryPath) ? lcovFiles(directoryPath) : []
+ if (changed.size > 0 && files.length === 0) {
+ throw new Error(`Changed production files require LCOV inputs beneath ${directory}`)
+ }
+ const result = evaluatePatchCoverage(
+ changed,
+ mergeLcov(files.map(file => fs.readFileSync(file, 'utf8')))
+ )
+ const summary =
+ `Patch coverage ${result.percent.toFixed(2)}% ` +
+ `(${result.covered}/${result.total} changed line/branch points; target ${target.toFixed(2)}%).`
+ console.log(summary)
+ if (process.env.GITHUB_STEP_SUMMARY) {
+ fs.appendFileSync(
+ process.env.GITHUB_STEP_SUMMARY,
+ `## Repository patch coverage\n\n${summary}\n`
+ )
+ }
+ if (result.missingFiles.length > 0) {
+ throw new Error(
+ `${summary}\nChanged production files absent from LCOV:\n${result.missingFiles.join('\n')}`
+ )
+ }
+ if (result.percent + Number.EPSILON < target) {
+ throw new Error(`${summary}\nUncovered:\n${result.misses.join('\n')}`)
+ }
+}
+
+if (import.meta.url === pathToFileURL(process.argv[1] ?? '').href) {
+ try {
+ await main(process.argv.slice(2))
+ } catch (error) {
+ console.error(error.message)
+ process.exitCode = 1
+ }
+}
diff --git a/scripts/patch-coverage.test.mjs b/scripts/patch-coverage.test.mjs
new file mode 100644
index 000000000..26ce00b3e
--- /dev/null
+++ b/scripts/patch-coverage.test.mjs
@@ -0,0 +1,78 @@
+import assert from 'node:assert/strict'
+import test from 'node:test'
+
+import { changedLinesFromDiff, evaluatePatchCoverage, mergeLcov } from './patch-coverage.mjs'
+
+test('patch coverage intersects changed production lines with merged LCOV line and branch data', () => {
+ const changed =
+ changedLinesFromDiff(`diff --git a/packages/sdk/src/example.ts b/packages/sdk/src/example.ts
++++ b/packages/sdk/src/example.ts
+@@ -1,0 +2,3 @@
+`)
+ const coverage = mergeLcov([
+ `SF:packages/sdk/src/example.ts
+DA:2,1
+DA:3,1
+DA:4,0
+BRDA:3,0,0,1
+BRDA:3,0,1,0
+end_of_record
+`,
+ `SF:packages/sdk/src/example.ts
+DA:4,1
+BRDA:3,0,1,1
+end_of_record
+`
+ ])
+
+ assert.deepEqual(evaluatePatchCoverage(changed, coverage), {
+ covered: 5,
+ total: 5,
+ percent: 100,
+ misses: [],
+ missingFiles: []
+ })
+})
+
+test('patch coverage ignores tests and reports uncovered production branches', () => {
+ const changed =
+ changedLinesFromDiff(`diff --git a/packages/sdk/src/example.ts b/packages/sdk/src/example.ts
++++ b/packages/sdk/src/example.ts
+@@ -3 +3 @@
+diff --git a/packages/sdk/src/example.test.ts b/packages/sdk/src/example.test.ts
++++ b/packages/sdk/src/example.test.ts
+@@ -1,0 +1,20 @@
+`)
+ const coverage = mergeLcov([
+ `SF:packages/sdk/src/example.ts
+DA:3,1
+BRDA:3,0,0,1
+BRDA:3,0,1,0
+end_of_record
+`
+ ])
+ const result = evaluatePatchCoverage(changed, coverage)
+
+ assert.equal(changed.size, 1)
+ assert.equal(result.covered, 2)
+ assert.equal(result.total, 3)
+ assert.ok(Math.abs(result.percent - 200 / 3) < Number.EPSILON * 100)
+ assert.deepEqual(result.misses, ['packages/sdk/src/example.ts:3 (branch 0:1)'])
+ assert.deepEqual(result.missingFiles, [])
+})
+
+test('patch coverage fails closed when a changed production file is absent from LCOV', () => {
+ const changed =
+ changedLinesFromDiff(`diff --git a/packages/sdk/src/missing.ts b/packages/sdk/src/missing.ts
++++ b/packages/sdk/src/missing.ts
+@@ -0,0 +1,2 @@
+`)
+
+ assert.deepEqual(evaluatePatchCoverage(changed, new Map()), {
+ covered: 0,
+ total: 0,
+ percent: 100,
+ misses: [],
+ missingFiles: ['packages/sdk/src/missing.ts']
+ })
+})
diff --git a/scripts/repository-health.test.mjs b/scripts/repository-health.test.mjs
index e7003df6b..650a5f216 100644
--- a/scripts/repository-health.test.mjs
+++ b/scripts/repository-health.test.mjs
@@ -62,7 +62,7 @@ test('workspace discovery exactly matches the 37-project registry', () => {
})
test('current repository health controls and ratchet are internally consistent', () => {
- const result = evaluateRepositoryHealth({ today: '2026-07-28' })
+ const result = evaluateRepositoryHealth({ today: '2026-07-30' })
assert.deepEqual(result.errors, [])
assert.equal(result.projects.length, 37)
@@ -73,10 +73,11 @@ test('current repository health controls and ratchet are internally consistent',
test('CI performance baseline retains representative full and targeted cohorts', () => {
const baseline = readJson(path.join(REPOSITORY_ROOT, 'governance/ci-performance-baseline.json'))
assert.deepEqual(validateCiPerformanceBaseline(baseline), [])
- assert.deepEqual(baseline.observability.unavailableFromActionsApi, [
- 'hosted-runner CPU utilization',
- 'hosted-runner memory utilization',
- 'action-internal cache hit rate'
+ assert.deepEqual(baseline.observability.captured, [
+ 'run duration and variance',
+ 'per-job and per-step duration',
+ 'job queue time',
+ 'artifact upload/download step duration'
])
})
diff --git a/scripts/sync-service-edge-policy.mjs b/scripts/sync-service-edge-policy.mjs
index 795930281..78acd298e 100644
--- a/scripts/sync-service-edge-policy.mjs
+++ b/scripts/sync-service-edge-policy.mjs
@@ -7,26 +7,51 @@ import { fileURLToPath } from 'node:url'
import { readUtf8FileIfExists, writeUtf8FileAtomic } from './file-system.mjs'
const repositoryRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..')
-const canonicalPath = 'infra/wab/src/security/edgePolicy.ts'
-const synchronizedPaths = [
- 'infra/uhrp-server-basic/src/security/edgePolicy.ts',
- 'infra/uhrp-server-cloud-bucket/src/security/edgePolicy.ts',
- 'infra/message-box-server/src/security/edgePolicy.ts',
- 'infra/chaintracks-server/src/security/edgePolicy.ts',
- 'packages/overlays/overlay-express/src/security/edgePolicy.ts',
- 'packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.ts'
-]
-const canonicalTestPath = 'infra/wab/src/security/edgePolicy.test.ts'
-const synchronizedTestPaths = [
- 'packages/overlays/overlay-express/src/security/edgePolicy.test.ts',
- 'packages/wallet/wallet-toolbox/src/storage/remoting/edgePolicy.test.ts'
-]
+const policy = JSON.parse(
+ fs.readFileSync(path.join(repositoryRoot, 'governance/service-edge-browser-policy.json'), 'utf8')
+)
+const canonicalPath = policy.canonicalSource
+const synchronizedPaths = policy.synchronizedSources
+const canonicalTestPath = policy.canonicalTest
+const synchronizedTestPaths = policy.synchronizedTests
const canonical = fs.readFileSync(path.join(repositoryRoot, canonicalPath), 'utf8')
const canonicalTest = fs.readFileSync(path.join(repositoryRoot, canonicalTestPath), 'utf8')
const checkOnly = process.argv.includes('--check')
let drift = false
+const policyErrors = []
+if (policy.schemaVersion !== 1 || policy.defaultContract?.corsMode !== 'public') {
+ policyErrors.push('service edge browser policy must preserve the version 1 public default')
+}
+if (
+ policy.defaultContract?.allowOrigin !== '*' ||
+ policy.defaultContract?.allowCredentials !== false ||
+ policy.defaultContract?.opaqueOrigin !== 'allowed' ||
+ policy.defaultContract?.cspControlsCors !== false
+) {
+ policyErrors.push('service edge browser policy changed the public/no-credentials contract')
+}
+for (const testName of policy.requiredContractTests ?? []) {
+ if (!canonicalTest.includes(`it('${testName}'`)) {
+ policyErrors.push(`canonical edge contract is missing ${JSON.stringify(testName)}`)
+ }
+}
+for (const integration of policy.integrations ?? []) {
+ const integrationPath = path.join(repositoryRoot, integration.integration)
+ const sourcePath = path.join(repositoryRoot, integration.source)
+ if (!fs.existsSync(sourcePath)) policyErrors.push(`${integration.service} source does not exist`)
+ if (!fs.existsSync(integrationPath)) {
+ policyErrors.push(`${integration.service} integration does not exist`)
+ continue
+ }
+ const source = fs.readFileSync(integrationPath, 'utf8')
+ for (const fragment of ['corsPolicy(', 'securityHeaders(', integration.environmentPrefix]) {
+ if (!source.includes(fragment)) {
+ policyErrors.push(`${integration.service} integration is missing ${JSON.stringify(fragment)}`)
+ }
+ }
+}
for (const [sourcePath, source, relativePath] of [
...synchronizedPaths.map(relativePath => [canonicalPath, canonical, relativePath]),
...synchronizedTestPaths.map(relativePath => [canonicalTestPath, canonicalTest, relativePath])
@@ -44,12 +69,16 @@ for (const [sourcePath, source, relativePath] of [
}
}
-if (checkOnly && drift) {
+if (policyErrors.length > 0) {
+ for (const error of policyErrors) console.error(error)
+ process.exitCode = 1
+} else if (checkOnly && drift) {
console.error('Run `pnpm sync:service-edge-policy` and commit the synchronized files.')
process.exitCode = 1
} else if (checkOnly) {
console.log(
`Service edge policy is synchronized across ${synchronizedPaths.length + 1} contexts; ` +
- `the contract test is synchronized across ${synchronizedTestPaths.length + 1} contexts.`
+ `the contract test is synchronized across ${synchronizedTestPaths.length + 1} contexts; ` +
+ `${policy.integrations.length} public service integrations preserve the browser contract.`
)
}