diff --git a/.github/package.json b/.github/package.json index 03b9a09..e6511e7 100644 --- a/.github/package.json +++ b/.github/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/github-workflows", - "version": "0.7.0", + "version": "0.7.1", "private": true, "type": "module", "engines": { diff --git a/.github/workflows/test-dast.yml b/.github/workflows/test-dast.yml index 5cc56f0..75e4bdb 100644 --- a/.github/workflows/test-dast.yml +++ b/.github/workflows/test-dast.yml @@ -34,6 +34,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} registry-url: https://registry.npmjs.org + cache: npm - name: Install dependencies run: | npm ci --ignore-scripts diff --git a/.github/workflows/test-lint.yml b/.github/workflows/test-lint.yml index f3a47c4..84138b3 100644 --- a/.github/workflows/test-lint.yml +++ b/.github/workflows/test-lint.yml @@ -34,6 +34,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} registry-url: https://registry.npmjs.org + cache: npm - name: Install dependencies run: | npm ci --ignore-scripts diff --git a/.github/workflows/test-perf.yml b/.github/workflows/test-perf.yml index b897655..0dd8b93 100644 --- a/.github/workflows/test-perf.yml +++ b/.github/workflows/test-perf.yml @@ -9,15 +9,43 @@ concurrency: env: NODE_VERSION: 24.x + # ponytail: CI wants regression signal, not precise numbers; shrink tinybench's per-bench time floor (default 5000). Raise/unset for accurate local runs. + BENCH_TIME: "1000" permissions: contents: read jobs: - unit: + setup: + name: List packages + runs-on: ubuntu-latest + timeout-minutes: 5 + outputs: + packages: ${{ steps.list.outputs.packages }} + steps: + - name: Harden runner + uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 + with: + egress-policy: audit + disable-telemetry: true + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + - name: List packages + id: list + run: | + echo "packages=$(find packages -mindepth 2 -maxdepth 2 -name 'index.perf.js' -printf '%h\n' | sed 's#packages/##' | jq -R -s -c 'split("\n") | map(select(length > 0))')" >> "$GITHUB_OUTPUT" + + perf: name: Tests (perf) + needs: setup runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 20 + strategy: + fail-fast: false + matrix: + package: ${{ fromJson(needs.setup.outputs.packages) }} steps: - name: Harden runner @@ -34,6 +62,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} registry-url: https://registry.npmjs.org + cache: npm - name: Install dependencies run: | npm ci --ignore-scripts @@ -41,5 +70,7 @@ jobs: run: | npm run build --if-present - name: Benchmarking tests + env: + PACKAGE: ${{ matrix.package }} run: | - npm run test:perf + node --test --test-concurrency=1 "packages/${PACKAGE}/index.perf.js" diff --git a/.github/workflows/test-types.yml b/.github/workflows/test-types.yml index 8b8e181..9ef2a4d 100644 --- a/.github/workflows/test-types.yml +++ b/.github/workflows/test-types.yml @@ -34,6 +34,7 @@ jobs: with: node-version: ${{ env.NODE_VERSION }} registry-url: https://registry.npmjs.org + cache: npm - name: Install dependencies run: | npm ci --ignore-scripts diff --git a/bin/esbuild b/bin/esbuild index ea60330..47bbfb6 100755 --- a/bin/esbuild +++ b/bin/esbuild @@ -3,6 +3,8 @@ set -e find packages -type f \( -name '*.node.mjs' -o -name '*.web.mjs' -o -name '*.node.mjs.map' -o -name '*.web.mjs.map' \) -delete +BUNDLE="" + for package in packages/*; do modules=$(jq -r '.exports | keys[] as $k | "\($k)"' ${package}/package.json) #length=${#modules[@]} @@ -13,14 +15,14 @@ for package in packages/*; do module="${module#./}" fi if [ -f ${package}/${module}.js ]; then - node_modules/.bin/esbuild --platform=node --target=node24 --format=esm ${package}/${module}.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.node.mjs - node_modules/.bin/esbuild --platform=browser --format=esm ${package}/${module}.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.web.mjs + node_modules/.bin/esbuild $BUNDLE --platform=node --target=node24 --format=esm ${package}/${module}.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.node.mjs + node_modules/.bin/esbuild $BUNDLE --platform=browser --format=esm ${package}/${module}.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.web.mjs fi if [ -f ${package}/${module}.node.js ]; then - node_modules/.bin/esbuild --platform=node --target=node24 --format=esm ${package}/${module}.node.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.node.mjs + node_modules/.bin/esbuild $BUNDLE --platform=node --target=node24 --format=esm ${package}/${module}.node.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.node.mjs fi if [ -f ${package}/${module}.web.js ]; then - node_modules/.bin/esbuild --platform=browser --format=esm ${package}/${module}.web.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.web.mjs + node_modules/.bin/esbuild $BUNDLE --platform=browser --format=esm ${package}/${module}.web.js --sourcemap=external --allow-overwrite --outfile=${package}/${module}.web.mjs fi done diff --git a/biome.json b/biome.json index f406365..1c90484 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.5.3/schema.json", + "$schema": "https://biomejs.dev/schemas/2.5.7/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/package-lock.json b/package-lock.json index 9f6fc94..35894ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@datastream/monorepo", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@datastream/monorepo", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "workspaces": [ "packages/*", @@ -18,12 +18,12 @@ "@commitlint/cli": "^21.0.0", "@commitlint/config-conventional": "^21.0.0", "@stryker-mutator/core": "^9.0.0", - "@types/node": "^25.0.0", + "@types/node": "^26.0.0", "esbuild": "^0.28.0", - "fast-check": "^4.8.0", + "fast-check": "^4.0.0", "husky": "^9.0.0", - "tinybench": "^6.0.2", - "tstyche": "^7.2.0" + "tinybench": "^6.0.0", + "tstyche": "^7.0.0" }, "engines": { "node": ">=24" @@ -31,7 +31,7 @@ }, ".github": { "name": "@datastream/github-workflows", - "version": "0.7.0", + "version": "0.7.1", "devDependencies": { "license-check-and-add": "4.0.5", "lockfile-lint": "5.0.0" @@ -41,12 +41,12 @@ } }, "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "15.3.5", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.3.5.tgz", - "integrity": "sha512-orNOYXw3hYXxxisXMldjzjBzqqTLBPbwOtHg7ovBPvfBHDue1qM9YJENZ3W2BQuS+7z4ThogMbEzEsov57Itkg==", + "version": "15.5.0", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-15.5.0.tgz", + "integrity": "sha512-Ps4w0FwrDoeVK6hfYxWkVbkmxm+zN+6xoXF2ZfEhfiox0ZNbcSAiUWO6iAIvP5bc3DB270r+EaKcoT1IUyzfxw==", "license": "MIT", "dependencies": { - "js-yaml": "^4.1.1" + "js-yaml": "^4.2.0" }, "engines": { "node": ">=20" @@ -94,15 +94,15 @@ "license": "0BSD" }, "node_modules/@aws-sdk/checksums": { - "version": "3.1000.19", - "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1000.19.tgz", - "integrity": "sha512-Hc4N100RdkuWshKBnhPzmpdftfi9mCLz+OHFELHM1QIgMH4QRUUWyWgfiebta/YX2Bd62wTcm3EqAP8TeXv0gA==", + "version": "3.1000.26", + "resolved": "https://registry.npmjs.org/@aws-sdk/checksums/-/checksums-3.1000.26.tgz", + "integrity": "sha512-CGznePoL+1oWCSzqmkvlYMpWQEZohPR3LntjKXXfVH+oh6Kd8d+yHLkjpiAGwPIHAxFe4OAq3aKfRnv/wqWIyA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", + "@aws-sdk/core": "^3.977.6", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -111,18 +111,18 @@ } }, "node_modules/@aws-sdk/client-cloudwatch-logs": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.1092.0.tgz", - "integrity": "sha512-pRzj01h/jSv2R27E3pkmIwxyLmDxsh4Jrr/GVR67+8NbWZj7sRQw2Z3F3WyrLN2XmQlXBd5BiRoJtCzG2ILsUg==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.1103.0.tgz", + "integrity": "sha512-sGbGeZAHG5ThtdMgHzNezM7Ww2QYO/y99ndU37uEtGMIkFHZ2AFU1ucwIx0NRF2pi1HuDMrIK03nv2ytCsFH+g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -131,20 +131,20 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1092.0.tgz", - "integrity": "sha512-4aSTSu5VaTe6YlyMrSbRE49Cd4v54kP57NmzU0H00dxBniNbeN5ZdjmKoBN8bWmS4DAQfiqFUXZIHup6Boa/xQ==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.1103.0.tgz", + "integrity": "sha512-9qN3H5DJYA1TA7vI5RGI6v2yLWpxcWyJQZuAK1LyVH8HaZoVLVof0MHZL/3PfjIW/KFaHHu8EC5kxT7EVjHooQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", - "@aws-sdk/dynamodb-codec": "^3.973.34", - "@aws-sdk/middleware-endpoint-discovery": "^3.972.25", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", + "@aws-sdk/dynamodb-codec": "^3.973.41", + "@aws-sdk/middleware-endpoint-discovery": "^3.972.27", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -153,18 +153,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.1092.0.tgz", - "integrity": "sha512-/9wpxT12VLGXjA0YeLViZQyJujtK8UyP4aFv1vAHB8TacSY+xgYHN0fglrjswG1yDeNylpjqpRu5cjwG9Mxq1w==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.1103.0.tgz", + "integrity": "sha512-+EIM3D0StZjw7Nu0BsVY3xj5rBdg6NIW8Iiam6PegE7SGu8wPw+UGninjKoytdKdFStAoqim3Y+xw/EKkVidDg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -173,18 +173,18 @@ } }, "node_modules/@aws-sdk/client-glue": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.1092.0.tgz", - "integrity": "sha512-xsUNtfQWuQlveXAzCA5zg4FsokVJtXKRkDNSaTOjnpyljwR/lfXh/2hMu78xbuPG1znQmbyiA9Vk0wtkNna/0g==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-glue/-/client-glue-3.1103.0.tgz", + "integrity": "sha512-KaUIZKXc/BRUlQw4ItDMdb2W2GdgQzie0llJbefReehq5sUQBqXVSvOtEYo+6WnVRDLQbzWt00TFV2Dk3NVqzQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -193,18 +193,18 @@ } }, "node_modules/@aws-sdk/client-kinesis": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.1092.0.tgz", - "integrity": "sha512-pv291Tay4kV1/quNkdWi/HHAOvY7Q/1Xy9dlc5bthNbR+pOQUWuL6IDpcPUvgMzMopixtZrEt8XcsbDXQ691yg==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kinesis/-/client-kinesis-3.1103.0.tgz", + "integrity": "sha512-DQ0Nr7lP0A48A/8vwiGuMzd66HNhmZDMdkZ49gXjIjiVOQRj4gjPLPhpq+mWNnz/ESM8hxlZ//owsM4fLNngDw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -213,18 +213,18 @@ } }, "node_modules/@aws-sdk/client-lambda": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.1092.0.tgz", - "integrity": "sha512-n4dEn0DEKX3D22d0r+qFjRiMaNMXdARd6mPTxkFY/5A1AWVZz4nFu3PbTVhoGL+y0uMDjQiWWtjiLWjMTsM12Q==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.1103.0.tgz", + "integrity": "sha512-BQfSgfqwurp6hISzJQt163cTg/EDXEWfkBTry6ZXTa8ofFxGUu8L9CL/euUOhcK6pvV3DRDaWofkd9EuYBZ2/Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -233,21 +233,21 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1092.0.tgz", - "integrity": "sha512-NfcptdANQM1IgUT8QITKBN+PZPjshm5FyLKKjotEwscsDQGik4iDdLgwFYJSTlGoREv26Tf97WHpL7IZ3HF9nA==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1103.0.tgz", + "integrity": "sha512-FO7SB2vLhZRN3lBHVhMhRm3YKSHK8e917qjB8LMEEhU69cQ0Ahd/OMyezu+KqNANqEtyxfSnFVvYt81x6ZKGZA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/checksums": "^3.1000.19", - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", - "@aws-sdk/middleware-sdk-s3": "^3.972.65", - "@aws-sdk/signature-v4-multi-region": "^3.996.41", + "@aws-sdk/checksums": "^3.1000.26", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", + "@aws-sdk/middleware-sdk-s3": "^3.972.72", + "@aws-sdk/signature-v4-multi-region": "^3.996.43", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -256,18 +256,18 @@ } }, "node_modules/@aws-sdk/client-sns": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.1092.0.tgz", - "integrity": "sha512-PwTTYD89ngv32dsmTIwrPvzSbePUI1TU4EQnQqiJTjC5ik4xe/IKbOE4NKHdn1FVXbPHzfCjTQ9GmT4XvzilPQ==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sns/-/client-sns-3.1103.0.tgz", + "integrity": "sha512-PAgNJwJWkZmcuPU4l1LqVBP7ZpFQmFLRNvKjIpaxsNV/orT2Qq6ehofRK64psvQbvaTwp1K8L1fi10wBSXbF8A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -276,19 +276,19 @@ } }, "node_modules/@aws-sdk/client-sqs": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1092.0.tgz", - "integrity": "sha512-O8uXSCdN3HG3Qj5UDBMJ5vJYl2wIueFoPH6IAikKTTQoVXJbHGLDWt1i+nOJtvV4ijSJzP/a56iREYJRiPFNSw==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sqs/-/client-sqs-3.1103.0.tgz", + "integrity": "sha512-KuVv3mY/X1uQsHoCpd7vrRFFvucrMn2KfLmsQ4w61ayafLIt2UoRd5cokfnJvleJRo7fG7GjKYBhgF5bTKQkrQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", - "@aws-sdk/middleware-sdk-sqs": "^3.972.37", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", + "@aws-sdk/middleware-sdk-sqs": "^3.972.39", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -297,19 +297,19 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.1092.0.tgz", - "integrity": "sha512-EgKpb6LN/JP/3AbvxXh8c17SKsOeutJRvl3pmMdJ/jx+FqcGvYlpZdj6LVl3Y0ssv6LzbtYcMw/vIzygYRaDoA==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.1103.0.tgz", + "integrity": "sha512-A4ceLczDP12pXd3ctGPvXwUdA8184KkvjWHY/pzxQuAW0oCi49N0vqAg8K+w2OUKpKDPFAKuuvJvUekxlmL5Ag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-node": "^3.972.71", - "@aws-sdk/signature-v4-multi-region": "^3.996.41", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-node": "^3.972.78", + "@aws-sdk/signature-v4-multi-region": "^3.996.43", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -318,17 +318,17 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.976.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.976.0.tgz", - "integrity": "sha512-0cjRaEdlVoOrsNb9pP5q1Syyc8pXw5xSj2Np2ryReRTr9FppIIRVSdZK4lbnfmc2Hvgux/xBOUU6baB7z8//uA==", + "version": "3.977.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.977.6.tgz", + "integrity": "sha512-QiaJV4/zDrB4ZY2mfeSXSzSTc36W16sZXcGz+SPFk0CJ26gziO0cS+4LjJUMAbdeeBOvS0k0Aq1cZpfGdUXxSw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.2", - "@aws-sdk/xml-builder": "^3.972.36", + "@aws-sdk/xml-builder": "^3.972.37", "@aws/lambda-invoke-store": "^0.3.0", - "@smithy/core": "^3.29.4", - "@smithy/signature-v4": "^5.6.5", + "@smithy/core": "^3.31.1", + "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" @@ -338,15 +338,15 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.972.59", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.59.tgz", - "integrity": "sha512-iWPfye2ZOCmAHKmN1EwAyeHZdZxZymctAnEOD+7jzwqc5gZlK1lwG1lzGVtpH0+d/NnyrK670ycqBNKD4zUGZA==", + "version": "3.972.66", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.66.tgz", + "integrity": "sha512-i4HTkP21eHaXA+XKoc6dYxlKPvYUqbusGGIsFRcSGTF8ln/q6RrWoRdVJ6UVODTCW59Ot1mVcbJXRAEf6kxa3w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -355,15 +355,15 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.60", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.60.tgz", - "integrity": "sha512-BAkxdoe7tpDDqCghGpuOeHQRbm/2znVvOQm0AvpQbA2tbfMN46doN4zx65fv85ImP3KADwc2zQPmbrlI9MPfMg==", + "version": "3.972.67", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.67.tgz", + "integrity": "sha512-rcIpk5kxUqDaaNa6Xk23pQ6ViY7jlqzmfFWCahQcBT97ddXaXYYwzCen9Tz1Jvo6aJft6wDl5bN44/Jw5B4oLA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", + "@aws-sdk/core": "^3.977.6", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -372,17 +372,17 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.62", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.62.tgz", - "integrity": "sha512-g/0fGqKTb9xpKdd9AtpmV5Eo3DFKbnkpA2+w0peISSlu7NfAoWOuYBFxsu+yWBtxU89ka55ezoZBCbFaS8pjYQ==", + "version": "3.972.69", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.69.tgz", + "integrity": "sha512-nggwJtZ4eeNsUw5IeWBMXsi1ryct5idi0K+/SCRF3kybLubOMaNTb3XCihXpWMiVpyzyPeIrl0zTkzhBH9porA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", + "@aws-sdk/core": "^3.977.6", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -391,23 +391,23 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.973.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.5.tgz", - "integrity": "sha512-ylubazcRfq2TVus/qXucSXeC42Qdjp5HQxTu68K/BsdMiZlcSLD1zkpoCgApXZX1Y6YJhtGGs7ZHhO/GuIgBlw==", + "version": "3.973.12", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.12.tgz", + "integrity": "sha512-pNEf/OeyN5X3VmLKlgSO6TqaWmW10CvI3TfwL1XhsuhYjSLT2VDaxFnCPHnOeQXSaFisMX4jNhpETriqN8DOmg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-env": "^3.972.60", - "@aws-sdk/credential-provider-http": "^3.972.62", - "@aws-sdk/credential-provider-login": "^3.972.67", - "@aws-sdk/credential-provider-process": "^3.972.60", - "@aws-sdk/credential-provider-sso": "^3.973.4", - "@aws-sdk/credential-provider-web-identity": "^3.972.66", - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-env": "^3.972.67", + "@aws-sdk/credential-provider-http": "^3.972.69", + "@aws-sdk/credential-provider-login": "^3.972.74", + "@aws-sdk/credential-provider-process": "^3.972.67", + "@aws-sdk/credential-provider-sso": "^3.973.11", + "@aws-sdk/credential-provider-web-identity": "^3.972.73", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/credential-provider-imds": "^4.4.9", + "@smithy/core": "^3.31.1", + "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -416,16 +416,16 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.67", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.67.tgz", - "integrity": "sha512-CCygIKJ9YbI3n84OClSaSppkgKKHVj2TGT33c6FRORZrYNZQ1POmD+ip0FLYokiJAK7sSdc3YVkOsBm90oxWMQ==", + "version": "3.972.74", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.74.tgz", + "integrity": "sha512-0AQfDcf99TNmqVKv0owHrw/TQs6i4ZE5t9qmz6NvO53bE/sA/tpXhXL9AAcEP1qHc6Zzjd1UMb69+/9zdhvY3g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -434,21 +434,21 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.71", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.71.tgz", - "integrity": "sha512-HIg7Q2osBzajQwL+1Vkyh2E7Gim3eTNb9RHIsOxDGjW0eZg4oEKtRs5sioCnc73ilhaOm4gX2lHVF8J7+nt2rg==", + "version": "3.972.78", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.78.tgz", + "integrity": "sha512-OgPAnfvbGAMWac6yvxJ1ihslrvDpPVwR68D2csospdNCCyPvHk9JLzYKwz48SNiS1T2znDwHauywRKRFfpyYng==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.60", - "@aws-sdk/credential-provider-http": "^3.972.62", - "@aws-sdk/credential-provider-ini": "^3.973.5", - "@aws-sdk/credential-provider-process": "^3.972.60", - "@aws-sdk/credential-provider-sso": "^3.973.4", - "@aws-sdk/credential-provider-web-identity": "^3.972.66", + "@aws-sdk/credential-provider-env": "^3.972.67", + "@aws-sdk/credential-provider-http": "^3.972.69", + "@aws-sdk/credential-provider-ini": "^3.973.12", + "@aws-sdk/credential-provider-process": "^3.972.67", + "@aws-sdk/credential-provider-sso": "^3.973.11", + "@aws-sdk/credential-provider-web-identity": "^3.972.73", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/credential-provider-imds": "^4.4.9", + "@smithy/core": "^3.31.1", + "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -457,15 +457,15 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.60", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.60.tgz", - "integrity": "sha512-YIo3f99hM43QdYG8hDzwGemnR/pU95b0kramqSJUTleCqaB7+HwKf7YZFHqvOgTqZTPx/mRmNIqoDRr3U0Z3Tw==", + "version": "3.972.67", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.67.tgz", + "integrity": "sha512-IlUEejorGTWKb4/Dm7K5Yw4QxUmXLThLhrvBmzVBqZFTbW72cv9LTcITmo1dsnYriALE4h68mOq4LB99x6sQ7Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", + "@aws-sdk/core": "^3.977.6", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -474,17 +474,17 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.973.4", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.4.tgz", - "integrity": "sha512-BPdmL8sSBOCv4ngZ+3LHxyc3CNqDCEK37CHioCk7zGrTMY5sUtkH8q+o6qA80nn6w3/fyBPGNE7OIRlmoOxRQA==", + "version": "3.973.11", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.11.tgz", + "integrity": "sha512-gAQBkBZxUB84d71+pPcI9L+jh2ujhuAVxc/4FgGiWFDjkPBlMKxzd5XDtkSXTFX8Ro7ansnT88+XadasxMeCRw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/nested-clients": "^3.997.34", - "@aws-sdk/token-providers": "3.1092.0", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/nested-clients": "^3.997.41", + "@aws-sdk/token-providers": "3.1103.0", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -493,16 +493,16 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.66", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.66.tgz", - "integrity": "sha512-kSAziJboOmZmsR9/MTbiNjowl2BPes1bQuJpne4qAZ62ubi8fjfr/aupJSQje6udBoYxXTQbsL0e0kby2la3ng==", + "version": "3.972.73", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.73.tgz", + "integrity": "sha512-SnlEmQa6SjOgs6iOPLUQl1Eyq4AKiAdPQlkOhFhqNfDtDCwibMGvL6QlkSmf3o6vAUSImzdPCxowT5dfQUZP1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -511,26 +511,26 @@ } }, "node_modules/@aws-sdk/credential-providers": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1092.0.tgz", - "integrity": "sha512-u3DeR7AGvwA2GRMilwltJhdhs1TdlcdnqprMn+flEAa5roZTtx4W3ZhFwEKdd4GlJgKLDJI9oeKrsPjWeChMTw==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.1103.0.tgz", + "integrity": "sha512-ZPJYLJx6v8YZOgsoe3Ijr6u0rGq/pvwD4BwIl2yhJgqeIdegsaImuG+EYGbh7ujqvnDiawAmxmnKa2UlDyRdNA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/credential-provider-cognito-identity": "^3.972.59", - "@aws-sdk/credential-provider-env": "^3.972.60", - "@aws-sdk/credential-provider-http": "^3.972.62", - "@aws-sdk/credential-provider-ini": "^3.973.5", - "@aws-sdk/credential-provider-login": "^3.972.67", - "@aws-sdk/credential-provider-node": "^3.972.71", - "@aws-sdk/credential-provider-process": "^3.972.60", - "@aws-sdk/credential-provider-sso": "^3.973.4", - "@aws-sdk/credential-provider-web-identity": "^3.972.66", - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/credential-provider-cognito-identity": "^3.972.66", + "@aws-sdk/credential-provider-env": "^3.972.67", + "@aws-sdk/credential-provider-http": "^3.972.69", + "@aws-sdk/credential-provider-ini": "^3.973.12", + "@aws-sdk/credential-provider-login": "^3.972.74", + "@aws-sdk/credential-provider-node": "^3.972.78", + "@aws-sdk/credential-provider-process": "^3.972.67", + "@aws-sdk/credential-provider-sso": "^3.973.11", + "@aws-sdk/credential-provider-web-identity": "^3.972.73", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/credential-provider-imds": "^4.4.9", + "@smithy/core": "^3.31.1", + "@smithy/credential-provider-imds": "^4.4.16", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -539,14 +539,14 @@ } }, "node_modules/@aws-sdk/dynamodb-codec": { - "version": "3.973.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/dynamodb-codec/-/dynamodb-codec-3.973.34.tgz", - "integrity": "sha512-/7kfOufSN9t/g7OR6gNpCsSj/4nR7WdRnd54qSlnRuzQN7JmOz6ulJSwrUpqkDk/mkFgQqUIFBfnAZ0OTw2pxw==", + "version": "3.973.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/dynamodb-codec/-/dynamodb-codec-3.973.41.tgz", + "integrity": "sha512-N4go/LzYFd6KJ+r7qqAjzmsw85PFN99RnDYZvw22FzU3VZgL5+umvncfu0M7hlzeIUKHSLL65HTJIXiLY7RJFg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@smithy/core": "^3.29.4", + "@aws-sdk/core": "^3.977.6", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -569,13 +569,13 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1092.0.tgz", - "integrity": "sha512-KiB7KhAg8vYlw6AFS2NXHC+kt+p00uzPdyB+9grfRs/Pu6UOodRBWLkD9LOpVzRWaRTY72BpP6F6Eo4PgrtAFw==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.1103.0.tgz", + "integrity": "sha512-Q3uRgn1XyAnevbCVPkSBe28qqO6AYuENhfov3rNyowV5iRvyed7sc6lEY9MWXeaeevrJBpEE35Shy5mW6k2zDg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "buffer": "5.6.0", "events": "3.3.0", @@ -586,19 +586,19 @@ "node": ">=20.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.1092.0" + "@aws-sdk/client-s3": "^3.1103.0" } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.972.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.972.25.tgz", - "integrity": "sha512-5G2aVPmbWC5dFI76D0vsNg2L0fgWP4uybcetf+06dzeZuRtpihnow88fOl5zm3+ABdIw27FKgyFzV4yB5Bm29Q==", + "version": "3.972.27", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.972.27.tgz", + "integrity": "sha512-5AJlxrsg27IGGiQauWOdVyqK55EN0EMIwXndkVHhBiPT4CtdSaz89/sAENSw+GP4KF+BOWcgycZFNjkOLmfo1A==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/endpoint-cache": "^3.972.9", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -607,16 +607,16 @@ } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.65", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.65.tgz", - "integrity": "sha512-udwNhRfDTfCB98mAHjjgsnKQlxygB4e0X+Obne/XjJpvVsF0YCQC8ZErd/8Z6IPoLQjtiKHzwqEDbZiLrJEnOg==", + "version": "3.972.72", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.72.tgz", + "integrity": "sha512-lSAoVPvQxX1d8TOM6waKDBQrvvZcm4w6pCldFAsRUffEaXq6lYY0pPyew3KlLu6Xqb74DXI42hGvSsbGBLljlw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/signature-v4-multi-region": "^3.996.41", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/signature-v4-multi-region": "^3.996.43", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -625,14 +625,14 @@ } }, "node_modules/@aws-sdk/middleware-sdk-sqs": { - "version": "3.972.37", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.37.tgz", - "integrity": "sha512-ObKPWZWpog+4zZQ2q+LdBwf/nm+HF2afgBxCtyHeqjRlsnATuKOV3dPYnzCGyjRZ/RHTEre4LRrYRcIxlWhzVQ==", + "version": "3.972.39", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sqs/-/middleware-sdk-sqs-3.972.39.tgz", + "integrity": "sha512-dlKLmJg1dLQVfFXUPS+f+SqXrRGHDVumY4gjM8sCLGao+zkDXEu8TObTyiaheKjT20ruok9Xs8oLocNItKQ0fw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -641,18 +641,18 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.34.tgz", - "integrity": "sha512-Y9REVrSwmLM+Qy6sZJ7ofMC2S3Hr3tPP/4CzL5U1olPP7OGoF+6+Px0E49cVQBtSxJtyeLJMf0UaBErfeSahAA==", + "version": "3.997.41", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.41.tgz", + "integrity": "sha512-RDHqPGQWlF6tatA/Tp3rg6oIwtgN9IVderxE+9av2Y93Dfyu+mO1hZ5Bu2jpfZg2rwdNbsssnwM+sLafIczMlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/signature-v4-multi-region": "^3.996.41", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/signature-v4-multi-region": "^3.996.43", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", - "@smithy/fetch-http-handler": "^5.6.6", - "@smithy/node-http-handler": "^4.9.6", + "@smithy/core": "^3.31.1", + "@smithy/fetch-http-handler": "^5.6.13", + "@smithy/node-http-handler": "^4.9.13", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -661,14 +661,14 @@ } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.41", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.41.tgz", - "integrity": "sha512-QMUytg+FQMGouc8gHS00KoYih3+N6cqmVI/pQGOIo7Nr7OpQaiXjSYOuL+vsPZ1tymY4LAQ8MYcHJmws5LRxng==", + "version": "3.996.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.43.tgz", + "integrity": "sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.974.2", - "@smithy/signature-v4": "^5.6.5", + "@smithy/signature-v4": "^5.6.12", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -677,16 +677,16 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1092.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1092.0.tgz", - "integrity": "sha512-hBYUAr6iBLNFcsiWTgtBb0stdSw39VOUq4Sp4A5caCNf66BAZplWN4FleKrVpJx5li2YgdnK2DqoFSMWC642FQ==", + "version": "3.1103.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1103.0.tgz", + "integrity": "sha512-N4wy26MNn31ItGVHYHPrEuCIFY4MBBjC+C5v1lJKqIUSA7OZBdhleCY53zCCrXn27hsk7YNOaTuhQu807S4AfQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", - "@aws-sdk/nested-clients": "^3.997.34", + "@aws-sdk/core": "^3.977.6", + "@aws-sdk/nested-clients": "^3.997.41", "@aws-sdk/types": "^3.974.2", - "@smithy/core": "^3.29.4", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -709,13 +709,13 @@ } }, "node_modules/@aws-sdk/util-format-url": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.972.36.tgz", - "integrity": "sha512-vdBPu/6M190+CD6FQMMFxohVIZg/YS2nMDIiEJzVUFUsaUjSqQcQJ+oWQOt+wxMEerYn7c7y+9oMsKORR10uIQ==", + "version": "3.972.43", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.972.43.tgz", + "integrity": "sha512-UDCn43PI/bwtW8by1lENQ97GhWMI+idKTfFdROlPpibKGLafeJH8I74wXOSTsEvVZnqmz9GPVMwTNx2qcvuAyg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.976.0", + "@aws-sdk/core": "^3.977.6", "tslib": "^2.6.2" }, "engines": { @@ -733,9 +733,9 @@ } }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.36.tgz", - "integrity": "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA==", + "version": "3.972.37", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.37.tgz", + "integrity": "sha512-zKq4HQum8JwDyEuyfuI4bbiAcU0KxP6qy+9PR/IsR92IyE/DaBAikzAS50tjxip4bqIIANpCcG+Yyj6CVhXupg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -823,14 +823,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -1067,13 +1067,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -1265,18 +1265,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", + "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -1284,9 +1284,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "license": "MIT", "dependencies": { @@ -1298,9 +1298,9 @@ } }, "node_modules/@biomejs/biome": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.5.tgz", - "integrity": "sha512-r1S8nFsAG1MY+vJFZALzIvwXAJv6ejDQ0mxP21Tgr9YK3ZFtjrvbBwDdNhx1rUqvccEIeNg20cYCNzl6Cr69pQ==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.5.7.tgz", + "integrity": "sha512-zr8K/DcY5tYsQOQwqMJ0AWElo6QgmgNI7idXgXLhevVszlt8RGVpesEJPqx3ThazLaOwjJ5Y8fz3BtH5fGZNsw==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -1314,20 +1314,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.5.5", - "@biomejs/cli-darwin-x64": "2.5.5", - "@biomejs/cli-linux-arm64": "2.5.5", - "@biomejs/cli-linux-arm64-musl": "2.5.5", - "@biomejs/cli-linux-x64": "2.5.5", - "@biomejs/cli-linux-x64-musl": "2.5.5", - "@biomejs/cli-win32-arm64": "2.5.5", - "@biomejs/cli-win32-x64": "2.5.5" + "@biomejs/cli-darwin-arm64": "2.5.7", + "@biomejs/cli-darwin-x64": "2.5.7", + "@biomejs/cli-linux-arm64": "2.5.7", + "@biomejs/cli-linux-arm64-musl": "2.5.7", + "@biomejs/cli-linux-x64": "2.5.7", + "@biomejs/cli-linux-x64-musl": "2.5.7", + "@biomejs/cli-win32-arm64": "2.5.7", + "@biomejs/cli-win32-x64": "2.5.7" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.5.tgz", - "integrity": "sha512-kUrAhXVWUrwmAUnV2iXSK7umxKFysTwvqK+Ty6ptUcLY/7T3SnCAjUowE4uvwaEej6nXZ7hu/dTtbokKdsPeag==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.5.7.tgz", + "integrity": "sha512-vxo/Ls3/PYdQWyLhYYcgMOCzQypAjcY+iihS8M0wW03l16TCLW4zqZzGo75gm1VdCMj38hTVZ31KBWrZ4G9dJw==", "cpu": [ "arm64" ], @@ -1342,9 +1342,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.5.tgz", - "integrity": "sha512-DamiYc5bUYZ2uxlfc+RLEPtz1Abb6PO5eTbOkufLpSGwd/7AMQAdxhFYiXmwwkJL8IsT8S7GvdgwDHqaMFAvKw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.5.7.tgz", + "integrity": "sha512-Cd3Ga61amT/Yl/0x8elP5hhGYaFy4bw6WuysTgf7oo8TA5tJ5A1k+DkVoJ2BHbTVil51gTX9VPzArnrlLJ3Kyg==", "cpu": [ "x64" ], @@ -1359,9 +1359,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.5.tgz", - "integrity": "sha512-lRKF/pH/1RiYiBKExi3TCZVAtvzEm77aifrvcNiDFrR9WxeAnDUjDnseb6y2XV85mjitLs6SILGm2XG77cHtSQ==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.5.7.tgz", + "integrity": "sha512-rR2QE0yF2GYSuYuKIa7pKvODGJqnOH+2eDREAM8wV+mWKSkMQKdAp4zXEZfTaxY8PMoNONnpgSWcBCyLDPDOKg==", "cpu": [ "arm64" ], @@ -1379,9 +1379,9 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.5.tgz", - "integrity": "sha512-U4WMl/sy/E/Q73vf15VspakLRRs2LDFcCeBxJnQfXzssb88zpV6PJPaQ3ezhQ7H6Ht2/8bvuZeHgJWzmoxllZg==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.5.7.tgz", + "integrity": "sha512-xPI5yB6XlpDbNkS+bm1t42olw5c4l3UrlOmLg7KtLJvjvkNF/1V4tnUgfkylGIeb3u/T+BzMGYqgQhzjAoJzuQ==", "cpu": [ "arm64" ], @@ -1399,9 +1399,9 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.5.tgz", - "integrity": "sha512-H/O39nJEw/2Zm/fm7hrmxxoF8kK/aU1uCoPp70ruXVbomaAdLpJJnCmL11Q2JotT8QVHH06So04Oq53lCSwSwQ==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.5.7.tgz", + "integrity": "sha512-FQgqJhscrqJUFptGaRSUJWlXAExwWcDwLuK49dvKfkQ1bB5SEEyFssnsxQY83Xm6jR0EbbX3+8+D5bfvYqUG2Q==", "cpu": [ "x64" ], @@ -1419,9 +1419,9 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.5.tgz", - "integrity": "sha512-m7wC7tjX5Lrmo69dc4md8FeKpPU1NTCY1v7xUoQQ2vadWwNnBS0KZOG8471otFPHrTHihQJAjQPgMObpLvDe6A==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.5.7.tgz", + "integrity": "sha512-rE5VZi+qtmPgQH+l7jVxYoZ18b/TiHEhulhMpjmCZH1PltSbjRcxNWywC3HZ9tYottG7ORkeTtoscBilKSBm0g==", "cpu": [ "x64" ], @@ -1439,9 +1439,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.5.tgz", - "integrity": "sha512-7BryINPuYypLUAH3o/o5ZdgomJ4zn3EDR0ChZJst7n32S6ZhKbgHXuYydLu+YAnx59ehGFR0z/MG6qnzQi3Yyw==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.5.7.tgz", + "integrity": "sha512-Oq4x0CCwP4jirrcTywXs5kOGZ4v5vuEP+gWrbtjApOA2CL9F3F9GlIdQIci8AKSCa/zURanMRpX/4wQ7Am6hHg==", "cpu": [ "arm64" ], @@ -1456,9 +1456,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.5.tgz", - "integrity": "sha512-bIBFo+n6MIxdNcVFy5CrurbKiZQiUciK3bt8+O9I4wjFZNTfXLpi+giq47522eXqW5NBc9ulx7dR1SlZKi2J5g==", + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.5.7.tgz", + "integrity": "sha512-V+0wu/nrj2S+MhP4EQ0uHNolP0IALEsz45pg0WoKkHfDeh0+ItHwP/p7bX5RPoMOl9NkpHYWdYPhIcy2mACHvQ==", "cpu": [ "x64" ], @@ -1499,9 +1499,9 @@ } }, "node_modules/@cloudflare/workerd-darwin-64": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260721.1.tgz", - "integrity": "sha512-VivNMhiEdZIB4JBWxf1RMJGROErv53qmQ+dvhjA1evrCouvqRYW718VqDideU3PSV7Ythl5Df48NqZYWoaEHpQ==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260730.1.tgz", + "integrity": "sha512-+MBHmPaiTe2KajryW0T24rZvWFxb41hD3d8anNzQqHzft6vSEb18+sp0znSwxgij7ApPhSM1+vhkNg4f3YMguA==", "cpu": [ "x64" ], @@ -1516,9 +1516,9 @@ } }, "node_modules/@cloudflare/workerd-darwin-arm64": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260721.1.tgz", - "integrity": "sha512-k7oye1ZiuwnnBBA2eTMduconr/ud5ZxFtRNTsYwMdmJeeeislw2+M72otrHxxvybCP7JWPPlJ38uhfajpcyhOA==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260730.1.tgz", + "integrity": "sha512-SBHKntPkKvNPgaCrTe99xC1CAl8ygJDzlYfK0LbuJ1muKadIw35WnhO0wu894fKBtllsVQdNzDLee+cm0ppLSQ==", "cpu": [ "arm64" ], @@ -1533,9 +1533,9 @@ } }, "node_modules/@cloudflare/workerd-linux-64": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260721.1.tgz", - "integrity": "sha512-hon0lW4ZQ4boAVgaw+0ZFTNS8v5MWPWvK0HZnt4tDpKYnDUviLZawtUW3KqvFmCQTipVHl1S34j3J8Eqb93hGQ==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260730.1.tgz", + "integrity": "sha512-ouyPOSMbiKPeSwUJUvxtMcxGAXs2J4aPE4T5ABIYX5ClcQx5j5bbHTmnqOQEY8sAuLTPjH7dY+iB6UI5ISlwwA==", "cpu": [ "x64" ], @@ -1550,9 +1550,9 @@ } }, "node_modules/@cloudflare/workerd-linux-arm64": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260721.1.tgz", - "integrity": "sha512-nAl+HRQqpX5b7xVwWcvLPZmCk8NQ2yjI0yvJTWcHiRswbMEg1ZZckVmjJUAn0PHzZARbCSyIV7v3UjM+SPRmIQ==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260730.1.tgz", + "integrity": "sha512-YQ+Mi78U3TPdgBPtwq+Sm6rJU+Ihl2y0pjYtuuKkdmUbYzL7oLR6Xqq9wljhasnuCFICssDJaqhMep5WizYoEQ==", "cpu": [ "arm64" ], @@ -1567,9 +1567,9 @@ } }, "node_modules/@cloudflare/workerd-windows-64": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260721.1.tgz", - "integrity": "sha512-9paFG5cMTKz/CRixnEEnZbe5uvFPBFSDthxJHANfCWhUtBj49GSL1FPIokIg+Q+H8DGJEExU0lL92LtxD0lTxQ==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260730.1.tgz", + "integrity": "sha512-27fAN+vUECW1oYVc1KOcHYpkL8COM2Uxtxql7TL595kxbjoqS5yckw7NLz7bTf2pALFCZWjqXDjZGJ/xbG4ZKQ==", "cpu": [ "x64" ], @@ -2025,45 +2025,6 @@ "arrow2csv": "bin/arrow2csv.cjs" } }, - "node_modules/@duckdb/duckdb-wasm/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@duckdb/duckdb-wasm/node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@duckdb/duckdb-wasm/node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/@duckdb/duckdb-wasm/node_modules/flatbuffers": { "version": "24.12.23", "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.12.23.tgz", @@ -2071,16 +2032,6 @@ "dev": true, "license": "Apache-2.0" }, - "node_modules/@duckdb/duckdb-wasm/node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@duckdb/duckdb-wasm/node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -2089,39 +2040,39 @@ "license": "MIT" }, "node_modules/@duckdb/node-api": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-api/-/node-api-1.5.4-r.1.tgz", - "integrity": "sha512-3PYk/4//svuYmb9RYVM71cCoNa6ngoYWwrMhJaqbm010txzIMWbJCbxrFeqDl+krdIug+Hc/MNCeS0gHsTXSIw==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-api/-/node-api-1.5.5-r.2.tgz", + "integrity": "sha512-PhpjvblIQV36IlnWGOWcLCVhCBPALJ+gu2d4MR5VIveVS57Bx1Hpvoe9BZqPcMzMeqWc3sQOpcr8DoZ/hKB2PQ==", "dev": true, "license": "MIT", "dependencies": { - "@duckdb/node-bindings": "1.5.4-r.1" + "@duckdb/node-bindings": "1.5.5-r.2" } }, "node_modules/@duckdb/node-bindings": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings/-/node-bindings-1.5.4-r.1.tgz", - "integrity": "sha512-v834OZZKQ59yAvh8GOEmM+R1foPNgdMGL0VTBgHywgblgQNyq11HvWgT4QGJIUFfo/cQ9WFyf1MFhK0+hV1aiA==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings/-/node-bindings-1.5.5-r.2.tgz", + "integrity": "sha512-sdLrfvfOxhFA6igCMiToaYSYaffd7D5j00ooy7Y1ACJ1PZKTVENwHV91RfECyNrlGGZItNbfqVR/yHL1jiHMcQ==", "dev": true, "license": "MIT", "dependencies": { "detect-libc": "^2.1.2" }, "optionalDependencies": { - "@duckdb/node-bindings-darwin-arm64": "1.5.4-r.1", - "@duckdb/node-bindings-darwin-x64": "1.5.4-r.1", - "@duckdb/node-bindings-linux-arm64": "1.5.4-r.1", - "@duckdb/node-bindings-linux-arm64-musl": "1.5.4-r.1", - "@duckdb/node-bindings-linux-x64": "1.5.4-r.1", - "@duckdb/node-bindings-linux-x64-musl": "1.5.4-r.1", - "@duckdb/node-bindings-win32-arm64": "1.5.4-r.1", - "@duckdb/node-bindings-win32-x64": "1.5.4-r.1" + "@duckdb/node-bindings-darwin-arm64": "1.5.5-r.2", + "@duckdb/node-bindings-darwin-x64": "1.5.5-r.2", + "@duckdb/node-bindings-linux-arm64": "1.5.5-r.2", + "@duckdb/node-bindings-linux-arm64-musl": "1.5.5-r.2", + "@duckdb/node-bindings-linux-x64": "1.5.5-r.2", + "@duckdb/node-bindings-linux-x64-musl": "1.5.5-r.2", + "@duckdb/node-bindings-win32-arm64": "1.5.5-r.2", + "@duckdb/node-bindings-win32-x64": "1.5.5-r.2" } }, "node_modules/@duckdb/node-bindings-darwin-arm64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-darwin-arm64/-/node-bindings-darwin-arm64-1.5.4-r.1.tgz", - "integrity": "sha512-fl8EC5xdmI7VAI7bX4W6D7lOGNtxyLvSxGjOY8Ov7viVEKwIcBXXKlMPgh3sw+PiVlwZhKlknuCI8BL5xXpSDg==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-darwin-arm64/-/node-bindings-darwin-arm64-1.5.5-r.2.tgz", + "integrity": "sha512-huZfnM/awM62hpPlK7ckx0u0twW3zc00Bs0qfY8ldhjwVn+Jf764pxFdMmUujYWtMdsSZIk4FvMy8ZQijALOPg==", "cpu": [ "arm64" ], @@ -2133,9 +2084,9 @@ ] }, "node_modules/@duckdb/node-bindings-darwin-x64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-darwin-x64/-/node-bindings-darwin-x64-1.5.4-r.1.tgz", - "integrity": "sha512-E8bECZ6abJqunPqVR1NA0Zho7qxanfDWWFuJrKMsU1NCUqyGLyhXqZwsRHAx7J6jrM+lhQ7wOZj1x/N4OVml3A==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-darwin-x64/-/node-bindings-darwin-x64-1.5.5-r.2.tgz", + "integrity": "sha512-/TlqNBOqg2EbBJ2MjVDkJg6IKQHE1SkCC41cn4e5CaJVxj7re1A77W6o1V7Xa/25jftO1HxvGBlHGP15dmjMxQ==", "cpu": [ "x64" ], @@ -2147,9 +2098,9 @@ ] }, "node_modules/@duckdb/node-bindings-linux-arm64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-arm64/-/node-bindings-linux-arm64-1.5.4-r.1.tgz", - "integrity": "sha512-4EsB+cgRqOE++mdPQ2ZoGJCg4ylmuqdbLDtmo3L19B+C5OzGmrhxlKD4o75eGEtfO52M+w+TdL0qhy0H5XvaKQ==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-arm64/-/node-bindings-linux-arm64-1.5.5-r.2.tgz", + "integrity": "sha512-hlyuOvjOShhgsTguCGv9A6M5QZf9NiFW/fmq9aZO7lhlz0P0cBVOiCca+CAhcnePrbZmzeGZ21fwiBs6T12StA==", "cpu": [ "arm64" ], @@ -2164,9 +2115,9 @@ ] }, "node_modules/@duckdb/node-bindings-linux-arm64-musl": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-arm64-musl/-/node-bindings-linux-arm64-musl-1.5.4-r.1.tgz", - "integrity": "sha512-96Pyk5Syy18S5DSN0CKkOQ7/CsyVGRML8ewox1qpFDjYvPH1VsULlQoIRwbpw7mkFEy17wuWmbwzb7oKu/nGMw==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-arm64-musl/-/node-bindings-linux-arm64-musl-1.5.5-r.2.tgz", + "integrity": "sha512-78lhr3GBzscZXA3iHqOIIo5+zRbtSA+lNHUBHZPLUICn0+boeGic4JP/KE3Y2MTNAe4OqG4ctfl8CX1tBArjQA==", "cpu": [ "arm64" ], @@ -2181,9 +2132,9 @@ ] }, "node_modules/@duckdb/node-bindings-linux-x64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-x64/-/node-bindings-linux-x64-1.5.4-r.1.tgz", - "integrity": "sha512-IldapRydno5kf4VkPCe8yK+j4pCg+j6Qs46UmLnKex/mtIdJa7ifhMYRkvdc5KIAFEC0eEL5c830QeuwcUROyg==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-x64/-/node-bindings-linux-x64-1.5.5-r.2.tgz", + "integrity": "sha512-e8SypIiYX3wzvB2CfEr3zTfoCOqkqt0zvcc025ukVno95W+hnH37NJOEdhC7RfSCEwgaPrkWGChhZ3x3EVZsTg==", "cpu": [ "x64" ], @@ -2198,9 +2149,9 @@ ] }, "node_modules/@duckdb/node-bindings-linux-x64-musl": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-x64-musl/-/node-bindings-linux-x64-musl-1.5.4-r.1.tgz", - "integrity": "sha512-tWgnttlKfWTktyv+m9YbxaedKBon5wmUoJ9DaIbE3D98KhhUaqmJhnjzso9O8hp6WUeRmwXR//hpT/X6Ft9nYA==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-linux-x64-musl/-/node-bindings-linux-x64-musl-1.5.5-r.2.tgz", + "integrity": "sha512-eKvMBSEyd3Vq4CiPGTXAb4Ww+l9XPuTR3WzXbHQMwJjEEGbnFhnHaqjtLyr3Chqg0iDWe41empP3IC7XWPBpiQ==", "cpu": [ "x64" ], @@ -2215,9 +2166,9 @@ ] }, "node_modules/@duckdb/node-bindings-win32-arm64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-win32-arm64/-/node-bindings-win32-arm64-1.5.4-r.1.tgz", - "integrity": "sha512-77apmuNo51bPZzv8xjdeCp+hlU6JLwMPtS1CMViy83ONTsah+CGnpBx1lCnEqPL5Va0meufZyjSdZCVCijLdDA==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-win32-arm64/-/node-bindings-win32-arm64-1.5.5-r.2.tgz", + "integrity": "sha512-87wuGkEjc4VwcDZI09rSm6FXc8F9oHZWYE7so8p2l4qtmGCfsoLwSSlnhi9MHGefGqUBxshfJ0O9Zvg7A0//ag==", "cpu": [ "arm64" ], @@ -2229,9 +2180,9 @@ ] }, "node_modules/@duckdb/node-bindings-win32-x64": { - "version": "1.5.4-r.1", - "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-win32-x64/-/node-bindings-win32-x64-1.5.4-r.1.tgz", - "integrity": "sha512-Wme7dScBGqjn2PUJ+RLFiFAblW1qQRBraX7SJc4uKtftZiUJJWZapEUh+doGfb68Qxvw8JhlMBSdaUsSUDJYsw==", + "version": "1.5.5-r.2", + "resolved": "https://registry.npmjs.org/@duckdb/node-bindings-win32-x64/-/node-bindings-win32-x64-1.5.5-r.2.tgz", + "integrity": "sha512-r5V6Q0zcv5HSHGDXsd6M+t3jakhm6S11TNH5vydKGeq8JBWj4v3ZTof/mF3R8Rly+90Z205KoI9ujblg/jN04g==", "cpu": [ "x64" ], @@ -2242,33 +2193,10 @@ "win32" ] }, - "node_modules/@emnapi/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz", - "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.2", - "tslib": "^2.4.0" - } - }, "node_modules/@emnapi/runtime": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz", - "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz", - "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==", + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.3.tgz", + "integrity": "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==", "dev": true, "license": "MIT", "optional": true, @@ -2713,9 +2641,9 @@ } }, "node_modules/@img/sharp-darwin-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.3.tgz", - "integrity": "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.35.2.tgz", + "integrity": "sha512-eEieHsMksAW4IiO5NzauESRl2D2qz3J/kwUxUrSfV06A93eEaRfMpHXyUb1mAqrR7i8U9A0GRqE9pjn6u1Jjpg==", "cpu": [ "arm64" ], @@ -2732,13 +2660,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.3.2" + "@img/sharp-libvips-darwin-arm64": "1.3.1" } }, "node_modules/@img/sharp-darwin-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.3.tgz", - "integrity": "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.35.2.tgz", + "integrity": "sha512-BaktuGPCeHJMARpodR8jK4uKiZrPAy9WrfQW0sdI37clracq8Bp01AYS3SZgi5FS/y5twa9t4+LIuuxQjqRrWw==", "cpu": [ "x64" ], @@ -2755,13 +2683,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.3.2" + "@img/sharp-libvips-darwin-x64": "1.3.1" } }, "node_modules/@img/sharp-freebsd-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.3.tgz", - "integrity": "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-freebsd-wasm32/-/sharp-freebsd-wasm32-0.35.2.tgz", + "integrity": "sha512-YoAxdnd8hPUkvLHd3bWY+YA8nw3xM/RyRopYucNsWHVSan8NLVM3X2volsfoRDcXdUJPg6tXahSd7HXPK7lRnw==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -2769,7 +2697,7 @@ "freebsd" ], "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.2" }, "engines": { "node": ">=20.9.0" @@ -2779,9 +2707,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.2.tgz", - "integrity": "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.3.1.tgz", + "integrity": "sha512-4V/M3roRMTYjiwZY9IOVQOE8OyeCxFAkYmyZDrZl51uOKjibm3oeEJ4WAmLxutAfzFbC9jqUiPs2gbnGflH+7g==", "cpu": [ "arm64" ], @@ -2796,9 +2724,9 @@ } }, "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.2.tgz", - "integrity": "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.3.1.tgz", + "integrity": "sha512-c0/DxItpJv2+dGhgycJBBgotdqruGYDvA79drdh0MD1dFpy7JzJ/PlXwi1H4rFf0eTy8tgbI91aHDnZIceY3jQ==", "cpu": [ "x64" ], @@ -2813,9 +2741,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.2.tgz", - "integrity": "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.3.1.tgz", + "integrity": "sha512-aGGy9aWzXgHBG7HNyQPWorZthlp7+x6fDRoPAQbGO3ThcttuTyKIx3NuSHb6zb4gBNq6/yNn9f1cy9nFKS/Vmg==", "cpu": [ "arm" ], @@ -2833,9 +2761,9 @@ } }, "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.2.tgz", - "integrity": "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.3.1.tgz", + "integrity": "sha512-JznefmcK9j1JKPz8AkQDh89kjojubyfOasWBPKfzMIhPwsgDy9evpE/naJTXXXmghS1iFwR8u/kTwh/I2/+GCw==", "cpu": [ "arm64" ], @@ -2853,9 +2781,9 @@ } }, "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.2.tgz", - "integrity": "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.3.1.tgz", + "integrity": "sha512-1EkwGNCZk6iWNCMWqrvdJ+r1j0PT1zIz60CNPhYnJlK/zyeWqlsPZIe+ocBVqPF8k/Ssee/NCk+tE9Ryrko6ng==", "cpu": [ "ppc64" ], @@ -2873,9 +2801,9 @@ } }, "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.2.tgz", - "integrity": "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.3.1.tgz", + "integrity": "sha512-Ilays+w2bXdnxzxtQdmXR62u8o8GYa3eL4+Gr+1KiE4xperMZUslRaVPJwwPkzlHEjGfXAfRVAa/7CYCtSqsBw==", "cpu": [ "riscv64" ], @@ -2893,9 +2821,9 @@ } }, "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.2.tgz", - "integrity": "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.3.1.tgz", + "integrity": "sha512-VfBwVHQTbRoj4XlpA/KLZ7ltgMpz+4WSejFzQ+GnoImjo1PtEJ59QB2qR1xQEeRPYIkNrPIm2L4cICMvz4C2ew==", "cpu": [ "s390x" ], @@ -2913,9 +2841,9 @@ } }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.2.tgz", - "integrity": "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.3.1.tgz", + "integrity": "sha512-+c8ukgwU62DS54nCAjw7keOfHUkmr0B5QHEdcOqRnodF/MNXJbVI8Eopoj4B/0H8Asr65I+A4Amrn7a85/md6A==", "cpu": [ "x64" ], @@ -2933,9 +2861,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.2.tgz", - "integrity": "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.3.1.tgz", + "integrity": "sha512-qlKb/pwbkAi1WMsJrYHk7CuDrd12s27U2QnRhFYUoJNrRCmkosMTttuRFat/DDB3IlDm5qE1TJgZ4JDnHX8Ldw==", "cpu": [ "arm64" ], @@ -2953,9 +2881,9 @@ } }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.2.tgz", - "integrity": "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.3.1.tgz", + "integrity": "sha512-yO21HwoUVLN8Qa+/SBjQLMYwBWAVJjeGPNe+hc0OUeMeifEtJqu5a1c4HayE1nNpDih9y3/KkoltfkDodmKAlg==", "cpu": [ "x64" ], @@ -2973,9 +2901,9 @@ } }, "node_modules/@img/sharp-linux-arm": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.3.tgz", - "integrity": "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.35.2.tgz", + "integrity": "sha512-SE4kzF2mepn6z+6E7L6lsV8FzuLL6IPQdyX8ZiwROAG/G8td+hP/m7FsFPwidtrF19gvajuC9l6TxAVcsA4S7A==", "cpu": [ "arm" ], @@ -2995,13 +2923,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.3.2" + "@img/sharp-libvips-linux-arm": "1.3.1" } }, "node_modules/@img/sharp-linux-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.3.tgz", - "integrity": "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.35.2.tgz", + "integrity": "sha512-af12Pnd0ZGu2HfP8NayB0kk6eC/lrfbQE6HlR4jD+34wdJ1Vw9TF6TMn6ZvffT+WgqVsl0hRbmNvz2u/23VmwA==", "cpu": [ "arm64" ], @@ -3021,13 +2949,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.3.2" + "@img/sharp-libvips-linux-arm64": "1.3.1" } }, "node_modules/@img/sharp-linux-ppc64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.3.tgz", - "integrity": "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.35.2.tgz", + "integrity": "sha512-hYSBm7zcNtDCozCxQHYZJiu63b/bXsgRZuOxCIBZsStMM9Vap47iFHdbX4kCvQsblPB/k+clhELpdQJHQLSHvg==", "cpu": [ "ppc64" ], @@ -3047,13 +2975,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.3.2" + "@img/sharp-libvips-linux-ppc64": "1.3.1" } }, "node_modules/@img/sharp-linux-riscv64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.3.tgz", - "integrity": "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.35.2.tgz", + "integrity": "sha512-qQt0Kc13+Hoan/Awq/qMSQw3L+RI1NCRPgD5cUJ/1WSSmIoysLOc72jlRM3E0OHN9Yr313jgeQ2T+zW+F03QFA==", "cpu": [ "riscv64" ], @@ -3073,13 +3001,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.3.2" + "@img/sharp-libvips-linux-riscv64": "1.3.1" } }, "node_modules/@img/sharp-linux-s390x": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.3.tgz", - "integrity": "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.35.2.tgz", + "integrity": "sha512-E4fLLfRPzDLlEeDaTzI98OFLcv++WL5ChLLMwPoVd0CIoZQqupBSNbOisPL5am9XsbQ9T84+iiMpUvbFtkunbA==", "cpu": [ "s390x" ], @@ -3099,13 +3027,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.3.2" + "@img/sharp-libvips-linux-s390x": "1.3.1" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.3.tgz", - "integrity": "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.35.2.tgz", + "integrity": "sha512-gi0zFJJRLswfCZmHtJdikXPOc5u7qamSOS3NHedLqLd4W8Q0NqjdBr6TTRIgsfFjqfTsHFgdfvJ9LwqSgcHiAA==", "cpu": [ "x64" ], @@ -3125,13 +3053,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.3.2" + "@img/sharp-libvips-linux-x64": "1.3.1" } }, "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.3.tgz", - "integrity": "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.35.2.tgz", + "integrity": "sha512-siWbOW1u6HFnFLrp0waKyW7VEf7jYvcDWdrXEFa8AkdAQgEvuu5Fz8/Y70w9EeqAdwDtfU012BhEHHaDqvQNzg==", "cpu": [ "arm64" ], @@ -3151,13 +3079,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" + "@img/sharp-libvips-linuxmusl-arm64": "1.3.1" } }, "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.3.tgz", - "integrity": "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.35.2.tgz", + "integrity": "sha512-YBqMMcjDi4QGYiSn4vNOYBhmlC4z5AXqkOUUqI2e0AFA4urNv4ESgOgwNl3K+4etQhha0twXlzeF20bbULm9Yg==", "cpu": [ "x64" ], @@ -3177,13 +3105,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.3.2" + "@img/sharp-libvips-linuxmusl-x64": "1.3.1" } }, "node_modules/@img/sharp-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.3.tgz", - "integrity": "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.35.2.tgz", + "integrity": "sha512-Mrv4JQNYVQ94xH+jzZ9r+gowleN8mv2FTgKT+PI6bx5C0G8TdNYndu161pg2i7uoBwxy2ImPMHrJOM2LZef7Bw==", "dev": true, "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", "optional": true, @@ -3198,9 +3126,9 @@ } }, "node_modules/@img/sharp-webcontainers-wasm32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.3.tgz", - "integrity": "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-webcontainers-wasm32/-/sharp-webcontainers-wasm32-0.35.2.tgz", + "integrity": "sha512-QNV27pxs9wpApEiCfvHM1RDoP1w1+2KrUWWDPEhEwg+latvOrfuhWrHWZKwdSFwU6jh3myjw/yOCRsUIuOft3g==", "cpu": [ "wasm32" ], @@ -3208,7 +3136,7 @@ "license": "Apache-2.0", "optional": true, "dependencies": { - "@img/sharp-wasm32": "0.35.3" + "@img/sharp-wasm32": "0.35.2" }, "engines": { "node": ">=20.9.0" @@ -3218,9 +3146,9 @@ } }, "node_modules/@img/sharp-win32-arm64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.3.tgz", - "integrity": "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.35.2.tgz", + "integrity": "sha512-BiVRYc/t6/Vl3e1hBx0hugG4oN9Pydf4fgMSpxTQJmwGUg/YoXTWHiFeRymHfCZzifxu4F4rpk/I67D0LQ20wQ==", "cpu": [ "arm64" ], @@ -3238,9 +3166,9 @@ } }, "node_modules/@img/sharp-win32-ia32": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.3.tgz", - "integrity": "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.35.2.tgz", + "integrity": "sha512-YYEhx9PImCC7T0tI8JDMi4DB9LwLCXCU5OWNYEXAxh5Q1ShKkyC6byxzoBJ3gEFDnH2lQckWuDe70G7mB2XJog==", "cpu": [ "ia32" ], @@ -3258,9 +3186,9 @@ } }, "node_modules/@img/sharp-win32-x64": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.3.tgz", - "integrity": "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.35.2.tgz", + "integrity": "sha512-imoOyBcoM/iiUr4J6VPpCNjPnjvP/Gks95898yB8YqoGGYmHYbOyCuNv9FMhFgtaiHFGbHW8bxKqRV6VjtXThQ==", "cpu": [ "x64" ], @@ -3723,25 +3651,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz", - "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3787,9 +3696,9 @@ "license": "MIT" }, "node_modules/@oxc-project/types": { - "version": "0.139.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.139.0.tgz", - "integrity": "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==", + "version": "0.142.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.142.0.tgz", + "integrity": "sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==", "dev": true, "license": "MIT", "funding": { @@ -3862,9 +3771,9 @@ "license": "MIT" }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.5.tgz", - "integrity": "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.2.tgz", + "integrity": "sha512-l7x215OGvo1s52JWmR8U/DAVzEDWBCIbTm28aeJV/WDTSHgcKXaZTuBT0hJMs5NggilfJTW3clZVvd24yfKJxA==", "cpu": [ "arm64" ], @@ -3879,9 +3788,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.5.tgz", - "integrity": "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.2.tgz", + "integrity": "sha512-9u9Xv6c1AJZT0FfwH5vrMG5Jjcwhc1MlyrPu0XfTqkzsmqfks2M6W/o5XwAJgVVN/jHpqqngC1WevHKKTIUtIA==", "cpu": [ "arm64" ], @@ -3896,9 +3805,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.5.tgz", - "integrity": "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.2.tgz", + "integrity": "sha512-9W1mbGZAfW3oqd85bhBkmpyHCCzL1TeG/zFFP3vg7b0rlly8cxOcre5nXwz+LHazCwac2MNWgPdPCHndABjpWQ==", "cpu": [ "x64" ], @@ -3913,9 +3822,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.5.tgz", - "integrity": "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.2.tgz", + "integrity": "sha512-0p1lhiCSCyaerFwtrdZQUx7NqGk6LQnaRKWX7tFQqwQgvX0rjM15cIkm3pax1UpEakK14C4mOxx/jSqCBdBRqQ==", "cpu": [ "x64" ], @@ -3930,9 +3839,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.5.tgz", - "integrity": "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.2.tgz", + "integrity": "sha512-e+cOJXrJ2L3zx6YzqPg+f6Wbk3V1cKB8bOhbaYdVYN3DdquzNdRAmrbETz1qnt5yp/c7JNlNjmITiA2cVneQ7w==", "cpu": [ "arm" ], @@ -3947,9 +3856,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.5.tgz", - "integrity": "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.2.tgz", + "integrity": "sha512-JsSMsj6sNat/MuhG5fnBD7QgbtpHKVe30x5/bAVirDHdhoQRXJkF6xc0Jqk8O4fiCUQAzMOoH9wZi3m60c8wtg==", "cpu": [ "arm64" ], @@ -3967,9 +3876,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.5.tgz", - "integrity": "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.2.tgz", + "integrity": "sha512-B5G/zJdHaoJn9vD50eGHWkiWfmq8Uhi3IiLPJTzmZTrAalk1bztUikSXo0qga18ibE0IXboyeMUnhPjhAJ45wQ==", "cpu": [ "arm64" ], @@ -3987,9 +3896,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.5.tgz", - "integrity": "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.2.tgz", + "integrity": "sha512-6mC/awzKka8W6EoekjegpfGkjz8jXWDX63pqu/HYVpyKtZfu65Jsh4QAH3Kej3CAv/c1oGX7psTmFEbr0mDxLA==", "cpu": [ "ppc64" ], @@ -4007,9 +3916,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.5.tgz", - "integrity": "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.2.tgz", + "integrity": "sha512-412MX9fJLdA1IK28EZnc8jYv2HRTleOZgfLQumJ5zy7OeJLZlg/CETwFaXjNmGVxG51cFHpKLqb5LKvBC+HsHA==", "cpu": [ "s390x" ], @@ -4027,9 +3936,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.5.tgz", - "integrity": "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.2.tgz", + "integrity": "sha512-Q/+HI/ToJafZ1iCqGgVQXUEkIjufHCTF0gBQ2a5o3cg7GJ2h0qyq3nvvSmU+bGda2/7ygXpTY4TM6gO9OhQ0ZA==", "cpu": [ "x64" ], @@ -4047,9 +3956,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.5.tgz", - "integrity": "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.2.tgz", + "integrity": "sha512-ZKp/w41n6wCvxzxQHtQSbuphfX3Y4cCvbjkKHusrLx4lh+JWLTU7StSltO/DKARISzbj368d+qUaCjI8K2wzXw==", "cpu": [ "x64" ], @@ -4067,9 +3976,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.5.tgz", - "integrity": "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.2.tgz", + "integrity": "sha512-pxE6xD4KS3eAROkKK5yrhB9/3+vhlhVGMvlQLbdpzrBGDbKrnzx3RLwPaHvasLo6jgaiBLn7e04Df9C4tYhjmA==", "cpu": [ "arm64" ], @@ -4083,29 +3992,10 @@ "node": "^20.19.0 || >=22.12.0" } }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.5.tgz", - "integrity": "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "1.11.1", - "@emnapi/runtime": "1.11.1", - "@napi-rs/wasm-runtime": "^1.1.6" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.5.tgz", - "integrity": "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.2.tgz", + "integrity": "sha512-4MqEue5re+xIZzAWsB8sj0P1kqZySWqIuN4t6QaIO/YA6SFwySOLruvWQFzfmqk8LBK2P30KCSJwf6mJCZZ5/A==", "cpu": [ "arm64" ], @@ -4120,9 +4010,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.5.tgz", - "integrity": "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.2.tgz", + "integrity": "sha512-NweNxxD0Nf9t8v7kodun45Ijp3EIwYY+uydPP6qBEYvfBqhIjN6dZMzlQja3tqX/aLs3F3Uz+AxDpKgRhpOZQg==", "cpu": [ "x64" ], @@ -4273,9 +4163,9 @@ } }, "node_modules/@smithy/core": { - "version": "3.29.7", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.29.7.tgz", - "integrity": "sha512-BiEE2bnnGoPKdlGe3L+gOYORDHFGPuYVRLP7iUow/Sflm0B4hC4XY3FC1MRuc7ltzpW2xNnXopKi34TTkULlKQ==", + "version": "3.31.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.31.1.tgz", + "integrity": "sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4287,13 +4177,13 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.4.12", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.12.tgz", - "integrity": "sha512-ZZPDbl/aRp77aycuoMlo3BTayT4CE2a3uoqETYZU5ySnVbhpl5IJiY7dCZedn+ZusyDLqVv44IvKBiXd2/nK0Q==", + "version": "4.4.16", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.4.16.tgz", + "integrity": "sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.29.7", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -4302,13 +4192,13 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.6.9", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.6.9.tgz", - "integrity": "sha512-EJktha5m5MXCwzdXrlWyqb9UCNHNFKlg+PmTpRsdX3dncJPTiqYleM9OKj2mLgdVJHR01d2tU4alG+z2NdH5rQ==", + "version": "5.6.13", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.6.13.tgz", + "integrity": "sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.29.7", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -4330,13 +4220,13 @@ } }, "node_modules/@smithy/node-http-handler": { - "version": "4.9.9", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.9.9.tgz", - "integrity": "sha512-xVBZ3hptB99iNO9XyWqEhC7KD9bP9UPXhuy3h5Y2ItCfBv160D9IIC/Fmmp3EbnWwit4C+KVqlSE+E29Nk/pPg==", + "version": "4.9.13", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.9.13.tgz", + "integrity": "sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.29.7", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -4345,13 +4235,13 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.6.8", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.6.8.tgz", - "integrity": "sha512-iGBm6hIwD2MGvVRSgrjVWa4FXtXDq3akxu0DCpnkmBo0xtEHZ/siMRt7ycfZAefYr2UdywUgmGtoRLaq5u56pg==", + "version": "5.6.12", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.6.12.tgz", + "integrity": "sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.29.7", + "@smithy/core": "^3.31.1", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" }, @@ -4454,9 +4344,9 @@ } }, "node_modules/@speed-highlight/core": { - "version": "1.2.17", - "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.17.tgz", - "integrity": "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg==", + "version": "1.2.23", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.23.tgz", + "integrity": "sha512-iRoq6i6JDJP6Mt2A5JaPvzw0pgYHH6k92ij+yXiTrB7T2y9N789aWE3EHWj/5ztlJBokcCBja3iYLVdu5wgnkg==", "dev": true, "license": "CC0-1.0" }, @@ -4618,22 +4508,12 @@ "version": "0.5.23", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.8.0" } }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", - "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@types/buffers": { "version": "0.1.31", "resolved": "https://registry.npmjs.org/@types/buffers/-/buffers-0.1.31.tgz", @@ -4648,12 +4528,14 @@ "version": "5.2.3", "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", + "dev": true, "license": "MIT" }, "node_modules/@types/command-line-usage": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", + "dev": true, "license": "MIT" }, "node_modules/@types/cookie": { @@ -4713,13 +4595,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.5.tgz", - "integrity": "sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==", + "version": "26.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz", + "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~8.3.0" } }, "node_modules/@types/sinon": { @@ -4751,6 +4633,366 @@ "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "license": "MIT" }, + "node_modules/@typescript/typescript-aix-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", + "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz", + "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz", + "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz", + "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz", + "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz", + "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz", + "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-loong64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz", + "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-mips64el": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz", + "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz", + "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-riscv64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz", + "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-s390x": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz", + "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz", + "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz", + "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz", + "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz", + "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz", + "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-sunos-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz", + "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz", + "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz", + "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=16.20.0" + } + }, "node_modules/@ungap/custom-elements": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/custom-elements/-/custom-elements-1.3.0.tgz", @@ -4809,13 +5051,13 @@ } }, "node_modules/@yarnpkg/parsers": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.3.tgz", - "integrity": "sha512-mQZgUSgFurUtA07ceMjxrWkYz8QtDuYkvPlu0ZqncgjopQ0t6CNEo/OSealkmnagSUx8ZD5ewvezUwUuMqutQg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.1.0.tgz", + "integrity": "sha512-WoxUM/Be4hfsX06FxsvpGgfYqwgivMV7/Ol7aFuSfSmY6rRaiju4QxOEe9RUS0iYcSHWl5i9AhB1cMoE0p+XiA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "js-yaml": "^3.10.0", + "js-yaml": "^4.3.0", "tslib": "^2.4.0" }, "engines": { @@ -4846,9 +5088,9 @@ } }, "node_modules/acorn": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz", - "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -4874,37 +5116,48 @@ } }, "node_modules/ajv-cmd": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/ajv-cmd/-/ajv-cmd-0.13.3.tgz", - "integrity": "sha512-H1LArE4kclZ5JdWLKUZd1ji3UjO6FSpCW1MZ6J0X89BqwT+5W70KD4TpfvhcM7isSoQvo6sslA/rZiCH1HzM6g==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/ajv-cmd/-/ajv-cmd-0.15.0.tgz", + "integrity": "sha512-DLtxjmceKnb97mzoMY1f1bKx8nz+quba5M4pmsSo4yB9tF5qfatbp4/f20e+zZWE7X5IoB0qMb1x7zeTbfm2bQ==", + "hasInstallScript": true, "license": "MIT", "workspaces": [ ".github" ], "dependencies": { - "@apidevtools/json-schema-ref-parser": "15.3.5", + "@apidevtools/json-schema-ref-parser": "15.5.0", "@silverbucket/ajv-formats-draft2019": "1.6.5", "ajv": "8.20.0", "ajv-errors": "3.0.0", "ajv-formats": "3.0.1", - "ajv-ftl-i18n": "0.2.1", + "ajv-ftl-i18n": "0.3.0", "ajv-i18n": "4.2.0", "ajv-keywords": "5.1.0", - "commander": "14.0.3", - "esbuild": "^0.28.0", - "sast-json-schema": "^0.4.0" + "commander": "15.0.0", + "esbuild": "0.28.1", + "sast-json-schema": "0.6.0" }, "bin": { - "ajv": "cli.js" + "ajv": "cli.js", + "ajv-cmd": "cli.js" }, "engines": { - "node": ">=24" + "node": ">=24.2.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/willfarrell" } }, + "node_modules/ajv-cmd/node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, "node_modules/ajv-errors": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", @@ -4932,16 +5185,16 @@ } }, "node_modules/ajv-ftl-i18n": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ajv-ftl-i18n/-/ajv-ftl-i18n-0.2.1.tgz", - "integrity": "sha512-ThWHxPmLaJYKrl1mMWAYizGqZG1MrHcMgQ4MId2YFAjRn73GrZqSMX+sifQAHXAva0RZVeGHxVqkrWGizDFo6Q==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ajv-ftl-i18n/-/ajv-ftl-i18n-0.3.0.tgz", + "integrity": "sha512-72/46GfRBKr3x/205j6wmw6Ofr9NjQ8iw+VVezHKsIXjAZ/09D6FCL1p/O3iIGO3cWsI0z3fgzN+dXFnW8Bj4w==", "license": "MIT", "workspaces": [ ".github" ], "dependencies": { - "commander": "14.0.3", - "fluent-transpiler": "0.4.1" + "commander": "15.0.0", + "fluent-transpiler": "0.6.0" }, "bin": { "ajv-ftl": "cli.js" @@ -4954,6 +5207,15 @@ "url": "https://github.com/sponsors/willfarrell" } }, + "node_modules/ajv-ftl-i18n/node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, "node_modules/ajv-i18n": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/ajv-i18n/-/ajv-i18n-4.2.0.tgz", @@ -5010,19 +5272,14 @@ } }, "node_modules/apache-arrow": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-21.1.0.tgz", - "integrity": "sha512-kQrYLxhC+NTVVZ4CCzGF6L/uPVOzJmD1T3XgbiUnP7oTeVFOFgEUu6IKNwCDkpFoBVqDKQivlX4RUFqqnWFlEA==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-21.2.0.tgz", + "integrity": "sha512-Hxe6Agq26gQOM954qpzYSllJBPJl+e16U5CkfuMUhLrNba+5nKkttIVlflaovN6oaTratqMGAO8H5u/aNhmHWQ==", "license": "Apache-2.0", "dependencies": { - "@swc/helpers": "^0.5.11", - "@types/command-line-args": "^5.2.3", - "@types/command-line-usage": "^5.0.4", - "@types/node": "^24.0.3", - "command-line-args": "^6.0.1", - "command-line-usage": "^7.0.1", + "@types/node": "^25.2.0", "flatbuffers": "^25.1.24", - "json-bignum": "^0.0.3", + "json-with-bigint": "^3.5.3", "tslib": "^2.6.2" }, "bin": { @@ -5030,18 +5287,18 @@ } }, "node_modules/apache-arrow/node_modules/@types/node": { - "version": "24.13.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", - "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", + "version": "25.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.5.tgz", + "integrity": "sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==", "license": "MIT", "dependencies": { - "undici-types": "~7.18.0" + "undici-types": ">=7.24.0 <7.24.7" } }, "node_modules/apache-arrow/node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "license": "MIT" }, "node_modules/argparse": { @@ -5073,12 +5330,13 @@ } }, "node_modules/array-back": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz", - "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12.17" + "node": ">=6" } }, "node_modules/array-union": { @@ -5166,7 +5424,6 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, "license": "MIT", "engines": { "node": "18 || 20 || >=22" @@ -5194,9 +5451,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.1.tgz", - "integrity": "sha512-HYXq73DDpCtNzOmrFsm9eSwCvWCql0RzqjpDzXN9EadiLJ4DNat0nsZ/Bzmy+Ud12mb4/zKDY0cQ805ZzN+i0A==", + "version": "2.11.12", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz", + "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5231,7 +5488,6 @@ "version": "5.0.9", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -5397,6 +5653,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2" @@ -5412,6 +5669,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -5427,6 +5685,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -5443,6 +5702,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -5455,6 +5715,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, "license": "MIT" }, "node_modules/change-case": { @@ -5548,6 +5809,24 @@ "node": ">=20" } }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -5581,32 +5860,26 @@ } }, "node_modules/command-line-args": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.2.tgz", - "integrity": "sha512-AIjYVxrV9X752LmPDLbVYv8aMCuHPSLZJXEo2qo/xJfv+NYhaZ4sMSF01rM+gHPaMgvPM0l5D/F+Qx+i2WfSmQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, "license": "MIT", "dependencies": { - "array-back": "^6.2.3", - "find-replace": "^5.0.2", + "array-back": "^3.1.0", + "find-replace": "^3.0.0", "lodash.camelcase": "^4.3.0", - "typical": "^7.3.0" + "typical": "^4.0.0" }, "engines": { - "node": ">=12.20" - }, - "peerDependencies": { - "@75lb/nature": "latest" - }, - "peerDependenciesMeta": { - "@75lb/nature": { - "optional": true - } + "node": ">=4.0.0" } }, "node_modules/command-line-usage": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.4.tgz", "integrity": "sha512-85UdvzTNx/+s5CkSgBm/0hzP80RFHAa7PsfeADE5ezZF3uHz3/Tqj9gIKGT9PTtpycc3Ua64T0oVulGfKxzfqg==", + "dev": true, "license": "MIT", "dependencies": { "array-back": "^6.2.2", @@ -5618,10 +5891,31 @@ "node": ">=12.20.0" } }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz", + "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, "node_modules/commander": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "dev": true, "license": "MIT", "engines": { "node": ">=20" @@ -5698,9 +5992,9 @@ } }, "node_modules/conventional-commits-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.0.tgz", - "integrity": "sha512-DPp6hkUjvwIivxbkrTiLXeRswNv1A/4GFA2X6scXma0AMa9632V3TwxmrlkUIEtUktiM3Ln+RrSH2xlP3/jUTw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-7.1.2.tgz", + "integrity": "sha512-O+x4N2yH+ijvqWlIyTHsXTAP+algNWgGbjY2duCe8w2vUMvUB95cLRslCPfTMQyLAKlet3bhZTdu6ozn4M+QJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5945,9 +6239,9 @@ } }, "node_modules/devalue": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.2.tgz", - "integrity": "sha512-DObPPAfdtFbXjxLqK8s2Xk9ZuWz5+ZoFEhC7J76es4GU/rEiXwHTmbImoCdyoCOcBH1UF3+Cz6Z2sYD4hyl5TA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.9.0.tgz", + "integrity": "sha512-RWrqdArjvPbsATEhOPUo6Wndc/iWnkWKlhIrdlF3zMMYo/c3CVtoaVAyLtWxz5h8nSlkHzxnzV2uLydPXmtF+A==", "license": "MIT" }, "node_modules/diff": { @@ -6084,21 +6378,6 @@ "node": ">=14" } }, - "node_modules/editorconfig/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/editorconfig/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/editorconfig/node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", @@ -6124,9 +6403,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.395", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.395.tgz", - "integrity": "sha512-7zt9Aw+SrmxLWLN0zhaTWZQiCdryLVrYTq5R7iZakLvi2UQPYMMsROYV/2qVCzMeCiSXHwKOU+sZ4zOVVlrtKA==", + "version": "1.5.401", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.401.tgz", + "integrity": "sha512-H6ViHN68nGYlChEvlIU67fn8O2/tpbWQPwck98yaJmh+08LSvHiydzDQ6oXNccLU3kNRVIRS9A4mA7CG+i6fLQ==", "dev": true, "license": "ISC" }, @@ -6241,14 +6520,15 @@ } }, "node_modules/es-toolkit": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.49.0.tgz", - "integrity": "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g==", + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.50.0.tgz", + "integrity": "sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==", "dev": true, "license": "MIT", "workspaces": [ "docs", - "benchmarks" + "benchmarks", + "tests/types" ] }, "node_modules/esbuild": { @@ -6480,24 +6760,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -6528,20 +6790,16 @@ } }, "node_modules/find-replace": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz", - "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@75lb/nature": "latest" + "dependencies": { + "array-back": "^3.0.1" }, - "peerDependenciesMeta": { - "@75lb/nature": { - "optional": true - } + "engines": { + "node": ">=4.0.0" } }, "node_modules/find-up": { @@ -6564,9 +6822,9 @@ "license": "Apache-2.0" }, "node_modules/fluent-transpiler": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/fluent-transpiler/-/fluent-transpiler-0.4.1.tgz", - "integrity": "sha512-9CNRxPbnMDTt1hdtD2YPdbyH/p5o3xRgkcsZm0dgER+Kg2k3mdvDb4BJ6lVeFx+cGKp6GWPxcZ2n8R4b45JqJw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/fluent-transpiler/-/fluent-transpiler-0.6.0.tgz", + "integrity": "sha512-g7OrZDHZuaZr0ZDnsioqoCObwtRqSlSogjndVBA+tF+nq9sMjfOQRQgJKydVJY+jiOpoCJfPMROkBcHCZap8JA==", "license": "MIT", "workspaces": [ ".github" @@ -6574,7 +6832,7 @@ "dependencies": { "@fluent/syntax": "0.19.0", "change-case": "5.4.4", - "commander": "14.0.3" + "commander": "15.0.0" }, "bin": { "ftl": "cli.js" @@ -6587,6 +6845,15 @@ "url": "https://github.com/sponsors/willfarrell" } }, + "node_modules/fluent-transpiler/node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } + }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -6858,6 +7125,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -7256,21 +7524,6 @@ "node": ">=14" } }, - "node_modules/js-beautify/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/js-beautify/node_modules/brace-expansion": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", - "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/js-beautify/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", @@ -7328,9 +7581,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", + "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", "funding": [ { "type": "github", @@ -7365,6 +7618,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", + "dev": true, "engines": { "node": ">=0.8" } @@ -7389,6 +7643,12 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, + "node_modules/json-with-bigint": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.10.tgz", + "integrity": "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==", + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -8116,6 +8376,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, "license": "MIT" }, "node_modules/lodash.groupby": { @@ -8254,36 +8515,20 @@ "node": ">=8.6" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/miniflare": { - "version": "4.20260721.0", - "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260721.0.tgz", - "integrity": "sha512-fBLaCxZ2i/nPH8iyLzvza0C8/sSF4sjD1ma1Skf+pkZVK0TlaW5ujHJlUHwcwR66v2JZt+Q28d4DCX/oaLG0cA==", + "version": "5.20260730.0-alpha", + "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-5.20260730.0-alpha.tgz", + "integrity": "sha512-8/dspSXDshP6nSkCpjKO7BYc2qZoYSXm7iM+QxY7qJyJpAB3onnQSaiu0cvKJlfuMGwULl55hG69FJCcCMXU1Q==", "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "0.8.1", - "sharp": "0.34.5", + "sharp": "0.35.2", "undici": "7.28.0", - "workerd": "1.20260721.1", + "workerd": "1.20260730.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, - "bin": { - "miniflare": "bootstrap.js" - }, "engines": { "node": ">=22.0.0" } @@ -8306,13 +8551,13 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -8411,9 +8656,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.16", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.16.tgz", - "integrity": "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==", + "version": "3.3.17", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz", + "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==", "dev": true, "funding": [ { @@ -8502,9 +8747,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "version": "2.0.52", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.52.tgz", + "integrity": "sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==", "dev": true, "license": "MIT", "engines": { @@ -8853,13 +9098,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -9073,6 +9318,16 @@ "node": ">=16.0.0" } }, + "node_modules/regexparam": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz", + "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/regjsparser": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", @@ -9142,13 +9397,13 @@ } }, "node_modules/rolldown": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.5.tgz", - "integrity": "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.2.tgz", + "integrity": "sha512-opwpo1tQBAcpSUJDt94B7hhLNGOKjCdE//XXjeLrnx9b83bjnw45tXdg1b09yEw/VLFBJGZpwRULMmOZo7ol+A==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.139.0", + "@oxc-project/types": "=0.142.0", "@rolldown/pluginutils": "^1.0.0" }, "bin": { @@ -9158,21 +9413,20 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.1.5", - "@rolldown/binding-darwin-arm64": "1.1.5", - "@rolldown/binding-darwin-x64": "1.1.5", - "@rolldown/binding-freebsd-x64": "1.1.5", - "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", - "@rolldown/binding-linux-arm64-gnu": "1.1.5", - "@rolldown/binding-linux-arm64-musl": "1.1.5", - "@rolldown/binding-linux-ppc64-gnu": "1.1.5", - "@rolldown/binding-linux-s390x-gnu": "1.1.5", - "@rolldown/binding-linux-x64-gnu": "1.1.5", - "@rolldown/binding-linux-x64-musl": "1.1.5", - "@rolldown/binding-openharmony-arm64": "1.1.5", - "@rolldown/binding-wasm32-wasi": "1.1.5", - "@rolldown/binding-win32-arm64-msvc": "1.1.5", - "@rolldown/binding-win32-x64-msvc": "1.1.5" + "@rolldown/binding-android-arm64": "1.2.2", + "@rolldown/binding-darwin-arm64": "1.2.2", + "@rolldown/binding-darwin-x64": "1.2.2", + "@rolldown/binding-freebsd-x64": "1.2.2", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.2", + "@rolldown/binding-linux-arm64-gnu": "1.2.2", + "@rolldown/binding-linux-arm64-musl": "1.2.2", + "@rolldown/binding-linux-ppc64-gnu": "1.2.2", + "@rolldown/binding-linux-s390x-gnu": "1.2.2", + "@rolldown/binding-linux-x64-gnu": "1.2.2", + "@rolldown/binding-linux-x64-musl": "1.2.2", + "@rolldown/binding-openharmony-arm64": "1.2.2", + "@rolldown/binding-win32-arm64-msvc": "1.2.2", + "@rolldown/binding-win32-x64-msvc": "1.2.2" } }, "node_modules/run-parallel": { @@ -9237,9 +9491,9 @@ "license": "MIT" }, "node_modules/sast-json-schema": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/sast-json-schema/-/sast-json-schema-0.4.1.tgz", - "integrity": "sha512-GnOPf8rCTfysRtOzCJPoBZu8xKnY4LZ24jxCmcxsLUkmOTpK/DrbrJ97Xio4xkIH6USdzEZ5ZSdpTX8Gj03EuQ==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/sast-json-schema/-/sast-json-schema-0.6.0.tgz", + "integrity": "sha512-FxuONsPruHFpnoR7KJvsts/T1rGYGK2GQPzmOry5FqqzF1MFKYcLph9uE8S4Cu+ybUfS2B/R+eMLjByobtCXwg==", "license": "MIT", "workspaces": [ ".github" @@ -9260,9 +9514,9 @@ } }, "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -9303,15 +9557,15 @@ "license": "MIT" }, "node_modules/sharp": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", - "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", + "version": "0.35.2", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.2.tgz", + "integrity": "sha512-FVtFjtBCMiJS6yb5CX7Sop45WFMpeGw6oRKuJnXYgf/f1ms/D7LE/ZUSNxnW7rZ/dbslQWYkoqFHGPaDBtaK4w==", "dev": true, "license": "Apache-2.0", "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", - "semver": "^7.8.5" + "semver": "^7.8.4" }, "engines": { "node": ">=20.9.0" @@ -9320,36 +9574,31 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.35.3", - "@img/sharp-darwin-x64": "0.35.3", - "@img/sharp-freebsd-wasm32": "0.35.3", - "@img/sharp-libvips-darwin-arm64": "1.3.2", - "@img/sharp-libvips-darwin-x64": "1.3.2", - "@img/sharp-libvips-linux-arm": "1.3.2", - "@img/sharp-libvips-linux-arm64": "1.3.2", - "@img/sharp-libvips-linux-ppc64": "1.3.2", - "@img/sharp-libvips-linux-riscv64": "1.3.2", - "@img/sharp-libvips-linux-s390x": "1.3.2", - "@img/sharp-libvips-linux-x64": "1.3.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", - "@img/sharp-libvips-linuxmusl-x64": "1.3.2", - "@img/sharp-linux-arm": "0.35.3", - "@img/sharp-linux-arm64": "0.35.3", - "@img/sharp-linux-ppc64": "0.35.3", - "@img/sharp-linux-riscv64": "0.35.3", - "@img/sharp-linux-s390x": "0.35.3", - "@img/sharp-linux-x64": "0.35.3", - "@img/sharp-linuxmusl-arm64": "0.35.3", - "@img/sharp-linuxmusl-x64": "0.35.3", - "@img/sharp-webcontainers-wasm32": "0.35.3", - "@img/sharp-win32-arm64": "0.35.3", - "@img/sharp-win32-ia32": "0.35.3", - "@img/sharp-win32-x64": "0.35.3" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@img/sharp-darwin-arm64": "0.35.2", + "@img/sharp-darwin-x64": "0.35.2", + "@img/sharp-freebsd-wasm32": "0.35.2", + "@img/sharp-libvips-darwin-arm64": "1.3.1", + "@img/sharp-libvips-darwin-x64": "1.3.1", + "@img/sharp-libvips-linux-arm": "1.3.1", + "@img/sharp-libvips-linux-arm64": "1.3.1", + "@img/sharp-libvips-linux-ppc64": "1.3.1", + "@img/sharp-libvips-linux-riscv64": "1.3.1", + "@img/sharp-libvips-linux-s390x": "1.3.1", + "@img/sharp-libvips-linux-x64": "1.3.1", + "@img/sharp-libvips-linuxmusl-arm64": "1.3.1", + "@img/sharp-libvips-linuxmusl-x64": "1.3.1", + "@img/sharp-linux-arm": "0.35.2", + "@img/sharp-linux-arm64": "0.35.2", + "@img/sharp-linux-ppc64": "0.35.2", + "@img/sharp-linux-riscv64": "0.35.2", + "@img/sharp-linux-s390x": "0.35.2", + "@img/sharp-linux-x64": "0.35.2", + "@img/sharp-linuxmusl-arm64": "0.35.2", + "@img/sharp-linuxmusl-x64": "0.35.2", + "@img/sharp-webcontainers-wasm32": "0.35.2", + "@img/sharp-win32-arm64": "0.35.2", + "@img/sharp-win32-ia32": "0.35.2", + "@img/sharp-win32-x64": "0.35.2" } }, "node_modules/shebang-command": { @@ -9559,18 +9808,17 @@ } }, "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9672,6 +9920,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -9681,9 +9930,9 @@ } }, "node_modules/svelte": { - "version": "5.56.7", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.56.7.tgz", - "integrity": "sha512-5qERUZX80oQj6XrDMUmD2Uhd/cIpCPDWWKBK3ZHmyRUC9apPyamWM8xMo31mbWsIQxwG2hVoSnOJ/EcnhVkkzQ==", + "version": "5.56.8", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.56.8.tgz", + "integrity": "sha512-PY8LOw7xP6c8IOiVqdo0sbbZVYhXRSfklOQLAUyGBKqjTX0wx/z4l/9J+PmBpmlLnxzEb1NqltxQ5/wZme/Cmg==", "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.4", @@ -9747,6 +9996,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==", + "dev": true, "license": "MIT", "dependencies": { "array-back": "^6.2.2", @@ -9756,6 +10006,16 @@ "node": ">=12.17" } }, + "node_modules/table-layout/node_modules/array-back": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.3.tgz", + "integrity": "sha512-SGDvmg6QTYiTxCBkYVmThcoa67uLl35pyzRHdpCGBOcqFy6BtwnphoFPk7LhJshD+Yk1Kt35WGWeZPTgwR4Fhw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.17" + } + }, "node_modules/tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", @@ -9764,9 +10024,9 @@ "license": "MIT" }, "node_modules/tinybench": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.0.2.tgz", - "integrity": "sha512-FlHoQpcFvCzeXK5kVPvV7IVgW/hs/B36QWTz876iSdeJguBDfdTSRQmYmaHX+fQNt4hp+gEFB2XXw+8hT4/y8A==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.1.2.tgz", + "integrity": "sha512-REdMxUreK3VSUeWcLd5+ijUGNKFyHT8s1trKmYEE/tlYE6ggdOkFOlKba/vI/l1fIqh/NTEEr1Cyw4AwttOicA==", "dev": true, "license": "MIT", "engines": { @@ -9774,9 +10034,9 @@ } }, "node_modules/tinyexec": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz", - "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", "dev": true, "license": "MIT", "engines": { @@ -9800,6 +10060,37 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinykeys": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/tinykeys/-/tinykeys-4.0.0.tgz", @@ -9937,27 +10228,49 @@ } }, "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", "dev": true, "license": "Apache-2.0", "peer": true, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "tsc": "bin/tsc" }, "engines": { - "node": ">=14.17" + "node": ">=16.20.0" + }, + "optionalDependencies": { + "@typescript/typescript-aix-ppc64": "7.0.2", + "@typescript/typescript-darwin-arm64": "7.0.2", + "@typescript/typescript-darwin-x64": "7.0.2", + "@typescript/typescript-freebsd-arm64": "7.0.2", + "@typescript/typescript-freebsd-x64": "7.0.2", + "@typescript/typescript-linux-arm": "7.0.2", + "@typescript/typescript-linux-arm64": "7.0.2", + "@typescript/typescript-linux-loong64": "7.0.2", + "@typescript/typescript-linux-mips64el": "7.0.2", + "@typescript/typescript-linux-ppc64": "7.0.2", + "@typescript/typescript-linux-riscv64": "7.0.2", + "@typescript/typescript-linux-s390x": "7.0.2", + "@typescript/typescript-linux-x64": "7.0.2", + "@typescript/typescript-netbsd-arm64": "7.0.2", + "@typescript/typescript-netbsd-x64": "7.0.2", + "@typescript/typescript-openbsd-arm64": "7.0.2", + "@typescript/typescript-openbsd-x64": "7.0.2", + "@typescript/typescript-sunos-x64": "7.0.2", + "@typescript/typescript-win32-arm64": "7.0.2", + "@typescript/typescript-win32-x64": "7.0.2" } }, "node_modules/typical": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", - "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12.17" + "node": ">=8" } }, "node_modules/underscore": { @@ -9978,9 +10291,9 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", "dev": true, "license": "MIT" }, @@ -10174,16 +10487,16 @@ "license": "MIT" }, "node_modules/vite": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.5.tgz", - "integrity": "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.0.tgz", + "integrity": "sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==", "dev": true, "license": "MIT", "dependencies": { - "lightningcss": "^1.32.0", + "lightningcss": "^1.33.0", "picomatch": "^4.0.5", - "postcss": "^8.5.17", - "rolldown": "~1.1.5", + "postcss": "^8.5.23", + "rolldown": "~1.2.0", "tinyglobby": "^0.2.17" }, "bin": { @@ -10200,7 +10513,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.3.0", + "@vitejs/devtools": "^0.4.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -10309,6 +10622,19 @@ "node-fetch": "^2.6.1" } }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitefu": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", @@ -10417,15 +10743,16 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.1.tgz", "integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12.17" } }, "node_modules/workerd": { - "version": "1.20260721.1", - "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260721.1.tgz", - "integrity": "sha512-b/DWhpV0jTudzQpLhDovcOgBz233386q+3Hbari7CLCNT9UXxjQziSTZ9yCoKdT2K3TSx5jrwlOisq8hlLWXYg==", + "version": "1.20260730.1", + "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260730.1.tgz", + "integrity": "sha512-zmfNIjwYSWFY5chGBOjWtH3xAE7p97FTC6vR4Ep98290ho6AeAR/NVcBD274YCLEUYzqm8yxdtZlxMybU8a3jA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -10436,17 +10763,31 @@ "node": ">=16" }, "optionalDependencies": { - "@cloudflare/workerd-darwin-64": "1.20260721.1", - "@cloudflare/workerd-darwin-arm64": "1.20260721.1", - "@cloudflare/workerd-linux-64": "1.20260721.1", - "@cloudflare/workerd-linux-arm64": "1.20260721.1", - "@cloudflare/workerd-windows-64": "1.20260721.1" + "@cloudflare/workerd-darwin-64": "1.20260730.1", + "@cloudflare/workerd-darwin-arm64": "1.20260730.1", + "@cloudflare/workerd-linux-64": "1.20260730.1", + "@cloudflare/workerd-linux-arm64": "1.20260730.1", + "@cloudflare/workerd-windows-64": "1.20260730.1" + } + }, + "node_modules/worktop": { + "version": "0.8.0-next.18", + "resolved": "https://registry.npmjs.org/worktop/-/worktop-0.8.0-next.18.tgz", + "integrity": "sha512-+TvsA6VAVoMC3XDKR5MoC/qlLqDixEfOBysDEKnPIPou/NvoPWCAuXHXMsswwlvmEuvX56lQjvELLyLuzTKvRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mrmime": "^2.0.0", + "regexparam": "^3.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/wrangler": { - "version": "4.113.0", - "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.113.0.tgz", - "integrity": "sha512-ROGzSloJv0y21It6Oc9LaruNcu1tdiQ/XzL3Jc3YkFjzXEMXzTqVhA8vQaGMTdZHTjFP0PVcwAHNgaw3gXu4wA==", + "version": "4.118.0", + "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.118.0.tgz", + "integrity": "sha512-9pkBw/b8zWqGx2S+oLhgHMR1M/4VOE8SynUFABnGWiSFGlcOQ4xiI/B71Xf66RYP2xzngU37IQFPtUruij3lYw==", "dev": true, "license": "MIT OR Apache-2.0", "dependencies": { @@ -10454,10 +10795,10 @@ "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", - "miniflare": "4.20260721.0", + "miniflare": "5.20260730.0-alpha", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", - "workerd": "1.20260721.1" + "workerd": "1.20260730.1" }, "bin": { "cf-wrangler": "bin/cf-wrangler.js", @@ -10471,7 +10812,7 @@ "fsevents": "2.3.3" }, "peerDependencies": { - "@cloudflare/workers-types": "^5.20260721.1" + "@cloudflare/workers-types": "^5.20260730.1" }, "peerDependenciesMeta": { "@cloudflare/workers-types": { @@ -10596,6 +10937,24 @@ "node": ">=8" } }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -10604,9 +10963,9 @@ "license": "ISC" }, "node_modules/ws": { - "version": "8.21.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz", - "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", + "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "dev": true, "license": "MIT", "engines": { @@ -10643,16 +11002,16 @@ "license": "ISC" }, "node_modules/yargs": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", - "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz", + "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==", "dev": true, "license": "MIT", "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", - "string-width": "^7.2.0", + "string-width": "^8.2.1", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" }, @@ -10671,9 +11030,9 @@ } }, "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.2.0.tgz", + "integrity": "sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==", "dev": true, "license": "MIT", "engines": { @@ -10726,11 +11085,11 @@ }, "packages/arrow": { "name": "@datastream/arrow", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", - "apache-arrow": "21.1.0" + "@datastream/core": "0.7.1", + "apache-arrow": "21.2.0" }, "engines": { "node": ">=24" @@ -10738,10 +11097,10 @@ }, "packages/aws": { "name": "@datastream/aws", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.0.0", @@ -10811,10 +11170,10 @@ }, "packages/base64": { "name": "@datastream/base64", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -10822,10 +11181,10 @@ }, "packages/charset": { "name": "@datastream/charset", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "chardet": "2.2.0", "iconv-lite": "0.7.3" }, @@ -10835,10 +11194,10 @@ }, "packages/compress": { "name": "@datastream/compress", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "brotli-wasm": "^3.0.0" @@ -10857,10 +11216,10 @@ }, "packages/core": { "name": "@datastream/core", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "devDependencies": { - "@datastream/object": "0.7.0" + "@datastream/object": "0.7.1" }, "engines": { "node": ">=24" @@ -10868,11 +11227,11 @@ }, "packages/csv": { "name": "@datastream/csv", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", - "@datastream/object": "0.7.0" + "@datastream/core": "0.7.1", + "@datastream/object": "0.7.1" }, "engines": { "node": ">=24" @@ -10880,10 +11239,10 @@ }, "packages/digest": { "name": "@datastream/digest", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "hash-wasm": "4.12.0" }, "engines": { @@ -10892,16 +11251,16 @@ }, "packages/duckdb": { "name": "@datastream/duckdb", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { - "@datastream/arrow": "0.7.0", + "@datastream/arrow": "0.7.1", "@duckdb/duckdb-wasm": "1.33.1-dev57.0", - "@duckdb/node-api": "1.5.4-r.1", - "apache-arrow": "21.1.0" + "@duckdb/node-api": "1.5.5-r.2", + "apache-arrow": "21.2.0" }, "engines": { "node": ">=24" @@ -10909,7 +11268,7 @@ "peerDependencies": { "@duckdb/duckdb-wasm": "^1.33.1-dev57.0", "@duckdb/node-api": "^1.5.4-r.1", - "apache-arrow": "21.1.0" + "apache-arrow": "^21.1.0" }, "peerDependenciesMeta": { "@duckdb/duckdb-wasm": { @@ -10925,13 +11284,13 @@ }, "packages/encrypt": { "name": "@datastream/encrypt", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { - "libsodium-wrappers": ">=0.7.0" + "libsodium-wrappers": ">=0.8.4" }, "engines": { "node": ">=24" @@ -10947,10 +11306,10 @@ }, "packages/fetch": { "name": "@datastream/fetch", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -10958,10 +11317,10 @@ }, "packages/file": { "name": "@datastream/file", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -10969,10 +11328,10 @@ }, "packages/indexeddb": { "name": "@datastream/indexeddb", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "idb": "8.0.3" }, "engines": { @@ -10981,10 +11340,10 @@ }, "packages/ipfs": { "name": "@datastream/ipfs", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -10992,10 +11351,10 @@ }, "packages/json": { "name": "@datastream/json", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -11003,10 +11362,10 @@ }, "packages/kafka": { "name": "@datastream/kafka", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "kafkajs": "^2.0.0" @@ -11025,10 +11384,10 @@ }, "packages/object": { "name": "@datastream/object", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -11036,10 +11395,10 @@ }, "packages/protobuf": { "name": "@datastream/protobuf", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "protobufjs": "^8.0.0" @@ -11058,10 +11417,10 @@ }, "packages/schema-registry": { "name": "@datastream/schema-registry", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -11069,10 +11428,10 @@ }, "packages/string": { "name": "@datastream/string", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "engines": { "node": ">=24" @@ -11080,18 +11439,18 @@ }, "packages/validate": { "name": "@datastream/validate", - "version": "0.7.0", + "version": "0.7.1", "license": "MIT", "dependencies": { - "@datastream/core": "0.7.0", - "ajv-cmd": "0.13.3" + "@datastream/core": "0.7.1", + "ajv-cmd": "0.15.0" }, "engines": { "node": ">=24" } }, "websites/datastream.js.org": { - "version": "0.7.0", + "version": "0.7.1", "dependencies": { "@plausible-analytics/tracker": "0.4.5", "@willfarrell-ds/svelte": "0.0.0-alpha.8", @@ -11102,14 +11461,14 @@ }, "devDependencies": { "@sveltejs/adapter-cloudflare": "^7.0.0", - "@sveltejs/kit": "^2.60.1", + "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^7.0.0", "@willfarrell-ds/cli": "0.0.0-alpha.8", "esbuild": "^0.28.0", "mdsvex": "^0.12.0", - "svelte": "^5.55.7", + "svelte": "^5.0.0", "svgo": "^4.0.0", - "vite": "^8.0.12", + "vite": "^8.0.0", "vite-plugin-llms": "^1.0.0", "vite-plugin-mkcert": "^2.0.0", "vite-plugin-sitemap": "^0.8.0", @@ -11122,11 +11481,15 @@ }, "websites/datastream.js.org/node_modules/@cloudflare/workers-types": { "version": "4.20260702.1", + "resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20260702.1.tgz", + "integrity": "sha512-mOhf5TUEB1m2vPrxtqoIGfz0fUC9xyxRDx5gWHy5s+OCo6dcV+g7wI1R7gYCMFohhqF/2y2xeKVwMwCJjfn/WA==", "dev": true, "license": "MIT OR Apache-2.0" }, "websites/datastream.js.org/node_modules/@sveltejs/adapter-cloudflare": { "version": "7.2.9", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-cloudflare/-/adapter-cloudflare-7.2.9.tgz", + "integrity": "sha512-LEfLRYKZIiNYBPYk9Cu4dFCCIX37NO96jESNRDv7yr3vvblKU4Yh05FPUMRSrOWFKtG6bJcGIvdG/M2DSf4D1w==", "dev": true, "license": "MIT", "dependencies": { @@ -11139,7 +11502,9 @@ } }, "websites/datastream.js.org/node_modules/@sveltejs/kit": { - "version": "2.70.1", + "version": "2.70.2", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.70.2.tgz", + "integrity": "sha512-RzRoRpuR2KXqc5yMO0akQHDZeT4AslOlznGITURsqHaVbtyYP4Wn3eE3gxj9JcDyNYO0crkxhdwFHc+2vkVm6w==", "dev": true, "license": "MIT", "dependencies": { @@ -11180,6 +11545,8 @@ }, "websites/datastream.js.org/node_modules/cookie": { "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 76d5649..af94bab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/monorepo", - "version": "0.7.0", + "version": "0.7.1", "description": "Streams made easy.", "private": true, "type": "module", @@ -17,13 +17,10 @@ "git:test-staged": "which node && node -v && npm run test:unit", "lint": "biome check --write --no-errors-on-unmatched", "build": "bin/esbuild", - "pretest": "npm run build", - "test": "npm run test:lint && npm run test:unit && npm run test:mutation && npm run test:dast && npm run test:types && npm run test:perf && npm run test:sast", + "test": "npm run test:lint && npm run test:unit && npm run test:mutation && npm run test:dast && npm run test:types && npm run test:perf && npm run test:sast", "test:lint": "biome ci --no-errors-on-unmatched", "test:lint:staged": "biome check --staged --no-errors-on-unmatched", - "test:unit": "npm run test:unit:node && npm run test:unit:web", - "test:unit:node": "node --test --conditions=node --test-force-exit --experimental-test-coverage --test-coverage-exclude=packages/file/** --test-coverage-exclude=**/*.web.js --test-coverage-exclude=**/*.web.mjs --test-coverage-exclude=**/*.test.js --test-coverage-exclude=**/*.fuzz.js --test-coverage-exclude=**/*.perf.js --test-coverage-lines=100 --test-coverage-branches=100 --test-coverage-functions=100", - "test:unit:web": "node --test --conditions=webstream --experimental-test-coverage --test-coverage-exclude=packages/file/** --test-coverage-exclude=**/*.web.js --test-coverage-exclude=**/*.web.mjs --test-coverage-exclude=**/*.test.js --test-coverage-exclude=**/*.fuzz.js --test-coverage-exclude=**/*.perf.js --test-coverage-lines=100 --test-coverage-branches=100 --test-coverage-functions=100", + "test:unit": "npm run build && node --test --conditions=node --test-force-exit --experimental-test-coverage --test-coverage-exclude=packages/file/** --test-coverage-exclude=**/*.web.js --test-coverage-exclude=**/*.web.mjs --test-coverage-exclude=**/*.test.js --test-coverage-exclude=**/*.fuzz.js --test-coverage-exclude=**/*.perf.js --test-coverage-lines=100 --test-coverage-branches=100 --test-coverage-functions=100", "test:sast": "npm run test:sast:license && npm run test:sast:lockfile && npm run test:sast:semgrep && npm run test:sast:trufflehog && npm run test:sast:gitleaks && npm run test:sast:actionlint && npm run test:sast:zizmor && npm run test:sast:trivy", "test:sast:actionlint": "actionlint", "test:sast:gitleaks": "npm run test:sast:gitleaks:dir && npm run test:sast:gitleaks:git", @@ -76,20 +73,20 @@ "@commitlint/cli": "^21.0.0", "@commitlint/config-conventional": "^21.0.0", "@stryker-mutator/core": "^9.0.0", - "@types/node": "^25.0.0", + "@types/node": "^26.0.0", "esbuild": "^0.28.0", - "fast-check": "^4.8.0", + "fast-check": "^4.0.0", "husky": "^9.0.0", - "tinybench": "^6.0.2", - "tstyche": "^7.2.0" + "tinybench": "^6.0.0", + "tstyche": "^7.0.0" }, "overrides": { "qs": "^6.15.2", "@sveltejs/kit": { "cookie": "^0.7.2" }, - "@willfarrell-ds/cli": { - "mathjs": ">=15.2.0" + "js-beautify": { + "brace-expansion": ">=5.0.8" }, "license-check-and-add": { "minimatch": "^10.2.5" @@ -100,13 +97,6 @@ "js-yaml": ">=4.2.0" } } - }, - "miniflare": { - "ws": "^8.21.0", - "sharp": ">=0.35.0" - }, - "wrangler": { - "esbuild": ">=0.28.1" } }, "workspaces": [ diff --git a/packages/arrow/package.json b/packages/arrow/package.json index 92f6519..2c5b46d 100644 --- a/packages/arrow/package.json +++ b/packages/arrow/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/arrow", - "version": "0.7.0", + "version": "0.7.1", "description": "Apache Arrow record batch transform streams", "type": "module", "engines": { @@ -64,7 +64,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", - "apache-arrow": "21.1.0" + "@datastream/core": "0.7.1", + "apache-arrow": "21.2.0" } } diff --git a/packages/aws/package.json b/packages/aws/package.json index 6977d2c..84688f7 100644 --- a/packages/aws/package.json +++ b/packages/aws/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/aws", - "version": "0.7.0", + "version": "0.7.1", "description": "AWS service streaming integrations for CloudWatch Logs, DynamoDB, DynamoDB Streams, Kinesis, Lambda, S3, SNS, and SQS", "type": "module", "engines": { @@ -187,7 +187,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "peerDependencies": { "@aws-sdk/client-cloudwatch-logs": "^3.0.0", diff --git a/packages/base64/package.json b/packages/base64/package.json index bd60bfe..4112909 100644 --- a/packages/base64/package.json +++ b/packages/base64/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/base64", - "version": "0.7.0", + "version": "0.7.1", "description": "Base64 encoding and decoding transform streams", "type": "module", "engines": { @@ -61,6 +61,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/charset/package.json b/packages/charset/package.json index c32710b..c3db7b4 100644 --- a/packages/charset/package.json +++ b/packages/charset/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/charset", - "version": "0.7.0", + "version": "0.7.1", "description": "Character encoding detection, decoding, and conversion streams", "type": "module", "engines": { @@ -109,7 +109,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "chardet": "2.2.0", "iconv-lite": "0.7.3" } diff --git a/packages/compress/brotli.node.js b/packages/compress/brotli.node.js index 9a3b3fa..6bed9f0 100644 --- a/packages/compress/brotli.node.js +++ b/packages/compress/brotli.node.js @@ -5,36 +5,7 @@ import { createBrotliCompress, createBrotliDecompress, } from "node:zlib"; - -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; - -const guardOutput = (stream, maxOutputSize, label) => { - let outputSize = 0; - const originalPush = stream.push.bind(stream); - stream.push = (chunk, encoding) => { - if (chunk !== null) { - outputSize += chunk.byteLength ?? Buffer.byteLength(chunk); - if (outputSize > maxOutputSize) { - stream.push = originalPush; - stream.destroy( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return false; - } - } - return originalPush(chunk, encoding); - }; - const restore = () => { - stream.push = originalPush; - }; - stream.on("close", restore); - stream.on("error", restore); -}; +import { guardCompress, guardDecompress } from "./guard.node.js"; // quality: 0 - 11 export const brotliCompressStream = (options = {}, streamOptions = {}) => { @@ -46,23 +17,12 @@ export const brotliCompressStream = (options = {}, streamOptions = {}) => { quality ?? constants.BROTLI_DEFAULT_QUALITY, }, }); - if (maxOutputSize !== null && maxOutputSize !== undefined) { - guardOutput(stream, maxOutputSize, "Compression"); - } - return stream; + return guardCompress(stream, maxOutputSize); }; export const brotliDecompressStream = (options = {}, streamOptions = {}) => { const { maxOutputSize, params } = options; const zlibOptions = params ? { ...streamOptions, params } : streamOptions; - const stream = createBrotliDecompress(zlibOptions); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - if (limit !== undefined) { - guardOutput(stream, limit, "Decompression"); - } - return stream; + return guardDecompress(createBrotliDecompress(zlibOptions), maxOutputSize); }; export default { diff --git a/packages/compress/brotli.web.js b/packages/compress/brotli.web.js index 54e917a..54c9b7e 100644 --- a/packages/compress/brotli.web.js +++ b/packages/compress/brotli.web.js @@ -7,6 +7,7 @@ // - not supported in safari import { createTransformStream } from "@datastream/core"; import brotliPromise from "brotli-wasm"; // Import the default export +import { resolveDecompressLimit, toBytes } from "./native.web.js"; const { CompressStream, DecompressStream, BrotliStreamResultCode } = await brotliPromise; // Import is async in browsers due to wasm requirements! @@ -15,15 +16,6 @@ const { CompressStream, DecompressStream, BrotliStreamResultCode } = // chunk/output size is handled correctly. const OUTPUT_SIZE = 16_384; // 16KB -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; - -const textEncoder = new TextEncoder(); -const toBytes = (chunk) => - typeof chunk === "string" ? textEncoder.encode(chunk) : chunk; - // https://github.com/httptoolkit/brotli-wasm/issues/14 export const brotliCompressStream = (options = {}, streamOptions = {}) => { const { quality, maxOutputSize } = options; @@ -62,11 +54,7 @@ export const brotliCompressStream = (options = {}, streamOptions = {}) => { return createTransformStream(transform, flush, streamOptions); }; export const brotliDecompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); + const limit = resolveDecompressLimit(options.maxOutputSize); const engine = new DecompressStream(); let outputSize = 0; const transform = (chunk, enqueue) => { diff --git a/packages/compress/deflate.node.js b/packages/compress/deflate.node.js index 9112b4f..820d24b 100644 --- a/packages/compress/deflate.node.js +++ b/packages/compress/deflate.node.js @@ -1,57 +1,18 @@ // Copyright 2026 will Farrell, and datastream contributors. // SPDX-License-Identifier: MIT import { createDeflate, createInflate } from "node:zlib"; - -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; - -const guardOutput = (stream, maxOutputSize, label) => { - let outputSize = 0; - const originalPush = stream.push.bind(stream); - stream.push = (chunk, encoding) => { - if (chunk !== null) { - outputSize += chunk.byteLength ?? Buffer.byteLength(chunk); - if (outputSize > maxOutputSize) { - stream.push = originalPush; - stream.destroy( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return false; - } - } - return originalPush(chunk, encoding); - }; - const restore = () => { - stream.push = originalPush; - }; - stream.on("close", restore); - stream.on("error", restore); -}; +import { guardCompress, guardDecompress } from "./guard.node.js"; // quality -1 - 9 export const deflateCompressStream = (options = {}, streamOptions = {}) => { const { quality, maxOutputSize, level } = options; - const stream = createDeflate({ ...streamOptions, level: level ?? quality }); - if (maxOutputSize !== null && maxOutputSize !== undefined) { - guardOutput(stream, maxOutputSize, "Compression"); - } - return stream; + return guardCompress( + createDeflate({ ...streamOptions, level: level ?? quality }), + maxOutputSize, + ); }; export const deflateDecompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const stream = createInflate(streamOptions); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - if (limit !== undefined) { - guardOutput(stream, limit, "Decompression"); - } - return stream; + return guardDecompress(createInflate(streamOptions), options.maxOutputSize); }; export default { diff --git a/packages/compress/deflate.web.js b/packages/compress/deflate.web.js index c5d0eff..8708a9c 100644 --- a/packages/compress/deflate.web.js +++ b/packages/compress/deflate.web.js @@ -1,124 +1,11 @@ // Copyright 2026 will Farrell, and datastream contributors. // SPDX-License-Identifier: MIT -/* global CompressionStream, DecompressionStream, TransformStream */ -// CompressionStream -// - https://caniuse.com/?search=CompressionStream -// - not supported on firefox - https://bugzilla.mozilla.org/show_bug.cgi?id=1586639 -// - not supported in safari -import { makeOptions } from "@datastream/core"; +import { nativeCompressStreams } from "./native.web.js"; -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; +const { compressStream, decompressStream } = nativeCompressStreams("deflate"); -const textEncoder = new TextEncoder(); -// The WHATWG CompressionStream/DecompressionStream require each chunk to be a -// BufferSource; strings throw a TypeError in spec-compliant browsers. Node's -// implementation is lenient, so convert here to match Node + web brotli. -const toBytes = (chunk) => - typeof chunk === "string" ? textEncoder.encode(chunk) : chunk; - -// Input stage: convert string chunks to bytes (BufferSource) and honor an -// AbortSignal. The native CompressionStream/DecompressionStream accept neither a -// signal nor string chunks, so this stage provides both (parity with the Node -// build and web brotli). highWaterMark/chunkSize are threaded via makeOptions. -const inputStage = (streamOptions) => { - const { signal } = streamOptions ?? {}; - const { writableStrategy, readableStrategy } = makeOptions(streamOptions); - let onAbort; - const abortError = () => - signal.reason ?? new DOMException("Aborted", "AbortError"); - return new TransformStream( - { - start(controller) { - if (signal) { - if (signal.aborted) { - controller.error(abortError()); - return; - } - onAbort = () => controller.error(abortError()); - signal.addEventListener("abort", onAbort, { once: true }); - } - }, - transform(chunk, controller) { - controller.enqueue(toBytes(chunk)); - }, - flush() { - if (onAbort) { - signal.removeEventListener("abort", onAbort); - onAbort = undefined; - } - }, - }, - writableStrategy, - readableStrategy, - ); -}; - -// Output stage: enforce maxOutputSize and keep honoring the AbortSignal for the -// whole stream lifetime (a mid-flight abort errors this terminal readable). -const outputStage = (maxOutputSize, label, streamOptions) => { - const { signal } = streamOptions ?? {}; - let onAbort; - let outputSize = 0; - const abortError = () => - signal.reason ?? new DOMException("Aborted", "AbortError"); - return new TransformStream({ - start(controller) { - if (signal) { - if (signal.aborted) { - controller.error(abortError()); - return; - } - onAbort = () => controller.error(abortError()); - signal.addEventListener("abort", onAbort, { once: true }); - } - }, - transform(chunk, controller) { - if (maxOutputSize !== null && maxOutputSize !== undefined) { - outputSize += chunk.byteLength; - if (outputSize > maxOutputSize) { - controller.error( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return; - } - } - controller.enqueue(chunk); - }, - flush() { - if (onAbort) { - signal.removeEventListener("abort", onAbort); - onAbort = undefined; - } - }, - }); -}; - -const wrap = (compressor, maxOutputSize, streamOptions, label) => { - const input = inputStage(streamOptions); - const output = outputStage(maxOutputSize, label, streamOptions); - const readable = input.readable.pipeThrough(compressor).pipeThrough(output); - return { readable, writable: input.writable }; -}; - -export const deflateCompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const compressor = new CompressionStream("deflate"); - return wrap(compressor, maxOutputSize, streamOptions, "Compression"); -}; -export const deflateDecompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const decompressor = new DecompressionStream("deflate"); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - return wrap(decompressor, limit, streamOptions, "Decompression"); -}; +export const deflateCompressStream = compressStream; +export const deflateDecompressStream = decompressStream; export default { compressStream: deflateCompressStream, diff --git a/packages/compress/guard.node.js b/packages/compress/guard.node.js new file mode 100644 index 0000000..0d59e24 --- /dev/null +++ b/packages/compress/guard.node.js @@ -0,0 +1,54 @@ +// Copyright 2026 will Farrell, and datastream contributors. +// SPDX-License-Identifier: MIT +// Shared output-size guard for the node zlib wrappers. Internal: not a package +// export, inlined into each *.node.mjs bundle by bin/esbuild. + +// Default decompression output ceiling (256MiB) so that untrusted compressed +// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` +// to opt out of the limit entirely. +const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; + +const guardOutput = (stream, maxOutputSize, label) => { + let outputSize = 0; + const originalPush = stream.push.bind(stream); + stream.push = (chunk, encoding) => { + if (chunk !== null) { + outputSize += chunk.byteLength ?? Buffer.byteLength(chunk); + if (outputSize > maxOutputSize) { + stream.push = originalPush; + stream.destroy( + new Error( + `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, + ), + ); + return false; + } + } + return originalPush(chunk, encoding); + }; + const restore = () => { + stream.push = originalPush; + }; + stream.on("close", restore); + stream.on("error", restore); +}; + +// Compression is bounded only when the caller asks for it. +export const guardCompress = (stream, maxOutputSize) => { + if (maxOutputSize !== null && maxOutputSize !== undefined) { + guardOutput(stream, maxOutputSize, "Compression"); + } + return stream; +}; + +// Decompression is bounded by default; only an explicit null opts out. +export const guardDecompress = (stream, maxOutputSize) => { + const limit = + maxOutputSize === null + ? undefined + : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); + if (limit !== undefined) { + guardOutput(stream, limit, "Decompression"); + } + return stream; +}; diff --git a/packages/compress/gzip.node.js b/packages/compress/gzip.node.js index 68a8892..5b33f5d 100644 --- a/packages/compress/gzip.node.js +++ b/packages/compress/gzip.node.js @@ -1,57 +1,18 @@ // Copyright 2026 will Farrell, and datastream contributors. // SPDX-License-Identifier: MIT import { createGunzip, createGzip } from "node:zlib"; - -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; - -const guardOutput = (stream, maxOutputSize, label) => { - let outputSize = 0; - const originalPush = stream.push.bind(stream); - stream.push = (chunk, encoding) => { - if (chunk !== null) { - outputSize += chunk.byteLength ?? Buffer.byteLength(chunk); - if (outputSize > maxOutputSize) { - stream.push = originalPush; - stream.destroy( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return false; - } - } - return originalPush(chunk, encoding); - }; - const restore = () => { - stream.push = originalPush; - }; - stream.on("close", restore); - stream.on("error", restore); -}; +import { guardCompress, guardDecompress } from "./guard.node.js"; // quality -1 - 9 export const gzipCompressStream = (options = {}, streamOptions = {}) => { const { quality, maxOutputSize } = options; - const stream = createGzip({ ...streamOptions, level: quality }); - if (maxOutputSize !== null && maxOutputSize !== undefined) { - guardOutput(stream, maxOutputSize, "Compression"); - } - return stream; + return guardCompress( + createGzip({ ...streamOptions, level: quality }), + maxOutputSize, + ); }; export const gzipDecompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const stream = createGunzip(streamOptions); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - if (limit !== undefined) { - guardOutput(stream, limit, "Decompression"); - } - return stream; + return guardDecompress(createGunzip(streamOptions), options.maxOutputSize); }; export default { diff --git a/packages/compress/gzip.web.js b/packages/compress/gzip.web.js index 465688a..de3ebda 100644 --- a/packages/compress/gzip.web.js +++ b/packages/compress/gzip.web.js @@ -1,124 +1,11 @@ // Copyright 2026 will Farrell, and datastream contributors. // SPDX-License-Identifier: MIT -/* global CompressionStream, DecompressionStream, TransformStream */ -// CompressionStream -// - https://caniuse.com/?search=CompressionStream -// - not supported on firefox - https://bugzilla.mozilla.org/show_bug.cgi?id=1586639 -// - not supported in safari -import { makeOptions } from "@datastream/core"; +import { nativeCompressStreams } from "./native.web.js"; -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; +const { compressStream, decompressStream } = nativeCompressStreams("gzip"); -const textEncoder = new TextEncoder(); -// The WHATWG CompressionStream/DecompressionStream require each chunk to be a -// BufferSource; strings throw a TypeError in spec-compliant browsers. Node's -// implementation is lenient, so convert here to match Node + web brotli. -const toBytes = (chunk) => - typeof chunk === "string" ? textEncoder.encode(chunk) : chunk; - -// Input stage: convert string chunks to bytes (BufferSource) and honor an -// AbortSignal. The native CompressionStream/DecompressionStream accept neither a -// signal nor string chunks, so this stage provides both (parity with the Node -// build and web brotli). highWaterMark/chunkSize are threaded via makeOptions. -const inputStage = (streamOptions) => { - const { signal } = streamOptions ?? {}; - const { writableStrategy, readableStrategy } = makeOptions(streamOptions); - let onAbort; - const abortError = () => - signal.reason ?? new DOMException("Aborted", "AbortError"); - return new TransformStream( - { - start(controller) { - if (signal) { - if (signal.aborted) { - controller.error(abortError()); - return; - } - onAbort = () => controller.error(abortError()); - signal.addEventListener("abort", onAbort, { once: true }); - } - }, - transform(chunk, controller) { - controller.enqueue(toBytes(chunk)); - }, - flush() { - if (onAbort) { - signal.removeEventListener("abort", onAbort); - onAbort = undefined; - } - }, - }, - writableStrategy, - readableStrategy, - ); -}; - -// Output stage: enforce maxOutputSize and keep honoring the AbortSignal for the -// whole stream lifetime (a mid-flight abort errors this terminal readable). -const outputStage = (maxOutputSize, label, streamOptions) => { - const { signal } = streamOptions ?? {}; - let onAbort; - let outputSize = 0; - const abortError = () => - signal.reason ?? new DOMException("Aborted", "AbortError"); - return new TransformStream({ - start(controller) { - if (signal) { - if (signal.aborted) { - controller.error(abortError()); - return; - } - onAbort = () => controller.error(abortError()); - signal.addEventListener("abort", onAbort, { once: true }); - } - }, - transform(chunk, controller) { - if (maxOutputSize !== null && maxOutputSize !== undefined) { - outputSize += chunk.byteLength; - if (outputSize > maxOutputSize) { - controller.error( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return; - } - } - controller.enqueue(chunk); - }, - flush() { - if (onAbort) { - signal.removeEventListener("abort", onAbort); - onAbort = undefined; - } - }, - }); -}; - -const wrap = (compressor, maxOutputSize, streamOptions, label) => { - const input = inputStage(streamOptions); - const output = outputStage(maxOutputSize, label, streamOptions); - const readable = input.readable.pipeThrough(compressor).pipeThrough(output); - return { readable, writable: input.writable }; -}; - -export const gzipCompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const compressor = new CompressionStream("gzip"); - return wrap(compressor, maxOutputSize, streamOptions, "Compression"); -}; -export const gzipDecompressStream = (options = {}, streamOptions = {}) => { - const { maxOutputSize } = options; - const decompressor = new DecompressionStream("gzip"); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - return wrap(decompressor, limit, streamOptions, "Decompression"); -}; +export const gzipCompressStream = compressStream; +export const gzipDecompressStream = decompressStream; export default { compressStream: gzipCompressStream, diff --git a/packages/compress/index.test.js b/packages/compress/index.test.js index 4211218..2e58ac2 100644 --- a/packages/compress/index.test.js +++ b/packages/compress/index.test.js @@ -1313,7 +1313,9 @@ if (variant === "webstream") { chunk instanceof ArrayBuffer || ArrayBuffer.isView(chunk); const installStrictCompression = () => { globalThis.CompressionStream = class { - constructor() { + // Mirror the real WHATWG signature `new CompressionStream(format)` so the + // identity stand-in has the same arity (the format is intentionally ignored). + constructor(_format) { const ts = new TransformStream({ transform(chunk, controller) { if (!isBufferSource(chunk)) { diff --git a/packages/compress/native.web.js b/packages/compress/native.web.js new file mode 100644 index 0000000..c4f99a1 --- /dev/null +++ b/packages/compress/native.web.js @@ -0,0 +1,132 @@ +// Copyright 2026 will Farrell, and datastream contributors. +// SPDX-License-Identifier: MIT +/* global CompressionStream, DecompressionStream, TransformStream */ +// CompressionStream +// - https://caniuse.com/?search=CompressionStream +// - not supported on firefox - https://bugzilla.mozilla.org/show_bug.cgi?id=1586639 +// - not supported in safari +// Internal: not a package export, inlined into each *.web.mjs bundle by +// bin/esbuild. +import { makeOptions } from "@datastream/core"; + +// Default decompression output ceiling (256MiB) so that untrusted compressed +// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` +// to opt out of the limit entirely. +export const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; + +// Decompression is bounded by default; only an explicit null opts out. +export const resolveDecompressLimit = (maxOutputSize) => + maxOutputSize === null + ? undefined + : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); + +const textEncoder = new TextEncoder(); +// The WHATWG CompressionStream/DecompressionStream require each chunk to be a +// BufferSource; strings throw a TypeError in spec-compliant browsers. Node's +// implementation is lenient, so convert here to match Node + web brotli. +export const toBytes = (chunk) => + typeof chunk === "string" ? textEncoder.encode(chunk) : chunk; + +// Input stage: convert string chunks to bytes (BufferSource) and honor an +// AbortSignal. The native CompressionStream/DecompressionStream accept neither a +// signal nor string chunks, so this stage provides both (parity with the Node +// build and web brotli). highWaterMark/chunkSize are threaded via makeOptions. +const inputStage = (streamOptions) => { + const { signal } = streamOptions ?? {}; + const { writableStrategy, readableStrategy } = makeOptions(streamOptions); + let onAbort; + const abortError = () => + signal.reason ?? new DOMException("Aborted", "AbortError"); + return new TransformStream( + { + start(controller) { + if (signal) { + if (signal.aborted) { + controller.error(abortError()); + return; + } + onAbort = () => controller.error(abortError()); + signal.addEventListener("abort", onAbort, { once: true }); + } + }, + transform(chunk, controller) { + controller.enqueue(toBytes(chunk)); + }, + flush() { + if (onAbort) { + signal.removeEventListener("abort", onAbort); + onAbort = undefined; + } + }, + }, + writableStrategy, + readableStrategy, + ); +}; + +// Output stage: enforce maxOutputSize and keep honoring the AbortSignal for the +// whole stream lifetime (a mid-flight abort errors this terminal readable). +const outputStage = (maxOutputSize, label, streamOptions) => { + const { signal } = streamOptions ?? {}; + let onAbort; + let outputSize = 0; + const abortError = () => + signal.reason ?? new DOMException("Aborted", "AbortError"); + return new TransformStream({ + start(controller) { + if (signal) { + if (signal.aborted) { + controller.error(abortError()); + return; + } + onAbort = () => controller.error(abortError()); + signal.addEventListener("abort", onAbort, { once: true }); + } + }, + transform(chunk, controller) { + if (maxOutputSize !== null && maxOutputSize !== undefined) { + outputSize += chunk.byteLength; + if (outputSize > maxOutputSize) { + controller.error( + new Error( + `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, + ), + ); + return; + } + } + controller.enqueue(chunk); + }, + flush() { + if (onAbort) { + signal.removeEventListener("abort", onAbort); + onAbort = undefined; + } + }, + }); +}; + +const wrap = (compressor, maxOutputSize, streamOptions, label) => { + const input = inputStage(streamOptions); + const output = outputStage(maxOutputSize, label, streamOptions); + const readable = input.readable.pipeThrough(compressor).pipeThrough(output); + return { readable, writable: input.writable }; +}; + +// gzip and deflate differ only by the format string the platform takes. +export const nativeCompressStreams = (format) => ({ + compressStream: (options = {}, streamOptions = {}) => + wrap( + new CompressionStream(format), + options.maxOutputSize, + streamOptions, + "Compression", + ), + decompressStream: (options = {}, streamOptions = {}) => + wrap( + new DecompressionStream(format), + resolveDecompressLimit(options.maxOutputSize), + streamOptions, + "Decompression", + ), +}); diff --git a/packages/compress/package.json b/packages/compress/package.json index d7109d2..9a0cf50 100644 --- a/packages/compress/package.json +++ b/packages/compress/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/compress", - "version": "0.7.0", + "version": "0.7.1", "description": "Compression and decompression streams for gzip, deflate, brotli, and zstd", "type": "module", "engines": { @@ -98,7 +98,9 @@ "files": [ "*.mjs", "*.map", - "*.d.ts" + "*.d.ts", + "guard.node.js", + "native.web.js" ], "scripts": { "test": "npm run test:unit", @@ -125,7 +127,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "brotli-wasm": "^3.0.0" diff --git a/packages/compress/zstd.node.js b/packages/compress/zstd.node.js index b980034..d56a514 100644 --- a/packages/compress/zstd.node.js +++ b/packages/compress/zstd.node.js @@ -1,36 +1,7 @@ // Copyright 2026 will Farrell, and datastream contributors. // SPDX-License-Identifier: MIT import { constants, createZstdCompress, createZstdDecompress } from "node:zlib"; - -// Default decompression output ceiling (256MiB) so that untrusted compressed -// input is bounded by default (zip-bomb protection). Pass `maxOutputSize: null` -// to opt out of the limit entirely. -const DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE = 256 * 1024 * 1024; - -const guardOutput = (stream, maxOutputSize, label) => { - let outputSize = 0; - const originalPush = stream.push.bind(stream); - stream.push = (chunk, encoding) => { - if (chunk !== null) { - outputSize += chunk.byteLength ?? Buffer.byteLength(chunk); - if (outputSize > maxOutputSize) { - stream.push = originalPush; - stream.destroy( - new Error( - `${label} output exceeds maxOutputSize (${maxOutputSize} bytes)`, - ), - ); - return false; - } - } - return originalPush(chunk, encoding); - }; - const restore = () => { - stream.push = originalPush; - }; - stream.on("close", restore); - stream.on("error", restore); -}; +import { guardCompress, guardDecompress } from "./guard.node.js"; export const zstdCompressStream = (options = {}, streamOptions = {}) => { const { quality, maxOutputSize, params } = options; @@ -41,24 +12,14 @@ export const zstdCompressStream = (options = {}, streamOptions = {}) => { quality ?? constants.ZSTD_CLEVEL_DEFAULT, }, }); - if (maxOutputSize !== null && maxOutputSize !== undefined) { - guardOutput(stream, maxOutputSize, "Compression"); - } - return stream; + return guardCompress(stream, maxOutputSize); }; export const zstdDecompressStream = (options = {}, streamOptions = {}) => { const { maxOutputSize, params } = options; const stream = createZstdDecompress( params ? { ...streamOptions, params } : streamOptions, ); - const limit = - maxOutputSize === null - ? undefined - : (maxOutputSize ?? DEFAULT_DECOMPRESS_MAX_OUTPUT_SIZE); - if (limit !== undefined) { - guardOutput(stream, limit, "Decompression"); - } - return stream; + return guardDecompress(stream, maxOutputSize); }; export default { diff --git a/packages/core/index.node.js b/packages/core/index.node.js index aba48e0..4294d14 100644 --- a/packages/core/index.node.js +++ b/packages/core/index.node.js @@ -2,6 +2,7 @@ // SPDX-License-Identifier: MIT import { Readable, Transform, Writable } from "node:stream"; import { pipeline as pipelinePromise } from "node:stream/promises"; +import { isDeepStrictEqual } from "node:util"; // Node.js streams interpret push(null) as EOF. // Use a sentinel so null values flow through object-mode streams. @@ -551,15 +552,7 @@ export const shallowEqual = (a, b) => { return true; }; -export const deepEqual = (a, b) => { - try { - return JSON.stringify(a) === JSON.stringify(b); - } catch (e) { - throw new Error("Failed to stringify chunk, possibly circular reference", { - cause: e, - }); - } -}; +export const deepEqual = isDeepStrictEqual; export const timeout = (ms, { signal } = {}) => { if (signal?.aborted) { diff --git a/packages/core/index.test.js b/packages/core/index.test.js index a6d4d57..99a07ed 100644 --- a/packages/core/index.test.js +++ b/packages/core/index.test.js @@ -879,15 +879,15 @@ test(`${variant}: deepClone throws for non-cloneable values`, () => { } }); -test(`${variant}: deepEqual throws for circular references`, () => { +test(`${variant}: deepEqual handles circular references`, () => { const a = {}; a.self = a; - try { - deepEqual(a, a); - throw new Error("Should have thrown"); - } catch (e) { - ok(e.message.includes("stringify chunk")); - } + const b = {}; + b.self = b; + strictEqual(deepEqual(a, a), true); + strictEqual(deepEqual(a, b), true); + b.other = 1; + strictEqual(deepEqual(a, b), false); }); // *** shared helpers *** // @@ -923,9 +923,17 @@ test(`${variant}: shallowEqual compares own keys`, () => { strictEqual(shallowEqual(null, { a: 1 }), false); }); -test(`${variant}: deepEqual via JSON serialization`, () => { +test(`${variant}: deepEqual compares structurally`, () => { strictEqual(deepEqual({ a: { b: 1 } }, { a: { b: 1 } }), true); strictEqual(deepEqual({ a: { b: 1 } }, { a: { b: 2 } }), false); + // The cases a JSON.stringify comparison gets wrong. + strictEqual(deepEqual({ a: 1, b: 2 }, { b: 2, a: 1 }), true); + strictEqual(deepEqual({ a: undefined }, {}), false); + strictEqual(deepEqual(Number.NaN, Number.NaN), true); + strictEqual(deepEqual(new Date(0), new Date(0)), true); + strictEqual(deepEqual(new Date(0), new Date(1)), false); + strictEqual(deepEqual(new Set([1]), new Set([1])), true); + strictEqual(deepEqual(new Set([1]), new Set([2])), false); }); // *** Node NULL_SENTINEL collector regression *** // @@ -1922,7 +1930,7 @@ test(`${variant}: createTransformStream awaits an async flush before finishing`, deepStrictEqual(order, ["t", "flush-start", "flush-end"]); }); -// --- deepClone / deepEqual preserve the original error as `cause` (kills +// --- deepClone preserves the original error as `cause` (kills // ObjectLiteral -> {} which drops the cause). --- test(`${variant}: deepClone attaches the original error as cause`, (_t) => { try { @@ -1934,18 +1942,6 @@ test(`${variant}: deepClone attaches the original error as cause`, (_t) => { } }); -test(`${variant}: deepEqual attaches the original error as cause`, (_t) => { - const a = {}; - a.self = a; - try { - deepEqual(a, a); - throw new Error("Should have thrown"); - } catch (e) { - ok(e.message.includes("stringify chunk")); - ok(e.cause instanceof Error, "expected a cause error"); - } -}); - // --- shallowEqual: the `b == null` half of the guard. shallowEqual(obj, null) // must be false; if `|| b == null` were dropped it would call Object.keys(null) // and throw instead of returning false. --- diff --git a/packages/core/index.web.js b/packages/core/index.web.js index dd6edf9..8e02684 100644 --- a/packages/core/index.web.js +++ b/packages/core/index.web.js @@ -138,6 +138,10 @@ export const streamToBuffer = async (stream, { maxBufferSize } = {}) => { return out; }; +export const backpressureGauge = (_streams) => { + throw new Error("backpressureGauge: Not supported"); +}; + export const isReadable = (stream) => { // Short-circuit non-objects so the `.readable` access can't throw on // null/undefined/primitives (Node's instanceof check safely returns false). @@ -472,6 +476,11 @@ export const shallowEqual = (a, b) => { return true; }; +// ponytail: JSON.stringify comparison, no web stdlib equivalent of node:util's +// isDeepStrictEqual (which the node build uses). Known ceiling: this is +// key-order sensitive, treats NaN as equal to NaN, ignores undefined-valued +// keys, flattens Date/Map/Set, and throws on circular references. Upgrade path +// is a shared recursive compare - worth writing once the web build has tests. export const deepEqual = (a, b) => { try { return JSON.stringify(a) === JSON.stringify(b); @@ -489,18 +498,13 @@ export const timeout = (ms, { signal } = {}) => { ); } return new Promise((resolve, reject) => { - let settled = false; const abortHandler = () => { - if (settled) return; - settled = true; clearTimeout(timerId); signal.removeEventListener("abort", abortHandler); reject(new Error("Aborted", { cause: { code: "AbortError" } })); }; if (signal) signal.addEventListener("abort", abortHandler); const timerId = setTimeout(() => { - if (settled) return; - settled = true; if (signal) signal.removeEventListener("abort", abortHandler); resolve(); }, ms); diff --git a/packages/core/package.json b/packages/core/package.json index 64fd392..e0c7bf7 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/core", - "version": "0.7.0", + "version": "0.7.1", "description": "Stream creation utilities and pipeline functions for Web Streams API and Node.js streams", "type": "module", "engines": { @@ -62,6 +62,6 @@ "homepage": "https://datastream.js.org", "dependencies": {}, "devDependencies": { - "@datastream/object": "0.7.0" + "@datastream/object": "0.7.1" } } diff --git a/packages/csv/package.json b/packages/csv/package.json index bb30e7e..27f9e28 100644 --- a/packages/csv/package.json +++ b/packages/csv/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/csv", - "version": "0.7.0", + "version": "0.7.1", "description": "CSV parsing and formatting transform streams", "type": "module", "engines": { @@ -64,7 +64,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", - "@datastream/object": "0.7.0" + "@datastream/core": "0.7.1", + "@datastream/object": "0.7.1" } } diff --git a/packages/digest/package.json b/packages/digest/package.json index ea0682c..c927316 100644 --- a/packages/digest/package.json +++ b/packages/digest/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/digest", - "version": "0.7.0", + "version": "0.7.1", "description": "Cryptographic hash digest pass-through streams", "type": "module", "engines": { @@ -61,7 +61,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "hash-wasm": "4.12.0" } } diff --git a/packages/duckdb/package.json b/packages/duckdb/package.json index b39c5b2..727cd72 100644 --- a/packages/duckdb/package.json +++ b/packages/duckdb/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/duckdb", - "version": "0.7.0", + "version": "0.7.1", "description": "DuckDB writable streams (copy-from) for Node and browser", "type": "module", "engines": { @@ -64,12 +64,12 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "peerDependencies": { "@duckdb/duckdb-wasm": "^1.33.1-dev57.0", "@duckdb/node-api": "^1.5.4-r.1", - "apache-arrow": "21.1.0" + "apache-arrow": "^21.1.0" }, "peerDependenciesMeta": { "@duckdb/duckdb-wasm": { @@ -83,9 +83,9 @@ } }, "devDependencies": { - "@datastream/arrow": "0.7.0", + "@datastream/arrow": "0.7.1", "@duckdb/duckdb-wasm": "1.33.1-dev57.0", - "@duckdb/node-api": "1.5.4-r.1", - "apache-arrow": "21.1.0" + "@duckdb/node-api": "1.5.5-r.2", + "apache-arrow": "21.2.0" } } diff --git a/packages/encrypt/package.json b/packages/encrypt/package.json index 7cd85f6..db5edeb 100644 --- a/packages/encrypt/package.json +++ b/packages/encrypt/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/encrypt", - "version": "0.7.0", + "version": "0.7.1", "description": "Symmetric encryption/decryption streams", "type": "module", "engines": { @@ -60,10 +60,10 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { - "libsodium-wrappers": ">=0.7.0" + "libsodium-wrappers": ">=0.8.4" }, "peerDependencies": { "libsodium-wrappers": ">=0.7.0" diff --git a/packages/fetch/package.json b/packages/fetch/package.json index 42850b1..c940091 100644 --- a/packages/fetch/package.json +++ b/packages/fetch/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/fetch", - "version": "0.7.0", + "version": "0.7.1", "description": "HTTP fetch-based readable and writable streams with pagination and rate limiting", "type": "module", "engines": { @@ -61,6 +61,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/file/package.json b/packages/file/package.json index 3a74775..6a536b2 100644 --- a/packages/file/package.json +++ b/packages/file/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/file", - "version": "0.7.0", + "version": "0.7.1", "description": "File system readable and writable streams with extension type enforcement", "type": "module", "engines": { @@ -61,6 +61,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/indexeddb/package.json b/packages/indexeddb/package.json index 04e5bb0..8d96dd5 100644 --- a/packages/indexeddb/package.json +++ b/packages/indexeddb/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/indexeddb", - "version": "0.7.0", + "version": "0.7.1", "description": "IndexedDB readable and writable streams for browser storage", "type": "module", "engines": { @@ -61,7 +61,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", + "@datastream/core": "0.7.1", "idb": "8.0.3" } } diff --git a/packages/ipfs/package.json b/packages/ipfs/package.json index c0b540c..3260549 100644 --- a/packages/ipfs/package.json +++ b/packages/ipfs/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/ipfs", - "version": "0.7.0", + "version": "0.7.1", "description": "IPFS get and add streaming operations", "type": "module", "engines": { @@ -62,6 +62,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/json/package.json b/packages/json/package.json index e9845cb..4890071 100644 --- a/packages/json/package.json +++ b/packages/json/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/json", - "version": "0.7.0", + "version": "0.7.1", "description": "JSON and NDJSON (JSON Lines) parsing and formatting transform streams", "type": "module", "engines": { @@ -64,6 +64,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/kafka/package.json b/packages/kafka/package.json index 1d5a3e0..1cb425c 100644 --- a/packages/kafka/package.json +++ b/packages/kafka/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/kafka", - "version": "0.7.0", + "version": "0.7.1", "description": "Kafka producer and consumer streams (Node, via kafkajs)", "type": "module", "engines": { @@ -65,7 +65,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "peerDependencies": { "kafkajs": "^2.0.0" diff --git a/packages/object/index.test.js b/packages/object/index.test.js index 15b2982..5164a61 100644 --- a/packages/object/index.test.js +++ b/packages/object/index.test.js @@ -502,6 +502,27 @@ test(`${variant}: objectSkipConsecutiveDuplicatesStream isNestedObject should us ]); }); +// deepEqual used to be JSON.stringify(a) === JSON.stringify(b), so records that +// were structurally identical but had a different key order (routine after +// JSON.parse or objectPickStream) were not recognised as duplicates. +test(`${variant}: objectSkipConsecutiveDuplicatesStream isNestedObject ignores key order`, async (_t) => { + const input = [ + { a: 1, b: { c: 2, d: 3 } }, + { b: { d: 3, c: 2 }, a: 1 }, + { a: 1, b: { c: 2, d: 4 } }, + ]; + const streams = [ + createReadableStream(input), + objectSkipConsecutiveDuplicatesStream({ isNestedObject: true }), + ]; + const stream = pipejoin(streams); + const output = await streamToArray(stream); + deepStrictEqual(output, [ + { a: 1, b: { c: 2, d: 3 } }, + { a: 1, b: { c: 2, d: 4 } }, + ]); +}); + // *** objectPivotWideToLongStream shallow copy regression *** // test(`${variant}: objectPivotWideToLongStream should not mutate input chunks`, async (_t) => { const input = [{ id: 1, x: 10, y: 20 }]; diff --git a/packages/object/package.json b/packages/object/package.json index c8e3b97..f723e63 100644 --- a/packages/object/package.json +++ b/packages/object/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/object", - "version": "0.7.0", + "version": "0.7.1", "description": "Object transform streams for picking, omitting, pivoting, batching, and key mapping", "type": "module", "engines": { @@ -61,6 +61,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/protobuf/package.json b/packages/protobuf/package.json index 40bc7ab..3e11afc 100644 --- a/packages/protobuf/package.json +++ b/packages/protobuf/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/protobuf", - "version": "0.7.0", + "version": "0.7.1", "description": "Protobuf encode/decode and length-prefix framing transform streams", "type": "module", "engines": { @@ -65,7 +65,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" }, "devDependencies": { "protobufjs": "^8.0.0" diff --git a/packages/schema-registry/package.json b/packages/schema-registry/package.json index 303d058..45f543d 100644 --- a/packages/schema-registry/package.json +++ b/packages/schema-registry/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/schema-registry", - "version": "0.7.0", + "version": "0.7.1", "description": "Schema-Registry wire-format framing transform streams (Confluent and AWS Glue)", "type": "module", "engines": { @@ -66,6 +66,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/string/package.json b/packages/string/package.json index 1ae6f71..9501a56 100644 --- a/packages/string/package.json +++ b/packages/string/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/string", - "version": "0.7.0", + "version": "0.7.1", "description": "String transform streams for splitting, replacing, counting, and deduplication", "type": "module", "engines": { @@ -61,6 +61,6 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0" + "@datastream/core": "0.7.1" } } diff --git a/packages/validate/package.json b/packages/validate/package.json index 7bf41f9..dcf7f6d 100644 --- a/packages/validate/package.json +++ b/packages/validate/package.json @@ -1,6 +1,6 @@ { "name": "@datastream/validate", - "version": "0.7.0", + "version": "0.7.1", "description": "JSON Schema validation transform streams using Ajv", "type": "module", "engines": { @@ -61,7 +61,7 @@ }, "homepage": "https://datastream.js.org", "dependencies": { - "@datastream/core": "0.7.0", - "ajv-cmd": "0.13.3" + "@datastream/core": "0.7.1", + "ajv-cmd": "0.15.0" } } diff --git a/stryker.config.mjs b/stryker.config.mjs index d907e1a..13860de 100644 --- a/stryker.config.mjs +++ b/stryker.config.mjs @@ -11,7 +11,12 @@ export default { command: `node --test --conditions=node --test-force-exit ./${base}/**/*.test.js`, }, coverageAnalysis: "off", - mutate: [`${base}/**/*.node.mjs`, "!**/*.map", "!**/node_modules/**"], + mutate: [ + `${base}/**/*.node.mjs`, + `${base}/**/guard.node.js`, + "!**/*.map", + "!**/node_modules/**", + ], plugins: ["@stryker-mutator/*"], reporters: ["progress", "clear-text"], thresholds: { high: 100, low: 100, break: 100 }, diff --git a/stryker.node-test.config.json b/stryker.node-test.config.json deleted file mode 100644 index 75a973d..0000000 --- a/stryker.node-test.config.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "./node_modules/@stryker-mutator/core/schema/stryker-schema.json", - "packageManager": "npm", - "testRunner": "node-test", - "nodeTest": { - "testFiles": ["packages/encrypt/**/*.test.js"], - "nodeArgs": ["--conditions=node"], - "concurrency": false - }, - "coverageAnalysis": "perTest", - "mutate": [ - "packages/encrypt/**/*.node.mjs", - "!**/*.map", - "!**/node_modules/**" - ], - "plugins": ["@stryker-mutator/node-test-runner"], - "reporters": ["progress", "clear-text"], - "thresholds": { "high": 100, "low": 100, "break": 0 }, - "tempDirName": "/tmp/stryker/@datastream/node-test" -} diff --git a/websites/datastream.js.org/package.json b/websites/datastream.js.org/package.json index 8e49168..24248d4 100644 --- a/websites/datastream.js.org/package.json +++ b/websites/datastream.js.org/package.json @@ -2,7 +2,7 @@ "name": "datastream.js.org", "description": "SvelteKit SSR", "private": true, - "version": "0.7.0", + "version": "0.7.1", "type": "module", "engines": { "node": ">=24" @@ -32,14 +32,14 @@ }, "devDependencies": { "@sveltejs/adapter-cloudflare": "^7.0.0", - "@sveltejs/kit": "^2.60.1", + "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^7.0.0", "@willfarrell-ds/cli": "0.0.0-alpha.8", "esbuild": "^0.28.0", "mdsvex": "^0.12.0", - "svelte": "^5.55.7", + "svelte": "^5.0.0", "svgo": "^4.0.0", - "vite": "^8.0.12", + "vite": "^8.0.0", "vite-plugin-llms": "^1.0.0", "vite-plugin-mkcert": "^2.0.0", "vite-plugin-sitemap": "^0.8.0", diff --git a/websites/datastream.js.org/src/hooks/tardisecMiddleware.js b/websites/datastream.js.org/src/hooks/tardisecMiddleware.js index 691be51..ebcd74b 100644 --- a/websites/datastream.js.org/src/hooks/tardisecMiddleware.js +++ b/websites/datastream.js.org/src/hooks/tardisecMiddleware.js @@ -20,6 +20,18 @@ const tardisecMiddleware = async ({ event, resolve }) => { response.headers.delete("X-Sveltekit-Page"); + // Kit can't emit require-trusted-types-for without forcing a trusted-types + // allowlist at build time, so append it here when absent. + // error during build: + // [Error loading svelte.config.js: The `csp.directives['trusted-types']` option must include 'svelte-trusted-html'] + const csp = response.headers.get("Content-Security-Policy"); + if (csp && !csp.includes("require-trusted-types-for")) { + response.headers.set( + "Content-Security-Policy", + `${csp};require-trusted-types-for 'script'`, + ); + } + return response; }; diff --git a/websites/datastream.js.org/src/lib/remark-extract-headings.js b/websites/datastream.js.org/src/lib/remark-extract-headings.js index ef22fd9..bccac56 100644 --- a/websites/datastream.js.org/src/lib/remark-extract-headings.js +++ b/websites/datastream.js.org/src/lib/remark-extract-headings.js @@ -11,7 +11,10 @@ export function remarkExtractHeadings() { visit(tree, "heading", (node) => { // Only extract H2 headings if (node.depth === 2) { - const text = nodetoString(node).replaceAll("<", "").replaceAll(">", ""); + // Strip any angle brackets from the plain-text heading (cosmetic: the + // value is only used as an auto-escaped TOC label and an [a-z0-9-] slug). + // Single global char-class pass so the removal is complete/idempotent. + const text = nodetoString(node).replace(/[<>]/g, ""); // Create slug from heading text const id = text .toLowerCase() diff --git a/websites/datastream.js.org/static/.well-known/tardisec-verification.txt b/websites/datastream.js.org/static/.well-known/tardisec-verification.txt new file mode 100644 index 0000000..51f6cc7 --- /dev/null +++ b/websites/datastream.js.org/static/.well-known/tardisec-verification.txt @@ -0,0 +1 @@ +9a3890fa-a783-51c2-b20f-0dbe457d526f