├── .editorconfig
├── .github
└── prompts
│ └── .gitignore
├── .gitignore
├── .prettierrc
├── .vscode
└── settings.json
├── LICENSE
├── README.md
├── _worker.js
├── package-lock.json
├── package.json
├── test
└── index.spec.js
├── vitest.config.js
└── wrangler.jsonc
/.editorconfig:
--------------------------------------------------------------------------------
1 | # http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | indent_style = tab
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.yml]
12 | indent_style = space
13 |
--------------------------------------------------------------------------------
/.github/prompts/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | #GenAIScript
3 | genaiscript.prompt.md
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 |
3 | logs
4 | _.log
5 | npm-debug.log_
6 | yarn-debug.log*
7 | yarn-error.log*
8 | lerna-debug.log*
9 | .pnpm-debug.log*
10 |
11 | # Diagnostic reports (https://nodejs.org/api/report.html)
12 |
13 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
14 |
15 | # Runtime data
16 |
17 | pids
18 | _.pid
19 | _.seed
20 | \*.pid.lock
21 |
22 | # Directory for instrumented libs generated by jscoverage/JSCover
23 |
24 | lib-cov
25 |
26 | # Coverage directory used by tools like istanbul
27 |
28 | coverage
29 | \*.lcov
30 |
31 | # nyc test coverage
32 |
33 | .nyc_output
34 |
35 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
36 |
37 | .grunt
38 |
39 | # Bower dependency directory (https://bower.io/)
40 |
41 | bower_components
42 |
43 | # node-waf configuration
44 |
45 | .lock-wscript
46 |
47 | # Compiled binary addons (https://nodejs.org/api/addons.html)
48 |
49 | build/Release
50 |
51 | # Dependency directories
52 |
53 | node_modules/
54 | jspm_packages/
55 |
56 | # Snowpack dependency directory (https://snowpack.dev/)
57 |
58 | web_modules/
59 |
60 | # TypeScript cache
61 |
62 | \*.tsbuildinfo
63 |
64 | # Optional npm cache directory
65 |
66 | .npm
67 |
68 | # Optional eslint cache
69 |
70 | .eslintcache
71 |
72 | # Optional stylelint cache
73 |
74 | .stylelintcache
75 |
76 | # Microbundle cache
77 |
78 | .rpt2_cache/
79 | .rts2_cache_cjs/
80 | .rts2_cache_es/
81 | .rts2_cache_umd/
82 |
83 | # Optional REPL history
84 |
85 | .node_repl_history
86 |
87 | # Output of 'npm pack'
88 |
89 | \*.tgz
90 |
91 | # Yarn Integrity file
92 |
93 | .yarn-integrity
94 |
95 | # dotenv environment variable files
96 |
97 | .env
98 | .env.development.local
99 | .env.test.local
100 | .env.production.local
101 | .env.local
102 |
103 | # parcel-bundler cache (https://parceljs.org/)
104 |
105 | .cache
106 | .parcel-cache
107 |
108 | # Next.js build output
109 |
110 | .next
111 | out
112 |
113 | # Nuxt.js build / generate output
114 |
115 | .nuxt
116 | dist
117 |
118 | # Gatsby files
119 |
120 | .cache/
121 |
122 | # Comment in the public line in if your project uses Gatsby and not Next.js
123 |
124 | # https://nextjs.org/blog/next-9-1#public-directory-support
125 |
126 | # public
127 |
128 | # vuepress build output
129 |
130 | .vuepress/dist
131 |
132 | # vuepress v2.x temp and cache directory
133 |
134 | .temp
135 | .cache
136 |
137 | # Docusaurus cache and generated files
138 |
139 | .docusaurus
140 |
141 | # Serverless directories
142 |
143 | .serverless/
144 |
145 | # FuseBox cache
146 |
147 | .fusebox/
148 |
149 | # DynamoDB Local files
150 |
151 | .dynamodb/
152 |
153 | # TernJS port file
154 |
155 | .tern-port
156 |
157 | # Stores VSCode versions used for testing VSCode extensions
158 |
159 | .vscode-test
160 |
161 | # yarn v2
162 |
163 | .yarn/cache
164 | .yarn/unplugged
165 | .yarn/build-state.yml
166 | .yarn/install-state.gz
167 | .pnp.\*
168 |
169 | # wrangler project
170 |
171 | .dev.vars
172 | .wrangler/
173 | .genaiscript/
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "printWidth": 140,
3 | "singleQuote": true,
4 | "semi": true,
5 | "useTabs": true
6 | }
7 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.associations": {
3 | "wrangler.json": "jsonc"
4 | }
5 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 [jqknono/techfetch.dev]
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Cloudflare DoH 转发代理
2 |
3 | 
4 |
5 | 这是一个基于 Cloudflare Workers 的 DNS over HTTPS (DoH) 转发代理服务。本服务可以根据路径将请求转发到不同的 DoH 提供商,同时保留查询参数。
6 |
7 | ## 功能特点
8 |
9 | - 基于路径的请求转发:根据请求路径将请求转发到对应的 DoH 服务提供商
10 | - 自定义路径映射:可以通过 Cloudflare Worker 的环境变量配置路径映射
11 | - 保留查询参数:转发时会保留原始请求中的查询参数
12 | - 轻量级实现:简单高效的实现方式,易于部署和维护
13 |
14 | ## 工作原理
15 |
16 | 该 Worker 根据请求的路径前缀确定转发目标,然后将请求转发到相应的 DoH 服务提供商。例如,当访问 `doh.example.com/google/query-dns?name=example.com` 时,该请求会被转发到 `dns.google/dns-query?name=example.com`。
17 |
18 | ### 默认路径映射
19 |
20 | Worker 内置了以下默认映射规则:
21 |
22 | - `/google/query-dns` → `dns.google/dns-query`(Google 的 DoH 服务)
23 | - `/cloudflare/query-dns` → `one.one.one.one/dns-query`(Cloudflare 的 DoH 服务)
24 |
25 | ## 配置说明
26 |
27 | ### 基础配置
28 |
29 | Worker 可以使用默认配置直接部署使用。
30 |
31 | ### 自定义配置
32 |
33 | 可以在 Cloudflare Workers 控制台中添加名为 `DOMAIN_MAPPINGS` 的环境变量来自定义路径映射规则。该变量接受符合以下格式的 JSON 字符串:
34 |
35 | ```json
36 | {
37 | "/path-prefix": {
38 | "targetDomain": "target.domain.com",
39 | "pathMapping": {
40 | "/source-path": "/target-path"
41 | }
42 | }
43 | }
44 | ```
45 |
46 | 例如,若要添加对 Quad9 DoH 服务的支持,配置可能如下:
47 |
48 | ```json
49 | {
50 | "/google": {
51 | "targetDomain": "dns.google",
52 | "pathMapping": {
53 | "/query-dns": "/dns-query"
54 | }
55 | },
56 | "/cloudflare": {
57 | "targetDomain": "one.one.one.one",
58 | "pathMapping": {
59 | "/query-dns": "/dns-query"
60 | }
61 | },
62 | "/quad9": {
63 | "targetDomain": "dns.quad9.net",
64 | "pathMapping": {
65 | "/query-dns": "/dns-query"
66 | }
67 | }
68 | }
69 | ```
70 |
71 | ## 部署方法
72 |
73 | ### 方法一:使用 Cloudflare Workers
74 |
75 | 1. 登录到 [Cloudflare 控制台](https://dash.cloudflare.com/)
76 | 1. 进入 Workers and Pages, 点击"创建"
77 | 1. 选择 Worker, 输入服务名称并选择"Hello World"模板
78 | 1. 将 `_worker.js` 中的代码粘贴到编辑器中
79 | 1. (可选) 在"变量和机密"部分添加 `DOMAIN_MAPPINGS` 变量来自定义路径映射
80 | 1. 点击"部署"按钮
81 |
82 | ### 方法二:使用 Cloudflare Pages
83 |
84 | 1. Fork 本库
85 | 1. 登录到 [Cloudflare 控制台](https://dash.cloudflare.com/)
86 | 1. 进入 Workers and Pages, 点击"创建"
87 | 1. 选择 Pages, "连接到 Git",并连接到您的 Fork 库
88 | 1. (可选)在"变量和机密"部分添加 `DOMAIN_MAPPINGS` 变量来自定义路径映射
89 | 1. 点击"保存并部署"
90 |
91 | 部署完成后,Cloudflare Pages 会自动检测 `_worker.js` 文件并将其用作 Worker 函数。
92 |
93 | ## 使用示例
94 |
95 | 假设您已将此 Worker 部署到 `doh-proxy.workers.dev`,您可以通过以下方式使用:
96 |
97 | - 使用 Google 的 DoH 服务:
98 |
99 | ```
100 | https://doh-proxy.workers.dev/google/query-dns?name=example.com
101 | ```
102 |
103 | - 使用 Cloudflare 的 DoH 服务:
104 | ```
105 | https://doh-proxy.workers.dev/cloudflare/query-dns?name=example.com
106 | ```
107 |
108 | ## 注意事项
109 |
110 | - 该服务仅转发请求,不会修改或存储您的 DNS 查询内容
111 | - 请确保遵守各 DoH 服务提供商的使用政策
112 | - 此服务适合个人或小规模使用,对于大规模部署,请考虑各提供商的使用限制
113 | - Cloudflare 免费版用户每日的免费请求数量为 **10w** 次, 仅够个人使用, 注意避免暴漏 DoH 连接
114 | - 关闭 Cloudflare 代理可以大幅降低延迟, DoH 服务通常不需要代理
115 |
116 | ## 许可协议
117 |
118 | 本项目采用 [MIT 许可协议](LICENSE)。您可以自由地使用、修改和分发本代码,但需要在您的项目中包含原始许可证和版权声明。
119 |
120 | ## 赞助商
121 |
122 | 感谢以下服务提供商的支持:
123 |
124 | [AdGuard Private](https://www.adguardprivate.com) - 提供企业级 DNS 解析服务
125 |
126 | 主要特性:
127 |
128 | - 无限制的 DNS 查询请求
129 | - 增强的隐私保护机制
130 | - 智能广告及追踪器过滤
131 | - 灵活的 DNS 记录配置
132 | - 内置动态 DNS (DDNS) 支持
133 | - 专业的技术支持
134 |
135 | 详情请访问 [AdGuard Private](https://www.adguardprivate.com) 了解更多。
136 |
--------------------------------------------------------------------------------
/_worker.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Cloudflare Worker that forwards requests based on path instead of subdomain
3 | * Example: doh.example.com/google/query-dns → dns.google/dns-query
4 | * Supports configuration via Cloudflare Worker variables
5 | */
6 |
7 | // Default configuration for path mappings
8 | const DEFAULT_PATH_MAPPINGS = {
9 | '/google': {
10 | targetDomain: 'dns.google',
11 | pathMapping: {
12 | '/query-dns': '/dns-query',
13 | },
14 | },
15 | '/cloudflare': {
16 | targetDomain: 'one.one.one.one',
17 | pathMapping: {
18 | '/query-dns': '/dns-query',
19 | },
20 | },
21 | // Add more path mappings as needed
22 | };
23 |
24 | const HOMEPAGE_HTML = `
25 |
26 |
27 |
28 |
29 |
30 | Cloudflare DoH 转发代理 - 简单高效的 DNS over HTTPS 代理服务
31 |
185 |
186 |
187 |
188 |
194 |
195 |
196 |
197 | 项目介绍
198 | Cloudflare DoH 转发代理是一个基于 Cloudflare Workers 的轻量级服务,能够根据请求路径将 DNS 查询转发到不同的 DoH 服务提供商,同时保留原始查询参数。
199 |
200 | 主要功能
201 |
202 | - 基于路径的转发:根据请求路径确定转发目标
203 | - 多提供商支持:支持 Google、Cloudflare 等多家 DoH 服务提供商
204 | - 自定义配置:通过环境变量灵活配置转发规则
205 | - 保留查询参数:完整保留原始请求中的查询参数
206 | - 轻量级部署:基于 Cloudflare Worker/Pages,无需维护服务器
207 |
208 |
209 |
210 |
211 | 使用方法
212 | 本服务已部署到 Cloudflare,您可以直接使用以下地址进行 DNS 查询:
213 |
214 | 转发到 Google DoH 服务
215 |
216 | https://doh-proxy.example.com/google/query-dns?name=example.com
217 |
218 |
219 | 转发到 Cloudflare DoH 服务
220 |
221 | https://doh-proxy.example.com/cloudflare/query-dns?name=example.com
222 |
223 |
224 | HTTP 请求示例
225 | curl -H "accept: application/dns-json" "https://doh-proxy.example.com/google/query-dns?name=example.com&type=A"
226 |
227 |
228 |
229 |
230 | 自托管部署
231 | 您可以使用以下两种方法部署自己的 DoH 转发代理:
232 |
233 | 方法一:使用 Cloudflare Workers
234 |
235 | - 登录到 Cloudflare 控制台
236 | - 进入 Workers 部分并点击"创建服务"
237 | - 将项目代码粘贴到编辑器中
238 | - 配置环境变量(可选)
239 | - 点击"部署"按钮
240 |
241 |
242 | 方法二:使用 Cloudflare Pages
243 |
244 | - 将项目代码推送到 Git 仓库
245 | - 在 Cloudflare Pages 中创建新项目并连接到您的仓库
246 | - 完成基本配置后部署即可
247 |
248 |
249 |
253 |
254 |
255 |
256 | 自定义配置
257 | 您可以通过设置环境变量 DOMAIN_MAPPINGS
来自定义路径映射规则:
258 |
259 | {
260 | "/google": {
261 | "targetDomain": "dns.google",
262 | "pathMapping": {
263 | "/query-dns": "/dns-query"
264 | }
265 | },
266 | "/cloudflare": {
267 | "targetDomain": "one.one.one.one",
268 | "pathMapping": {
269 | "/query-dns": "/dns-query"
270 | }
271 | },
272 | "/quad9": {
273 | "targetDomain": "dns.quad9.net",
274 | "pathMapping": {
275 | "/query-dns": "/dns-query"
276 | }
277 | }
278 | }
279 |
280 | 配置说明:
281 |
282 | - 键名为路径前缀,如
/google
283 | targetDomain
为目标域名
284 | pathMapping
定义路径映射规则
285 |
286 |
287 |
288 |
289 |
290 | 浏览器 DoH 设置方法
291 | 以下是在不同浏览器中配置 DNS over HTTPS (DoH) 的方法:
292 |
293 |
294 |
Firefox 浏览器设置
295 |
296 | - 打开 Firefox,在地址栏中输入
about:preferences#general
297 | - 滚动到页面底部找到"网络设置"部分
298 | - 点击"设置"按钮
299 | - 滚动到底部,勾选"启用基于 HTTPS 的 DNS"
300 | - 选择"自定义"选项,并输入以下 URL(以 Google 为例):
301 | https://your-worker-domain.com/google/query-dns
302 |
303 | - 点击"确定"保存设置
304 |
305 |
306 |
307 |
308 |
Chrome 浏览器设置
309 |
310 | - 打开 Chrome,在地址栏中输入
chrome://settings/security
311 | - 找到"安全浏览和安全"部分
312 | - 点击"使用安全 DNS 服务"
313 | - 选择"自定义"选项,并输入以下 URL(以 Cloudflare 为例):
314 | https://your-worker-domain.com/cloudflare/query-dns
315 |
316 |
317 |
注意:Chrome 只允许使用预定义的 DoH 提供商或自定义提供商,但有些版本可能限制对自定义 DoH 服务的支持。
318 |
319 |
320 |
321 |
Edge 浏览器设置
322 |
323 | - 打开 Edge,在地址栏中输入
edge://settings/privacy
324 | - 滚动到"安全"部分
325 | - 找到"使用安全 DNS 服务指定如何查找网站的网络地址"
326 | - 选择"自定义"选项,并输入以下 URL(以 Google 为例):
327 | https://your-worker-domain.com/google/query-dns
328 |
329 |
330 |
331 |
332 | 操作系统级别设置
333 |
334 |
Windows 11 设置
335 |
336 | - 打开设置 > 网络和 Internet > Wi-Fi 或以太网(取决于您的连接类型)
337 | - 点击您的网络连接
338 | - 在"DNS 服务器分配"部分,选择"编辑"
339 | - 将"IPv4 DNS 服务器"设置更改为"手动"
340 | - 开启"IPv4 的 DNS over HTTPS"
341 | - 在"首选 DNS"字段输入 DoH 提供商的 IP 地址
342 | - 在"首选 DoH 模式"下拉菜单中选择"自定义"并输入您的 DoH URL:
343 | https://your-worker-domain.com/google/query-dns
344 |
345 |
346 |
347 |
macOS/iOS 设置
348 |
349 | - 通过 DNS Profile Creator 等工具生成 DoH 配置描述文件
350 | - 将配置文件下载到您的设备上
351 | - 在 macOS 上:
352 |
353 | - 双击下载的配置文件
354 | - 在系统设置中找到"配置文件"
355 | - 点击"安装"并输入管理员密码确认
356 |
357 |
358 | - 在 iOS 上:
359 |
360 | - 打开下载的配置文件
361 | - 点击"设置"应用程序中的通知
362 | - 点击"安装配置文件"
363 | - 输入设备密码确认安装
364 |
365 |
366 | - 安装完成后,设备将自动使用配置的 DoH 服务器
367 |
368 |
369 |
Android 设置
370 |
Android 暂不支持 DoH
371 |
372 |
373 |
374 |
389 |
390 |
391 | 常见问题
392 |
393 |
什么是 DNS over HTTPS (DoH)?
394 |
DoH 是一种加密 DNS 查询的协议,它通过 HTTPS 协议发送 DNS 查询,防止中间人攻击和隐私泄露。
395 |
396 |
397 |
为什么需要 DoH 转发代理?
398 |
DoH 转发代理可以帮助绕过网络限制、提供统一的接口调用多个 DoH 服务提供商,并在提供商之间快速切换。
399 |
400 |
401 |
使用此服务是否安全?
402 |
本服务仅转发请求,不会修改或存储您的 DNS 查询内容。但请注意,您的 DNS 查询内容仍会被目标 DoH 提供商处理。
403 |
404 |
405 |
免费版有什么限制?
406 |
Cloudflare Workers 免费版每日有 100,000 次请求限制,足够个人使用,但不适合大规模部署。
407 |
408 |
409 |
410 |
411 |
开始使用
412 |
立即部署您自己的 DoH 转发代理,或直接使用我们的服务
413 |
获取代码
414 |
415 |
416 |
417 |
423 |
424 |
425 | `;
426 |
427 | /**
428 | * Get path mappings from Cloudflare Worker env or use defaults
429 | * @param {Object} env - Environment variables from Cloudflare Worker
430 | * @returns {Object} Path mappings configuration
431 | */
432 | function getPathMappings(env) {
433 | try {
434 | // Check if DOMAIN_MAPPINGS is defined in the env object
435 | if (env && env.DOMAIN_MAPPINGS) {
436 | // If it's a string, try to parse it as JSON
437 | if (typeof env.DOMAIN_MAPPINGS === 'string') {
438 | return JSON.parse(env.DOMAIN_MAPPINGS);
439 | }
440 | // If it's already an object, use it directly
441 | return env.DOMAIN_MAPPINGS;
442 | }
443 | } catch (error) {
444 | console.error('Error accessing DOMAIN_MAPPINGS variable:', error);
445 | }
446 |
447 | // Fall back to default mappings if the variable is not set
448 | return DEFAULT_PATH_MAPPINGS;
449 | }
450 |
451 | function serveHomepage() {
452 | // 直接返回内联的HTML内容,不再需要尝试从外部加载
453 | return new Response(HOMEPAGE_HTML, {
454 | status: 200,
455 | headers: { 'Content-Type': 'text/html; charset=utf-8' },
456 | });
457 | }
458 |
459 | async function handleRequest(request, env) {
460 | const url = new URL(request.url);
461 | const path = url.pathname;
462 | const queryString = url.search; // Preserves the query string with the '?'
463 |
464 | // If the path is explicitly '/index.html' or '/', serve the homepage
465 | if (path === '/index.html' || path === '/') {
466 | return serveHomepage();
467 | }
468 |
469 | // Get the path mappings from env or defaults
470 | const pathMappings = getPathMappings(env);
471 |
472 | // Find the matching path prefix
473 | const pathPrefix = Object.keys(pathMappings).find((prefix) => path.startsWith(prefix));
474 |
475 | if (pathPrefix) {
476 | const mapping = pathMappings[pathPrefix];
477 | const targetDomain = mapping.targetDomain;
478 |
479 | // Remove the prefix from the path
480 | const remainingPath = path.substring(pathPrefix.length);
481 |
482 | // Check if we have a specific path mapping for the remaining path
483 | let targetPath = remainingPath;
484 | for (const [sourcePath, destPath] of Object.entries(mapping.pathMapping)) {
485 | if (remainingPath.startsWith(sourcePath)) {
486 | targetPath = remainingPath.replace(sourcePath, destPath);
487 | break;
488 | }
489 | }
490 |
491 | // Construct the new URL with the preserved query string
492 | const newUrl = `https://${targetDomain}${targetPath}${queryString}`;
493 |
494 | // Clone the original request
495 | const newRequest = new Request(newUrl, {
496 | method: request.method,
497 | headers: request.headers,
498 | body: request.body,
499 | redirect: 'follow',
500 | });
501 |
502 | // Forward the request to the target domain
503 | return fetch(newRequest);
504 | }
505 |
506 | // If no mapping is found, serve the homepage instead of 404
507 | return serveHomepage();
508 | }
509 |
510 | // Export the worker
511 | export default {
512 | async fetch(request, env, ctx) {
513 | return handleRequest(request, env);
514 | },
515 | };
516 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cloudflare-doh",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "cloudflare-doh",
9 | "version": "0.0.0",
10 | "devDependencies": {
11 | "@cloudflare/vitest-pool-workers": "^0.7.5",
12 | "vitest": "~3.0.7",
13 | "wrangler": "^3.114.1"
14 | }
15 | },
16 | "node_modules/@cloudflare/kv-asset-handler": {
17 | "version": "0.3.4",
18 | "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz",
19 | "integrity": "sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==",
20 | "dev": true,
21 | "license": "MIT OR Apache-2.0",
22 | "dependencies": {
23 | "mime": "^3.0.0"
24 | },
25 | "engines": {
26 | "node": ">=16.13"
27 | }
28 | },
29 | "node_modules/@cloudflare/unenv-preset": {
30 | "version": "2.0.2",
31 | "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.0.2.tgz",
32 | "integrity": "sha512-nyzYnlZjjV5xT3LizahG1Iu6mnrCaxglJ04rZLpDwlDVDZ7v46lNsfxhV3A/xtfgQuSHmLnc6SVI+KwBpc3Lwg==",
33 | "dev": true,
34 | "license": "MIT OR Apache-2.0",
35 | "peerDependencies": {
36 | "unenv": "2.0.0-rc.14",
37 | "workerd": "^1.20250124.0"
38 | },
39 | "peerDependenciesMeta": {
40 | "workerd": {
41 | "optional": true
42 | }
43 | }
44 | },
45 | "node_modules/@cloudflare/vitest-pool-workers": {
46 | "version": "0.7.8",
47 | "resolved": "https://registry.npmjs.org/@cloudflare/vitest-pool-workers/-/vitest-pool-workers-0.7.8.tgz",
48 | "integrity": "sha512-y5N2PXsuT1sjzSV03COtedET/nh3k6k8vmXfX01r8uXcw9hUZvafG5HoAiRfdrLmRpk/I7FS7D/qglPO13l/bg==",
49 | "dev": true,
50 | "license": "MIT",
51 | "dependencies": {
52 | "birpc": "0.2.14",
53 | "cjs-module-lexer": "^1.2.3",
54 | "devalue": "^4.3.0",
55 | "esbuild": "0.17.19",
56 | "miniflare": "3.20250310.0",
57 | "semver": "^7.7.1",
58 | "wrangler": "3.114.1",
59 | "zod": "^3.22.3"
60 | },
61 | "peerDependencies": {
62 | "@vitest/runner": "2.0.x - 3.0.x",
63 | "@vitest/snapshot": "2.0.x - 3.0.x",
64 | "vitest": "2.0.x - 3.0.x"
65 | }
66 | },
67 | "node_modules/@cloudflare/workerd-darwin-64": {
68 | "version": "1.20250310.0",
69 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250310.0.tgz",
70 | "integrity": "sha512-LkLJO6F8lRNaCbK5sQCITi66SyCirDpffRuI5/5iILDJWQU4KVvAOKPvHrd4E5h/WDm9FGd22zMJwky7SxaNjg==",
71 | "cpu": [
72 | "x64"
73 | ],
74 | "dev": true,
75 | "license": "Apache-2.0",
76 | "optional": true,
77 | "os": [
78 | "darwin"
79 | ],
80 | "engines": {
81 | "node": ">=16"
82 | }
83 | },
84 | "node_modules/@cloudflare/workerd-darwin-arm64": {
85 | "version": "1.20250310.0",
86 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250310.0.tgz",
87 | "integrity": "sha512-WythDJQbsU3Ii1hhA7pJZLBQlHezeYWAnaMnv3gS2Exj45oF8G4chFvrO7zCzjlcJXwSeBTtQRJqxw9AiUDhyA==",
88 | "cpu": [
89 | "arm64"
90 | ],
91 | "dev": true,
92 | "license": "Apache-2.0",
93 | "optional": true,
94 | "os": [
95 | "darwin"
96 | ],
97 | "engines": {
98 | "node": ">=16"
99 | }
100 | },
101 | "node_modules/@cloudflare/workerd-linux-64": {
102 | "version": "1.20250310.0",
103 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250310.0.tgz",
104 | "integrity": "sha512-LbP769tT4/5QBHSj4lCt99QIKTi6cU+wYhLfF7rEtYHBnZS2+nIw9xttAzxeERx/aFrU+mxLcYPFV8fUeVxGng==",
105 | "cpu": [
106 | "x64"
107 | ],
108 | "dev": true,
109 | "license": "Apache-2.0",
110 | "optional": true,
111 | "os": [
112 | "linux"
113 | ],
114 | "engines": {
115 | "node": ">=16"
116 | }
117 | },
118 | "node_modules/@cloudflare/workerd-linux-arm64": {
119 | "version": "1.20250310.0",
120 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250310.0.tgz",
121 | "integrity": "sha512-FzWeKM6id20EMZACaDg0Kkvg1C4lvXZgLBXVI6h6xaXTNFReoyEp4v4eMrRTuja5ec5k+m5iGKjP4/bMWJp9ew==",
122 | "cpu": [
123 | "arm64"
124 | ],
125 | "dev": true,
126 | "license": "Apache-2.0",
127 | "optional": true,
128 | "os": [
129 | "linux"
130 | ],
131 | "engines": {
132 | "node": ">=16"
133 | }
134 | },
135 | "node_modules/@cloudflare/workerd-windows-64": {
136 | "version": "1.20250310.0",
137 | "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250310.0.tgz",
138 | "integrity": "sha512-04OgaDzm8/8nkjF3tovB+WywZLjSdAHCQT2omXKCwH3EDd1kpd8vvzE1pErtdIyKCOf9/sArY4BhPdxRj7ijlg==",
139 | "cpu": [
140 | "x64"
141 | ],
142 | "dev": true,
143 | "license": "Apache-2.0",
144 | "optional": true,
145 | "os": [
146 | "win32"
147 | ],
148 | "engines": {
149 | "node": ">=16"
150 | }
151 | },
152 | "node_modules/@cspotcode/source-map-support": {
153 | "version": "0.8.1",
154 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
155 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
156 | "dev": true,
157 | "license": "MIT",
158 | "dependencies": {
159 | "@jridgewell/trace-mapping": "0.3.9"
160 | },
161 | "engines": {
162 | "node": ">=12"
163 | }
164 | },
165 | "node_modules/@emnapi/runtime": {
166 | "version": "1.3.1",
167 | "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
168 | "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
169 | "dev": true,
170 | "license": "MIT",
171 | "optional": true,
172 | "dependencies": {
173 | "tslib": "^2.4.0"
174 | }
175 | },
176 | "node_modules/@esbuild-plugins/node-globals-polyfill": {
177 | "version": "0.2.3",
178 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-globals-polyfill/-/node-globals-polyfill-0.2.3.tgz",
179 | "integrity": "sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==",
180 | "dev": true,
181 | "license": "ISC",
182 | "peerDependencies": {
183 | "esbuild": "*"
184 | }
185 | },
186 | "node_modules/@esbuild-plugins/node-modules-polyfill": {
187 | "version": "0.2.2",
188 | "resolved": "https://registry.npmjs.org/@esbuild-plugins/node-modules-polyfill/-/node-modules-polyfill-0.2.2.tgz",
189 | "integrity": "sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==",
190 | "dev": true,
191 | "license": "ISC",
192 | "dependencies": {
193 | "escape-string-regexp": "^4.0.0",
194 | "rollup-plugin-node-polyfills": "^0.2.1"
195 | },
196 | "peerDependencies": {
197 | "esbuild": "*"
198 | }
199 | },
200 | "node_modules/@esbuild/aix-ppc64": {
201 | "version": "0.25.1",
202 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
203 | "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
204 | "cpu": [
205 | "ppc64"
206 | ],
207 | "dev": true,
208 | "license": "MIT",
209 | "optional": true,
210 | "os": [
211 | "aix"
212 | ],
213 | "engines": {
214 | "node": ">=18"
215 | }
216 | },
217 | "node_modules/@esbuild/android-arm": {
218 | "version": "0.17.19",
219 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz",
220 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==",
221 | "cpu": [
222 | "arm"
223 | ],
224 | "dev": true,
225 | "license": "MIT",
226 | "optional": true,
227 | "os": [
228 | "android"
229 | ],
230 | "engines": {
231 | "node": ">=12"
232 | }
233 | },
234 | "node_modules/@esbuild/android-arm64": {
235 | "version": "0.17.19",
236 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz",
237 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==",
238 | "cpu": [
239 | "arm64"
240 | ],
241 | "dev": true,
242 | "license": "MIT",
243 | "optional": true,
244 | "os": [
245 | "android"
246 | ],
247 | "engines": {
248 | "node": ">=12"
249 | }
250 | },
251 | "node_modules/@esbuild/android-x64": {
252 | "version": "0.17.19",
253 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz",
254 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==",
255 | "cpu": [
256 | "x64"
257 | ],
258 | "dev": true,
259 | "license": "MIT",
260 | "optional": true,
261 | "os": [
262 | "android"
263 | ],
264 | "engines": {
265 | "node": ">=12"
266 | }
267 | },
268 | "node_modules/@esbuild/darwin-arm64": {
269 | "version": "0.17.19",
270 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz",
271 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==",
272 | "cpu": [
273 | "arm64"
274 | ],
275 | "dev": true,
276 | "license": "MIT",
277 | "optional": true,
278 | "os": [
279 | "darwin"
280 | ],
281 | "engines": {
282 | "node": ">=12"
283 | }
284 | },
285 | "node_modules/@esbuild/darwin-x64": {
286 | "version": "0.17.19",
287 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz",
288 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==",
289 | "cpu": [
290 | "x64"
291 | ],
292 | "dev": true,
293 | "license": "MIT",
294 | "optional": true,
295 | "os": [
296 | "darwin"
297 | ],
298 | "engines": {
299 | "node": ">=12"
300 | }
301 | },
302 | "node_modules/@esbuild/freebsd-arm64": {
303 | "version": "0.17.19",
304 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz",
305 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==",
306 | "cpu": [
307 | "arm64"
308 | ],
309 | "dev": true,
310 | "license": "MIT",
311 | "optional": true,
312 | "os": [
313 | "freebsd"
314 | ],
315 | "engines": {
316 | "node": ">=12"
317 | }
318 | },
319 | "node_modules/@esbuild/freebsd-x64": {
320 | "version": "0.17.19",
321 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz",
322 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==",
323 | "cpu": [
324 | "x64"
325 | ],
326 | "dev": true,
327 | "license": "MIT",
328 | "optional": true,
329 | "os": [
330 | "freebsd"
331 | ],
332 | "engines": {
333 | "node": ">=12"
334 | }
335 | },
336 | "node_modules/@esbuild/linux-arm": {
337 | "version": "0.17.19",
338 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz",
339 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==",
340 | "cpu": [
341 | "arm"
342 | ],
343 | "dev": true,
344 | "license": "MIT",
345 | "optional": true,
346 | "os": [
347 | "linux"
348 | ],
349 | "engines": {
350 | "node": ">=12"
351 | }
352 | },
353 | "node_modules/@esbuild/linux-arm64": {
354 | "version": "0.17.19",
355 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz",
356 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==",
357 | "cpu": [
358 | "arm64"
359 | ],
360 | "dev": true,
361 | "license": "MIT",
362 | "optional": true,
363 | "os": [
364 | "linux"
365 | ],
366 | "engines": {
367 | "node": ">=12"
368 | }
369 | },
370 | "node_modules/@esbuild/linux-ia32": {
371 | "version": "0.17.19",
372 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz",
373 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==",
374 | "cpu": [
375 | "ia32"
376 | ],
377 | "dev": true,
378 | "license": "MIT",
379 | "optional": true,
380 | "os": [
381 | "linux"
382 | ],
383 | "engines": {
384 | "node": ">=12"
385 | }
386 | },
387 | "node_modules/@esbuild/linux-loong64": {
388 | "version": "0.17.19",
389 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz",
390 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==",
391 | "cpu": [
392 | "loong64"
393 | ],
394 | "dev": true,
395 | "license": "MIT",
396 | "optional": true,
397 | "os": [
398 | "linux"
399 | ],
400 | "engines": {
401 | "node": ">=12"
402 | }
403 | },
404 | "node_modules/@esbuild/linux-mips64el": {
405 | "version": "0.17.19",
406 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz",
407 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==",
408 | "cpu": [
409 | "mips64el"
410 | ],
411 | "dev": true,
412 | "license": "MIT",
413 | "optional": true,
414 | "os": [
415 | "linux"
416 | ],
417 | "engines": {
418 | "node": ">=12"
419 | }
420 | },
421 | "node_modules/@esbuild/linux-ppc64": {
422 | "version": "0.17.19",
423 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz",
424 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==",
425 | "cpu": [
426 | "ppc64"
427 | ],
428 | "dev": true,
429 | "license": "MIT",
430 | "optional": true,
431 | "os": [
432 | "linux"
433 | ],
434 | "engines": {
435 | "node": ">=12"
436 | }
437 | },
438 | "node_modules/@esbuild/linux-riscv64": {
439 | "version": "0.17.19",
440 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz",
441 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==",
442 | "cpu": [
443 | "riscv64"
444 | ],
445 | "dev": true,
446 | "license": "MIT",
447 | "optional": true,
448 | "os": [
449 | "linux"
450 | ],
451 | "engines": {
452 | "node": ">=12"
453 | }
454 | },
455 | "node_modules/@esbuild/linux-s390x": {
456 | "version": "0.17.19",
457 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz",
458 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==",
459 | "cpu": [
460 | "s390x"
461 | ],
462 | "dev": true,
463 | "license": "MIT",
464 | "optional": true,
465 | "os": [
466 | "linux"
467 | ],
468 | "engines": {
469 | "node": ">=12"
470 | }
471 | },
472 | "node_modules/@esbuild/linux-x64": {
473 | "version": "0.17.19",
474 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz",
475 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==",
476 | "cpu": [
477 | "x64"
478 | ],
479 | "dev": true,
480 | "license": "MIT",
481 | "optional": true,
482 | "os": [
483 | "linux"
484 | ],
485 | "engines": {
486 | "node": ">=12"
487 | }
488 | },
489 | "node_modules/@esbuild/netbsd-arm64": {
490 | "version": "0.25.1",
491 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
492 | "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
493 | "cpu": [
494 | "arm64"
495 | ],
496 | "dev": true,
497 | "license": "MIT",
498 | "optional": true,
499 | "os": [
500 | "netbsd"
501 | ],
502 | "engines": {
503 | "node": ">=18"
504 | }
505 | },
506 | "node_modules/@esbuild/netbsd-x64": {
507 | "version": "0.17.19",
508 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz",
509 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==",
510 | "cpu": [
511 | "x64"
512 | ],
513 | "dev": true,
514 | "license": "MIT",
515 | "optional": true,
516 | "os": [
517 | "netbsd"
518 | ],
519 | "engines": {
520 | "node": ">=12"
521 | }
522 | },
523 | "node_modules/@esbuild/openbsd-arm64": {
524 | "version": "0.25.1",
525 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
526 | "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
527 | "cpu": [
528 | "arm64"
529 | ],
530 | "dev": true,
531 | "license": "MIT",
532 | "optional": true,
533 | "os": [
534 | "openbsd"
535 | ],
536 | "engines": {
537 | "node": ">=18"
538 | }
539 | },
540 | "node_modules/@esbuild/openbsd-x64": {
541 | "version": "0.17.19",
542 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz",
543 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==",
544 | "cpu": [
545 | "x64"
546 | ],
547 | "dev": true,
548 | "license": "MIT",
549 | "optional": true,
550 | "os": [
551 | "openbsd"
552 | ],
553 | "engines": {
554 | "node": ">=12"
555 | }
556 | },
557 | "node_modules/@esbuild/sunos-x64": {
558 | "version": "0.17.19",
559 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz",
560 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==",
561 | "cpu": [
562 | "x64"
563 | ],
564 | "dev": true,
565 | "license": "MIT",
566 | "optional": true,
567 | "os": [
568 | "sunos"
569 | ],
570 | "engines": {
571 | "node": ">=12"
572 | }
573 | },
574 | "node_modules/@esbuild/win32-arm64": {
575 | "version": "0.17.19",
576 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz",
577 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==",
578 | "cpu": [
579 | "arm64"
580 | ],
581 | "dev": true,
582 | "license": "MIT",
583 | "optional": true,
584 | "os": [
585 | "win32"
586 | ],
587 | "engines": {
588 | "node": ">=12"
589 | }
590 | },
591 | "node_modules/@esbuild/win32-ia32": {
592 | "version": "0.17.19",
593 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz",
594 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==",
595 | "cpu": [
596 | "ia32"
597 | ],
598 | "dev": true,
599 | "license": "MIT",
600 | "optional": true,
601 | "os": [
602 | "win32"
603 | ],
604 | "engines": {
605 | "node": ">=12"
606 | }
607 | },
608 | "node_modules/@esbuild/win32-x64": {
609 | "version": "0.17.19",
610 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz",
611 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==",
612 | "cpu": [
613 | "x64"
614 | ],
615 | "dev": true,
616 | "license": "MIT",
617 | "optional": true,
618 | "os": [
619 | "win32"
620 | ],
621 | "engines": {
622 | "node": ">=12"
623 | }
624 | },
625 | "node_modules/@fastify/busboy": {
626 | "version": "2.1.1",
627 | "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
628 | "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
629 | "dev": true,
630 | "license": "MIT",
631 | "engines": {
632 | "node": ">=14"
633 | }
634 | },
635 | "node_modules/@img/sharp-darwin-arm64": {
636 | "version": "0.33.5",
637 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz",
638 | "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==",
639 | "cpu": [
640 | "arm64"
641 | ],
642 | "dev": true,
643 | "license": "Apache-2.0",
644 | "optional": true,
645 | "os": [
646 | "darwin"
647 | ],
648 | "engines": {
649 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
650 | },
651 | "funding": {
652 | "url": "https://opencollective.com/libvips"
653 | },
654 | "optionalDependencies": {
655 | "@img/sharp-libvips-darwin-arm64": "1.0.4"
656 | }
657 | },
658 | "node_modules/@img/sharp-darwin-x64": {
659 | "version": "0.33.5",
660 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz",
661 | "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==",
662 | "cpu": [
663 | "x64"
664 | ],
665 | "dev": true,
666 | "license": "Apache-2.0",
667 | "optional": true,
668 | "os": [
669 | "darwin"
670 | ],
671 | "engines": {
672 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
673 | },
674 | "funding": {
675 | "url": "https://opencollective.com/libvips"
676 | },
677 | "optionalDependencies": {
678 | "@img/sharp-libvips-darwin-x64": "1.0.4"
679 | }
680 | },
681 | "node_modules/@img/sharp-libvips-darwin-arm64": {
682 | "version": "1.0.4",
683 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz",
684 | "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==",
685 | "cpu": [
686 | "arm64"
687 | ],
688 | "dev": true,
689 | "license": "LGPL-3.0-or-later",
690 | "optional": true,
691 | "os": [
692 | "darwin"
693 | ],
694 | "funding": {
695 | "url": "https://opencollective.com/libvips"
696 | }
697 | },
698 | "node_modules/@img/sharp-libvips-darwin-x64": {
699 | "version": "1.0.4",
700 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz",
701 | "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==",
702 | "cpu": [
703 | "x64"
704 | ],
705 | "dev": true,
706 | "license": "LGPL-3.0-or-later",
707 | "optional": true,
708 | "os": [
709 | "darwin"
710 | ],
711 | "funding": {
712 | "url": "https://opencollective.com/libvips"
713 | }
714 | },
715 | "node_modules/@img/sharp-libvips-linux-arm": {
716 | "version": "1.0.5",
717 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz",
718 | "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==",
719 | "cpu": [
720 | "arm"
721 | ],
722 | "dev": true,
723 | "license": "LGPL-3.0-or-later",
724 | "optional": true,
725 | "os": [
726 | "linux"
727 | ],
728 | "funding": {
729 | "url": "https://opencollective.com/libvips"
730 | }
731 | },
732 | "node_modules/@img/sharp-libvips-linux-arm64": {
733 | "version": "1.0.4",
734 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz",
735 | "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==",
736 | "cpu": [
737 | "arm64"
738 | ],
739 | "dev": true,
740 | "license": "LGPL-3.0-or-later",
741 | "optional": true,
742 | "os": [
743 | "linux"
744 | ],
745 | "funding": {
746 | "url": "https://opencollective.com/libvips"
747 | }
748 | },
749 | "node_modules/@img/sharp-libvips-linux-s390x": {
750 | "version": "1.0.4",
751 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz",
752 | "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==",
753 | "cpu": [
754 | "s390x"
755 | ],
756 | "dev": true,
757 | "license": "LGPL-3.0-or-later",
758 | "optional": true,
759 | "os": [
760 | "linux"
761 | ],
762 | "funding": {
763 | "url": "https://opencollective.com/libvips"
764 | }
765 | },
766 | "node_modules/@img/sharp-libvips-linux-x64": {
767 | "version": "1.0.4",
768 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
769 | "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
770 | "cpu": [
771 | "x64"
772 | ],
773 | "dev": true,
774 | "license": "LGPL-3.0-or-later",
775 | "optional": true,
776 | "os": [
777 | "linux"
778 | ],
779 | "funding": {
780 | "url": "https://opencollective.com/libvips"
781 | }
782 | },
783 | "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
784 | "version": "1.0.4",
785 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz",
786 | "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==",
787 | "cpu": [
788 | "arm64"
789 | ],
790 | "dev": true,
791 | "license": "LGPL-3.0-or-later",
792 | "optional": true,
793 | "os": [
794 | "linux"
795 | ],
796 | "funding": {
797 | "url": "https://opencollective.com/libvips"
798 | }
799 | },
800 | "node_modules/@img/sharp-libvips-linuxmusl-x64": {
801 | "version": "1.0.4",
802 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
803 | "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
804 | "cpu": [
805 | "x64"
806 | ],
807 | "dev": true,
808 | "license": "LGPL-3.0-or-later",
809 | "optional": true,
810 | "os": [
811 | "linux"
812 | ],
813 | "funding": {
814 | "url": "https://opencollective.com/libvips"
815 | }
816 | },
817 | "node_modules/@img/sharp-linux-arm": {
818 | "version": "0.33.5",
819 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz",
820 | "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==",
821 | "cpu": [
822 | "arm"
823 | ],
824 | "dev": true,
825 | "license": "Apache-2.0",
826 | "optional": true,
827 | "os": [
828 | "linux"
829 | ],
830 | "engines": {
831 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
832 | },
833 | "funding": {
834 | "url": "https://opencollective.com/libvips"
835 | },
836 | "optionalDependencies": {
837 | "@img/sharp-libvips-linux-arm": "1.0.5"
838 | }
839 | },
840 | "node_modules/@img/sharp-linux-arm64": {
841 | "version": "0.33.5",
842 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz",
843 | "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==",
844 | "cpu": [
845 | "arm64"
846 | ],
847 | "dev": true,
848 | "license": "Apache-2.0",
849 | "optional": true,
850 | "os": [
851 | "linux"
852 | ],
853 | "engines": {
854 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
855 | },
856 | "funding": {
857 | "url": "https://opencollective.com/libvips"
858 | },
859 | "optionalDependencies": {
860 | "@img/sharp-libvips-linux-arm64": "1.0.4"
861 | }
862 | },
863 | "node_modules/@img/sharp-linux-s390x": {
864 | "version": "0.33.5",
865 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz",
866 | "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==",
867 | "cpu": [
868 | "s390x"
869 | ],
870 | "dev": true,
871 | "license": "Apache-2.0",
872 | "optional": true,
873 | "os": [
874 | "linux"
875 | ],
876 | "engines": {
877 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
878 | },
879 | "funding": {
880 | "url": "https://opencollective.com/libvips"
881 | },
882 | "optionalDependencies": {
883 | "@img/sharp-libvips-linux-s390x": "1.0.4"
884 | }
885 | },
886 | "node_modules/@img/sharp-linux-x64": {
887 | "version": "0.33.5",
888 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
889 | "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
890 | "cpu": [
891 | "x64"
892 | ],
893 | "dev": true,
894 | "license": "Apache-2.0",
895 | "optional": true,
896 | "os": [
897 | "linux"
898 | ],
899 | "engines": {
900 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
901 | },
902 | "funding": {
903 | "url": "https://opencollective.com/libvips"
904 | },
905 | "optionalDependencies": {
906 | "@img/sharp-libvips-linux-x64": "1.0.4"
907 | }
908 | },
909 | "node_modules/@img/sharp-linuxmusl-arm64": {
910 | "version": "0.33.5",
911 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz",
912 | "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==",
913 | "cpu": [
914 | "arm64"
915 | ],
916 | "dev": true,
917 | "license": "Apache-2.0",
918 | "optional": true,
919 | "os": [
920 | "linux"
921 | ],
922 | "engines": {
923 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
924 | },
925 | "funding": {
926 | "url": "https://opencollective.com/libvips"
927 | },
928 | "optionalDependencies": {
929 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4"
930 | }
931 | },
932 | "node_modules/@img/sharp-linuxmusl-x64": {
933 | "version": "0.33.5",
934 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
935 | "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
936 | "cpu": [
937 | "x64"
938 | ],
939 | "dev": true,
940 | "license": "Apache-2.0",
941 | "optional": true,
942 | "os": [
943 | "linux"
944 | ],
945 | "engines": {
946 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
947 | },
948 | "funding": {
949 | "url": "https://opencollective.com/libvips"
950 | },
951 | "optionalDependencies": {
952 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
953 | }
954 | },
955 | "node_modules/@img/sharp-wasm32": {
956 | "version": "0.33.5",
957 | "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz",
958 | "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==",
959 | "cpu": [
960 | "wasm32"
961 | ],
962 | "dev": true,
963 | "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
964 | "optional": true,
965 | "dependencies": {
966 | "@emnapi/runtime": "^1.2.0"
967 | },
968 | "engines": {
969 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
970 | },
971 | "funding": {
972 | "url": "https://opencollective.com/libvips"
973 | }
974 | },
975 | "node_modules/@img/sharp-win32-ia32": {
976 | "version": "0.33.5",
977 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz",
978 | "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==",
979 | "cpu": [
980 | "ia32"
981 | ],
982 | "dev": true,
983 | "license": "Apache-2.0 AND LGPL-3.0-or-later",
984 | "optional": true,
985 | "os": [
986 | "win32"
987 | ],
988 | "engines": {
989 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
990 | },
991 | "funding": {
992 | "url": "https://opencollective.com/libvips"
993 | }
994 | },
995 | "node_modules/@img/sharp-win32-x64": {
996 | "version": "0.33.5",
997 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz",
998 | "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==",
999 | "cpu": [
1000 | "x64"
1001 | ],
1002 | "dev": true,
1003 | "license": "Apache-2.0 AND LGPL-3.0-or-later",
1004 | "optional": true,
1005 | "os": [
1006 | "win32"
1007 | ],
1008 | "engines": {
1009 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
1010 | },
1011 | "funding": {
1012 | "url": "https://opencollective.com/libvips"
1013 | }
1014 | },
1015 | "node_modules/@jridgewell/resolve-uri": {
1016 | "version": "3.1.2",
1017 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1018 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1019 | "dev": true,
1020 | "license": "MIT",
1021 | "engines": {
1022 | "node": ">=6.0.0"
1023 | }
1024 | },
1025 | "node_modules/@jridgewell/sourcemap-codec": {
1026 | "version": "1.5.0",
1027 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
1028 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
1029 | "dev": true,
1030 | "license": "MIT"
1031 | },
1032 | "node_modules/@jridgewell/trace-mapping": {
1033 | "version": "0.3.9",
1034 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
1035 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
1036 | "dev": true,
1037 | "license": "MIT",
1038 | "dependencies": {
1039 | "@jridgewell/resolve-uri": "^3.0.3",
1040 | "@jridgewell/sourcemap-codec": "^1.4.10"
1041 | }
1042 | },
1043 | "node_modules/@rollup/rollup-android-arm-eabi": {
1044 | "version": "4.35.0",
1045 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.35.0.tgz",
1046 | "integrity": "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==",
1047 | "cpu": [
1048 | "arm"
1049 | ],
1050 | "dev": true,
1051 | "license": "MIT",
1052 | "optional": true,
1053 | "os": [
1054 | "android"
1055 | ]
1056 | },
1057 | "node_modules/@rollup/rollup-android-arm64": {
1058 | "version": "4.35.0",
1059 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.35.0.tgz",
1060 | "integrity": "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==",
1061 | "cpu": [
1062 | "arm64"
1063 | ],
1064 | "dev": true,
1065 | "license": "MIT",
1066 | "optional": true,
1067 | "os": [
1068 | "android"
1069 | ]
1070 | },
1071 | "node_modules/@rollup/rollup-darwin-arm64": {
1072 | "version": "4.35.0",
1073 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.35.0.tgz",
1074 | "integrity": "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==",
1075 | "cpu": [
1076 | "arm64"
1077 | ],
1078 | "dev": true,
1079 | "license": "MIT",
1080 | "optional": true,
1081 | "os": [
1082 | "darwin"
1083 | ]
1084 | },
1085 | "node_modules/@rollup/rollup-darwin-x64": {
1086 | "version": "4.35.0",
1087 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.35.0.tgz",
1088 | "integrity": "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==",
1089 | "cpu": [
1090 | "x64"
1091 | ],
1092 | "dev": true,
1093 | "license": "MIT",
1094 | "optional": true,
1095 | "os": [
1096 | "darwin"
1097 | ]
1098 | },
1099 | "node_modules/@rollup/rollup-freebsd-arm64": {
1100 | "version": "4.35.0",
1101 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.35.0.tgz",
1102 | "integrity": "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==",
1103 | "cpu": [
1104 | "arm64"
1105 | ],
1106 | "dev": true,
1107 | "license": "MIT",
1108 | "optional": true,
1109 | "os": [
1110 | "freebsd"
1111 | ]
1112 | },
1113 | "node_modules/@rollup/rollup-freebsd-x64": {
1114 | "version": "4.35.0",
1115 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.35.0.tgz",
1116 | "integrity": "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==",
1117 | "cpu": [
1118 | "x64"
1119 | ],
1120 | "dev": true,
1121 | "license": "MIT",
1122 | "optional": true,
1123 | "os": [
1124 | "freebsd"
1125 | ]
1126 | },
1127 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
1128 | "version": "4.35.0",
1129 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.35.0.tgz",
1130 | "integrity": "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==",
1131 | "cpu": [
1132 | "arm"
1133 | ],
1134 | "dev": true,
1135 | "license": "MIT",
1136 | "optional": true,
1137 | "os": [
1138 | "linux"
1139 | ]
1140 | },
1141 | "node_modules/@rollup/rollup-linux-arm-musleabihf": {
1142 | "version": "4.35.0",
1143 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.35.0.tgz",
1144 | "integrity": "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==",
1145 | "cpu": [
1146 | "arm"
1147 | ],
1148 | "dev": true,
1149 | "license": "MIT",
1150 | "optional": true,
1151 | "os": [
1152 | "linux"
1153 | ]
1154 | },
1155 | "node_modules/@rollup/rollup-linux-arm64-gnu": {
1156 | "version": "4.35.0",
1157 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.35.0.tgz",
1158 | "integrity": "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==",
1159 | "cpu": [
1160 | "arm64"
1161 | ],
1162 | "dev": true,
1163 | "license": "MIT",
1164 | "optional": true,
1165 | "os": [
1166 | "linux"
1167 | ]
1168 | },
1169 | "node_modules/@rollup/rollup-linux-arm64-musl": {
1170 | "version": "4.35.0",
1171 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.35.0.tgz",
1172 | "integrity": "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==",
1173 | "cpu": [
1174 | "arm64"
1175 | ],
1176 | "dev": true,
1177 | "license": "MIT",
1178 | "optional": true,
1179 | "os": [
1180 | "linux"
1181 | ]
1182 | },
1183 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
1184 | "version": "4.35.0",
1185 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.35.0.tgz",
1186 | "integrity": "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==",
1187 | "cpu": [
1188 | "loong64"
1189 | ],
1190 | "dev": true,
1191 | "license": "MIT",
1192 | "optional": true,
1193 | "os": [
1194 | "linux"
1195 | ]
1196 | },
1197 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
1198 | "version": "4.35.0",
1199 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.35.0.tgz",
1200 | "integrity": "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==",
1201 | "cpu": [
1202 | "ppc64"
1203 | ],
1204 | "dev": true,
1205 | "license": "MIT",
1206 | "optional": true,
1207 | "os": [
1208 | "linux"
1209 | ]
1210 | },
1211 | "node_modules/@rollup/rollup-linux-riscv64-gnu": {
1212 | "version": "4.35.0",
1213 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.35.0.tgz",
1214 | "integrity": "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==",
1215 | "cpu": [
1216 | "riscv64"
1217 | ],
1218 | "dev": true,
1219 | "license": "MIT",
1220 | "optional": true,
1221 | "os": [
1222 | "linux"
1223 | ]
1224 | },
1225 | "node_modules/@rollup/rollup-linux-s390x-gnu": {
1226 | "version": "4.35.0",
1227 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.35.0.tgz",
1228 | "integrity": "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==",
1229 | "cpu": [
1230 | "s390x"
1231 | ],
1232 | "dev": true,
1233 | "license": "MIT",
1234 | "optional": true,
1235 | "os": [
1236 | "linux"
1237 | ]
1238 | },
1239 | "node_modules/@rollup/rollup-linux-x64-gnu": {
1240 | "version": "4.35.0",
1241 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.35.0.tgz",
1242 | "integrity": "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==",
1243 | "cpu": [
1244 | "x64"
1245 | ],
1246 | "dev": true,
1247 | "license": "MIT",
1248 | "optional": true,
1249 | "os": [
1250 | "linux"
1251 | ]
1252 | },
1253 | "node_modules/@rollup/rollup-linux-x64-musl": {
1254 | "version": "4.35.0",
1255 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.35.0.tgz",
1256 | "integrity": "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==",
1257 | "cpu": [
1258 | "x64"
1259 | ],
1260 | "dev": true,
1261 | "license": "MIT",
1262 | "optional": true,
1263 | "os": [
1264 | "linux"
1265 | ]
1266 | },
1267 | "node_modules/@rollup/rollup-win32-arm64-msvc": {
1268 | "version": "4.35.0",
1269 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.35.0.tgz",
1270 | "integrity": "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==",
1271 | "cpu": [
1272 | "arm64"
1273 | ],
1274 | "dev": true,
1275 | "license": "MIT",
1276 | "optional": true,
1277 | "os": [
1278 | "win32"
1279 | ]
1280 | },
1281 | "node_modules/@rollup/rollup-win32-ia32-msvc": {
1282 | "version": "4.35.0",
1283 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.35.0.tgz",
1284 | "integrity": "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==",
1285 | "cpu": [
1286 | "ia32"
1287 | ],
1288 | "dev": true,
1289 | "license": "MIT",
1290 | "optional": true,
1291 | "os": [
1292 | "win32"
1293 | ]
1294 | },
1295 | "node_modules/@rollup/rollup-win32-x64-msvc": {
1296 | "version": "4.35.0",
1297 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.35.0.tgz",
1298 | "integrity": "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==",
1299 | "cpu": [
1300 | "x64"
1301 | ],
1302 | "dev": true,
1303 | "license": "MIT",
1304 | "optional": true,
1305 | "os": [
1306 | "win32"
1307 | ]
1308 | },
1309 | "node_modules/@types/estree": {
1310 | "version": "1.0.6",
1311 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
1312 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
1313 | "dev": true,
1314 | "license": "MIT"
1315 | },
1316 | "node_modules/@vitest/expect": {
1317 | "version": "3.0.8",
1318 | "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz",
1319 | "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==",
1320 | "dev": true,
1321 | "license": "MIT",
1322 | "dependencies": {
1323 | "@vitest/spy": "3.0.8",
1324 | "@vitest/utils": "3.0.8",
1325 | "chai": "^5.2.0",
1326 | "tinyrainbow": "^2.0.0"
1327 | },
1328 | "funding": {
1329 | "url": "https://opencollective.com/vitest"
1330 | }
1331 | },
1332 | "node_modules/@vitest/mocker": {
1333 | "version": "3.0.8",
1334 | "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz",
1335 | "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==",
1336 | "dev": true,
1337 | "license": "MIT",
1338 | "dependencies": {
1339 | "@vitest/spy": "3.0.8",
1340 | "estree-walker": "^3.0.3",
1341 | "magic-string": "^0.30.17"
1342 | },
1343 | "funding": {
1344 | "url": "https://opencollective.com/vitest"
1345 | },
1346 | "peerDependencies": {
1347 | "msw": "^2.4.9",
1348 | "vite": "^5.0.0 || ^6.0.0"
1349 | },
1350 | "peerDependenciesMeta": {
1351 | "msw": {
1352 | "optional": true
1353 | },
1354 | "vite": {
1355 | "optional": true
1356 | }
1357 | }
1358 | },
1359 | "node_modules/@vitest/pretty-format": {
1360 | "version": "3.0.8",
1361 | "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz",
1362 | "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==",
1363 | "dev": true,
1364 | "license": "MIT",
1365 | "dependencies": {
1366 | "tinyrainbow": "^2.0.0"
1367 | },
1368 | "funding": {
1369 | "url": "https://opencollective.com/vitest"
1370 | }
1371 | },
1372 | "node_modules/@vitest/runner": {
1373 | "version": "3.0.8",
1374 | "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz",
1375 | "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==",
1376 | "dev": true,
1377 | "license": "MIT",
1378 | "dependencies": {
1379 | "@vitest/utils": "3.0.8",
1380 | "pathe": "^2.0.3"
1381 | },
1382 | "funding": {
1383 | "url": "https://opencollective.com/vitest"
1384 | }
1385 | },
1386 | "node_modules/@vitest/snapshot": {
1387 | "version": "3.0.8",
1388 | "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz",
1389 | "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==",
1390 | "dev": true,
1391 | "license": "MIT",
1392 | "dependencies": {
1393 | "@vitest/pretty-format": "3.0.8",
1394 | "magic-string": "^0.30.17",
1395 | "pathe": "^2.0.3"
1396 | },
1397 | "funding": {
1398 | "url": "https://opencollective.com/vitest"
1399 | }
1400 | },
1401 | "node_modules/@vitest/spy": {
1402 | "version": "3.0.8",
1403 | "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz",
1404 | "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==",
1405 | "dev": true,
1406 | "license": "MIT",
1407 | "dependencies": {
1408 | "tinyspy": "^3.0.2"
1409 | },
1410 | "funding": {
1411 | "url": "https://opencollective.com/vitest"
1412 | }
1413 | },
1414 | "node_modules/@vitest/utils": {
1415 | "version": "3.0.8",
1416 | "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz",
1417 | "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==",
1418 | "dev": true,
1419 | "license": "MIT",
1420 | "dependencies": {
1421 | "@vitest/pretty-format": "3.0.8",
1422 | "loupe": "^3.1.3",
1423 | "tinyrainbow": "^2.0.0"
1424 | },
1425 | "funding": {
1426 | "url": "https://opencollective.com/vitest"
1427 | }
1428 | },
1429 | "node_modules/acorn": {
1430 | "version": "8.14.0",
1431 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
1432 | "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
1433 | "dev": true,
1434 | "license": "MIT",
1435 | "bin": {
1436 | "acorn": "bin/acorn"
1437 | },
1438 | "engines": {
1439 | "node": ">=0.4.0"
1440 | }
1441 | },
1442 | "node_modules/acorn-walk": {
1443 | "version": "8.3.2",
1444 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
1445 | "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
1446 | "dev": true,
1447 | "license": "MIT",
1448 | "engines": {
1449 | "node": ">=0.4.0"
1450 | }
1451 | },
1452 | "node_modules/as-table": {
1453 | "version": "1.0.55",
1454 | "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
1455 | "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
1456 | "dev": true,
1457 | "license": "MIT",
1458 | "dependencies": {
1459 | "printable-characters": "^1.0.42"
1460 | }
1461 | },
1462 | "node_modules/assertion-error": {
1463 | "version": "2.0.1",
1464 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
1465 | "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
1466 | "dev": true,
1467 | "license": "MIT",
1468 | "engines": {
1469 | "node": ">=12"
1470 | }
1471 | },
1472 | "node_modules/birpc": {
1473 | "version": "0.2.14",
1474 | "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.14.tgz",
1475 | "integrity": "sha512-37FHE8rqsYM5JEKCnXFyHpBCzvgHEExwVVTq+nUmloInU7l8ezD1TpOhKpS8oe1DTYFqEK27rFZVKG43oTqXRA==",
1476 | "dev": true,
1477 | "license": "MIT",
1478 | "funding": {
1479 | "url": "https://github.com/sponsors/antfu"
1480 | }
1481 | },
1482 | "node_modules/blake3-wasm": {
1483 | "version": "2.1.5",
1484 | "resolved": "https://registry.npmjs.org/blake3-wasm/-/blake3-wasm-2.1.5.tgz",
1485 | "integrity": "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==",
1486 | "dev": true,
1487 | "license": "MIT"
1488 | },
1489 | "node_modules/cac": {
1490 | "version": "6.7.14",
1491 | "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
1492 | "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==",
1493 | "dev": true,
1494 | "license": "MIT",
1495 | "engines": {
1496 | "node": ">=8"
1497 | }
1498 | },
1499 | "node_modules/chai": {
1500 | "version": "5.2.0",
1501 | "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
1502 | "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
1503 | "dev": true,
1504 | "license": "MIT",
1505 | "dependencies": {
1506 | "assertion-error": "^2.0.1",
1507 | "check-error": "^2.1.1",
1508 | "deep-eql": "^5.0.1",
1509 | "loupe": "^3.1.0",
1510 | "pathval": "^2.0.0"
1511 | },
1512 | "engines": {
1513 | "node": ">=12"
1514 | }
1515 | },
1516 | "node_modules/check-error": {
1517 | "version": "2.1.1",
1518 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
1519 | "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
1520 | "dev": true,
1521 | "license": "MIT",
1522 | "engines": {
1523 | "node": ">= 16"
1524 | }
1525 | },
1526 | "node_modules/cjs-module-lexer": {
1527 | "version": "1.4.3",
1528 | "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz",
1529 | "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==",
1530 | "dev": true,
1531 | "license": "MIT"
1532 | },
1533 | "node_modules/color": {
1534 | "version": "4.2.3",
1535 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
1536 | "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
1537 | "dev": true,
1538 | "license": "MIT",
1539 | "optional": true,
1540 | "dependencies": {
1541 | "color-convert": "^2.0.1",
1542 | "color-string": "^1.9.0"
1543 | },
1544 | "engines": {
1545 | "node": ">=12.5.0"
1546 | }
1547 | },
1548 | "node_modules/color-convert": {
1549 | "version": "2.0.1",
1550 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1551 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1552 | "dev": true,
1553 | "license": "MIT",
1554 | "optional": true,
1555 | "dependencies": {
1556 | "color-name": "~1.1.4"
1557 | },
1558 | "engines": {
1559 | "node": ">=7.0.0"
1560 | }
1561 | },
1562 | "node_modules/color-name": {
1563 | "version": "1.1.4",
1564 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1565 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1566 | "dev": true,
1567 | "license": "MIT",
1568 | "optional": true
1569 | },
1570 | "node_modules/color-string": {
1571 | "version": "1.9.1",
1572 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
1573 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
1574 | "dev": true,
1575 | "license": "MIT",
1576 | "optional": true,
1577 | "dependencies": {
1578 | "color-name": "^1.0.0",
1579 | "simple-swizzle": "^0.2.2"
1580 | }
1581 | },
1582 | "node_modules/cookie": {
1583 | "version": "0.5.0",
1584 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
1585 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
1586 | "dev": true,
1587 | "license": "MIT",
1588 | "engines": {
1589 | "node": ">= 0.6"
1590 | }
1591 | },
1592 | "node_modules/data-uri-to-buffer": {
1593 | "version": "2.0.2",
1594 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
1595 | "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
1596 | "dev": true,
1597 | "license": "MIT"
1598 | },
1599 | "node_modules/debug": {
1600 | "version": "4.4.0",
1601 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
1602 | "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
1603 | "dev": true,
1604 | "license": "MIT",
1605 | "dependencies": {
1606 | "ms": "^2.1.3"
1607 | },
1608 | "engines": {
1609 | "node": ">=6.0"
1610 | },
1611 | "peerDependenciesMeta": {
1612 | "supports-color": {
1613 | "optional": true
1614 | }
1615 | }
1616 | },
1617 | "node_modules/deep-eql": {
1618 | "version": "5.0.2",
1619 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
1620 | "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
1621 | "dev": true,
1622 | "license": "MIT",
1623 | "engines": {
1624 | "node": ">=6"
1625 | }
1626 | },
1627 | "node_modules/defu": {
1628 | "version": "6.1.4",
1629 | "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz",
1630 | "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==",
1631 | "dev": true,
1632 | "license": "MIT"
1633 | },
1634 | "node_modules/detect-libc": {
1635 | "version": "2.0.3",
1636 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
1637 | "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
1638 | "dev": true,
1639 | "license": "Apache-2.0",
1640 | "optional": true,
1641 | "engines": {
1642 | "node": ">=8"
1643 | }
1644 | },
1645 | "node_modules/devalue": {
1646 | "version": "4.3.3",
1647 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.3.tgz",
1648 | "integrity": "sha512-UH8EL6H2ifcY8TbD2QsxwCC/pr5xSwPvv85LrLXVihmHVC3T3YqTCIwnR5ak0yO1KYqlxrPVOA/JVZJYPy2ATg==",
1649 | "dev": true,
1650 | "license": "MIT"
1651 | },
1652 | "node_modules/es-module-lexer": {
1653 | "version": "1.6.0",
1654 | "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
1655 | "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
1656 | "dev": true,
1657 | "license": "MIT"
1658 | },
1659 | "node_modules/esbuild": {
1660 | "version": "0.17.19",
1661 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz",
1662 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==",
1663 | "dev": true,
1664 | "hasInstallScript": true,
1665 | "license": "MIT",
1666 | "bin": {
1667 | "esbuild": "bin/esbuild"
1668 | },
1669 | "engines": {
1670 | "node": ">=12"
1671 | },
1672 | "optionalDependencies": {
1673 | "@esbuild/android-arm": "0.17.19",
1674 | "@esbuild/android-arm64": "0.17.19",
1675 | "@esbuild/android-x64": "0.17.19",
1676 | "@esbuild/darwin-arm64": "0.17.19",
1677 | "@esbuild/darwin-x64": "0.17.19",
1678 | "@esbuild/freebsd-arm64": "0.17.19",
1679 | "@esbuild/freebsd-x64": "0.17.19",
1680 | "@esbuild/linux-arm": "0.17.19",
1681 | "@esbuild/linux-arm64": "0.17.19",
1682 | "@esbuild/linux-ia32": "0.17.19",
1683 | "@esbuild/linux-loong64": "0.17.19",
1684 | "@esbuild/linux-mips64el": "0.17.19",
1685 | "@esbuild/linux-ppc64": "0.17.19",
1686 | "@esbuild/linux-riscv64": "0.17.19",
1687 | "@esbuild/linux-s390x": "0.17.19",
1688 | "@esbuild/linux-x64": "0.17.19",
1689 | "@esbuild/netbsd-x64": "0.17.19",
1690 | "@esbuild/openbsd-x64": "0.17.19",
1691 | "@esbuild/sunos-x64": "0.17.19",
1692 | "@esbuild/win32-arm64": "0.17.19",
1693 | "@esbuild/win32-ia32": "0.17.19",
1694 | "@esbuild/win32-x64": "0.17.19"
1695 | }
1696 | },
1697 | "node_modules/escape-string-regexp": {
1698 | "version": "4.0.0",
1699 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1700 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1701 | "dev": true,
1702 | "license": "MIT",
1703 | "engines": {
1704 | "node": ">=10"
1705 | },
1706 | "funding": {
1707 | "url": "https://github.com/sponsors/sindresorhus"
1708 | }
1709 | },
1710 | "node_modules/estree-walker": {
1711 | "version": "3.0.3",
1712 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
1713 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
1714 | "dev": true,
1715 | "license": "MIT",
1716 | "dependencies": {
1717 | "@types/estree": "^1.0.0"
1718 | }
1719 | },
1720 | "node_modules/exit-hook": {
1721 | "version": "2.2.1",
1722 | "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-2.2.1.tgz",
1723 | "integrity": "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==",
1724 | "dev": true,
1725 | "license": "MIT",
1726 | "engines": {
1727 | "node": ">=6"
1728 | },
1729 | "funding": {
1730 | "url": "https://github.com/sponsors/sindresorhus"
1731 | }
1732 | },
1733 | "node_modules/expect-type": {
1734 | "version": "1.2.0",
1735 | "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.0.tgz",
1736 | "integrity": "sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==",
1737 | "dev": true,
1738 | "license": "Apache-2.0",
1739 | "engines": {
1740 | "node": ">=12.0.0"
1741 | }
1742 | },
1743 | "node_modules/exsolve": {
1744 | "version": "1.0.4",
1745 | "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
1746 | "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
1747 | "dev": true,
1748 | "license": "MIT"
1749 | },
1750 | "node_modules/fsevents": {
1751 | "version": "2.3.3",
1752 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
1753 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
1754 | "dev": true,
1755 | "hasInstallScript": true,
1756 | "license": "MIT",
1757 | "optional": true,
1758 | "os": [
1759 | "darwin"
1760 | ],
1761 | "engines": {
1762 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1763 | }
1764 | },
1765 | "node_modules/get-source": {
1766 | "version": "2.0.12",
1767 | "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz",
1768 | "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==",
1769 | "dev": true,
1770 | "license": "Unlicense",
1771 | "dependencies": {
1772 | "data-uri-to-buffer": "^2.0.0",
1773 | "source-map": "^0.6.1"
1774 | }
1775 | },
1776 | "node_modules/glob-to-regexp": {
1777 | "version": "0.4.1",
1778 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1779 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
1780 | "dev": true,
1781 | "license": "BSD-2-Clause"
1782 | },
1783 | "node_modules/is-arrayish": {
1784 | "version": "0.3.2",
1785 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
1786 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
1787 | "dev": true,
1788 | "license": "MIT",
1789 | "optional": true
1790 | },
1791 | "node_modules/loupe": {
1792 | "version": "3.1.3",
1793 | "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
1794 | "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
1795 | "dev": true,
1796 | "license": "MIT"
1797 | },
1798 | "node_modules/magic-string": {
1799 | "version": "0.30.17",
1800 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz",
1801 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
1802 | "dev": true,
1803 | "license": "MIT",
1804 | "dependencies": {
1805 | "@jridgewell/sourcemap-codec": "^1.5.0"
1806 | }
1807 | },
1808 | "node_modules/mime": {
1809 | "version": "3.0.0",
1810 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
1811 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
1812 | "dev": true,
1813 | "license": "MIT",
1814 | "bin": {
1815 | "mime": "cli.js"
1816 | },
1817 | "engines": {
1818 | "node": ">=10.0.0"
1819 | }
1820 | },
1821 | "node_modules/miniflare": {
1822 | "version": "3.20250310.0",
1823 | "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20250310.0.tgz",
1824 | "integrity": "sha512-TQAxoo2ZiQYjiOJoK3bbcyjKD/u1E3akYOeSHc2Zcp1sLVydrgzSjmxtrn65/3BfDIrUgfYHyy9wspT6wzBy/A==",
1825 | "dev": true,
1826 | "license": "MIT",
1827 | "dependencies": {
1828 | "@cspotcode/source-map-support": "0.8.1",
1829 | "acorn": "8.14.0",
1830 | "acorn-walk": "8.3.2",
1831 | "exit-hook": "2.2.1",
1832 | "glob-to-regexp": "0.4.1",
1833 | "stoppable": "1.1.0",
1834 | "undici": "^5.28.5",
1835 | "workerd": "1.20250310.0",
1836 | "ws": "8.18.0",
1837 | "youch": "3.2.3",
1838 | "zod": "3.22.3"
1839 | },
1840 | "bin": {
1841 | "miniflare": "bootstrap.js"
1842 | },
1843 | "engines": {
1844 | "node": ">=16.13"
1845 | }
1846 | },
1847 | "node_modules/miniflare/node_modules/zod": {
1848 | "version": "3.22.3",
1849 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.3.tgz",
1850 | "integrity": "sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==",
1851 | "dev": true,
1852 | "license": "MIT",
1853 | "funding": {
1854 | "url": "https://github.com/sponsors/colinhacks"
1855 | }
1856 | },
1857 | "node_modules/ms": {
1858 | "version": "2.1.3",
1859 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1860 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
1861 | "dev": true,
1862 | "license": "MIT"
1863 | },
1864 | "node_modules/mustache": {
1865 | "version": "4.2.0",
1866 | "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
1867 | "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
1868 | "dev": true,
1869 | "license": "MIT",
1870 | "bin": {
1871 | "mustache": "bin/mustache"
1872 | }
1873 | },
1874 | "node_modules/nanoid": {
1875 | "version": "3.3.9",
1876 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz",
1877 | "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==",
1878 | "dev": true,
1879 | "funding": [
1880 | {
1881 | "type": "github",
1882 | "url": "https://github.com/sponsors/ai"
1883 | }
1884 | ],
1885 | "license": "MIT",
1886 | "bin": {
1887 | "nanoid": "bin/nanoid.cjs"
1888 | },
1889 | "engines": {
1890 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1891 | }
1892 | },
1893 | "node_modules/ohash": {
1894 | "version": "2.0.11",
1895 | "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
1896 | "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
1897 | "dev": true,
1898 | "license": "MIT"
1899 | },
1900 | "node_modules/path-to-regexp": {
1901 | "version": "6.3.0",
1902 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
1903 | "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
1904 | "dev": true,
1905 | "license": "MIT"
1906 | },
1907 | "node_modules/pathe": {
1908 | "version": "2.0.3",
1909 | "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
1910 | "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
1911 | "dev": true,
1912 | "license": "MIT"
1913 | },
1914 | "node_modules/pathval": {
1915 | "version": "2.0.0",
1916 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
1917 | "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
1918 | "dev": true,
1919 | "license": "MIT",
1920 | "engines": {
1921 | "node": ">= 14.16"
1922 | }
1923 | },
1924 | "node_modules/picocolors": {
1925 | "version": "1.1.1",
1926 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1927 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
1928 | "dev": true,
1929 | "license": "ISC"
1930 | },
1931 | "node_modules/postcss": {
1932 | "version": "8.5.3",
1933 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
1934 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
1935 | "dev": true,
1936 | "funding": [
1937 | {
1938 | "type": "opencollective",
1939 | "url": "https://opencollective.com/postcss/"
1940 | },
1941 | {
1942 | "type": "tidelift",
1943 | "url": "https://tidelift.com/funding/github/npm/postcss"
1944 | },
1945 | {
1946 | "type": "github",
1947 | "url": "https://github.com/sponsors/ai"
1948 | }
1949 | ],
1950 | "license": "MIT",
1951 | "dependencies": {
1952 | "nanoid": "^3.3.8",
1953 | "picocolors": "^1.1.1",
1954 | "source-map-js": "^1.2.1"
1955 | },
1956 | "engines": {
1957 | "node": "^10 || ^12 || >=14"
1958 | }
1959 | },
1960 | "node_modules/printable-characters": {
1961 | "version": "1.0.42",
1962 | "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
1963 | "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==",
1964 | "dev": true,
1965 | "license": "Unlicense"
1966 | },
1967 | "node_modules/rollup": {
1968 | "version": "4.35.0",
1969 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.35.0.tgz",
1970 | "integrity": "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==",
1971 | "dev": true,
1972 | "license": "MIT",
1973 | "dependencies": {
1974 | "@types/estree": "1.0.6"
1975 | },
1976 | "bin": {
1977 | "rollup": "dist/bin/rollup"
1978 | },
1979 | "engines": {
1980 | "node": ">=18.0.0",
1981 | "npm": ">=8.0.0"
1982 | },
1983 | "optionalDependencies": {
1984 | "@rollup/rollup-android-arm-eabi": "4.35.0",
1985 | "@rollup/rollup-android-arm64": "4.35.0",
1986 | "@rollup/rollup-darwin-arm64": "4.35.0",
1987 | "@rollup/rollup-darwin-x64": "4.35.0",
1988 | "@rollup/rollup-freebsd-arm64": "4.35.0",
1989 | "@rollup/rollup-freebsd-x64": "4.35.0",
1990 | "@rollup/rollup-linux-arm-gnueabihf": "4.35.0",
1991 | "@rollup/rollup-linux-arm-musleabihf": "4.35.0",
1992 | "@rollup/rollup-linux-arm64-gnu": "4.35.0",
1993 | "@rollup/rollup-linux-arm64-musl": "4.35.0",
1994 | "@rollup/rollup-linux-loongarch64-gnu": "4.35.0",
1995 | "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0",
1996 | "@rollup/rollup-linux-riscv64-gnu": "4.35.0",
1997 | "@rollup/rollup-linux-s390x-gnu": "4.35.0",
1998 | "@rollup/rollup-linux-x64-gnu": "4.35.0",
1999 | "@rollup/rollup-linux-x64-musl": "4.35.0",
2000 | "@rollup/rollup-win32-arm64-msvc": "4.35.0",
2001 | "@rollup/rollup-win32-ia32-msvc": "4.35.0",
2002 | "@rollup/rollup-win32-x64-msvc": "4.35.0",
2003 | "fsevents": "~2.3.2"
2004 | }
2005 | },
2006 | "node_modules/rollup-plugin-inject": {
2007 | "version": "3.0.2",
2008 | "resolved": "https://registry.npmjs.org/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz",
2009 | "integrity": "sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==",
2010 | "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.",
2011 | "dev": true,
2012 | "license": "MIT",
2013 | "dependencies": {
2014 | "estree-walker": "^0.6.1",
2015 | "magic-string": "^0.25.3",
2016 | "rollup-pluginutils": "^2.8.1"
2017 | }
2018 | },
2019 | "node_modules/rollup-plugin-inject/node_modules/estree-walker": {
2020 | "version": "0.6.1",
2021 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
2022 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
2023 | "dev": true,
2024 | "license": "MIT"
2025 | },
2026 | "node_modules/rollup-plugin-inject/node_modules/magic-string": {
2027 | "version": "0.25.9",
2028 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
2029 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
2030 | "dev": true,
2031 | "license": "MIT",
2032 | "dependencies": {
2033 | "sourcemap-codec": "^1.4.8"
2034 | }
2035 | },
2036 | "node_modules/rollup-plugin-node-polyfills": {
2037 | "version": "0.2.1",
2038 | "resolved": "https://registry.npmjs.org/rollup-plugin-node-polyfills/-/rollup-plugin-node-polyfills-0.2.1.tgz",
2039 | "integrity": "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==",
2040 | "dev": true,
2041 | "license": "MIT",
2042 | "dependencies": {
2043 | "rollup-plugin-inject": "^3.0.0"
2044 | }
2045 | },
2046 | "node_modules/rollup-pluginutils": {
2047 | "version": "2.8.2",
2048 | "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
2049 | "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
2050 | "dev": true,
2051 | "license": "MIT",
2052 | "dependencies": {
2053 | "estree-walker": "^0.6.1"
2054 | }
2055 | },
2056 | "node_modules/rollup-pluginutils/node_modules/estree-walker": {
2057 | "version": "0.6.1",
2058 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
2059 | "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
2060 | "dev": true,
2061 | "license": "MIT"
2062 | },
2063 | "node_modules/semver": {
2064 | "version": "7.7.1",
2065 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
2066 | "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
2067 | "dev": true,
2068 | "license": "ISC",
2069 | "bin": {
2070 | "semver": "bin/semver.js"
2071 | },
2072 | "engines": {
2073 | "node": ">=10"
2074 | }
2075 | },
2076 | "node_modules/sharp": {
2077 | "version": "0.33.5",
2078 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz",
2079 | "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
2080 | "dev": true,
2081 | "hasInstallScript": true,
2082 | "license": "Apache-2.0",
2083 | "optional": true,
2084 | "dependencies": {
2085 | "color": "^4.2.3",
2086 | "detect-libc": "^2.0.3",
2087 | "semver": "^7.6.3"
2088 | },
2089 | "engines": {
2090 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
2091 | },
2092 | "funding": {
2093 | "url": "https://opencollective.com/libvips"
2094 | },
2095 | "optionalDependencies": {
2096 | "@img/sharp-darwin-arm64": "0.33.5",
2097 | "@img/sharp-darwin-x64": "0.33.5",
2098 | "@img/sharp-libvips-darwin-arm64": "1.0.4",
2099 | "@img/sharp-libvips-darwin-x64": "1.0.4",
2100 | "@img/sharp-libvips-linux-arm": "1.0.5",
2101 | "@img/sharp-libvips-linux-arm64": "1.0.4",
2102 | "@img/sharp-libvips-linux-s390x": "1.0.4",
2103 | "@img/sharp-libvips-linux-x64": "1.0.4",
2104 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
2105 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
2106 | "@img/sharp-linux-arm": "0.33.5",
2107 | "@img/sharp-linux-arm64": "0.33.5",
2108 | "@img/sharp-linux-s390x": "0.33.5",
2109 | "@img/sharp-linux-x64": "0.33.5",
2110 | "@img/sharp-linuxmusl-arm64": "0.33.5",
2111 | "@img/sharp-linuxmusl-x64": "0.33.5",
2112 | "@img/sharp-wasm32": "0.33.5",
2113 | "@img/sharp-win32-ia32": "0.33.5",
2114 | "@img/sharp-win32-x64": "0.33.5"
2115 | }
2116 | },
2117 | "node_modules/siginfo": {
2118 | "version": "2.0.0",
2119 | "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
2120 | "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
2121 | "dev": true,
2122 | "license": "ISC"
2123 | },
2124 | "node_modules/simple-swizzle": {
2125 | "version": "0.2.2",
2126 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
2127 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
2128 | "dev": true,
2129 | "license": "MIT",
2130 | "optional": true,
2131 | "dependencies": {
2132 | "is-arrayish": "^0.3.1"
2133 | }
2134 | },
2135 | "node_modules/source-map": {
2136 | "version": "0.6.1",
2137 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2138 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2139 | "dev": true,
2140 | "license": "BSD-3-Clause",
2141 | "engines": {
2142 | "node": ">=0.10.0"
2143 | }
2144 | },
2145 | "node_modules/source-map-js": {
2146 | "version": "1.2.1",
2147 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
2148 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
2149 | "dev": true,
2150 | "license": "BSD-3-Clause",
2151 | "engines": {
2152 | "node": ">=0.10.0"
2153 | }
2154 | },
2155 | "node_modules/sourcemap-codec": {
2156 | "version": "1.4.8",
2157 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
2158 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
2159 | "deprecated": "Please use @jridgewell/sourcemap-codec instead",
2160 | "dev": true,
2161 | "license": "MIT"
2162 | },
2163 | "node_modules/stackback": {
2164 | "version": "0.0.2",
2165 | "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
2166 | "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
2167 | "dev": true,
2168 | "license": "MIT"
2169 | },
2170 | "node_modules/stacktracey": {
2171 | "version": "2.1.8",
2172 | "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz",
2173 | "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==",
2174 | "dev": true,
2175 | "license": "Unlicense",
2176 | "dependencies": {
2177 | "as-table": "^1.0.36",
2178 | "get-source": "^2.0.12"
2179 | }
2180 | },
2181 | "node_modules/std-env": {
2182 | "version": "3.8.1",
2183 | "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.1.tgz",
2184 | "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==",
2185 | "dev": true,
2186 | "license": "MIT"
2187 | },
2188 | "node_modules/stoppable": {
2189 | "version": "1.1.0",
2190 | "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz",
2191 | "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==",
2192 | "dev": true,
2193 | "license": "MIT",
2194 | "engines": {
2195 | "node": ">=4",
2196 | "npm": ">=6"
2197 | }
2198 | },
2199 | "node_modules/tinybench": {
2200 | "version": "2.9.0",
2201 | "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
2202 | "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
2203 | "dev": true,
2204 | "license": "MIT"
2205 | },
2206 | "node_modules/tinyexec": {
2207 | "version": "0.3.2",
2208 | "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
2209 | "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
2210 | "dev": true,
2211 | "license": "MIT"
2212 | },
2213 | "node_modules/tinypool": {
2214 | "version": "1.0.2",
2215 | "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
2216 | "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
2217 | "dev": true,
2218 | "license": "MIT",
2219 | "engines": {
2220 | "node": "^18.0.0 || >=20.0.0"
2221 | }
2222 | },
2223 | "node_modules/tinyrainbow": {
2224 | "version": "2.0.0",
2225 | "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
2226 | "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
2227 | "dev": true,
2228 | "license": "MIT",
2229 | "engines": {
2230 | "node": ">=14.0.0"
2231 | }
2232 | },
2233 | "node_modules/tinyspy": {
2234 | "version": "3.0.2",
2235 | "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
2236 | "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
2237 | "dev": true,
2238 | "license": "MIT",
2239 | "engines": {
2240 | "node": ">=14.0.0"
2241 | }
2242 | },
2243 | "node_modules/tslib": {
2244 | "version": "2.8.1",
2245 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
2246 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
2247 | "dev": true,
2248 | "license": "0BSD",
2249 | "optional": true
2250 | },
2251 | "node_modules/ufo": {
2252 | "version": "1.5.4",
2253 | "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
2254 | "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
2255 | "dev": true,
2256 | "license": "MIT"
2257 | },
2258 | "node_modules/undici": {
2259 | "version": "5.28.5",
2260 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
2261 | "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
2262 | "dev": true,
2263 | "license": "MIT",
2264 | "dependencies": {
2265 | "@fastify/busboy": "^2.0.0"
2266 | },
2267 | "engines": {
2268 | "node": ">=14.0"
2269 | }
2270 | },
2271 | "node_modules/unenv": {
2272 | "version": "2.0.0-rc.14",
2273 | "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.14.tgz",
2274 | "integrity": "sha512-od496pShMen7nOy5VmVJCnq8rptd45vh6Nx/r2iPbrba6pa6p+tS2ywuIHRZ/OBvSbQZB0kWvpO9XBNVFXHD3Q==",
2275 | "dev": true,
2276 | "license": "MIT",
2277 | "dependencies": {
2278 | "defu": "^6.1.4",
2279 | "exsolve": "^1.0.1",
2280 | "ohash": "^2.0.10",
2281 | "pathe": "^2.0.3",
2282 | "ufo": "^1.5.4"
2283 | }
2284 | },
2285 | "node_modules/vite": {
2286 | "version": "6.2.1",
2287 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz",
2288 | "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==",
2289 | "dev": true,
2290 | "license": "MIT",
2291 | "dependencies": {
2292 | "esbuild": "^0.25.0",
2293 | "postcss": "^8.5.3",
2294 | "rollup": "^4.30.1"
2295 | },
2296 | "bin": {
2297 | "vite": "bin/vite.js"
2298 | },
2299 | "engines": {
2300 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2301 | },
2302 | "funding": {
2303 | "url": "https://github.com/vitejs/vite?sponsor=1"
2304 | },
2305 | "optionalDependencies": {
2306 | "fsevents": "~2.3.3"
2307 | },
2308 | "peerDependencies": {
2309 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2310 | "jiti": ">=1.21.0",
2311 | "less": "*",
2312 | "lightningcss": "^1.21.0",
2313 | "sass": "*",
2314 | "sass-embedded": "*",
2315 | "stylus": "*",
2316 | "sugarss": "*",
2317 | "terser": "^5.16.0",
2318 | "tsx": "^4.8.1",
2319 | "yaml": "^2.4.2"
2320 | },
2321 | "peerDependenciesMeta": {
2322 | "@types/node": {
2323 | "optional": true
2324 | },
2325 | "jiti": {
2326 | "optional": true
2327 | },
2328 | "less": {
2329 | "optional": true
2330 | },
2331 | "lightningcss": {
2332 | "optional": true
2333 | },
2334 | "sass": {
2335 | "optional": true
2336 | },
2337 | "sass-embedded": {
2338 | "optional": true
2339 | },
2340 | "stylus": {
2341 | "optional": true
2342 | },
2343 | "sugarss": {
2344 | "optional": true
2345 | },
2346 | "terser": {
2347 | "optional": true
2348 | },
2349 | "tsx": {
2350 | "optional": true
2351 | },
2352 | "yaml": {
2353 | "optional": true
2354 | }
2355 | }
2356 | },
2357 | "node_modules/vite-node": {
2358 | "version": "3.0.8",
2359 | "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz",
2360 | "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==",
2361 | "dev": true,
2362 | "license": "MIT",
2363 | "dependencies": {
2364 | "cac": "^6.7.14",
2365 | "debug": "^4.4.0",
2366 | "es-module-lexer": "^1.6.0",
2367 | "pathe": "^2.0.3",
2368 | "vite": "^5.0.0 || ^6.0.0"
2369 | },
2370 | "bin": {
2371 | "vite-node": "vite-node.mjs"
2372 | },
2373 | "engines": {
2374 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2375 | },
2376 | "funding": {
2377 | "url": "https://opencollective.com/vitest"
2378 | }
2379 | },
2380 | "node_modules/vite/node_modules/@esbuild/android-arm": {
2381 | "version": "0.25.1",
2382 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
2383 | "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
2384 | "cpu": [
2385 | "arm"
2386 | ],
2387 | "dev": true,
2388 | "license": "MIT",
2389 | "optional": true,
2390 | "os": [
2391 | "android"
2392 | ],
2393 | "engines": {
2394 | "node": ">=18"
2395 | }
2396 | },
2397 | "node_modules/vite/node_modules/@esbuild/android-arm64": {
2398 | "version": "0.25.1",
2399 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
2400 | "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
2401 | "cpu": [
2402 | "arm64"
2403 | ],
2404 | "dev": true,
2405 | "license": "MIT",
2406 | "optional": true,
2407 | "os": [
2408 | "android"
2409 | ],
2410 | "engines": {
2411 | "node": ">=18"
2412 | }
2413 | },
2414 | "node_modules/vite/node_modules/@esbuild/android-x64": {
2415 | "version": "0.25.1",
2416 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
2417 | "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
2418 | "cpu": [
2419 | "x64"
2420 | ],
2421 | "dev": true,
2422 | "license": "MIT",
2423 | "optional": true,
2424 | "os": [
2425 | "android"
2426 | ],
2427 | "engines": {
2428 | "node": ">=18"
2429 | }
2430 | },
2431 | "node_modules/vite/node_modules/@esbuild/darwin-arm64": {
2432 | "version": "0.25.1",
2433 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
2434 | "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
2435 | "cpu": [
2436 | "arm64"
2437 | ],
2438 | "dev": true,
2439 | "license": "MIT",
2440 | "optional": true,
2441 | "os": [
2442 | "darwin"
2443 | ],
2444 | "engines": {
2445 | "node": ">=18"
2446 | }
2447 | },
2448 | "node_modules/vite/node_modules/@esbuild/darwin-x64": {
2449 | "version": "0.25.1",
2450 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
2451 | "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
2452 | "cpu": [
2453 | "x64"
2454 | ],
2455 | "dev": true,
2456 | "license": "MIT",
2457 | "optional": true,
2458 | "os": [
2459 | "darwin"
2460 | ],
2461 | "engines": {
2462 | "node": ">=18"
2463 | }
2464 | },
2465 | "node_modules/vite/node_modules/@esbuild/freebsd-arm64": {
2466 | "version": "0.25.1",
2467 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
2468 | "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
2469 | "cpu": [
2470 | "arm64"
2471 | ],
2472 | "dev": true,
2473 | "license": "MIT",
2474 | "optional": true,
2475 | "os": [
2476 | "freebsd"
2477 | ],
2478 | "engines": {
2479 | "node": ">=18"
2480 | }
2481 | },
2482 | "node_modules/vite/node_modules/@esbuild/freebsd-x64": {
2483 | "version": "0.25.1",
2484 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
2485 | "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
2486 | "cpu": [
2487 | "x64"
2488 | ],
2489 | "dev": true,
2490 | "license": "MIT",
2491 | "optional": true,
2492 | "os": [
2493 | "freebsd"
2494 | ],
2495 | "engines": {
2496 | "node": ">=18"
2497 | }
2498 | },
2499 | "node_modules/vite/node_modules/@esbuild/linux-arm": {
2500 | "version": "0.25.1",
2501 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
2502 | "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
2503 | "cpu": [
2504 | "arm"
2505 | ],
2506 | "dev": true,
2507 | "license": "MIT",
2508 | "optional": true,
2509 | "os": [
2510 | "linux"
2511 | ],
2512 | "engines": {
2513 | "node": ">=18"
2514 | }
2515 | },
2516 | "node_modules/vite/node_modules/@esbuild/linux-arm64": {
2517 | "version": "0.25.1",
2518 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
2519 | "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
2520 | "cpu": [
2521 | "arm64"
2522 | ],
2523 | "dev": true,
2524 | "license": "MIT",
2525 | "optional": true,
2526 | "os": [
2527 | "linux"
2528 | ],
2529 | "engines": {
2530 | "node": ">=18"
2531 | }
2532 | },
2533 | "node_modules/vite/node_modules/@esbuild/linux-ia32": {
2534 | "version": "0.25.1",
2535 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
2536 | "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
2537 | "cpu": [
2538 | "ia32"
2539 | ],
2540 | "dev": true,
2541 | "license": "MIT",
2542 | "optional": true,
2543 | "os": [
2544 | "linux"
2545 | ],
2546 | "engines": {
2547 | "node": ">=18"
2548 | }
2549 | },
2550 | "node_modules/vite/node_modules/@esbuild/linux-loong64": {
2551 | "version": "0.25.1",
2552 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
2553 | "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
2554 | "cpu": [
2555 | "loong64"
2556 | ],
2557 | "dev": true,
2558 | "license": "MIT",
2559 | "optional": true,
2560 | "os": [
2561 | "linux"
2562 | ],
2563 | "engines": {
2564 | "node": ">=18"
2565 | }
2566 | },
2567 | "node_modules/vite/node_modules/@esbuild/linux-mips64el": {
2568 | "version": "0.25.1",
2569 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
2570 | "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
2571 | "cpu": [
2572 | "mips64el"
2573 | ],
2574 | "dev": true,
2575 | "license": "MIT",
2576 | "optional": true,
2577 | "os": [
2578 | "linux"
2579 | ],
2580 | "engines": {
2581 | "node": ">=18"
2582 | }
2583 | },
2584 | "node_modules/vite/node_modules/@esbuild/linux-ppc64": {
2585 | "version": "0.25.1",
2586 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
2587 | "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
2588 | "cpu": [
2589 | "ppc64"
2590 | ],
2591 | "dev": true,
2592 | "license": "MIT",
2593 | "optional": true,
2594 | "os": [
2595 | "linux"
2596 | ],
2597 | "engines": {
2598 | "node": ">=18"
2599 | }
2600 | },
2601 | "node_modules/vite/node_modules/@esbuild/linux-riscv64": {
2602 | "version": "0.25.1",
2603 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
2604 | "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
2605 | "cpu": [
2606 | "riscv64"
2607 | ],
2608 | "dev": true,
2609 | "license": "MIT",
2610 | "optional": true,
2611 | "os": [
2612 | "linux"
2613 | ],
2614 | "engines": {
2615 | "node": ">=18"
2616 | }
2617 | },
2618 | "node_modules/vite/node_modules/@esbuild/linux-s390x": {
2619 | "version": "0.25.1",
2620 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
2621 | "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
2622 | "cpu": [
2623 | "s390x"
2624 | ],
2625 | "dev": true,
2626 | "license": "MIT",
2627 | "optional": true,
2628 | "os": [
2629 | "linux"
2630 | ],
2631 | "engines": {
2632 | "node": ">=18"
2633 | }
2634 | },
2635 | "node_modules/vite/node_modules/@esbuild/linux-x64": {
2636 | "version": "0.25.1",
2637 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
2638 | "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
2639 | "cpu": [
2640 | "x64"
2641 | ],
2642 | "dev": true,
2643 | "license": "MIT",
2644 | "optional": true,
2645 | "os": [
2646 | "linux"
2647 | ],
2648 | "engines": {
2649 | "node": ">=18"
2650 | }
2651 | },
2652 | "node_modules/vite/node_modules/@esbuild/netbsd-x64": {
2653 | "version": "0.25.1",
2654 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
2655 | "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
2656 | "cpu": [
2657 | "x64"
2658 | ],
2659 | "dev": true,
2660 | "license": "MIT",
2661 | "optional": true,
2662 | "os": [
2663 | "netbsd"
2664 | ],
2665 | "engines": {
2666 | "node": ">=18"
2667 | }
2668 | },
2669 | "node_modules/vite/node_modules/@esbuild/openbsd-x64": {
2670 | "version": "0.25.1",
2671 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
2672 | "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
2673 | "cpu": [
2674 | "x64"
2675 | ],
2676 | "dev": true,
2677 | "license": "MIT",
2678 | "optional": true,
2679 | "os": [
2680 | "openbsd"
2681 | ],
2682 | "engines": {
2683 | "node": ">=18"
2684 | }
2685 | },
2686 | "node_modules/vite/node_modules/@esbuild/sunos-x64": {
2687 | "version": "0.25.1",
2688 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
2689 | "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
2690 | "cpu": [
2691 | "x64"
2692 | ],
2693 | "dev": true,
2694 | "license": "MIT",
2695 | "optional": true,
2696 | "os": [
2697 | "sunos"
2698 | ],
2699 | "engines": {
2700 | "node": ">=18"
2701 | }
2702 | },
2703 | "node_modules/vite/node_modules/@esbuild/win32-arm64": {
2704 | "version": "0.25.1",
2705 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
2706 | "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
2707 | "cpu": [
2708 | "arm64"
2709 | ],
2710 | "dev": true,
2711 | "license": "MIT",
2712 | "optional": true,
2713 | "os": [
2714 | "win32"
2715 | ],
2716 | "engines": {
2717 | "node": ">=18"
2718 | }
2719 | },
2720 | "node_modules/vite/node_modules/@esbuild/win32-ia32": {
2721 | "version": "0.25.1",
2722 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
2723 | "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
2724 | "cpu": [
2725 | "ia32"
2726 | ],
2727 | "dev": true,
2728 | "license": "MIT",
2729 | "optional": true,
2730 | "os": [
2731 | "win32"
2732 | ],
2733 | "engines": {
2734 | "node": ">=18"
2735 | }
2736 | },
2737 | "node_modules/vite/node_modules/@esbuild/win32-x64": {
2738 | "version": "0.25.1",
2739 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
2740 | "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
2741 | "cpu": [
2742 | "x64"
2743 | ],
2744 | "dev": true,
2745 | "license": "MIT",
2746 | "optional": true,
2747 | "os": [
2748 | "win32"
2749 | ],
2750 | "engines": {
2751 | "node": ">=18"
2752 | }
2753 | },
2754 | "node_modules/vite/node_modules/esbuild": {
2755 | "version": "0.25.1",
2756 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
2757 | "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
2758 | "dev": true,
2759 | "hasInstallScript": true,
2760 | "license": "MIT",
2761 | "bin": {
2762 | "esbuild": "bin/esbuild"
2763 | },
2764 | "engines": {
2765 | "node": ">=18"
2766 | },
2767 | "optionalDependencies": {
2768 | "@esbuild/aix-ppc64": "0.25.1",
2769 | "@esbuild/android-arm": "0.25.1",
2770 | "@esbuild/android-arm64": "0.25.1",
2771 | "@esbuild/android-x64": "0.25.1",
2772 | "@esbuild/darwin-arm64": "0.25.1",
2773 | "@esbuild/darwin-x64": "0.25.1",
2774 | "@esbuild/freebsd-arm64": "0.25.1",
2775 | "@esbuild/freebsd-x64": "0.25.1",
2776 | "@esbuild/linux-arm": "0.25.1",
2777 | "@esbuild/linux-arm64": "0.25.1",
2778 | "@esbuild/linux-ia32": "0.25.1",
2779 | "@esbuild/linux-loong64": "0.25.1",
2780 | "@esbuild/linux-mips64el": "0.25.1",
2781 | "@esbuild/linux-ppc64": "0.25.1",
2782 | "@esbuild/linux-riscv64": "0.25.1",
2783 | "@esbuild/linux-s390x": "0.25.1",
2784 | "@esbuild/linux-x64": "0.25.1",
2785 | "@esbuild/netbsd-arm64": "0.25.1",
2786 | "@esbuild/netbsd-x64": "0.25.1",
2787 | "@esbuild/openbsd-arm64": "0.25.1",
2788 | "@esbuild/openbsd-x64": "0.25.1",
2789 | "@esbuild/sunos-x64": "0.25.1",
2790 | "@esbuild/win32-arm64": "0.25.1",
2791 | "@esbuild/win32-ia32": "0.25.1",
2792 | "@esbuild/win32-x64": "0.25.1"
2793 | }
2794 | },
2795 | "node_modules/vitest": {
2796 | "version": "3.0.8",
2797 | "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz",
2798 | "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==",
2799 | "dev": true,
2800 | "license": "MIT",
2801 | "dependencies": {
2802 | "@vitest/expect": "3.0.8",
2803 | "@vitest/mocker": "3.0.8",
2804 | "@vitest/pretty-format": "^3.0.8",
2805 | "@vitest/runner": "3.0.8",
2806 | "@vitest/snapshot": "3.0.8",
2807 | "@vitest/spy": "3.0.8",
2808 | "@vitest/utils": "3.0.8",
2809 | "chai": "^5.2.0",
2810 | "debug": "^4.4.0",
2811 | "expect-type": "^1.1.0",
2812 | "magic-string": "^0.30.17",
2813 | "pathe": "^2.0.3",
2814 | "std-env": "^3.8.0",
2815 | "tinybench": "^2.9.0",
2816 | "tinyexec": "^0.3.2",
2817 | "tinypool": "^1.0.2",
2818 | "tinyrainbow": "^2.0.0",
2819 | "vite": "^5.0.0 || ^6.0.0",
2820 | "vite-node": "3.0.8",
2821 | "why-is-node-running": "^2.3.0"
2822 | },
2823 | "bin": {
2824 | "vitest": "vitest.mjs"
2825 | },
2826 | "engines": {
2827 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
2828 | },
2829 | "funding": {
2830 | "url": "https://opencollective.com/vitest"
2831 | },
2832 | "peerDependencies": {
2833 | "@edge-runtime/vm": "*",
2834 | "@types/debug": "^4.1.12",
2835 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
2836 | "@vitest/browser": "3.0.8",
2837 | "@vitest/ui": "3.0.8",
2838 | "happy-dom": "*",
2839 | "jsdom": "*"
2840 | },
2841 | "peerDependenciesMeta": {
2842 | "@edge-runtime/vm": {
2843 | "optional": true
2844 | },
2845 | "@types/debug": {
2846 | "optional": true
2847 | },
2848 | "@types/node": {
2849 | "optional": true
2850 | },
2851 | "@vitest/browser": {
2852 | "optional": true
2853 | },
2854 | "@vitest/ui": {
2855 | "optional": true
2856 | },
2857 | "happy-dom": {
2858 | "optional": true
2859 | },
2860 | "jsdom": {
2861 | "optional": true
2862 | }
2863 | }
2864 | },
2865 | "node_modules/why-is-node-running": {
2866 | "version": "2.3.0",
2867 | "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
2868 | "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
2869 | "dev": true,
2870 | "license": "MIT",
2871 | "dependencies": {
2872 | "siginfo": "^2.0.0",
2873 | "stackback": "0.0.2"
2874 | },
2875 | "bin": {
2876 | "why-is-node-running": "cli.js"
2877 | },
2878 | "engines": {
2879 | "node": ">=8"
2880 | }
2881 | },
2882 | "node_modules/workerd": {
2883 | "version": "1.20250310.0",
2884 | "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250310.0.tgz",
2885 | "integrity": "sha512-bAaZ9Bmts3mArbIrXYAtr+ZRsAJAAUEsCtvwfBavIYXaZ5sgdEOJBEiBbvsHp6CsVObegOM85tIWpYLpbTxQrQ==",
2886 | "dev": true,
2887 | "hasInstallScript": true,
2888 | "license": "Apache-2.0",
2889 | "bin": {
2890 | "workerd": "bin/workerd"
2891 | },
2892 | "engines": {
2893 | "node": ">=16"
2894 | },
2895 | "optionalDependencies": {
2896 | "@cloudflare/workerd-darwin-64": "1.20250310.0",
2897 | "@cloudflare/workerd-darwin-arm64": "1.20250310.0",
2898 | "@cloudflare/workerd-linux-64": "1.20250310.0",
2899 | "@cloudflare/workerd-linux-arm64": "1.20250310.0",
2900 | "@cloudflare/workerd-windows-64": "1.20250310.0"
2901 | }
2902 | },
2903 | "node_modules/wrangler": {
2904 | "version": "3.114.1",
2905 | "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.114.1.tgz",
2906 | "integrity": "sha512-GuS6SrnAZZDiNb20Vf2Ww0KCfnctHUEzi5GyML1i2brfQPI6BikgI/W/u6XDtYtah0OkbIWIiNJ+SdhWT7KEcw==",
2907 | "dev": true,
2908 | "license": "MIT OR Apache-2.0",
2909 | "dependencies": {
2910 | "@cloudflare/kv-asset-handler": "0.3.4",
2911 | "@cloudflare/unenv-preset": "2.0.2",
2912 | "@esbuild-plugins/node-globals-polyfill": "0.2.3",
2913 | "@esbuild-plugins/node-modules-polyfill": "0.2.2",
2914 | "blake3-wasm": "2.1.5",
2915 | "esbuild": "0.17.19",
2916 | "miniflare": "3.20250310.0",
2917 | "path-to-regexp": "6.3.0",
2918 | "unenv": "2.0.0-rc.14",
2919 | "workerd": "1.20250310.0"
2920 | },
2921 | "bin": {
2922 | "wrangler": "bin/wrangler.js",
2923 | "wrangler2": "bin/wrangler.js"
2924 | },
2925 | "engines": {
2926 | "node": ">=16.17.0"
2927 | },
2928 | "optionalDependencies": {
2929 | "fsevents": "~2.3.2",
2930 | "sharp": "^0.33.5"
2931 | },
2932 | "peerDependencies": {
2933 | "@cloudflare/workers-types": "^4.20250310.0"
2934 | },
2935 | "peerDependenciesMeta": {
2936 | "@cloudflare/workers-types": {
2937 | "optional": true
2938 | }
2939 | }
2940 | },
2941 | "node_modules/ws": {
2942 | "version": "8.18.0",
2943 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
2944 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
2945 | "dev": true,
2946 | "license": "MIT",
2947 | "engines": {
2948 | "node": ">=10.0.0"
2949 | },
2950 | "peerDependencies": {
2951 | "bufferutil": "^4.0.1",
2952 | "utf-8-validate": ">=5.0.2"
2953 | },
2954 | "peerDependenciesMeta": {
2955 | "bufferutil": {
2956 | "optional": true
2957 | },
2958 | "utf-8-validate": {
2959 | "optional": true
2960 | }
2961 | }
2962 | },
2963 | "node_modules/youch": {
2964 | "version": "3.2.3",
2965 | "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz",
2966 | "integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==",
2967 | "dev": true,
2968 | "license": "MIT",
2969 | "dependencies": {
2970 | "cookie": "^0.5.0",
2971 | "mustache": "^4.2.0",
2972 | "stacktracey": "^2.1.8"
2973 | }
2974 | },
2975 | "node_modules/zod": {
2976 | "version": "3.24.2",
2977 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz",
2978 | "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==",
2979 | "dev": true,
2980 | "license": "MIT",
2981 | "funding": {
2982 | "url": "https://github.com/sponsors/colinhacks"
2983 | }
2984 | }
2985 | }
2986 | }
2987 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "cloudflare-doh",
3 | "version": "0.0.0",
4 | "private": true,
5 | "scripts": {
6 | "deploy": "wrangler deploy",
7 | "dev": "wrangler dev",
8 | "start": "wrangler dev",
9 | "test": "vitest"
10 | },
11 | "devDependencies": {
12 | "@cloudflare/vitest-pool-workers": "^0.7.5",
13 | "vitest": "~3.0.7",
14 | "wrangler": "^3.114.1"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/test/index.spec.js:
--------------------------------------------------------------------------------
1 | import { env, createExecutionContext, waitOnExecutionContext, SELF } from 'cloudflare:test';
2 | import { describe, it, expect } from 'vitest';
3 | import worker from '../src';
4 |
5 | describe('Hello World worker', () => {
6 | it('responds with Hello World! (unit style)', async () => {
7 | const request = new Request('http://example.com');
8 | // Create an empty context to pass to `worker.fetch()`.
9 | const ctx = createExecutionContext();
10 | const response = await worker.fetch(request, env, ctx);
11 | // Wait for all `Promise`s passed to `ctx.waitUntil()` to settle before running test assertions
12 | await waitOnExecutionContext(ctx);
13 | expect(await response.text()).toMatchInlineSnapshot(`"Hello World!"`);
14 | });
15 |
16 | it('responds with Hello World! (integration style)', async () => {
17 | const response = await SELF.fetch('http://example.com');
18 | expect(await response.text()).toMatchInlineSnapshot(`"Hello World!"`);
19 | });
20 | });
21 |
--------------------------------------------------------------------------------
/vitest.config.js:
--------------------------------------------------------------------------------
1 | import { defineWorkersConfig } from '@cloudflare/vitest-pool-workers/config';
2 |
3 | export default defineWorkersConfig({
4 | test: {
5 | poolOptions: {
6 | workers: {
7 | wrangler: { configPath: './wrangler.jsonc' },
8 | },
9 | },
10 | },
11 | });
12 |
--------------------------------------------------------------------------------
/wrangler.jsonc:
--------------------------------------------------------------------------------
1 | /**
2 | * For more details on how to configure Wrangler, refer to:
3 | * https://developers.cloudflare.com/workers/wrangler/configuration/
4 | */
5 | {
6 | "$schema": "node_modules/wrangler/config-schema.json",
7 | "name": "cloudflare-doh",
8 | "main": "_worker.js",
9 | "compatibility_date": "2025-03-11",
10 | "observability": {
11 | "enabled": true
12 | }
13 | /**
14 | * Smart Placement
15 | * Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement
16 | */
17 | // "placement": { "mode": "smart" },
18 |
19 | /**
20 | * Bindings
21 | * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including
22 | * databases, object storage, AI inference, real-time communication and more.
23 | * https://developers.cloudflare.com/workers/runtime-apis/bindings/
24 | */
25 |
26 | /**
27 | * Environment Variables
28 | * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
29 | */
30 | // "vars": { "MY_VARIABLE": "production_value" },
31 | /**
32 | * Note: Use secrets to store sensitive data.
33 | * https://developers.cloudflare.com/workers/configuration/secrets/
34 | */
35 |
36 | /**
37 | * Static Assets
38 | * https://developers.cloudflare.com/workers/static-assets/binding/
39 | */
40 | // "assets": { "directory": "./public/", "binding": "ASSETS" },
41 |
42 | /**
43 | * Service Bindings (communicate between multiple Workers)
44 | * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
45 | */
46 | // "services": [{ "binding": "MY_SERVICE", "service": "my-service" }]
47 | }
48 |
--------------------------------------------------------------------------------