diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index e3182b0..9d54380 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -2,11 +2,11 @@ name: "CodeQL Advanced"
on:
push:
- branches: [ "main" ]
+ branches: ["main"]
pull_request:
- branches: [ "main" ]
+ branches: ["main"]
schedule:
- - cron: '40 23 * * 2'
+ - cron: "40 23 * * 2"
jobs:
analyze:
@@ -22,21 +22,21 @@ jobs:
fail-fast: false
matrix:
include:
- - language: actions
- build-mode: none
- - language: javascript-typescript
- build-mode: none
+ - language: actions
+ build-mode: none
+ - language: javascript-typescript
+ build-mode: none
steps:
- - name: Checkout repository
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
-
- - name: Initialize CodeQL
- uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4
- with:
- languages: ${{ matrix.language }}
- build-mode: ${{ matrix.build-mode }}
+ - name: Checkout repository
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4
- with:
- category: "/language:${{matrix.language}}"
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4
+ with:
+ languages: ${{ matrix.language }}
+ build-mode: ${{ matrix.build-mode }}
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/README.md b/README.md
index 052e878..8ac1283 100644
--- a/README.md
+++ b/README.md
@@ -84,6 +84,7 @@ npm install
```
4. Spin up the dev server:
+
```bash
npm run dev
```
diff --git a/package-lock.json b/package-lock.json
index 9ceb50a..3805e0f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,13 +12,13 @@
"semver": "^7.7.2"
},
"devDependencies": {
- "@cloudflare/vitest-pool-workers": "0.12.21",
+ "@cloudflare/vitest-pool-workers": "^0.13.1",
"@eslint/js": "10.0.1",
"@types/node": "24.12.0",
"@types/semver": "7.7.1",
"@typescript-eslint/eslint-plugin": "8.57.0",
"@typescript-eslint/parser": "8.57.0",
- "@vitest/coverage-istanbul": "3.2.4",
+ "@vitest/coverage-istanbul": "4.1.0",
"eslint": "10.0.3",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-jest": "29.15.0",
@@ -27,8 +27,8 @@
"tsx": "4.21.0",
"typescript": "5.9.3",
"typescript-eslint": "8.57.0",
- "vitest": "3.2.4",
- "wrangler": "4.73.0"
+ "vitest": "^4.1.0",
+ "wrangler": "4.75.0"
}
},
"node_modules/@babel/code-frame": {
@@ -214,23 +214,23 @@
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
- "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
+ "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/template": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@babel/types": "^7.29.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
- "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -318,27 +318,28 @@
}
},
"node_modules/@cloudflare/vitest-pool-workers": {
- "version": "0.12.21",
- "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.12.21.tgz",
- "integrity": "sha512-xqvqVR+qAhekXWaTNY36UtFFmHrz13yGUoWVGOu6LDC2ABiQqI1E1lQ3eUZY8KVB+1FXY/mP5dB6oD07XUGnPg==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.13.1.tgz",
+ "integrity": "sha512-u4QSW/ORlL/fP1+6sdx1kqsnOjxC3vERU65guDdv3ju8r6gHfOf0Ss3PeF/aKNMrJjHYrXGkp2k1aPB6mC1eOw==",
"dev": true,
"license": "MIT",
"dependencies": {
"cjs-module-lexer": "^1.2.3",
"esbuild": "0.27.3",
- "miniflare": "4.20260310.0",
- "wrangler": "4.72.0"
+ "miniflare": "4.20260312.1",
+ "wrangler": "4.74.0",
+ "zod": "^3.25.76"
},
"peerDependencies": {
- "@vitest/runner": "2.0.x - 3.2.x",
- "@vitest/snapshot": "2.0.x - 3.2.x",
- "vitest": "2.0.x - 3.2.x"
+ "@vitest/runner": "^4.1.0",
+ "@vitest/snapshot": "^4.1.0",
+ "vitest": "^4.1.0"
}
},
"node_modules/@cloudflare/vitest-pool-workers/node_modules/wrangler": {
- "version": "4.72.0",
- "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.72.0.tgz",
- "integrity": "sha512-bKkb8150JGzJZJWiNB2nu/33smVfawmfYiecA6rW4XH7xS23/jqMbgpdelM34W/7a1IhR66qeQGVqTRXROtAZg==",
+ "version": "4.74.0",
+ "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.74.0.tgz",
+ "integrity": "sha512-3qprbhgdUyqYGHZ+Y1k0gsyHLMOlLrKL/HU0LDqLlCkbsKPprUA0/ThE4IZsxD84xAAXY6pv5JUuxS2+OnMa3A==",
"dev": true,
"license": "MIT OR Apache-2.0",
"dependencies": {
@@ -346,10 +347,10 @@
"@cloudflare/unenv-preset": "2.15.0",
"blake3-wasm": "2.1.5",
"esbuild": "0.27.3",
- "miniflare": "4.20260310.0",
+ "miniflare": "4.20260312.1",
"path-to-regexp": "6.3.0",
"unenv": "2.0.0-rc.24",
- "workerd": "1.20260310.1"
+ "workerd": "1.20260312.1"
},
"bin": {
"wrangler": "bin/wrangler.js",
@@ -362,7 +363,7 @@
"fsevents": "~2.3.2"
},
"peerDependencies": {
- "@cloudflare/workers-types": "^4.20260310.1"
+ "@cloudflare/workers-types": "^4.20260312.1"
},
"peerDependenciesMeta": {
"@cloudflare/workers-types": {
@@ -371,9 +372,9 @@
}
},
"node_modules/@cloudflare/workerd-darwin-64": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260310.1.tgz",
- "integrity": "sha512-hF2VpoWaMb1fiGCQJqCY6M8I+2QQqjkyY4LiDYdTL5D/w6C1l5v1zhc0/jrjdD1DXfpJtpcSMSmEPjHse4p9Ig==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260312.1.tgz",
+ "integrity": "sha512-HUAtDWaqUduS6yasV6+NgsK7qBpP1qGU49ow/Wb117IHjYp+PZPUGReDYocpB4GOMRoQlvdd4L487iFxzdARpw==",
"cpu": [
"x64"
],
@@ -388,9 +389,9 @@
}
},
"node_modules/@cloudflare/workerd-darwin-arm64": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260310.1.tgz",
- "integrity": "sha512-h/Vl3XrYYPI6yFDE27XO1QPq/1G1lKIM8tzZGIWYpntK3IN5XtH3Ee/sLaegpJ49aIJoqhF2mVAZ6Yw+Vk2gJw==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260312.1.tgz",
+ "integrity": "sha512-DOn7TPTHSxJYfi4m4NYga/j32wOTqvJf/pY4Txz5SDKWIZHSTXFyGz2K4B+thoPWLop/KZxGoyTv7db0mk/qyw==",
"cpu": [
"arm64"
],
@@ -405,9 +406,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-64": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260310.1.tgz",
- "integrity": "sha512-XzQ0GZ8G5P4d74bQYOIP2Su4CLdNPpYidrInaSOuSxMw+HamsHaFrjVsrV2mPy/yk2hi6SY2yMbgKFK9YjA7vw==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260312.1.tgz",
+ "integrity": "sha512-TdkIh3WzPXYHuvz7phAtFEEvAxvFd30tHrm4gsgpw0R0F5b8PtoM3hfL2uY7EcBBWVYUBtkY2ahDYFfufnXw/g==",
"cpu": [
"x64"
],
@@ -422,9 +423,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-arm64": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260310.1.tgz",
- "integrity": "sha512-sxv4CxnN4ZR0uQGTFVGa0V4KTqwdej/czpIc5tYS86G8FQQoGIBiAIs2VvU7b8EROPcandxYHDBPTb+D9HIMPw==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260312.1.tgz",
+ "integrity": "sha512-kNauZhL569Iy94t844OMwa1zP6zKFiL3xiJ4tGLS+TFTEfZ3pZsRH6lWWOtkXkjTyCmBEOog0HSEKjIV4oAffw==",
"cpu": [
"arm64"
],
@@ -439,9 +440,9 @@
}
},
"node_modules/@cloudflare/workerd-windows-64": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260310.1.tgz",
- "integrity": "sha512-+1ZTViWKJypLfgH/luAHCqkent0DEBjAjvO40iAhOMHRLYP/SPphLvr4Jpi6lb+sIocS8Q1QZL4uM5Etg1Wskg==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260312.1.tgz",
+ "integrity": "sha512-5dBrlSK+nMsZy5bYQpj8t9iiQNvCRlkm9GGvswJa9vVU/1BNO4BhJMlqOLWT24EmFyApZ+kaBiPJMV8847NDTg==",
"cpu": [
"x64"
],
@@ -479,10 +480,33 @@
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
+ "node_modules/@emnapi/core": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.0",
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@emnapi/runtime": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.0.tgz",
- "integrity": "sha512-QN75eB0IH2ywSpRpNddCRfQIhmJYBCJ1x5Lb3IscKAL8bMnVAKnRg8dCoXbHzVLLH7P38N2Z3mtulB7W0J0FKw==",
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz",
+ "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz",
+ "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1197,6 +1221,9 @@
"arm"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1214,6 +1241,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1231,6 +1261,9 @@
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1248,6 +1281,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1265,6 +1301,9 @@
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1282,6 +1321,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1299,6 +1341,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1316,6 +1361,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "LGPL-3.0-or-later",
"optional": true,
"os": [
@@ -1333,6 +1381,9 @@
"arm"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1356,6 +1407,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1379,6 +1433,9 @@
"ppc64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1402,6 +1459,9 @@
"riscv64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1425,6 +1485,9 @@
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1448,6 +1511,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1471,6 +1537,9 @@
"arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1494,6 +1563,9 @@
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "Apache-2.0",
"optional": true,
"os": [
@@ -1589,24 +1661,6 @@
"url": "https://opencollective.com/libvips"
}
},
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/@istanbuljs/schema": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
@@ -1667,6 +1721,23 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz",
+ "integrity": "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.7.1",
+ "@emnapi/runtime": "^1.7.1",
+ "@tybys/wasm-util": "^0.10.1"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ }
+ },
"node_modules/@octokit/endpoint": {
"version": "11.0.3",
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz",
@@ -1724,15 +1795,14 @@
"@octokit/openapi-types": "^27.0.0"
}
},
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
- "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "node_modules/@oxc-project/types": {
+ "version": "0.120.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.120.0.tgz",
+ "integrity": "sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==",
"dev": true,
"license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=14"
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
}
},
"node_modules/@poppinss/colors": {
@@ -1777,24 +1847,10 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
- "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
- },
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
- "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.10.tgz",
+ "integrity": "sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==",
"cpu": [
"arm64"
],
@@ -1803,12 +1859,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
- "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.10.tgz",
+ "integrity": "sha512-gED05Teg/vtTZbIJBc4VNMAxAFDUPkuO/rAIyyxZjTj1a1/s6z5TII/5yMGZ0uLRCifEtwUQn8OlYzuYc0m70w==",
"cpu": [
"arm64"
],
@@ -1817,12 +1876,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
- "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.10.tgz",
+ "integrity": "sha512-rI15NcM1mA48lqrIxVkHfAqcyFLcQwyXWThy+BQ5+mkKKPvSO26ir+ZDp36AgYoYVkqvMcdS8zOE6SeBsR9e8A==",
"cpu": [
"x64"
],
@@ -1831,26 +1893,15 @@
"optional": true,
"os": [
"darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
- "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
- "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.10.tgz",
+ "integrity": "sha512-XZRXHdTa+4ME1MuDVp021+doQ+z6Ei4CCFmNc5/sKbqb8YmkiJdj8QKlV3rCI0AJtAeSB5n0WGPuJWNL9p/L2w==",
"cpu": [
"x64"
],
@@ -1859,26 +1910,15 @@
"optional": true,
"os": [
"freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
- "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
- "cpu": [
- "arm"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
- "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.10.tgz",
+ "integrity": "sha512-R0SQMRluISSLzFE20sPWYHVmJdDQnRyc/FzSCN72BqQmh2SOZUFG+N3/vBZpR4C6WpEUVYJLrYUXaj43sJsNLA==",
"cpu": [
"arm"
],
@@ -1887,180 +1927,135 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
- "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
- "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.10.tgz",
+ "integrity": "sha512-Y1reMrV/o+cwpduYhJuOE3OMKx32RMYCidf14y+HssARRmhDuWXJ4yVguDg2R/8SyyGNo+auzz64LnPK9Hq6jg==",
"cpu": [
"arm64"
],
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
- "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
- "cpu": [
- "loong64"
+ "libc": [
+ "glibc"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
- "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
- "cpu": [
- "loong64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
- "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.10.tgz",
+ "integrity": "sha512-vELN+HNb2IzuzSBUOD4NHmP9yrGwl1DVM29wlQvx1OLSclL0NgVWnVDKl/8tEks79EFek/kebQKnNJkIAA4W2g==",
"cpu": [
- "ppc64"
+ "arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
- "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.10.tgz",
+ "integrity": "sha512-ZqrufYTgzxbHwpqOjzSsb0UV/aV2TFIY5rP8HdsiPTv/CuAgCRjM6s9cYFwQ4CNH+hf9Y4erHW1GjZuZ7WoI7w==",
"cpu": [
"ppc64"
],
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
- "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
- "cpu": [
- "riscv64"
+ "libc": [
+ "glibc"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
- "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
- "cpu": [
- "riscv64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
- "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.10.tgz",
+ "integrity": "sha512-gSlmVS1FZJSRicA6IyjoRoKAFK7IIHBs7xJuHRSmjImqk3mPPWbR7RhbnfH2G6bcmMEllCt2vQ/7u9e6bBnByg==",
"cpu": [
"s390x"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.10.tgz",
+ "integrity": "sha512-eOCKUpluKgfObT2pHjztnaWEIbUabWzk3qPZ5PuacuPmr4+JtQG4k2vGTY0H15edaTnicgU428XW/IH6AimcQw==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
- "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.10.tgz",
+ "integrity": "sha512-Xdf2jQbfQowJnLcgYfD/m0Uu0Qj5OdxKallD78/IPPfzaiaI4KRAwZzHcKQ4ig1gtg1SuzC7jovNiM2TzQsBXA==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
- "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
- "cpu": [
- "x64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
- "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.10.tgz",
+ "integrity": "sha512-o1hYe8hLi1EY6jgPFyxQgQ1wcycX+qz8eEbVmot2hFkgUzPxy9+kF0u0NIQBeDq+Mko47AkaFFaChcvZa9UX9Q==",
"cpu": [
"arm64"
],
@@ -2069,40 +2064,49 @@
"optional": true,
"os": [
"openharmony"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
- "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.10.tgz",
+ "integrity": "sha512-Ugv9o7qYJudqQO5Y5y2N2SOo6S4WiqiNOpuQyoPInnhVzCY+wi/GHltcLHypG9DEUYMB0iTB/huJrpadiAcNcA==",
"cpu": [
- "arm64"
+ "wasm32"
],
"dev": true,
"license": "MIT",
"optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
},
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
- "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.10.tgz",
+ "integrity": "sha512-7UODQb4fQUNT/vmgDZBl3XOBAIOutP5R3O/rkxg0aLfEGQ4opbCgU5vOw/scPe4xOqBwL9fw7/RP1vAMZ6QlAQ==",
"cpu": [
- "ia32"
+ "arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.10.tgz",
+ "integrity": "sha512-PYxKHMVHOb5NJuDL53vBUl1VwUjymDcYI6rzpIni0C9+9mTiJedvUxSk7/RPp7OOAm3v+EjgMu9bIy3N6b408w==",
"cpu": [
"x64"
],
@@ -2111,21 +2115,17 @@
"optional": true,
"os": [
"win32"
- ]
- },
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
- "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
- "cpu": [
- "x64"
],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.10.tgz",
+ "integrity": "sha512-UkVDEFk1w3mveXeKgaTuYfKWtPbvgck1dT8TUG3bnccrH0XtLTuAyfCoks4Q/M5ZGToSVJTIQYCzy2g/atAOeg==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
+ "license": "MIT"
},
"node_modules/@sindresorhus/is": {
"version": "7.2.0",
@@ -2141,12 +2141,30 @@
}
},
"node_modules/@speed-highlight/core": {
- "version": "1.2.14",
- "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.14.tgz",
- "integrity": "sha512-G4ewlBNhUtlLvrJTb88d2mdy2KRijzs4UhnlrOSRT4bmjh/IqNElZa3zkrZ+TC47TwtlDWzVLFADljF1Ijp5hA==",
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.15.tgz",
+ "integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==",
"dev": true,
"license": "CC0-1.0"
},
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
"node_modules/@types/chai": {
"version": "5.2.3",
"resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
@@ -2437,64 +2455,65 @@
}
},
"node_modules/@vitest/coverage-istanbul": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-3.2.4.tgz",
- "integrity": "sha512-IDlpuFJiWU9rhcKLkpzj8mFu/lpe64gVgnV15ZOrYx1iFzxxrxCzbExiUEKtwwXRvEiEMUS6iZeYgnMxgbqbxQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-4.1.0.tgz",
+ "integrity": "sha512-0+67gA94YToxd+Pc3XgIA/2c8HN2hXNSg3T+1FI4HW7W/2gPitYCtktsY6Ke7vrt5caboMq3TUf0/vwbHRb0og==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@babel/core": "^7.29.0",
"@istanbuljs/schema": "^0.1.3",
- "debug": "^4.4.1",
+ "@jridgewell/gen-mapping": "^0.3.13",
+ "@jridgewell/trace-mapping": "0.3.31",
"istanbul-lib-coverage": "^3.2.2",
- "istanbul-lib-instrument": "^6.0.3",
"istanbul-lib-report": "^3.0.1",
- "istanbul-lib-source-maps": "^5.0.6",
- "istanbul-reports": "^3.1.7",
- "magicast": "^0.3.5",
- "test-exclude": "^7.0.1",
- "tinyrainbow": "^2.0.0"
+ "istanbul-reports": "^3.2.0",
+ "magicast": "^0.5.2",
+ "obug": "^2.1.1",
+ "tinyrainbow": "^3.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vitest": "3.2.4"
+ "vitest": "4.1.0"
}
},
"node_modules/@vitest/expect": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz",
- "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.0.tgz",
+ "integrity": "sha512-EIxG7k4wlWweuCLG9Y5InKFwpMEOyrMb6ZJ1ihYu02LVj/bzUwn2VMU+13PinsjRW75XnITeFrQBMH5+dLvCDA==",
"dev": true,
"license": "MIT",
"dependencies": {
+ "@standard-schema/spec": "^1.1.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "3.2.4",
- "@vitest/utils": "3.2.4",
- "chai": "^5.2.0",
- "tinyrainbow": "^2.0.0"
+ "@vitest/spy": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "chai": "^6.2.2",
+ "tinyrainbow": "^3.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/mocker": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz",
- "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.0.tgz",
+ "integrity": "sha512-evxREh+Hork43+Y4IOhTo+h5lGmVRyjqI739Rz4RlUPqwrkFFDF6EMvOOYjTx4E8Tl6gyCLRL8Mu7Ry12a13Tw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "3.2.4",
+ "@vitest/spy": "4.1.0",
"estree-walker": "^3.0.3",
- "magic-string": "^0.30.17"
+ "magic-string": "^0.30.21"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"msw": "^2.4.9",
- "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0"
},
"peerDependenciesMeta": {
"msw": {
@@ -2506,42 +2525,42 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz",
- "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.0.tgz",
+ "integrity": "sha512-3RZLZlh88Ib0J7NQTRATfc/3ZPOnSUn2uDBUoGNn5T36+bALixmzphN26OUD3LRXWkJu4H0s5vvUeqBiw+kS0A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tinyrainbow": "^2.0.0"
+ "tinyrainbow": "^3.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/runner": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz",
- "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.0.tgz",
+ "integrity": "sha512-Duvx2OzQ7d6OjchL+trw+aSrb9idh7pnNfxrklo14p3zmNL4qPCDeIJAK+eBKYjkIwG96Bc6vYuxhqDXQOWpoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "3.2.4",
- "pathe": "^2.0.3",
- "strip-literal": "^3.0.0"
+ "@vitest/utils": "4.1.0",
+ "pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/snapshot": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz",
- "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.0.tgz",
+ "integrity": "sha512-0Vy9euT1kgsnj1CHttwi9i9o+4rRLEaPRSOJ5gyv579GJkNpgJK+B4HSv/rAWixx2wdAFci1X4CEPjiu2bXIMg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.2.4",
- "magic-string": "^0.30.17",
+ "@vitest/pretty-format": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
"funding": {
@@ -2549,28 +2568,25 @@
}
},
"node_modules/@vitest/spy": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz",
- "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.0.tgz",
+ "integrity": "sha512-pz77k+PgNpyMDv2FV6qmk5ZVau6c3R8HC8v342T2xlFxQKTrSeYw9waIJG8KgV9fFwAtTu4ceRzMivPTH6wSxw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "tinyspy": "^4.0.3"
- },
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/utils": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz",
- "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.0.tgz",
+ "integrity": "sha512-XfPXT6a8TZY3dcGY8EdwsBulFCIw+BeeX0RZn2x/BtiY/75YGh8FeWGG8QISN/WhaqSrE2OrlDgtF8q5uhOTmw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "3.2.4",
- "loupe": "^3.1.4",
- "tinyrainbow": "^2.0.0"
+ "@vitest/pretty-format": "4.1.0",
+ "convert-source-map": "^2.0.0",
+ "tinyrainbow": "^3.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
@@ -2616,46 +2632,20 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
- "node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/assertion-error": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
- "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "node_modules/balanced-match": {
+ "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": {
@@ -2663,9 +2653,9 @@
}
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.8",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz",
- "integrity": "sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==",
+ "version": "2.10.9",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz",
+ "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -2729,20 +2719,10 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
- "node_modules/cac": {
- "version": "6.7.14",
- "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
- "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/caniuse-lite": {
- "version": "1.0.30001779",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001779.tgz",
- "integrity": "sha512-U5og2PN7V4DMgF50YPNtnZJGWVLFjjsN3zb6uMT5VGYIewieDj1upwfuVNXf4Kor+89c3iCRJnSzMD5LmTvsfA==",
+ "version": "1.0.30001780",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz",
+ "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==",
"dev": true,
"funding": [
{
@@ -2761,32 +2741,15 @@
"license": "CC-BY-4.0"
},
"node_modules/chai": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz",
- "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
+ "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "assertion-error": "^2.0.1",
- "check-error": "^2.1.1",
- "deep-eql": "^5.0.1",
- "loupe": "^3.1.0",
- "pathval": "^2.0.0"
- },
"engines": {
"node": ">=18"
}
},
- "node_modules/check-error": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz",
- "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 16"
- }
- },
"node_modules/cjs-module-lexer": {
"version": "1.4.3",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
@@ -2794,26 +2757,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/color-convert": {
- "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"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "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/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -2868,16 +2811,6 @@
}
}
},
- "node_modules/deep-eql": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
- "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -2895,27 +2828,13 @@
"node": ">=8"
}
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/electron-to-chromium": {
- "version": "1.5.313",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz",
- "integrity": "sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==",
+ "version": "1.5.321",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz",
+ "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==",
"dev": true,
"license": "ISC"
},
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/error-stack-parser-es": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz",
@@ -2927,9 +2846,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
- "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
+ "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
"dev": true,
"license": "MIT"
},
@@ -3352,29 +3271,12 @@
}
},
"node_modules/flatted": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
- "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
"dev": true,
"license": "ISC"
},
- "node_modules/foreground-child": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
- "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "cross-spawn": "^7.0.6",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -3413,28 +3315,6 @@
"url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
- "node_modules/glob": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
- "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
- "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -3448,39 +3328,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob/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==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "9.0.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
- "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.2"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3537,16 +3384,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -3577,23 +3414,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-instrument": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
- "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.23.9",
- "@babel/parser": "^7.23.9",
- "@istanbuljs/schema": "^0.1.3",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^7.5.4"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-lib-report": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
@@ -3609,21 +3429,6 @@
"node": ">=10"
}
},
- "node_modules/istanbul-lib-source-maps": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
- "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.23",
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-reports": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
@@ -3638,22 +3443,6 @@
"node": ">=8"
}
},
- "node_modules/jackspeak": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
- "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
"node_modules/jiti": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
@@ -3758,122 +3547,378 @@
"node": ">= 0.8.0"
}
},
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "node_modules/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"dev": true,
- "license": "MIT",
+ "license": "MPL-2.0",
"dependencies": {
- "p-locate": "^5.0.0"
+ "detect-libc": "^2.0.3"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/loupe": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz",
- "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.30.21",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
- "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.32.0",
+ "lightningcss-darwin-arm64": "1.32.0",
+ "lightningcss-darwin-x64": "1.32.0",
+ "lightningcss-freebsd-x64": "1.32.0",
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
+ "lightningcss-linux-arm64-gnu": "1.32.0",
+ "lightningcss-linux-arm64-musl": "1.32.0",
+ "lightningcss-linux-x64-gnu": "1.32.0",
+ "lightningcss-linux-x64-musl": "1.32.0",
+ "lightningcss-win32-arm64-msvc": "1.32.0",
+ "lightningcss-win32-x64-msvc": "1.32.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.5.5"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/magicast": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz",
- "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==",
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.25.4",
- "@babel/types": "^7.25.4",
- "source-map-js": "^1.2.0"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/make-dir": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
- "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.5.3"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/miniflare": {
- "version": "4.20260310.0",
- "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260310.0.tgz",
- "integrity": "sha512-uC5vNPenFpDSj5aUU3wGSABG6UUqMr+Xs1m4AkCrTHo37F4Z6xcQw5BXqViTfPDVT/zcYH1UgTVoXhr1l6ZMXw==",
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@cspotcode/source-map-support": "0.8.1",
- "sharp": "^0.34.5",
- "undici": "7.18.2",
- "workerd": "1.20260310.1",
- "ws": "8.18.0",
- "youch": "4.1.0-beta.10"
- },
- "bin": {
- "miniflare": "bootstrap.js"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=18.0.0"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/minimatch": {
- "version": "10.2.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
- "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "brace-expansion": "^5.0.2"
- },
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/minipass": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
- "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
- "dev": true,
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/magicast": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz",
+ "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "source-map-js": "^1.2.1"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/miniflare": {
+ "version": "4.20260312.1",
+ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260312.1.tgz",
+ "integrity": "sha512-YSWxec9ssisqkQgaCgcIQxZlB41E9hMiq1nxUgxXHRrE9NsfyC6ptSt8yfgBobsKIseAVKLTB/iEDpMumBv8oA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cspotcode/source-map-support": "0.8.1",
+ "sharp": "^0.34.5",
+ "undici": "7.18.2",
+ "workerd": "1.20260312.1",
+ "ws": "8.18.0",
+ "youch": "4.1.0-beta.10"
+ },
+ "bin": {
+ "miniflare": "bootstrap.js"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "dev": true,
"license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
"engines": {
- "node": ">=16 || 14 >=14.17"
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ms": {
@@ -3916,6 +3961,17 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/obug": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
+ "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
+ "dev": true,
+ "funding": [
+ "https://github.com/sponsors/sxzz",
+ "https://opencollective.com/debug"
+ ],
+ "license": "MIT"
+ },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -3966,13 +4022,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/package-json-from-dist": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
- "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
- "dev": true,
- "license": "BlueOak-1.0.0"
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -3993,30 +4042,6 @@
"node": ">=8"
}
},
- "node_modules/path-scurry": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
- "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "lru-cache": "^10.2.0",
- "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
- },
- "engines": {
- "node": ">=16 || 14 >=14.18"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/path-scurry/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "dev": true,
- "license": "ISC"
- },
"node_modules/path-to-regexp": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
@@ -4031,16 +4056,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/pathval": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz",
- "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 14.16"
- }
- },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -4136,49 +4151,38 @@
"url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
}
},
- "node_modules/rollup": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
- "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
+ "node_modules/rolldown": {
+ "version": "1.0.0-rc.10",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.10.tgz",
+ "integrity": "sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.8"
+ "@oxc-project/types": "=0.120.0",
+ "@rolldown/pluginutils": "1.0.0-rc.10"
},
"bin": {
- "rollup": "dist/bin/rollup"
+ "rolldown": "bin/cli.mjs"
},
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
+ "node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.59.0",
- "@rollup/rollup-android-arm64": "4.59.0",
- "@rollup/rollup-darwin-arm64": "4.59.0",
- "@rollup/rollup-darwin-x64": "4.59.0",
- "@rollup/rollup-freebsd-arm64": "4.59.0",
- "@rollup/rollup-freebsd-x64": "4.59.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.59.0",
- "@rollup/rollup-linux-arm64-gnu": "4.59.0",
- "@rollup/rollup-linux-arm64-musl": "4.59.0",
- "@rollup/rollup-linux-loong64-gnu": "4.59.0",
- "@rollup/rollup-linux-loong64-musl": "4.59.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.59.0",
- "@rollup/rollup-linux-ppc64-musl": "4.59.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.59.0",
- "@rollup/rollup-linux-riscv64-musl": "4.59.0",
- "@rollup/rollup-linux-s390x-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-musl": "4.59.0",
- "@rollup/rollup-openbsd-x64": "4.59.0",
- "@rollup/rollup-openharmony-arm64": "4.59.0",
- "@rollup/rollup-win32-arm64-msvc": "4.59.0",
- "@rollup/rollup-win32-ia32-msvc": "4.59.0",
- "@rollup/rollup-win32-x64-gnu": "4.59.0",
- "@rollup/rollup-win32-x64-msvc": "4.59.0",
- "fsevents": "~2.3.2"
+ "@rolldown/binding-android-arm64": "1.0.0-rc.10",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.10",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.10",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.10",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.10",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.10",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.10",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.10",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.10",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.10",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.10",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.10",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.10",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.10",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.10"
}
},
"node_modules/semver": {
@@ -4268,19 +4272,6 @@
"dev": true,
"license": "ISC"
},
- "node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
@@ -4299,133 +4290,9 @@
"license": "MIT"
},
"node_modules/std-env": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz",
- "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string-width-cjs": {
- "name": "string-width",
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/string-width-cjs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
- "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.2.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-literal": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz",
- "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^9.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/strip-literal/node_modules/js-tokens": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
- "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz",
+ "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==",
"dev": true,
"license": "MIT"
},
@@ -4442,21 +4309,6 @@
"node": ">=8"
}
},
- "node_modules/test-exclude": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.2.tgz",
- "integrity": "sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^10.4.1",
- "minimatch": "^10.2.2"
- },
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/tinybench": {
"version": "2.9.0",
"resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
@@ -4465,11 +4317,14 @@
"license": "MIT"
},
"node_modules/tinyexec": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
- "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz",
+ "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
},
"node_modules/tinyglobby": {
"version": "0.2.15",
@@ -4488,30 +4343,10 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/tinypool": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
- "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^18.0.0 || >=20.0.0"
- }
- },
"node_modules/tinyrainbow": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
- "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/tinyspy": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz",
- "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz",
+ "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4519,9 +4354,9 @@
}
},
"node_modules/ts-api-utils": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
- "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz",
+ "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -4685,17 +4520,16 @@
}
},
"node_modules/vite": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz",
- "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.1.tgz",
+ "integrity": "sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.27.0",
- "fdir": "^6.5.0",
+ "lightningcss": "^1.32.0",
"picomatch": "^4.0.3",
- "postcss": "^8.5.6",
- "rollup": "^4.43.0",
+ "postcss": "^8.5.8",
+ "rolldown": "1.0.0-rc.10",
"tinyglobby": "^0.2.15"
},
"bin": {
@@ -4712,9 +4546,10 @@
},
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.1.0",
+ "esbuild": "^0.27.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
- "lightningcss": "^1.21.0",
"sass": "^1.70.0",
"sass-embedded": "^1.70.0",
"stylus": ">=0.54.8",
@@ -4727,13 +4562,16 @@
"@types/node": {
"optional": true
},
- "jiti": {
+ "@vitejs/devtools": {
"optional": true
},
- "less": {
+ "esbuild": {
+ "optional": true
+ },
+ "jiti": {
"optional": true
},
- "lightningcss": {
+ "less": {
"optional": true
},
"sass": {
@@ -4759,89 +4597,72 @@
}
}
},
- "node_modules/vite-node": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz",
- "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cac": "^6.7.14",
- "debug": "^4.4.1",
- "es-module-lexer": "^1.7.0",
- "pathe": "^2.0.3",
- "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0"
- },
- "bin": {
- "vite-node": "vite-node.mjs"
- },
- "engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/vitest"
- }
- },
"node_modules/vitest": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz",
- "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.0.tgz",
+ "integrity": "sha512-YbDrMF9jM2Lqc++2530UourxZHmkKLxrs4+mYhEwqWS97WJ7wOYEkcr+QfRgJ3PW9wz3odRijLZjHEaRLTNbqw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/chai": "^5.2.2",
- "@vitest/expect": "3.2.4",
- "@vitest/mocker": "3.2.4",
- "@vitest/pretty-format": "^3.2.4",
- "@vitest/runner": "3.2.4",
- "@vitest/snapshot": "3.2.4",
- "@vitest/spy": "3.2.4",
- "@vitest/utils": "3.2.4",
- "chai": "^5.2.0",
- "debug": "^4.4.1",
- "expect-type": "^1.2.1",
- "magic-string": "^0.30.17",
+ "@vitest/expect": "4.1.0",
+ "@vitest/mocker": "4.1.0",
+ "@vitest/pretty-format": "4.1.0",
+ "@vitest/runner": "4.1.0",
+ "@vitest/snapshot": "4.1.0",
+ "@vitest/spy": "4.1.0",
+ "@vitest/utils": "4.1.0",
+ "es-module-lexer": "^2.0.0",
+ "expect-type": "^1.3.0",
+ "magic-string": "^0.30.21",
+ "obug": "^2.1.1",
"pathe": "^2.0.3",
- "picomatch": "^4.0.2",
- "std-env": "^3.9.0",
+ "picomatch": "^4.0.3",
+ "std-env": "^4.0.0-rc.1",
"tinybench": "^2.9.0",
- "tinyexec": "^0.3.2",
- "tinyglobby": "^0.2.14",
- "tinypool": "^1.1.1",
- "tinyrainbow": "^2.0.0",
- "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0",
- "vite-node": "3.2.4",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.0.3",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0",
"why-is-node-running": "^2.3.0"
},
"bin": {
"vitest": "vitest.mjs"
},
"engines": {
- "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"@edge-runtime/vm": "*",
- "@types/debug": "^4.1.12",
- "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
- "@vitest/browser": "3.2.4",
- "@vitest/ui": "3.2.4",
+ "@opentelemetry/api": "^1.9.0",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.1.0",
+ "@vitest/browser-preview": "4.1.0",
+ "@vitest/browser-webdriverio": "4.1.0",
+ "@vitest/ui": "4.1.0",
"happy-dom": "*",
- "jsdom": "*"
+ "jsdom": "*",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0-0"
},
"peerDependenciesMeta": {
"@edge-runtime/vm": {
"optional": true
},
- "@types/debug": {
+ "@opentelemetry/api": {
"optional": true
},
"@types/node": {
"optional": true
},
- "@vitest/browser": {
+ "@vitest/browser-playwright": {
+ "optional": true
+ },
+ "@vitest/browser-preview": {
+ "optional": true
+ },
+ "@vitest/browser-webdriverio": {
"optional": true
},
"@vitest/ui": {
@@ -4852,6 +4673,9 @@
},
"jsdom": {
"optional": true
+ },
+ "vite": {
+ "optional": false
}
}
},
@@ -4899,9 +4723,9 @@
}
},
"node_modules/workerd": {
- "version": "1.20260310.1",
- "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260310.1.tgz",
- "integrity": "sha512-yawXhypXXHtArikJj15HOMknNGikpBbSg2ZDe6lddUbqZnJXuCVSkgc/0ArUeVMG1jbbGvpst+REFtKwILvRTQ==",
+ "version": "1.20260312.1",
+ "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260312.1.tgz",
+ "integrity": "sha512-nNpPkw9jaqo79B+iBCOiksx+N62xC+ETIfyzofUEdY3cSOHJg6oNnVSHm7vHevzVblfV76c8Gr0cXHEapYMBEg==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -4912,17 +4736,17 @@
"node": ">=16"
},
"optionalDependencies": {
- "@cloudflare/workerd-darwin-64": "1.20260310.1",
- "@cloudflare/workerd-darwin-arm64": "1.20260310.1",
- "@cloudflare/workerd-linux-64": "1.20260310.1",
- "@cloudflare/workerd-linux-arm64": "1.20260310.1",
- "@cloudflare/workerd-windows-64": "1.20260310.1"
+ "@cloudflare/workerd-darwin-64": "1.20260312.1",
+ "@cloudflare/workerd-darwin-arm64": "1.20260312.1",
+ "@cloudflare/workerd-linux-64": "1.20260312.1",
+ "@cloudflare/workerd-linux-arm64": "1.20260312.1",
+ "@cloudflare/workerd-windows-64": "1.20260312.1"
}
},
"node_modules/wrangler": {
- "version": "4.73.0",
- "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.73.0.tgz",
- "integrity": "sha512-VJXsqKDFCp6OtFEHXITSOR5kh95JOknwPY8m7RyQuWJQguSybJy43m4vhoCSt42prutTef7eeuw7L4V4xiynGw==",
+ "version": "4.75.0",
+ "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-4.75.0.tgz",
+ "integrity": "sha512-Efk1tcnm4eduBYpH1sSjMYydXMnIFPns/qABI3+fsbDrUk5GksNYX8nYGVP4sFygvGPO7kJc36YJKB5ooA7JAg==",
"dev": true,
"license": "MIT OR Apache-2.0",
"dependencies": {
@@ -4930,10 +4754,10 @@
"@cloudflare/unenv-preset": "2.15.0",
"blake3-wasm": "2.1.5",
"esbuild": "0.27.3",
- "miniflare": "4.20260312.0",
+ "miniflare": "4.20260317.0",
"path-to-regexp": "6.3.0",
"unenv": "2.0.0-rc.24",
- "workerd": "1.20260312.1"
+ "workerd": "1.20260317.1"
},
"bin": {
"wrangler": "bin/wrangler.js",
@@ -4946,7 +4770,7 @@
"fsevents": "~2.3.2"
},
"peerDependencies": {
- "@cloudflare/workers-types": "^4.20260312.1"
+ "@cloudflare/workers-types": "^4.20260317.1"
},
"peerDependenciesMeta": {
"@cloudflare/workers-types": {
@@ -4955,9 +4779,9 @@
}
},
"node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-64": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260312.1.tgz",
- "integrity": "sha512-HUAtDWaqUduS6yasV6+NgsK7qBpP1qGU49ow/Wb117IHjYp+PZPUGReDYocpB4GOMRoQlvdd4L487iFxzdARpw==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20260317.1.tgz",
+ "integrity": "sha512-8hjh3sPMwY8M/zedq3/sXoA2Q4BedlGufn3KOOleIG+5a4ReQKLlUah140D7J6zlKmYZAFMJ4tWC7hCuI/s79g==",
"cpu": [
"x64"
],
@@ -4972,9 +4796,9 @@
}
},
"node_modules/wrangler/node_modules/@cloudflare/workerd-darwin-arm64": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260312.1.tgz",
- "integrity": "sha512-DOn7TPTHSxJYfi4m4NYga/j32wOTqvJf/pY4Txz5SDKWIZHSTXFyGz2K4B+thoPWLop/KZxGoyTv7db0mk/qyw==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20260317.1.tgz",
+ "integrity": "sha512-M/MnNyvO5HMgoIdr3QHjdCj2T1ki9gt0vIUnxYxBu9ISXS/jgtMl6chUVPJ7zHYBn9MyYr8ByeN6frjYxj0MGg==",
"cpu": [
"arm64"
],
@@ -4989,9 +4813,9 @@
}
},
"node_modules/wrangler/node_modules/@cloudflare/workerd-linux-64": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260312.1.tgz",
- "integrity": "sha512-TdkIh3WzPXYHuvz7phAtFEEvAxvFd30tHrm4gsgpw0R0F5b8PtoM3hfL2uY7EcBBWVYUBtkY2ahDYFfufnXw/g==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20260317.1.tgz",
+ "integrity": "sha512-1ltuEjkRcS3fsVF7CxsKlWiRmzq2ZqMfqDN0qUOgbUwkpXsLVJsXmoblaLf5OP00ELlcgF0QsN0p2xPEua4Uug==",
"cpu": [
"x64"
],
@@ -5006,9 +4830,9 @@
}
},
"node_modules/wrangler/node_modules/@cloudflare/workerd-linux-arm64": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260312.1.tgz",
- "integrity": "sha512-kNauZhL569Iy94t844OMwa1zP6zKFiL3xiJ4tGLS+TFTEfZ3pZsRH6lWWOtkXkjTyCmBEOog0HSEKjIV4oAffw==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20260317.1.tgz",
+ "integrity": "sha512-3QrNnPF1xlaNwkHpasvRvAMidOvQs2NhXQmALJrEfpIJ/IDL2la8g499yXp3eqhG3hVMCB07XVY149GTs42Xtw==",
"cpu": [
"arm64"
],
@@ -5023,9 +4847,9 @@
}
},
"node_modules/wrangler/node_modules/@cloudflare/workerd-windows-64": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260312.1.tgz",
- "integrity": "sha512-5dBrlSK+nMsZy5bYQpj8t9iiQNvCRlkm9GGvswJa9vVU/1BNO4BhJMlqOLWT24EmFyApZ+kaBiPJMV8847NDTg==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20260317.1.tgz",
+ "integrity": "sha512-MfZTz+7LfuIpMGTa3RLXHX8Z/pnycZLItn94WRdHr8LPVet+C5/1Nzei399w/jr3+kzT4pDKk26JF/tlI5elpQ==",
"cpu": [
"x64"
],
@@ -5040,16 +4864,16 @@
}
},
"node_modules/wrangler/node_modules/miniflare": {
- "version": "4.20260312.0",
- "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260312.0.tgz",
- "integrity": "sha512-pieP2rfXynPT6VRINYaiHe/tfMJ4c5OIhqRlIdLF6iZ9g5xgpEmvimvIgMpgAdDJuFlrLcwDUi8MfAo2R6dt/w==",
+ "version": "4.20260317.0",
+ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-4.20260317.0.tgz",
+ "integrity": "sha512-xuwk5Kjv+shi5iUBAdCrRl9IaWSGnTU8WuTQzsUS2GlSDIMCJuu8DiF/d9ExjMXYiQG5ml+k9SVKnMj8cRkq0w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@cspotcode/source-map-support": "0.8.1",
"sharp": "^0.34.5",
- "undici": "7.18.2",
- "workerd": "1.20260312.1",
+ "undici": "7.24.4",
+ "workerd": "1.20260317.1",
"ws": "8.18.0",
"youch": "4.1.0-beta.10"
},
@@ -5060,10 +4884,20 @@
"node": ">=18.0.0"
}
},
+ "node_modules/wrangler/node_modules/undici": {
+ "version": "7.24.4",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.4.tgz",
+ "integrity": "sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.18.1"
+ }
+ },
"node_modules/wrangler/node_modules/workerd": {
- "version": "1.20260312.1",
- "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260312.1.tgz",
- "integrity": "sha512-nNpPkw9jaqo79B+iBCOiksx+N62xC+ETIfyzofUEdY3cSOHJg6oNnVSHm7vHevzVblfV76c8Gr0cXHEapYMBEg==",
+ "version": "1.20260317.1",
+ "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20260317.1.tgz",
+ "integrity": "sha512-ZuEq1OdrJBS+NV+L5HMYPCzVn49a2O60slQiiLpG44jqtlOo+S167fWC76kEXteXLLLydeuRrluRel7WdOUa4g==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -5074,109 +4908,11 @@
"node": ">=16"
},
"optionalDependencies": {
- "@cloudflare/workerd-darwin-64": "1.20260312.1",
- "@cloudflare/workerd-darwin-arm64": "1.20260312.1",
- "@cloudflare/workerd-linux-64": "1.20260312.1",
- "@cloudflare/workerd-linux-arm64": "1.20260312.1",
- "@cloudflare/workerd-windows-64": "1.20260312.1"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
- "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"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
+ "@cloudflare/workerd-darwin-64": "1.20260317.1",
+ "@cloudflare/workerd-darwin-arm64": "1.20260317.1",
+ "@cloudflare/workerd-linux-64": "1.20260317.1",
+ "@cloudflare/workerd-linux-arm64": "1.20260317.1",
+ "@cloudflare/workerd-windows-64": "1.20260317.1"
}
},
"node_modules/ws": {
@@ -5245,6 +4981,16 @@
"@poppinss/exception": "^1.2.2",
"error-stack-parser-es": "^1.0.5"
}
+ },
+ "node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
}
}
}
diff --git a/package.json b/package.json
index 97d1dbd..bbe28c3 100644
--- a/package.json
+++ b/package.json
@@ -23,22 +23,22 @@
"semver": "^7.7.2"
},
"devDependencies": {
- "@cloudflare/vitest-pool-workers": "0.12.21",
+ "@cloudflare/vitest-pool-workers": "^0.13.1",
"@eslint/js": "10.0.1",
"@types/node": "24.12.0",
"@types/semver": "7.7.1",
"@typescript-eslint/eslint-plugin": "8.57.0",
"@typescript-eslint/parser": "8.57.0",
- "@vitest/coverage-istanbul": "3.2.4",
+ "@vitest/coverage-istanbul": "4.1.0",
"eslint": "10.0.3",
"eslint-config-prettier": "10.1.8",
"eslint-plugin-jest": "29.15.0",
"jiti": "2.6.1",
"prettier": "3.8.1",
- "typescript": "5.9.3",
"tsx": "4.21.0",
+ "typescript": "5.9.3",
"typescript-eslint": "8.57.0",
- "vitest": "3.2.4",
- "wrangler": "4.73.0"
+ "vitest": "^4.1.0",
+ "wrangler": "4.75.0"
}
}
diff --git a/test/app/index.test.ts b/test/app/index.test.ts
index 86a04e8..b2a37e2 100644
--- a/test/app/index.test.ts
+++ b/test/app/index.test.ts
@@ -5,8 +5,8 @@
*/
import { describe, it, expect, beforeEach, vi } from "vitest";
+import { env } from "cloudflare:workers";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
diff --git a/test/env.d.ts b/test/env.d.ts
index 16f2599..a276b6b 100644
--- a/test/env.d.ts
+++ b/test/env.d.ts
@@ -1,3 +1,5 @@
+///
+
declare module "cloudflare:test" {
type ProvidedEnv = CloudflareBindings;
}
diff --git a/test/integration/app.test.ts b/test/integration/app.test.ts
index 21abb65..02e27ae 100644
--- a/test/integration/app.test.ts
+++ b/test/integration/app.test.ts
@@ -1,9 +1,9 @@
import { describe, it, expect, beforeEach, vi } from "vitest";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../src/app/index";
import { mockGitHubReleases, mockComposerJson } from "../mocks/github-releases";
import { setupGitHubApiMock } from "../utils/mock-helpers";
diff --git a/test/integration/versions/index.test.ts b/test/integration/versions/index.test.ts
index 0db2ddf..fc5e4bd 100644
--- a/test/integration/versions/index.test.ts
+++ b/test/integration/versions/index.test.ts
@@ -1,9 +1,9 @@
import { describe, it, expect, beforeEach, vi } from "vitest";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../../src/app";
import {
mockGitHubReleases,
diff --git a/test/services/central-alerts/v1/index.test.ts b/test/services/central-alerts/v1/index.test.ts
index 0008d95..a9bf832 100644
--- a/test/services/central-alerts/v1/index.test.ts
+++ b/test/services/central-alerts/v1/index.test.ts
@@ -1,9 +1,9 @@
import { describe, it, expect, beforeEach } from "vitest";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../../../src/app";
import { mockD1Database } from "../../../utils/d1-mock";
import type { CentralAlertsResponse } from "../../../utils/test-types";
diff --git a/test/services/stats/v1/index.test.ts b/test/services/stats/v1/index.test.ts
index ae5cade..51f4aea 100644
--- a/test/services/stats/v1/index.test.ts
+++ b/test/services/stats/v1/index.test.ts
@@ -102,17 +102,13 @@ describe("Stats API v1", () => {
if (result.patchesPerRelease.length > 0) {
expect(result.patchesPerRelease[0]).toHaveProperty("version_line");
expect(result.patchesPerRelease[0]).toHaveProperty("patch_count");
- expect(typeof result.patchesPerRelease[0].patch_count).toBe(
- "number"
- );
+ expect(typeof result.patchesPerRelease[0].patch_count).toBe("number");
}
if (result.releasesPerYear.length > 0) {
expect(result.releasesPerYear[0]).toHaveProperty("year");
expect(result.releasesPerYear[0]).toHaveProperty("release_count");
- expect(typeof result.releasesPerYear[0].release_count).toBe(
- "number"
- );
+ expect(typeof result.releasesPerYear[0].release_count).toBe("number");
}
});
@@ -235,7 +231,7 @@ describe("Stats API v1", () => {
if (!data.result) {
return;
}
-
+
expect(data.result.patchesPerRelease).toBeDefined();
expect(Array.isArray(data.result.patchesPerRelease)).toBe(true);
@@ -266,9 +262,7 @@ describe("Stats API v1", () => {
expect(html).toContain('id="phpVersionChart"');
expect(html).toContain('id="patchesChart"');
expect(html).toContain('id="releasesPerYearChart"');
- expect(html).toContain(
- 'src="https://cdn.jsdelivr.net/npm/chart.js@'
- );
+ expect(html).toContain('src="https://cdn.jsdelivr.net/npm/chart.js@');
});
});
});
diff --git a/test/services/versions/v1/errors.test.ts b/test/services/versions/v1/errors.test.ts
index c6d330b..161726f 100644
--- a/test/services/versions/v1/errors.test.ts
+++ b/test/services/versions/v1/errors.test.ts
@@ -1,9 +1,9 @@
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../../../src/app";
import {
mockGitHubReleases,
diff --git a/test/services/versions/v1/index.test.ts b/test/services/versions/v1/index.test.ts
index 4d1c794..2781308 100644
--- a/test/services/versions/v1/index.test.ts
+++ b/test/services/versions/v1/index.test.ts
@@ -1,10 +1,10 @@
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
import { compare as semverCompare } from "semver";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../../../src/app";
import {
diff --git a/test/services/versions/v1/middleware.test.ts b/test/services/versions/v1/middleware.test.ts
index 97b7bac..330b19d 100644
--- a/test/services/versions/v1/middleware.test.ts
+++ b/test/services/versions/v1/middleware.test.ts
@@ -1,9 +1,9 @@
import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
import {
- env,
createExecutionContext,
waitOnExecutionContext
} from "cloudflare:test";
+import { env } from "cloudflare:workers";
import app from "../../../../src/app";
import {
mockGitHubReleases,
diff --git a/test/utils/d1-mock.ts b/test/utils/d1-mock.ts
index a6bc8f8..2886ab8 100644
--- a/test/utils/d1-mock.ts
+++ b/test/utils/d1-mock.ts
@@ -60,7 +60,9 @@ function isVersionInRange(
}
function notImplementedInMock(methodName: string): Error {
- return new Error(`MockD1Database.${methodName}() is not implemented for tests`);
+ return new Error(
+ `MockD1Database.${methodName}() is not implemented for tests`
+ );
}
export class MockD1Database implements D1Database {
diff --git a/vitest.config.ts b/vitest.config.ts
index ad9b93f..44c67eb 100644
--- a/vitest.config.ts
+++ b/vitest.config.ts
@@ -1,6 +1,19 @@
-import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";
+import { cloudflareTest } from "@cloudflare/vitest-pool-workers";
+import { defineConfig } from "vitest/config";
-export default defineWorkersConfig({
+export default defineConfig({
+ plugins: [
+ cloudflareTest({
+ wrangler: { configPath: "./wrangler.jsonc" },
+ miniflare: {
+ // Add test environment variables
+ bindings: {
+ GITHUB_TOKEN: "test-github-token",
+ UPDATE_TOKEN: "test-update-token"
+ }
+ }
+ })
+ ],
test: {
// Exclude Node.js tests from Cloudflare Workers environment
exclude: ["**/node_modules/**", "**/test/lib/adapters/node/**"],
@@ -23,19 +36,6 @@ export default defineWorkersConfig({
},
include: ["src/**", "test/**/*.test.ts"],
exclude: ["src/lib/adapters/node/**"]
- },
-
- poolOptions: {
- workers: {
- wrangler: { configPath: "./wrangler.jsonc" },
- miniflare: {
- // Add test environment variables
- bindings: {
- GITHUB_TOKEN: "test-github-token",
- UPDATE_TOKEN: "test-update-token"
- }
- }
- }
}
}
});
diff --git a/worker-configuration.d.ts b/worker-configuration.d.ts
index 5c7eda0..19e9d68 100644
--- a/worker-configuration.d.ts
+++ b/worker-configuration.d.ts
@@ -1,6 +1,6 @@
/* eslint-disable */
-// Generated by Wrangler by running `wrangler types --env-interface CloudflareBindings` (hash: 593334d7ae6f57ad4b6996d4e701c005)
-// Runtime types generated with workerd@1.20251217.0 2025-09-15 nodejs_compat
+// Generated by Wrangler by running `wrangler types --env-interface CloudflareBindings` (hash: 5932a849fb69e2a34cb7464988b02b49)
+// Runtime types generated with workerd@1.20260317.1 2025-09-15 nodejs_compat
declare namespace Cloudflare {
interface GlobalProps {
mainModule: typeof import("./src/app/index");
@@ -8,8 +8,8 @@ declare namespace Cloudflare {
interface Env {
AUTH_KV: KVNamespace;
CACHE_KV: KVNamespace;
- GITHUB_TOKEN: string;
DB_CENTRAL_ALERTS: D1Database;
+ GITHUB_TOKEN: string;
}
}
interface CloudflareBindings extends Cloudflare.Env {}
@@ -442,22 +442,22 @@ interface ExecutionContext {
passThroughOnException(): void;
readonly props: Props;
}
-type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise;
-type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
-type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
-type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise;
-type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise;
-type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise;
-type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise;
-interface ExportedHandler {
- fetch?: ExportedHandlerFetchHandler;
- tail?: ExportedHandlerTailHandler;
- trace?: ExportedHandlerTraceHandler;
- tailStream?: ExportedHandlerTailStreamHandler;
- scheduled?: ExportedHandlerScheduledHandler;
- test?: ExportedHandlerTestHandler;
- email?: EmailExportedHandler;
- queue?: ExportedHandlerQueueHandler;
+type ExportedHandlerFetchHandler = (request: Request>, env: Env, ctx: ExecutionContext) => Response | Promise;
+type ExportedHandlerTailHandler = (events: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTraceHandler = (traces: TraceItem[], env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTailStreamHandler = (event: TailStream.TailEvent, env: Env, ctx: ExecutionContext) => TailStream.TailEventHandlerType | Promise;
+type ExportedHandlerScheduledHandler = (controller: ScheduledController, env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerQueueHandler = (batch: MessageBatch, env: Env, ctx: ExecutionContext) => void | Promise;
+type ExportedHandlerTestHandler = (controller: TestController, env: Env, ctx: ExecutionContext) => void | Promise;
+interface ExportedHandler {
+ fetch?: ExportedHandlerFetchHandler;
+ tail?: ExportedHandlerTailHandler;
+ trace?: ExportedHandlerTraceHandler;
+ tailStream?: ExportedHandlerTailStreamHandler;
+ scheduled?: ExportedHandlerScheduledHandler;
+ test?: ExportedHandlerTestHandler;
+ email?: EmailExportedHandler;
+ queue?: ExportedHandlerQueueHandler;
}
interface StructuredSerializeOptions {
transfer?: any[];
@@ -505,8 +505,10 @@ interface DurableObjectNamespaceNewUniqueIdOptions {
jurisdiction?: DurableObjectJurisdiction;
}
type DurableObjectLocationHint = "wnam" | "enam" | "sam" | "weur" | "eeur" | "apac" | "oc" | "afr" | "me";
+type DurableObjectRoutingMode = "primary-only";
interface DurableObjectNamespaceGetDurableObjectOptions {
locationHint?: DurableObjectLocationHint;
+ routingMode?: DurableObjectRoutingMode;
}
interface DurableObjectClass<_T extends Rpc.DurableObjectBranded | undefined = undefined> {
}
@@ -1393,6 +1395,12 @@ declare abstract class PromiseRejectionEvent extends Event {
*/
declare class FormData {
constructor();
+ /**
+ * The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/append)
+ */
+ append(name: string, value: string | Blob): void;
/**
* The **`append()`** method of the FormData interface appends a new value onto an existing key inside a `FormData` object, or adds the key if it does not already exist.
*
@@ -1429,6 +1437,12 @@ declare class FormData {
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/has)
*/
has(name: string): boolean;
+ /**
+ * The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/FormData/set)
+ */
+ set(name: string, value: string | Blob): void;
/**
* The **`set()`** method of the FormData interface sets a new value for an existing key inside a `FormData` object, or adds the key/value if it does not already exist.
*
@@ -1755,7 +1769,7 @@ interface Request> e
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/Request/signal)
*/
signal: AbortSignal;
- cf: Cf | undefined;
+ cf?: Cf;
/**
* The **`integrity`** read-only property of the Request interface contains the subresource integrity value of the request.
*
@@ -2090,6 +2104,8 @@ interface Transformer {
expectedLength?: number;
}
interface StreamPipeOptions {
+ preventAbort?: boolean;
+ preventCancel?: boolean;
/**
* Pipes this readable stream to a given writable stream destination. The way in which the piping process behaves under various error conditions can be customized with a number of passed options. It returns a promise that fulfills when the piping process completes successfully, or rejects if any errors were encountered.
*
@@ -2108,8 +2124,6 @@ interface StreamPipeOptions {
* The signal option can be set to an AbortSignal to allow aborting an ongoing pipe operation via the corresponding AbortController. In this case, this source readable stream will be canceled, and destination aborted, unless the respective options preventCancel or preventAbort are set.
*/
preventClose?: boolean;
- preventAbort?: boolean;
- preventCancel?: boolean;
signal?: AbortSignal;
}
type ReadableStreamReadResult = {
@@ -2384,13 +2398,13 @@ declare abstract class TransformStreamDefaultController {
terminate(): void;
}
interface ReadableWritablePair {
+ readable: ReadableStream;
/**
* Provides a convenient, chainable way of piping this readable stream through a transform stream (or any other { writable, readable } pair). It simply pipes the stream into the writable side of the supplied pair, and returns the readable side for further use.
*
* Piping a stream will lock it for the duration of the pipe, preventing any other consumer from acquiring a reader.
*/
writable: WritableStream;
- readable: ReadableStream;
}
/**
* The **`WritableStream`** interface of the Streams API provides a standard abstraction for writing streaming data to a destination, known as a sink.
@@ -3038,7 +3052,7 @@ declare var WebSocket: {
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket)
*/
interface WebSocket extends EventTarget {
- accept(): void;
+ accept(options?: WebSocketAcceptOptions): void;
/**
* The **`WebSocket.send()`** method enqueues the specified data to be transmitted to the server over the WebSocket connection, increasing the value of `bufferedAmount` by the number of bytes needed to contain the data.
*
@@ -3077,6 +3091,22 @@ interface WebSocket extends EventTarget {
* [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/extensions)
*/
extensions: string | null;
+ /**
+ * The **`WebSocket.binaryType`** property controls the type of binary data being received over the WebSocket connection.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/WebSocket/binaryType)
+ */
+ binaryType: "blob" | "arraybuffer";
+}
+interface WebSocketAcceptOptions {
+ /**
+ * When set to `true`, receiving a server-initiated WebSocket Close frame will not
+ * automatically send a reciprocal Close frame, leaving the connection in a half-open
+ * state. This is useful for proxying scenarios where you need to coordinate closing
+ * both sides independently. Defaults to `false` when the
+ * `no_web_socket_half_open_by_default` compatibility flag is enabled.
+ */
+ allowHalfOpen?: boolean;
}
declare const WebSocketPair: {
new (): {
@@ -3195,6 +3225,8 @@ interface Container {
signal(signo: number): void;
getTcpPort(port: number): Fetcher;
setInactivityTimeout(durationMs: number | bigint): Promise;
+ interceptOutboundHttp(addr: string, binding: Fetcher): Promise;
+ interceptAllOutboundHttp(binding: Fetcher): Promise;
}
interface ContainerStartupOptions {
entrypoint?: string[];
@@ -3288,6 +3320,7 @@ interface WorkerStubEntrypointOptions {
}
interface WorkerLoader {
get(name: string | null, getCode: () => WorkerLoaderWorkerCode | Promise): WorkerStub;
+ load(code: WorkerLoaderWorkerCode): WorkerStub;
}
interface WorkerLoaderModule {
js?: string;
@@ -3320,6 +3353,181 @@ declare abstract class Performance {
get timeOrigin(): number;
/* [Cloudflare Docs Reference](https://developers.cloudflare.com/workers/runtime-apis/performance/#performancenow) */
now(): number;
+ /**
+ * The **`toJSON()`** method of the Performance interface is a Serialization; it returns a JSON representation of the Performance object.
+ *
+ * [MDN Reference](https://developer.mozilla.org/docs/Web/API/Performance/toJSON)
+ */
+ toJSON(): object;
+}
+// AI Search V2 API Error Interfaces
+interface AiSearchInternalError extends Error {
+}
+interface AiSearchNotFoundError extends Error {
+}
+interface AiSearchNameNotSetError extends Error {
+}
+// AI Search V2 Request Types
+type AiSearchSearchRequest = {
+ messages: Array<{
+ role: 'system' | 'developer' | 'user' | 'assistant' | 'tool';
+ content: string | null;
+ }>;
+ ai_search_options?: {
+ retrieval?: {
+ retrieval_type?: 'vector' | 'keyword' | 'hybrid';
+ /** Match threshold (0-1, default 0.4) */
+ match_threshold?: number;
+ /** Maximum number of results (1-50, default 10) */
+ max_num_results?: number;
+ filters?: VectorizeVectorMetadataFilter;
+ /** Context expansion (0-3, default 0) */
+ context_expansion?: number;
+ [key: string]: unknown;
+ };
+ query_rewrite?: {
+ enabled?: boolean;
+ model?: string;
+ rewrite_prompt?: string;
+ [key: string]: unknown;
+ };
+ reranking?: {
+ /** Enable reranking (default false) */
+ enabled?: boolean;
+ model?: '@cf/baai/bge-reranker-base' | '';
+ /** Match threshold (0-1, default 0.4) */
+ match_threshold?: number;
+ [key: string]: unknown;
+ };
+ [key: string]: unknown;
+ };
+};
+type AiSearchChatCompletionsRequest = {
+ messages: Array<{
+ role: 'system' | 'developer' | 'user' | 'assistant' | 'tool';
+ content: string | null;
+ }>;
+ model?: string;
+ stream?: boolean;
+ ai_search_options?: {
+ retrieval?: {
+ retrieval_type?: 'vector' | 'keyword' | 'hybrid';
+ match_threshold?: number;
+ max_num_results?: number;
+ filters?: VectorizeVectorMetadataFilter;
+ context_expansion?: number;
+ [key: string]: unknown;
+ };
+ query_rewrite?: {
+ enabled?: boolean;
+ model?: string;
+ rewrite_prompt?: string;
+ [key: string]: unknown;
+ };
+ reranking?: {
+ enabled?: boolean;
+ model?: '@cf/baai/bge-reranker-base' | '';
+ match_threshold?: number;
+ [key: string]: unknown;
+ };
+ [key: string]: unknown;
+ };
+ [key: string]: unknown;
+};
+// AI Search V2 Response Types
+type AiSearchSearchResponse = {
+ search_query: string;
+ chunks: Array<{
+ id: string;
+ type: string;
+ /** Match score (0-1) */
+ score: number;
+ text: string;
+ item: {
+ timestamp?: number;
+ key: string;
+ metadata?: Record;
+ };
+ scoring_details?: {
+ /** Keyword match score (0-1) */
+ keyword_score?: number;
+ /** Vector similarity score (0-1) */
+ vector_score?: number;
+ };
+ }>;
+};
+type AiSearchListResponse = Array<{
+ id: string;
+ internal_id?: string;
+ account_id?: string;
+ account_tag?: string;
+ /** Whether the instance is enabled (default true) */
+ enable?: boolean;
+ type?: 'r2' | 'web-crawler';
+ source?: string;
+ [key: string]: unknown;
+}>;
+type AiSearchConfig = {
+ /** Instance ID (1-32 chars, pattern: ^[a-z0-9_]+(?:-[a-z0-9_]+)*$) */
+ id: string;
+ type: 'r2' | 'web-crawler';
+ source: string;
+ source_params?: object;
+ /** Token ID (UUID format) */
+ token_id?: string;
+ ai_gateway_id?: string;
+ /** Enable query rewriting (default false) */
+ rewrite_query?: boolean;
+ /** Enable reranking (default false) */
+ reranking?: boolean;
+ embedding_model?: string;
+ ai_search_model?: string;
+};
+type AiSearchInstance = {
+ id: string;
+ enable?: boolean;
+ type?: 'r2' | 'web-crawler';
+ source?: string;
+ [key: string]: unknown;
+};
+// AI Search Instance Service - Instance-level operations
+declare abstract class AiSearchInstanceService {
+ /**
+ * Search the AI Search instance for relevant chunks.
+ * @param params Search request with messages and AI search options
+ * @returns Search response with matching chunks
+ */
+ search(params: AiSearchSearchRequest): Promise;
+ /**
+ * Generate chat completions with AI Search context.
+ * @param params Chat completions request with optional streaming
+ * @returns Response object (if streaming) or chat completion result
+ */
+ chatCompletions(params: AiSearchChatCompletionsRequest): Promise;
+ /**
+ * Delete this AI Search instance.
+ */
+ delete(): Promise;
+}
+// AI Search Account Service - Account-level operations
+declare abstract class AiSearchAccountService {
+ /**
+ * List all AI Search instances in the account.
+ * @returns Array of AI Search instances
+ */
+ list(): Promise;
+ /**
+ * Get an AI Search instance by ID.
+ * @param name Instance ID
+ * @returns Instance service for performing operations
+ */
+ get(name: string): AiSearchInstanceService;
+ /**
+ * Create a new AI Search instance.
+ * @param config Instance configuration
+ * @returns Instance service for performing operations
+ */
+ create(config: AiSearchConfig): Promise;
}
type AiImageClassificationInput = {
image: number[];
@@ -5509,7 +5717,7 @@ interface Ai_Cf_Qwen_Qwq_32B_Messages {
};
})[];
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -5775,7 +5983,7 @@ interface Ai_Cf_Mistralai_Mistral_Small_3_1_24B_Instruct_Messages {
};
})[];
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -5866,7 +6074,7 @@ interface Ai_Cf_Google_Gemma_3_12B_It_Prompt {
*/
prompt: string;
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -6025,7 +6233,7 @@ interface Ai_Cf_Google_Gemma_3_12B_It_Messages {
};
})[];
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -6297,7 +6505,7 @@ interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages {
})[];
response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode;
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -6527,7 +6735,7 @@ interface Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_Messages_Inner {
})[];
response_format?: Ai_Cf_Meta_Llama_4_Scout_17B_16E_Instruct_JSON_Mode;
/**
- * JSON schema that should be fufilled for the response.
+ * JSON schema that should be fulfilled for the response.
*/
guided_json?: object;
/**
@@ -7577,7 +7785,7 @@ interface Ai_Cf_Ai4Bharat_Indictrans2_En_Indic_1B_Input {
*/
text: string | string[];
/**
- * Target langauge to translate to
+ * Target language to translate to
*/
target_language: "asm_Beng" | "awa_Deva" | "ben_Beng" | "bho_Deva" | "brx_Deva" | "doi_Deva" | "eng_Latn" | "gom_Deva" | "gon_Deva" | "guj_Gujr" | "hin_Deva" | "hne_Deva" | "kan_Knda" | "kas_Arab" | "kas_Deva" | "kha_Latn" | "lus_Latn" | "mag_Deva" | "mai_Deva" | "mal_Mlym" | "mar_Deva" | "mni_Beng" | "mni_Mtei" | "npi_Deva" | "ory_Orya" | "pan_Guru" | "san_Deva" | "sat_Olck" | "snd_Arab" | "snd_Deva" | "tam_Taml" | "tel_Telu" | "urd_Arab" | "unr_Deva";
}
@@ -8508,6 +8716,48 @@ type AiModelListType = Record;
declare abstract class Ai {
aiGatewayLogId: string | null;
gateway(gatewayId: string): AiGateway;
+ /**
+ * Access the AI Search API for managing AI-powered search instances.
+ *
+ * This is the new API that replaces AutoRAG with better namespace separation:
+ * - Account-level operations: `list()`, `create()`
+ * - Instance-level operations: `get(id).search()`, `get(id).chatCompletions()`, `get(id).delete()`
+ *
+ * @example
+ * ```typescript
+ * // List all AI Search instances
+ * const instances = await env.AI.aiSearch.list();
+ *
+ * // Search an instance
+ * const results = await env.AI.aiSearch.get('my-search').search({
+ * messages: [{ role: 'user', content: 'What is the policy?' }],
+ * ai_search_options: {
+ * retrieval: { max_num_results: 10 }
+ * }
+ * });
+ *
+ * // Generate chat completions with AI Search context
+ * const response = await env.AI.aiSearch.get('my-search').chatCompletions({
+ * messages: [{ role: 'user', content: 'What is the policy?' }],
+ * model: '@cf/meta/llama-3.3-70b-instruct-fp8-fast'
+ * });
+ * ```
+ */
+ aiSearch(): AiSearchAccountService;
+ /**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use `env.AI.aiSearch` instead for better API design and new features.
+ *
+ * Migration guide:
+ * - `env.AI.autorag().list()` → `env.AI.aiSearch.list()`
+ * - `env.AI.autorag('id').search({ query: '...' })` → `env.AI.aiSearch.get('id').search({ messages: [{ role: 'user', content: '...' }] })`
+ * - `env.AI.autorag('id').aiSearch(...)` → `env.AI.aiSearch.get('id').chatCompletions(...)`
+ *
+ * Note: The old API continues to work for backwards compatibility, but new projects should use AI Search.
+ *
+ * @see AiSearchAccountService
+ * @param autoragId Optional instance ID (omit for account-level operations)
+ */
autorag(autoragId: string): AutoRAG;
run(model: Name, inputs: InputOptions, options?: Options): Promise;
getUrl(provider?: AIGatewayProviders | string): Promise;
}
+/**
+ * @deprecated AutoRAG has been replaced by AI Search. Use AiSearchInternalError instead.
+ * @see AiSearchInternalError
+ */
interface AutoRAGInternalError extends Error {
}
+/**
+ * @deprecated AutoRAG has been replaced by AI Search. Use AiSearchNotFoundError instead.
+ * @see AiSearchNotFoundError
+ */
interface AutoRAGNotFoundError extends Error {
}
+/**
+ * @deprecated This error type is no longer used in the AI Search API.
+ */
interface AutoRAGUnauthorizedError extends Error {
}
+/**
+ * @deprecated AutoRAG has been replaced by AI Search. Use AiSearchNameNotSetError instead.
+ * @see AiSearchNameNotSetError
+ */
interface AutoRAGNameNotSetError extends Error {
}
type ComparisonFilter = {
@@ -8633,6 +8898,11 @@ type CompoundFilter = {
type: 'and' | 'or';
filters: ComparisonFilter[];
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use AiSearchSearchRequest with the new API instead.
+ * @see AiSearchSearchRequest
+ */
type AutoRagSearchRequest = {
query: string;
filters?: CompoundFilter | ComparisonFilter;
@@ -8647,13 +8917,28 @@ type AutoRagSearchRequest = {
};
rewrite_query?: boolean;
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use AiSearchChatCompletionsRequest with the new API instead.
+ * @see AiSearchChatCompletionsRequest
+ */
type AutoRagAiSearchRequest = AutoRagSearchRequest & {
stream?: boolean;
system_prompt?: string;
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use AiSearchChatCompletionsRequest with stream: true instead.
+ * @see AiSearchChatCompletionsRequest
+ */
type AutoRagAiSearchRequestStreaming = Omit & {
stream: true;
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use AiSearchSearchResponse with the new API instead.
+ * @see AiSearchSearchResponse
+ */
type AutoRagSearchResponse = {
object: 'vector_store.search_results.page';
search_query: string;
@@ -8670,6 +8955,11 @@ type AutoRagSearchResponse = {
has_more: boolean;
next_page: string | null;
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use AiSearchListResponse with the new API instead.
+ * @see AiSearchListResponse
+ */
type AutoRagListResponse = {
id: string;
enable: boolean;
@@ -8679,14 +8969,51 @@ type AutoRagListResponse = {
paused: boolean;
status: string;
}[];
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * The new API returns different response formats for chat completions.
+ */
type AutoRagAiSearchResponse = AutoRagSearchResponse & {
response: string;
};
+/**
+ * @deprecated AutoRAG has been replaced by AI Search.
+ * Use the new AI Search API instead: `env.AI.aiSearch`
+ *
+ * Migration guide:
+ * - `env.AI.autorag().list()` → `env.AI.aiSearch.list()`
+ * - `env.AI.autorag('id').search(...)` → `env.AI.aiSearch.get('id').search(...)`
+ * - `env.AI.autorag('id').aiSearch(...)` → `env.AI.aiSearch.get('id').chatCompletions(...)`
+ *
+ * @see AiSearchAccountService
+ * @see AiSearchInstanceService
+ */
declare abstract class AutoRAG {
+ /**
+ * @deprecated Use `env.AI.aiSearch.list()` instead.
+ * @see AiSearchAccountService.list
+ */
list(): Promise;
+ /**
+ * @deprecated Use `env.AI.aiSearch.get(id).search(...)` instead.
+ * Note: The new API uses a messages array instead of a query string.
+ * @see AiSearchInstanceService.search
+ */
search(params: AutoRagSearchRequest): Promise;
+ /**
+ * @deprecated Use `env.AI.aiSearch.get(id).chatCompletions(...)` instead.
+ * @see AiSearchInstanceService.chatCompletions
+ */
aiSearch(params: AutoRagAiSearchRequestStreaming): Promise;
+ /**
+ * @deprecated Use `env.AI.aiSearch.get(id).chatCompletions(...)` instead.
+ * @see AiSearchInstanceService.chatCompletions
+ */
aiSearch(params: AutoRagAiSearchRequest): Promise;
+ /**
+ * @deprecated Use `env.AI.aiSearch.get(id).chatCompletions(...)` instead.
+ * @see AiSearchInstanceService.chatCompletions
+ */
aiSearch(params: AutoRagAiSearchRequest): Promise;
}
interface BasicImageTransformations {
@@ -9437,6 +9764,10 @@ interface D1Meta {
* The region of the database instance that executed the query.
*/
served_by_region?: string;
+ /**
+ * The three letters airport code of the colo that executed the query.
+ */
+ served_by_colo?: string;
/**
* True if-and-only-if the database instance that executed the query was the primary.
*/
@@ -9525,6 +9856,15 @@ declare abstract class D1PreparedStatement {
// ignored when `Disposable` is included in the standard lib.
interface Disposable {
}
+/**
+ * The returned data after sending an email
+ */
+interface EmailSendResult {
+ /**
+ * The Email Message ID
+ */
+ messageId: string;
+}
/**
* An email message that can be sent from a Worker.
*/
@@ -9566,24 +9906,55 @@ interface ForwardableEmailMessage extends EmailMessage {
* @param headers A [Headers object](https://developer.mozilla.org/en-US/docs/Web/API/Headers).
* @returns A promise that resolves when the email message is forwarded.
*/
- forward(rcptTo: string, headers?: Headers): Promise;
+ forward(rcptTo: string, headers?: Headers): Promise;
/**
* Reply to the sender of this email message with a new EmailMessage object.
* @param message The reply message.
* @returns A promise that resolves when the email message is replied.
*/
- reply(message: EmailMessage): Promise;
+ reply(message: EmailMessage): Promise;
+}
+/** A file attachment for an email message */
+type EmailAttachment = {
+ disposition: 'inline';
+ contentId: string;
+ filename: string;
+ type: string;
+ content: string | ArrayBuffer | ArrayBufferView;
+} | {
+ disposition: 'attachment';
+ contentId?: undefined;
+ filename: string;
+ type: string;
+ content: string | ArrayBuffer | ArrayBufferView;
+};
+/** An Email Address */
+interface EmailAddress {
+ name: string;
+ email: string;
}
/**
* A binding that allows a Worker to send email messages.
*/
interface SendEmail {
- send(message: EmailMessage): Promise;
+ send(message: EmailMessage): Promise;
+ send(builder: {
+ from: string | EmailAddress;
+ to: string | string[];
+ subject: string;
+ replyTo?: string | EmailAddress;
+ cc?: string | string[];
+ bcc?: string | string[];
+ headers?: Record;
+ text?: string;
+ html?: string;
+ attachments?: EmailAttachment[];
+ }): Promise;
}
declare abstract class EmailEvent extends ExtendableEvent {
readonly message: ForwardableEmailMessage;
}
-declare type EmailExportedHandler = (message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext) => void | Promise;
+declare type EmailExportedHandler = (message: ForwardableEmailMessage, env: Env, ctx: ExecutionContext) => void | Promise;
declare module "cloudflare:email" {
let _EmailMessage: {
prototype: EmailMessage;
@@ -9611,7 +9982,7 @@ interface Hyperdrive {
/**
* Connect directly to Hyperdrive as if it's your database, returning a TCP socket.
*
- * Calling this method returns an idential socket to if you call
+ * Calling this method returns an identical socket to if you call
* `connect("host:port")` using the `host` and `port` fields from this object.
* Pick whichever approach works better with your preferred DB client library.
*
@@ -9724,6 +10095,83 @@ type ImageOutputOptions = {
background?: string;
anim?: boolean;
};
+interface ImageMetadata {
+ id: string;
+ filename?: string;
+ uploaded?: string;
+ requireSignedURLs: boolean;
+ meta?: Record;
+ variants: string[];
+ draft?: boolean;
+ creator?: string;
+}
+interface ImageUploadOptions {
+ id?: string;
+ filename?: string;
+ requireSignedURLs?: boolean;
+ metadata?: Record;
+ creator?: string;
+ encoding?: 'base64';
+}
+interface ImageUpdateOptions {
+ requireSignedURLs?: boolean;
+ metadata?: Record;
+ creator?: string;
+}
+interface ImageListOptions {
+ limit?: number;
+ cursor?: string;
+ sortOrder?: 'asc' | 'desc';
+ creator?: string;
+}
+interface ImageList {
+ images: ImageMetadata[];
+ cursor?: string;
+ listComplete: boolean;
+}
+interface HostedImagesBinding {
+ /**
+ * Get detailed metadata for a hosted image
+ * @param imageId The ID of the image (UUID or custom ID)
+ * @returns Image metadata, or null if not found
+ */
+ details(imageId: string): Promise;
+ /**
+ * Get the raw image data for a hosted image
+ * @param imageId The ID of the image (UUID or custom ID)
+ * @returns ReadableStream of image bytes, or null if not found
+ */
+ image(imageId: string): Promise | null>;
+ /**
+ * Upload a new hosted image
+ * @param image The image file to upload
+ * @param options Upload configuration
+ * @returns Metadata for the uploaded image
+ * @throws {@link ImagesError} if upload fails
+ */
+ upload(image: ReadableStream | ArrayBuffer, options?: ImageUploadOptions): Promise;
+ /**
+ * Update hosted image metadata
+ * @param imageId The ID of the image
+ * @param options Properties to update
+ * @returns Updated image metadata
+ * @throws {@link ImagesError} if update fails
+ */
+ update(imageId: string, options: ImageUpdateOptions): Promise;
+ /**
+ * Delete a hosted image
+ * @param imageId The ID of the image
+ * @returns True if deleted, false if not found
+ */
+ delete(imageId: string): Promise;
+ /**
+ * List hosted images with pagination
+ * @param options List configuration
+ * @returns List of images with pagination info
+ * @throws {@link ImagesError} if list fails
+ */
+ list(options?: ImageListOptions): Promise;
+}
interface ImagesBinding {
/**
* Get image metadata (type, width and height)
@@ -9737,6 +10185,10 @@ interface ImagesBinding {
* @returns A transform handle
*/
input(stream: ReadableStream, options?: ImageInputOptions): ImageTransformer;
+ /**
+ * Access hosted images CRUD operations
+ */
+ readonly hosted: HostedImagesBinding;
}
interface ImageTransformer {
/**
@@ -9803,7 +10255,13 @@ interface MediaTransformer {
* @param transform - Configuration for how the media should be transformed
* @returns A generator for producing the transformed media output
*/
- transform(transform: MediaTransformationInputOptions): MediaTransformationGenerator;
+ transform(transform?: MediaTransformationInputOptions): MediaTransformationGenerator;
+ /**
+ * Generates the final media output with specified options.
+ * @param output - Configuration for the output format and parameters
+ * @returns The final transformation result containing the transformed media
+ */
+ output(output?: MediaTransformationOutputOptions): MediaTransformationResult;
}
/**
* Generator for producing media transformation results.
@@ -9815,7 +10273,7 @@ interface MediaTransformationGenerator {
* @param output - Configuration for the output format and parameters
* @returns The final transformation result containing the transformed media
*/
- output(output: MediaTransformationOutputOptions): MediaTransformationResult;
+ output(output?: MediaTransformationOutputOptions): MediaTransformationResult;
}
/**
* Result of a media transformation operation.
@@ -9824,19 +10282,19 @@ interface MediaTransformationGenerator {
interface MediaTransformationResult {
/**
* Returns the transformed media as a readable stream of bytes.
- * @returns A stream containing the transformed media data
+ * @returns A promise containing a readable stream with the transformed media
*/
- media(): ReadableStream;
+ media(): Promise>;
/**
* Returns the transformed media as an HTTP response object.
- * @returns The transformed media as a Response, ready to store in cache or return to users
+ * @returns The transformed media as a Promise, ready to store in cache or return to users
*/
- response(): Response;
+ response(): Promise;
/**
* Returns the MIME type of the transformed media.
- * @returns The content type string (e.g., 'image/jpeg', 'video/mp4')
+ * @returns A promise containing the content type string (e.g., 'image/jpeg', 'video/mp4')
*/
- contentType(): string;
+ contentType(): Promise;
}
/**
* Configuration options for transforming media input.
@@ -9944,7 +10402,7 @@ declare module "cloudflare:pipelines" {
protected ctx: ExecutionContext;
constructor(ctx: ExecutionContext, env: Env);
/**
- * run recieves an array of PipelineRecord which can be
+ * run receives an array of PipelineRecord which can be
* transformed and returned to the pipeline
* @param records Incoming records from the pipeline to be transformed
* @param metadata Information about the specific pipeline calling the transformation entrypoint
@@ -10215,9 +10673,12 @@ declare namespace CloudflareWorkersModule {
timestamp: Date;
type: string;
};
+ export type WorkflowStepContext = {
+ attempt: number;
+ };
export abstract class WorkflowStep {
- do>(name: string, callback: () => Promise): Promise;
- do>(name: string, config: WorkflowStepConfig, callback: () => Promise): Promise;
+ do>(name: string, callback: (ctx: WorkflowStepContext) => Promise): Promise;
+ do>(name: string, config: WorkflowStepConfig, callback: (ctx: WorkflowStepContext) => Promise): Promise;
sleep: (name: string, duration: WorkflowSleepDuration) => Promise;
sleepUntil: (name: string, timestamp: Date | number) => Promise;
waitForEvent>(name: string, options: {
@@ -10225,6 +10686,7 @@ declare namespace CloudflareWorkersModule {
timeout?: WorkflowTimeoutDuration | number;
}): Promise>;
}
+ export type WorkflowInstanceStatus = 'queued' | 'running' | 'paused' | 'errored' | 'terminated' | 'complete' | 'waiting' | 'waitingForPause' | 'unknown';
export abstract class WorkflowEntrypoint | unknown = unknown> implements Rpc.WorkflowEntrypointBranded {
[Rpc.__WORKFLOW_ENTRYPOINT_BRAND]: never;
protected ctx: ExecutionContext;
@@ -10253,17 +10715,765 @@ declare module "cloudflare:sockets" {
function _connect(address: string | SocketAddress, options?: SocketOptions): Socket;
export { _connect as connect };
}
+/**
+ * Binding entrypoint for Cloudflare Stream.
+ *
+ * Usage:
+ * - Binding-level operations:
+ * `await env.STREAM.videos.upload`
+ * `await env.STREAM.videos.createDirectUpload`
+ * `await env.STREAM.videos.*`
+ * `await env.STREAM.watermarks.*`
+ * - Per-video operations:
+ * `await env.STREAM.video(id).downloads.*`
+ * `await env.STREAM.video(id).captions.*`
+ *
+ * Example usage:
+ * ```ts
+ * await env.STREAM.video(id).downloads.generate();
+ *
+ * const video = env.STREAM.video(id)
+ * const captions = video.captions.list();
+ * const videoDetails = video.details()
+ * ```
+ */
+interface StreamBinding {
+ /**
+ * Returns a handle scoped to a single video for per-video operations.
+ * @param id The unique identifier for the video.
+ * @returns A handle for per-video operations.
+ */
+ video(id: string): StreamVideoHandle;
+ /**
+ * Uploads a new video from a File.
+ * @param file The video file to upload.
+ * @returns The uploaded video details.
+ * @throws {BadRequestError} if the upload parameter is invalid
+ * @throws {QuotaReachedError} if the account storage capacity is exceeded
+ * @throws {MaxFileSizeError} if the file size is too large
+ * @throws {RateLimitedError} if the server received too many requests
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ upload(file: File): Promise;
+ /**
+ * Uploads a new video from a provided URL.
+ * @param url The URL to upload from.
+ * @param params Optional upload parameters.
+ * @returns The uploaded video details.
+ * @throws {BadRequestError} if the upload parameter is invalid or the URL is invalid
+ * @throws {QuotaReachedError} if the account storage capacity is exceeded
+ * @throws {MaxFileSizeError} if the file size is too large
+ * @throws {RateLimitedError} if the server received too many requests
+ * @throws {AlreadyUploadedError} if a video was already uploaded to this URL
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ upload(url: string, params?: StreamUrlUploadParams): Promise;
+ /**
+ * Creates a direct upload that allows video uploads without an API key.
+ * @param params Parameters for the direct upload
+ * @returns The direct upload details.
+ * @throws {BadRequestError} if the parameters are invalid
+ * @throws {RateLimitedError} if the server received too many requests
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ createDirectUpload(params: StreamDirectUploadCreateParams): Promise;
+ videos: StreamVideos;
+ watermarks: StreamWatermarks;
+}
+/**
+ * Handle for operations scoped to a single Stream video.
+ */
+interface StreamVideoHandle {
+ /**
+ * The unique identifier for the video.
+ */
+ id: string;
+ /**
+ * Get a full videos details
+ * @returns The full video details.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ details(): Promise;
+ /**
+ * Update details for a single video.
+ * @param params The fields to update for the video.
+ * @returns The updated video details.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {BadRequestError} if the parameters are invalid
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ update(params: StreamUpdateVideoParams): Promise;
+ /**
+ * Deletes a video and its copies from Cloudflare Stream.
+ * @returns A promise that resolves when deletion completes.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ delete(): Promise;
+ /**
+ * Creates a signed URL token for a video.
+ * @returns The signed token that was created.
+ * @throws {InternalError} if the signing key cannot be retrieved or the token cannot be signed
+ */
+ generateToken(): Promise;
+ downloads: StreamScopedDownloads;
+ captions: StreamScopedCaptions;
+}
+interface StreamVideo {
+ /**
+ * The unique identifier for the video.
+ */
+ id: string;
+ /**
+ * A user-defined identifier for the media creator.
+ */
+ creator: string | null;
+ /**
+ * The thumbnail URL for the video.
+ */
+ thumbnail: string;
+ /**
+ * The thumbnail timestamp percentage.
+ */
+ thumbnailTimestampPct: number;
+ /**
+ * Indicates whether the video is ready to stream.
+ */
+ readyToStream: boolean;
+ /**
+ * The date and time the video became ready to stream.
+ */
+ readyToStreamAt: string | null;
+ /**
+ * Processing status information.
+ */
+ status: StreamVideoStatus;
+ /**
+ * A user modifiable key-value store.
+ */
+ meta: Record;
+ /**
+ * The date and time the video was created.
+ */
+ created: string;
+ /**
+ * The date and time the video was last modified.
+ */
+ modified: string;
+ /**
+ * The date and time at which the video will be deleted.
+ */
+ scheduledDeletion: string | null;
+ /**
+ * The size of the video in bytes.
+ */
+ size: number;
+ /**
+ * The preview URL for the video.
+ */
+ preview?: string;
+ /**
+ * Origins allowed to display the video.
+ */
+ allowedOrigins: Array;
+ /**
+ * Indicates whether signed URLs are required.
+ */
+ requireSignedURLs: boolean | null;
+ /**
+ * The date and time the video was uploaded.
+ */
+ uploaded: string | null;
+ /**
+ * The date and time when the upload URL expires.
+ */
+ uploadExpiry: string | null;
+ /**
+ * The maximum size in bytes for direct uploads.
+ */
+ maxSizeBytes: number | null;
+ /**
+ * The maximum duration in seconds for direct uploads.
+ */
+ maxDurationSeconds: number | null;
+ /**
+ * The video duration in seconds. -1 indicates unknown.
+ */
+ duration: number;
+ /**
+ * Input metadata for the original upload.
+ */
+ input: StreamVideoInput;
+ /**
+ * Playback URLs for the video.
+ */
+ hlsPlaybackUrl: string;
+ dashPlaybackUrl: string;
+ /**
+ * The watermark applied to the video, if any.
+ */
+ watermark: StreamWatermark | null;
+ /**
+ * The live input id associated with the video, if any.
+ */
+ liveInputId?: string | null;
+ /**
+ * The source video id if this is a clip.
+ */
+ clippedFromId: string | null;
+ /**
+ * Public details associated with the video.
+ */
+ publicDetails: StreamPublicDetails | null;
+}
+type StreamVideoStatus = {
+ /**
+ * The current processing state.
+ */
+ state: string;
+ /**
+ * The current processing step.
+ */
+ step?: string;
+ /**
+ * The percent complete as a string.
+ */
+ pctComplete?: string;
+ /**
+ * An error reason code, if applicable.
+ */
+ errorReasonCode: string;
+ /**
+ * An error reason text, if applicable.
+ */
+ errorReasonText: string;
+};
+type StreamVideoInput = {
+ /**
+ * The input width in pixels.
+ */
+ width: number;
+ /**
+ * The input height in pixels.
+ */
+ height: number;
+};
+type StreamPublicDetails = {
+ /**
+ * The public title for the video.
+ */
+ title: string | null;
+ /**
+ * The public share link.
+ */
+ share_link: string | null;
+ /**
+ * The public channel link.
+ */
+ channel_link: string | null;
+ /**
+ * The public logo URL.
+ */
+ logo: string | null;
+};
+type StreamDirectUpload = {
+ /**
+ * The URL an unauthenticated upload can use for a single multipart request.
+ */
+ uploadURL: string;
+ /**
+ * A Cloudflare-generated unique identifier for a media item.
+ */
+ id: string;
+ /**
+ * The watermark profile applied to the upload.
+ */
+ watermark: StreamWatermark | null;
+ /**
+ * The scheduled deletion time, if any.
+ */
+ scheduledDeletion: string | null;
+};
+type StreamDirectUploadCreateParams = {
+ /**
+ * The maximum duration in seconds for a video upload.
+ */
+ maxDurationSeconds: number;
+ /**
+ * The date and time after upload when videos will not be accepted.
+ */
+ expiry?: string;
+ /**
+ * A user-defined identifier for the media creator.
+ */
+ creator?: string;
+ /**
+ * A user modifiable key-value store used to reference other systems of record for
+ * managing videos.
+ */
+ meta?: Record;
+ /**
+ * Lists the origins allowed to display the video.
+ */
+ allowedOrigins?: Array;
+ /**
+ * Indicates whether the video can be accessed using the id. When set to `true`,
+ * a signed token must be generated with a signing key to view the video.
+ */
+ requireSignedURLs?: boolean;
+ /**
+ * The thumbnail timestamp percentage.
+ */
+ thumbnailTimestampPct?: number;
+ /**
+ * The date and time at which the video will be deleted. Include `null` to remove
+ * a scheduled deletion.
+ */
+ scheduledDeletion?: string | null;
+ /**
+ * The watermark profile to apply.
+ */
+ watermark?: StreamDirectUploadWatermark;
+};
+type StreamDirectUploadWatermark = {
+ /**
+ * The unique identifier for the watermark profile.
+ */
+ id: string;
+};
+type StreamUrlUploadParams = {
+ /**
+ * Lists the origins allowed to display the video. Enter allowed origin
+ * domains in an array and use `*` for wildcard subdomains. Empty arrays allow the
+ * video to be viewed on any origin.
+ */
+ allowedOrigins?: Array;
+ /**
+ * A user-defined identifier for the media creator.
+ */
+ creator?: string;
+ /**
+ * A user modifiable key-value store used to reference other systems of
+ * record for managing videos.
+ */
+ meta?: Record;
+ /**
+ * Indicates whether the video can be a accessed using the id. When
+ * set to `true`, a signed token must be generated with a signing key to view the
+ * video.
+ */
+ requireSignedURLs?: boolean;
+ /**
+ * Indicates the date and time at which the video will be deleted. Omit
+ * the field to indicate no change, or include with a `null` value to remove an
+ * existing scheduled deletion. If specified, must be at least 30 days from upload
+ * time.
+ */
+ scheduledDeletion?: string | null;
+ /**
+ * The timestamp for a thumbnail image calculated as a percentage value
+ * of the video's duration. To convert from a second-wise timestamp to a
+ * percentage, divide the desired timestamp by the total duration of the video. If
+ * this value is not set, the default thumbnail image is taken from 0s of the
+ * video.
+ */
+ thumbnailTimestampPct?: number;
+ /**
+ * The identifier for the watermark profile
+ */
+ watermarkId?: string;
+};
+interface StreamScopedCaptions {
+ /**
+ * Uploads the caption or subtitle file to the endpoint for a specific BCP47 language.
+ * One caption or subtitle file per language is allowed.
+ * @param language The BCP 47 language tag for the caption or subtitle.
+ * @param file The caption or subtitle file to upload.
+ * @returns The created caption entry.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {BadRequestError} if the language or file is invalid
+ * @throws {MaxFileSizeError} if the file size is too large
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ upload(language: string, file: File): Promise;
+ /**
+ * Generate captions or subtitles for the provided language via AI.
+ * @param language The BCP 47 language tag to generate.
+ * @returns The generated caption entry.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {BadRequestError} if the language is invalid
+ * @throws {StreamError} if a generated caption already exists
+ * @throws {StreamError} if the video duration is too long
+ * @throws {StreamError} if the video is missing audio
+ * @throws {StreamError} if the requested language is not supported
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ generate(language: string): Promise;
+ /**
+ * Lists the captions or subtitles.
+ * Use the language parameter to filter by a specific language.
+ * @param language The optional BCP 47 language tag to filter by.
+ * @returns The list of captions or subtitles.
+ * @throws {NotFoundError} if the video or caption is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ list(language?: string): Promise;
+ /**
+ * Removes the captions or subtitles from a video.
+ * @param language The BCP 47 language tag to remove.
+ * @returns A promise that resolves when deletion completes.
+ * @throws {NotFoundError} if the video or caption is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ delete(language: string): Promise;
+}
+interface StreamScopedDownloads {
+ /**
+ * Generates a download for a video when a video is ready to view. Available
+ * types are `default` and `audio`. Defaults to `default` when omitted.
+ * @param downloadType The download type to create.
+ * @returns The current downloads for the video.
+ * @throws {NotFoundError} if the video is not found
+ * @throws {BadRequestError} if the download type is invalid
+ * @throws {StreamError} if the video duration is too long to generate a download
+ * @throws {StreamError} if the video is not ready to stream
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ generate(downloadType?: StreamDownloadType): Promise;
+ /**
+ * Lists the downloads created for a video.
+ * @returns The current downloads for the video.
+ * @throws {NotFoundError} if the video or downloads are not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ get(): Promise;
+ /**
+ * Delete the downloads for a video. Available types are `default` and `audio`.
+ * Defaults to `default` when omitted.
+ * @param downloadType The download type to delete.
+ * @returns A promise that resolves when deletion completes.
+ * @throws {NotFoundError} if the video or downloads are not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ delete(downloadType?: StreamDownloadType): Promise;
+}
+interface StreamVideos {
+ /**
+ * Lists all videos in a users account.
+ * @returns The list of videos.
+ * @throws {BadRequestError} if the parameters are invalid
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ list(params?: StreamVideosListParams): Promise;
+}
+interface StreamWatermarks {
+ /**
+ * Generate a new watermark profile
+ * @param file The image file to upload
+ * @param params The watermark creation parameters.
+ * @returns The created watermark profile.
+ * @throws {BadRequestError} if the parameters are invalid
+ * @throws {InvalidURLError} if the URL is invalid
+ * @throws {MaxFileSizeError} if the file size is too large
+ * @throws {TooManyWatermarksError} if the number of allowed watermarks is reached
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ generate(file: File, params: StreamWatermarkCreateParams): Promise;
+ /**
+ * Generate a new watermark profile
+ * @param url The image url to upload
+ * @param params The watermark creation parameters.
+ * @returns The created watermark profile.
+ * @throws {BadRequestError} if the parameters are invalid
+ * @throws {InvalidURLError} if the URL is invalid
+ * @throws {MaxFileSizeError} if the file size is too large
+ * @throws {TooManyWatermarksError} if the number of allowed watermarks is reached
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ generate(url: string, params: StreamWatermarkCreateParams): Promise;
+ /**
+ * Lists all watermark profiles for an account.
+ * @returns The list of watermark profiles.
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ list(): Promise;
+ /**
+ * Retrieves details for a single watermark profile.
+ * @param watermarkId The watermark profile identifier.
+ * @returns The watermark profile details.
+ * @throws {NotFoundError} if the watermark is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ get(watermarkId: string): Promise;
+ /**
+ * Deletes a watermark profile.
+ * @param watermarkId The watermark profile identifier.
+ * @returns A promise that resolves when deletion completes.
+ * @throws {NotFoundError} if the watermark is not found
+ * @throws {InternalError} if an unexpected error occurs
+ */
+ delete(watermarkId: string): Promise;
+}
+type StreamUpdateVideoParams = {
+ /**
+ * Lists the origins allowed to display the video. Enter allowed origin
+ * domains in an array and use `*` for wildcard subdomains. Empty arrays allow the
+ * video to be viewed on any origin.
+ */
+ allowedOrigins?: Array;
+ /**
+ * A user-defined identifier for the media creator.
+ */
+ creator?: string;
+ /**
+ * The maximum duration in seconds for a video upload. Can be set for a
+ * video that is not yet uploaded to limit its duration. Uploads that exceed the
+ * specified duration will fail during processing. A value of `-1` means the value
+ * is unknown.
+ */
+ maxDurationSeconds?: number;
+ /**
+ * A user modifiable key-value store used to reference other systems of
+ * record for managing videos.
+ */
+ meta?: Record;
+ /**
+ * Indicates whether the video can be a accessed using the id. When
+ * set to `true`, a signed token must be generated with a signing key to view the
+ * video.
+ */
+ requireSignedURLs?: boolean;
+ /**
+ * Indicates the date and time at which the video will be deleted. Omit
+ * the field to indicate no change, or include with a `null` value to remove an
+ * existing scheduled deletion. If specified, must be at least 30 days from upload
+ * time.
+ */
+ scheduledDeletion?: string | null;
+ /**
+ * The timestamp for a thumbnail image calculated as a percentage value
+ * of the video's duration. To convert from a second-wise timestamp to a
+ * percentage, divide the desired timestamp by the total duration of the video. If
+ * this value is not set, the default thumbnail image is taken from 0s of the
+ * video.
+ */
+ thumbnailTimestampPct?: number;
+};
+type StreamCaption = {
+ /**
+ * Whether the caption was generated via AI.
+ */
+ generated?: boolean;
+ /**
+ * The language label displayed in the native language to users.
+ */
+ label: string;
+ /**
+ * The language tag in BCP 47 format.
+ */
+ language: string;
+ /**
+ * The status of a generated caption.
+ */
+ status?: 'ready' | 'inprogress' | 'error';
+};
+type StreamDownloadStatus = 'ready' | 'inprogress' | 'error';
+type StreamDownloadType = 'default' | 'audio';
+type StreamDownload = {
+ /**
+ * Indicates the progress as a percentage between 0 and 100.
+ */
+ percentComplete: number;
+ /**
+ * The status of a generated download.
+ */
+ status: StreamDownloadStatus;
+ /**
+ * The URL to access the generated download.
+ */
+ url?: string;
+};
+/**
+ * An object with download type keys. Each key is optional and only present if that
+ * download type has been created.
+ */
+type StreamDownloadGetResponse = {
+ /**
+ * The audio-only download. Only present if this download type has been created.
+ */
+ audio?: StreamDownload;
+ /**
+ * The default video download. Only present if this download type has been created.
+ */
+ default?: StreamDownload;
+};
+type StreamWatermarkPosition = 'upperRight' | 'upperLeft' | 'lowerLeft' | 'lowerRight' | 'center';
+type StreamWatermark = {
+ /**
+ * The unique identifier for a watermark profile.
+ */
+ id: string;
+ /**
+ * The size of the image in bytes.
+ */
+ size: number;
+ /**
+ * The height of the image in pixels.
+ */
+ height: number;
+ /**
+ * The width of the image in pixels.
+ */
+ width: number;
+ /**
+ * The date and a time a watermark profile was created.
+ */
+ created: string;
+ /**
+ * The source URL for a downloaded image. If the watermark profile was created via
+ * direct upload, this field is null.
+ */
+ downloadedFrom: string | null;
+ /**
+ * A short description of the watermark profile.
+ */
+ name: string;
+ /**
+ * The translucency of the image. A value of `0.0` makes the image completely
+ * transparent, and `1.0` makes the image completely opaque. Note that if the image
+ * is already semi-transparent, setting this to `1.0` will not make the image
+ * completely opaque.
+ */
+ opacity: number;
+ /**
+ * The whitespace between the adjacent edges (determined by position) of the video
+ * and the image. `0.0` indicates no padding, and `1.0` indicates a fully padded
+ * video width or length, as determined by the algorithm.
+ */
+ padding: number;
+ /**
+ * The size of the image relative to the overall size of the video. This parameter
+ * will adapt to horizontal and vertical videos automatically. `0.0` indicates no
+ * scaling (use the size of the image as-is), and `1.0 `fills the entire video.
+ */
+ scale: number;
+ /**
+ * The location of the image. Valid positions are: `upperRight`, `upperLeft`,
+ * `lowerLeft`, `lowerRight`, and `center`. Note that `center` ignores the
+ * `padding` parameter.
+ */
+ position: StreamWatermarkPosition;
+};
+type StreamWatermarkCreateParams = {
+ /**
+ * A short description of the watermark profile.
+ */
+ name?: string;
+ /**
+ * The translucency of the image. A value of `0.0` makes the image completely
+ * transparent, and `1.0` makes the image completely opaque. Note that if the
+ * image is already semi-transparent, setting this to `1.0` will not make the
+ * image completely opaque.
+ */
+ opacity?: number;
+ /**
+ * The whitespace between the adjacent edges (determined by position) of the
+ * video and the image. `0.0` indicates no padding, and `1.0` indicates a fully
+ * padded video width or length, as determined by the algorithm.
+ */
+ padding?: number;
+ /**
+ * The size of the image relative to the overall size of the video. This
+ * parameter will adapt to horizontal and vertical videos automatically. `0.0`
+ * indicates no scaling (use the size of the image as-is), and `1.0 `fills the
+ * entire video.
+ */
+ scale?: number;
+ /**
+ * The location of the image.
+ */
+ position?: StreamWatermarkPosition;
+};
+type StreamVideosListParams = {
+ /**
+ * The maximum number of videos to return.
+ */
+ limit?: number;
+ /**
+ * Return videos created before this timestamp.
+ * (RFC3339/RFC3339Nano)
+ */
+ before?: string;
+ /**
+ * Comparison operator for the `before` field.
+ * @default 'lt'
+ */
+ beforeComp?: StreamPaginationComparison;
+ /**
+ * Return videos created after this timestamp.
+ * (RFC3339/RFC3339Nano)
+ */
+ after?: string;
+ /**
+ * Comparison operator for the `after` field.
+ * @default 'gte'
+ */
+ afterComp?: StreamPaginationComparison;
+};
+type StreamPaginationComparison = 'eq' | 'gt' | 'gte' | 'lt' | 'lte';
+/**
+ * Error object for Stream binding operations.
+ */
+interface StreamError extends Error {
+ readonly code: number;
+ readonly statusCode: number;
+ readonly message: string;
+ readonly stack?: string;
+}
+interface InternalError extends StreamError {
+ name: 'InternalError';
+}
+interface BadRequestError extends StreamError {
+ name: 'BadRequestError';
+}
+interface NotFoundError extends StreamError {
+ name: 'NotFoundError';
+}
+interface ForbiddenError extends StreamError {
+ name: 'ForbiddenError';
+}
+interface RateLimitedError extends StreamError {
+ name: 'RateLimitedError';
+}
+interface QuotaReachedError extends StreamError {
+ name: 'QuotaReachedError';
+}
+interface MaxFileSizeError extends StreamError {
+ name: 'MaxFileSizeError';
+}
+interface InvalidURLError extends StreamError {
+ name: 'InvalidURLError';
+}
+interface AlreadyUploadedError extends StreamError {
+ name: 'AlreadyUploadedError';
+}
+interface TooManyWatermarksError extends StreamError {
+ name: 'TooManyWatermarksError';
+}
type MarkdownDocument = {
name: string;
blob: Blob;
};
type ConversionResponse = {
+ id: string;
name: string;
mimeType: string;
format: 'markdown';
tokens: number;
data: string;
} | {
+ id: string;
name: string;
mimeType: string;
format: 'error';
@@ -10281,6 +11491,8 @@ type ConversionOptions = {
images?: EmbeddedImageConversionOptions & {
convertOGImage?: boolean;
};
+ hostname?: string;
+ cssSelector?: string;
};
docx?: {
images?: EmbeddedImageConversionOptions;
@@ -10418,6 +11630,15 @@ declare namespace TailStream {
readonly level: "debug" | "error" | "info" | "log" | "warn";
readonly message: object;
}
+ interface DroppedEventsDiagnostic {
+ readonly diagnosticsType: "droppedEvents";
+ readonly count: number;
+ }
+ interface StreamDiagnostic {
+ readonly type: 'streamDiagnostic';
+ // To add new diagnostic types, define a new interface and add it to this union type.
+ readonly diagnostic: DroppedEventsDiagnostic;
+ }
// This marks the worker handler return information.
// This is separate from Outcome because the worker invocation can live for a long time after
// returning. For example - Websockets that return an http upgrade response but then continue
@@ -10434,7 +11655,7 @@ declare namespace TailStream {
readonly type: "attributes";
readonly info: Attribute[];
}
- type EventType = Onset | Outcome | SpanOpen | SpanClose | DiagnosticChannelEvent | Exception | Log | Return | Attributes;
+ type EventType = Onset | Outcome | SpanOpen | SpanClose | DiagnosticChannelEvent | Exception | Log | StreamDiagnostic | Return | Attributes;
// Context in which this trace event lives.
interface SpanContext {
// Single id for the entire top-level invocation
@@ -10448,7 +11669,7 @@ declare namespace TailStream {
// For Hibernate and Mark this would be the span under which they were emitted.
// spanId is not set ONLY if:
// 1. This is an Onset event
- // 2. We are not inherting any SpanContext. (e.g. this is a cross-account service binding or a new top-level invocation)
+ // 2. We are not inheriting any SpanContext. (e.g. this is a cross-account service binding or a new top-level invocation)
readonly spanId?: string;
}
interface TailEvent {
diff --git a/wrangler.jsonc b/wrangler.jsonc
index f3f269d..05ae187 100644
--- a/wrangler.jsonc
+++ b/wrangler.jsonc
@@ -45,7 +45,7 @@
"zone_name": "fossbilling.net",
"custom_domain": true
}
- ],
+ ]
/**
* Environment Variables
* https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables