a reactive (signals based) hypermedia web framework (wip) stormlightlabs.github.io/volt/
hypermedia frontend signals
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: dev cli

+3764 -1
+4
cli/.gitignore
··· 1 + node_modules 2 + dist 3 + *.log 4 + .DS_Store
+73
cli/README.md
··· 1 + # Volt CLI 2 + 3 + Development tools for the Volt.js project. Uses: 4 + 5 + - `commander` for command-line parsing 6 + - `chalk` for colored output 7 + - TypeScript Compiler API for parsing source files 8 + 9 + ## Installation 10 + 11 + From the project root: 12 + 13 + ```sh 14 + pnpm install 15 + ``` 16 + 17 + The `volt` command will be available after installation. 18 + 19 + ## Commands 20 + 21 + ### `volt docs` 22 + 23 + Generates API documentation from TypeScript source files. 24 + 25 + - Scans all `.ts` files in `src/` 26 + - Extracts JSDoc comments and type signatures 27 + - Outputs markdown files to `docs/api/` 28 + - Supports `@example` tags in JSDoc 29 + 30 + Generated documentation includes: 31 + 32 + - Function signatures and descriptions 33 + - Interface definitions and members 34 + - Type aliases 35 + - Code examples from `@example` tags 36 + 37 + ### `volt stats` 38 + 39 + Displays lines of code statistics. 40 + 41 + - Default: counts code in `src/` only 42 + - Excludes JSDoc comments, single-line comments, and empty lines 43 + - Use `--full` to include test files 44 + 45 + Outputs: 46 + 47 + - Total files 48 + - Total lines (including comments) 49 + - Code lines (excluding docs/comments) 50 + - Documentation/comment lines 51 + 52 + ## Development 53 + 54 + ### Build 55 + 56 + ```sh 57 + pnpm build 58 + ``` 59 + 60 + Compiles TypeScript to `dist/` using tsdown. 61 + 62 + ### Test 63 + 64 + ```sh 65 + pnpm test # Watch mode 66 + pnpm test:run # Single run 67 + ``` 68 + 69 + ### Type Check 70 + 71 + ```sh 72 + pnpm typecheck 73 + ```
+66
cli/eslint.config.js
··· 1 + import { includeIgnoreFile } from "@eslint/compat"; 2 + import js from "@eslint/js"; 3 + import unicorn from "eslint-plugin-unicorn"; 4 + import globals from "globals"; 5 + import { fileURLToPath } from "node:url"; 6 + import ts from "typescript-eslint"; 7 + 8 + const gitignorePath = fileURLToPath( 9 + new globals.URL("./.gitignore", import.meta.url) 10 + ); 11 + 12 + /** @type {import('eslint').Linter.Config} */ 13 + export default ts.config( 14 + includeIgnoreFile(gitignorePath), 15 + js.configs.recommended, 16 + unicorn.configs.recommended, 17 + ...ts.configs.recommended, 18 + { 19 + languageOptions: { 20 + globals: { ...globals.browser, ...globals.node }, 21 + parserOptions: { 22 + project: ["./tsconfig.json"], 23 + tsconfigRootDir: import.meta.dirname, 24 + }, 25 + }, 26 + ignores: ["eslint.config.js"], 27 + rules: { 28 + "no-undef": "off", 29 + "@typescript-eslint/no-unused-vars": [ 30 + "warn", 31 + { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, 32 + ], 33 + "@typescript-eslint/no-explicit-any": "off", 34 + "unicorn/prefer-ternary": "off", 35 + "no-console": "off", 36 + "unicorn/filename-case": [ 37 + "warn", 38 + { 39 + cases: { pascalCase: true, kebabCase: true }, 40 + multipleFileExtensions: false, 41 + }, 42 + ], 43 + "unicorn/no-null": "off", 44 + "unicorn/prevent-abbreviations": [ 45 + "warn", 46 + { 47 + replacements: { 48 + src: { source: false }, 49 + dir: { direction: false, directory: false }, 50 + docs: { documentation: false, documents: false }, 51 + doc: { document: false }, 52 + props: { properties: false }, 53 + params: { parameters: false }, 54 + param: { parameter: false }, 55 + opts: { options: false }, 56 + args: { arguments: false }, 57 + fn: { function: false }, 58 + }, 59 + }, 60 + ], 61 + }, 62 + }, 63 + { 64 + rules: { "unicorn/prefer-top-level-await": "off" }, 65 + } 66 + );
+33
cli/package.json
··· 1 + { 2 + "name": "@volt/cli", 3 + "version": "0.1.0", 4 + "description": "CLI tools for Volt.js development", 5 + "type": "module", 6 + "license": "MIT", 7 + "bin": { "volt": "./dist/index.js" }, 8 + "files": ["dist"], 9 + "main": "./dist/index.js", 10 + "module": "./dist/index.js", 11 + "types": "./dist/index.d.ts", 12 + "exports": { ".": "./dist/index.js", "./package.json": "./package.json" }, 13 + "scripts": { 14 + "build": "tsdown", 15 + "dev": "tsdown --watch", 16 + "test": "vitest", 17 + "test:run": "vitest run", 18 + "typecheck": "tsc --noEmit" 19 + }, 20 + "devDependencies": { 21 + "@eslint/compat": "^1.4.0", 22 + "@eslint/js": "^9.38.0", 23 + "@types/node": "^24.7.2", 24 + "bumpp": "^10.3.1", 25 + "eslint": "^9.38.0", 26 + "eslint-plugin-unicorn": "^61.0.2", 27 + "globals": "^16.4.0", 28 + "tsdown": "^0.15.6", 29 + "typescript-eslint": "^8.46.1", 30 + "vitest": "^3.2.4" 31 + }, 32 + "dependencies": { "chalk": "^5.6.2", "commander": "^14.0.1", "typescript": "^5.9.3" } 33 + }
+2846
cli/pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + dependencies: 11 + chalk: 12 + specifier: ^5.6.2 13 + version: 5.6.2 14 + commander: 15 + specifier: ^14.0.1 16 + version: 14.0.1 17 + typescript: 18 + specifier: ^5.9.3 19 + version: 5.9.3 20 + devDependencies: 21 + '@eslint/compat': 22 + specifier: ^1.4.0 23 + version: 1.4.0(eslint@9.38.0(jiti@2.6.1)) 24 + '@eslint/js': 25 + specifier: ^9.38.0 26 + version: 9.38.0 27 + '@types/node': 28 + specifier: ^24.7.2 29 + version: 24.8.1 30 + bumpp: 31 + specifier: ^10.3.1 32 + version: 10.3.1 33 + eslint: 34 + specifier: ^9.38.0 35 + version: 9.38.0(jiti@2.6.1) 36 + eslint-plugin-unicorn: 37 + specifier: ^61.0.2 38 + version: 61.0.2(eslint@9.38.0(jiti@2.6.1)) 39 + globals: 40 + specifier: ^16.4.0 41 + version: 16.4.0 42 + tsdown: 43 + specifier: ^0.15.6 44 + version: 0.15.7(typescript@5.9.3) 45 + typescript-eslint: 46 + specifier: ^8.46.1 47 + version: 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 48 + vitest: 49 + specifier: ^3.2.4 50 + version: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1) 51 + 52 + packages: 53 + 54 + '@babel/generator@7.28.3': 55 + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 56 + engines: {node: '>=6.9.0'} 57 + 58 + '@babel/helper-string-parser@7.27.1': 59 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 60 + engines: {node: '>=6.9.0'} 61 + 62 + '@babel/helper-validator-identifier@7.27.1': 63 + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 64 + engines: {node: '>=6.9.0'} 65 + 66 + '@babel/parser@7.28.4': 67 + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} 68 + engines: {node: '>=6.0.0'} 69 + hasBin: true 70 + 71 + '@babel/types@7.28.4': 72 + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} 73 + engines: {node: '>=6.9.0'} 74 + 75 + '@emnapi/core@1.5.0': 76 + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} 77 + 78 + '@emnapi/runtime@1.5.0': 79 + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} 80 + 81 + '@emnapi/wasi-threads@1.1.0': 82 + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 83 + 84 + '@esbuild/aix-ppc64@0.25.11': 85 + resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} 86 + engines: {node: '>=18'} 87 + cpu: [ppc64] 88 + os: [aix] 89 + 90 + '@esbuild/android-arm64@0.25.11': 91 + resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} 92 + engines: {node: '>=18'} 93 + cpu: [arm64] 94 + os: [android] 95 + 96 + '@esbuild/android-arm@0.25.11': 97 + resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} 98 + engines: {node: '>=18'} 99 + cpu: [arm] 100 + os: [android] 101 + 102 + '@esbuild/android-x64@0.25.11': 103 + resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} 104 + engines: {node: '>=18'} 105 + cpu: [x64] 106 + os: [android] 107 + 108 + '@esbuild/darwin-arm64@0.25.11': 109 + resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} 110 + engines: {node: '>=18'} 111 + cpu: [arm64] 112 + os: [darwin] 113 + 114 + '@esbuild/darwin-x64@0.25.11': 115 + resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} 116 + engines: {node: '>=18'} 117 + cpu: [x64] 118 + os: [darwin] 119 + 120 + '@esbuild/freebsd-arm64@0.25.11': 121 + resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} 122 + engines: {node: '>=18'} 123 + cpu: [arm64] 124 + os: [freebsd] 125 + 126 + '@esbuild/freebsd-x64@0.25.11': 127 + resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} 128 + engines: {node: '>=18'} 129 + cpu: [x64] 130 + os: [freebsd] 131 + 132 + '@esbuild/linux-arm64@0.25.11': 133 + resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} 134 + engines: {node: '>=18'} 135 + cpu: [arm64] 136 + os: [linux] 137 + 138 + '@esbuild/linux-arm@0.25.11': 139 + resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} 140 + engines: {node: '>=18'} 141 + cpu: [arm] 142 + os: [linux] 143 + 144 + '@esbuild/linux-ia32@0.25.11': 145 + resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} 146 + engines: {node: '>=18'} 147 + cpu: [ia32] 148 + os: [linux] 149 + 150 + '@esbuild/linux-loong64@0.25.11': 151 + resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} 152 + engines: {node: '>=18'} 153 + cpu: [loong64] 154 + os: [linux] 155 + 156 + '@esbuild/linux-mips64el@0.25.11': 157 + resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} 158 + engines: {node: '>=18'} 159 + cpu: [mips64el] 160 + os: [linux] 161 + 162 + '@esbuild/linux-ppc64@0.25.11': 163 + resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} 164 + engines: {node: '>=18'} 165 + cpu: [ppc64] 166 + os: [linux] 167 + 168 + '@esbuild/linux-riscv64@0.25.11': 169 + resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} 170 + engines: {node: '>=18'} 171 + cpu: [riscv64] 172 + os: [linux] 173 + 174 + '@esbuild/linux-s390x@0.25.11': 175 + resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} 176 + engines: {node: '>=18'} 177 + cpu: [s390x] 178 + os: [linux] 179 + 180 + '@esbuild/linux-x64@0.25.11': 181 + resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} 182 + engines: {node: '>=18'} 183 + cpu: [x64] 184 + os: [linux] 185 + 186 + '@esbuild/netbsd-arm64@0.25.11': 187 + resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} 188 + engines: {node: '>=18'} 189 + cpu: [arm64] 190 + os: [netbsd] 191 + 192 + '@esbuild/netbsd-x64@0.25.11': 193 + resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} 194 + engines: {node: '>=18'} 195 + cpu: [x64] 196 + os: [netbsd] 197 + 198 + '@esbuild/openbsd-arm64@0.25.11': 199 + resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} 200 + engines: {node: '>=18'} 201 + cpu: [arm64] 202 + os: [openbsd] 203 + 204 + '@esbuild/openbsd-x64@0.25.11': 205 + resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} 206 + engines: {node: '>=18'} 207 + cpu: [x64] 208 + os: [openbsd] 209 + 210 + '@esbuild/openharmony-arm64@0.25.11': 211 + resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} 212 + engines: {node: '>=18'} 213 + cpu: [arm64] 214 + os: [openharmony] 215 + 216 + '@esbuild/sunos-x64@0.25.11': 217 + resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} 218 + engines: {node: '>=18'} 219 + cpu: [x64] 220 + os: [sunos] 221 + 222 + '@esbuild/win32-arm64@0.25.11': 223 + resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} 224 + engines: {node: '>=18'} 225 + cpu: [arm64] 226 + os: [win32] 227 + 228 + '@esbuild/win32-ia32@0.25.11': 229 + resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} 230 + engines: {node: '>=18'} 231 + cpu: [ia32] 232 + os: [win32] 233 + 234 + '@esbuild/win32-x64@0.25.11': 235 + resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} 236 + engines: {node: '>=18'} 237 + cpu: [x64] 238 + os: [win32] 239 + 240 + '@eslint-community/eslint-utils@4.9.0': 241 + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} 242 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 243 + peerDependencies: 244 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 245 + 246 + '@eslint-community/regexpp@4.12.1': 247 + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 248 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 249 + 250 + '@eslint/compat@1.4.0': 251 + resolution: {integrity: sha512-DEzm5dKeDBPm3r08Ixli/0cmxr8LkRdwxMRUIJBlSCpAwSrvFEJpVBzV+66JhDxiaqKxnRzCXhtiMiczF7Hglg==} 252 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 253 + peerDependencies: 254 + eslint: ^8.40 || 9 255 + peerDependenciesMeta: 256 + eslint: 257 + optional: true 258 + 259 + '@eslint/config-array@0.21.1': 260 + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} 261 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 262 + 263 + '@eslint/config-helpers@0.4.1': 264 + resolution: {integrity: sha512-csZAzkNhsgwb0I/UAV6/RGFTbiakPCf0ZrGmrIxQpYvGZ00PhTkSnyKNolphgIvmnJeGw6rcGVEXfTzUnFuEvw==} 265 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 266 + 267 + '@eslint/core@0.15.2': 268 + resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} 269 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 270 + 271 + '@eslint/core@0.16.0': 272 + resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==} 273 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 274 + 275 + '@eslint/eslintrc@3.3.1': 276 + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 277 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 278 + 279 + '@eslint/js@9.38.0': 280 + resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==} 281 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 282 + 283 + '@eslint/object-schema@2.1.7': 284 + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} 285 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 286 + 287 + '@eslint/plugin-kit@0.3.5': 288 + resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} 289 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 290 + 291 + '@eslint/plugin-kit@0.4.0': 292 + resolution: {integrity: sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==} 293 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 294 + 295 + '@humanfs/core@0.19.1': 296 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 297 + engines: {node: '>=18.18.0'} 298 + 299 + '@humanfs/node@0.16.7': 300 + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} 301 + engines: {node: '>=18.18.0'} 302 + 303 + '@humanwhocodes/module-importer@1.0.1': 304 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 305 + engines: {node: '>=12.22'} 306 + 307 + '@humanwhocodes/retry@0.4.3': 308 + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 309 + engines: {node: '>=18.18'} 310 + 311 + '@jridgewell/gen-mapping@0.3.13': 312 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 313 + 314 + '@jridgewell/resolve-uri@3.1.2': 315 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 316 + engines: {node: '>=6.0.0'} 317 + 318 + '@jridgewell/sourcemap-codec@1.5.5': 319 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 320 + 321 + '@jridgewell/trace-mapping@0.3.31': 322 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 323 + 324 + '@napi-rs/wasm-runtime@1.0.7': 325 + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} 326 + 327 + '@nodelib/fs.scandir@2.1.5': 328 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 329 + engines: {node: '>= 8'} 330 + 331 + '@nodelib/fs.stat@2.0.5': 332 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 333 + engines: {node: '>= 8'} 334 + 335 + '@nodelib/fs.walk@1.2.8': 336 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 337 + engines: {node: '>= 8'} 338 + 339 + '@oxc-project/types@0.94.0': 340 + resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} 341 + 342 + '@quansync/fs@0.1.5': 343 + resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} 344 + 345 + '@rolldown/binding-android-arm64@1.0.0-beta.43': 346 + resolution: {integrity: sha512-TP8bcPOb1s6UmY5syhXrDn9k0XkYcw+XaoylTN4cJxf0JOVS2j682I3aTcpfT51hOFGr2bRwNKN9RZ19XxeQbA==} 347 + engines: {node: ^20.19.0 || >=22.12.0} 348 + cpu: [arm64] 349 + os: [android] 350 + 351 + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': 352 + resolution: {integrity: sha512-kuVWnZsE4vEjMF/10SbSUyzucIW2zmdsqFghYMqy+fsjXnRHg0luTU6qWF8IqJf4Cbpm9NEZRnjIEPpAbdiSNQ==} 353 + engines: {node: ^20.19.0 || >=22.12.0} 354 + cpu: [arm64] 355 + os: [darwin] 356 + 357 + '@rolldown/binding-darwin-x64@1.0.0-beta.43': 358 + resolution: {integrity: sha512-u9Ps4sh6lcmJ3vgLtyEg/x4jlhI64U0mM93Ew+tlfFdLDe7yKyA+Fe80cpr2n1mNCeZXrvTSbZluKpXQ0GxLjw==} 359 + engines: {node: ^20.19.0 || >=22.12.0} 360 + cpu: [x64] 361 + os: [darwin] 362 + 363 + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': 364 + resolution: {integrity: sha512-h9lUtVtXgfbk/tnicMpbFfZ3DJvk5Zn2IvmlC1/e0+nUfwoc/TFqpfrRRqcNBXk/e+xiWMSKv6b0MF8N+Rtvlg==} 365 + engines: {node: ^20.19.0 || >=22.12.0} 366 + cpu: [x64] 367 + os: [freebsd] 368 + 369 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': 370 + resolution: {integrity: sha512-IX2C6bA6wM2rX/RvD75ko+ix9yxPKjKGGq7pOhB8wGI4Z4fqX5B1nDHga/qMDmAdCAR1m9ymzxkmqhm/AFYf7A==} 371 + engines: {node: ^20.19.0 || >=22.12.0} 372 + cpu: [arm] 373 + os: [linux] 374 + 375 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': 376 + resolution: {integrity: sha512-mcjd57vEj+CEQbZAzUiaxNzNgwwgOpFtZBWcINm8DNscvkXl5b/s622Z1dqGNWSdrZmdjdC6LWMvu8iHM6v9sQ==} 377 + engines: {node: ^20.19.0 || >=22.12.0} 378 + cpu: [arm64] 379 + os: [linux] 380 + 381 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': 382 + resolution: {integrity: sha512-Pa8QMwlkrztTo/1mVjZmPIQ44tCSci10TBqxzVBvXVA5CFh5EpiEi99fPSll2dHG2uT4dCOMeC6fIhyDdb0zXA==} 383 + engines: {node: ^20.19.0 || >=22.12.0} 384 + cpu: [arm64] 385 + os: [linux] 386 + 387 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': 388 + resolution: {integrity: sha512-BgynXKMjeaX4AfWLARhOKDetBOOghnSiVRjAHVvhiAaDXgdQN8e65mSmXRiVoVtD3cHXx/cfU8Gw0p0K+qYKVQ==} 389 + engines: {node: ^20.19.0 || >=22.12.0} 390 + cpu: [x64] 391 + os: [linux] 392 + 393 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': 394 + resolution: {integrity: sha512-VIsoPlOB/tDSAw9CySckBYysoIBqLeps1/umNSYUD8pMtalJyzMTneAVI1HrUdf4ceFmQ5vARoLIXSsPwVFxNg==} 395 + engines: {node: ^20.19.0 || >=22.12.0} 396 + cpu: [x64] 397 + os: [linux] 398 + 399 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': 400 + resolution: {integrity: sha512-YDXTxVJG67PqTQMKyjVJSddoPbSWJ4yRz/E3xzTLHqNrTDGY0UuhG8EMr8zsYnfH/0cPFJ3wjQd/hJWHuR6nkA==} 401 + engines: {node: ^20.19.0 || >=22.12.0} 402 + cpu: [arm64] 403 + os: [openharmony] 404 + 405 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': 406 + resolution: {integrity: sha512-3M+2DmorXvDuAIGYQ9Z93Oy1G9ETkejLwdXXb1uRTgKN9pMcu7N+KG2zDrJwqyxeeLIFE22AZGtSJm3PJbNu9Q==} 407 + engines: {node: '>=14.0.0'} 408 + cpu: [wasm32] 409 + 410 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': 411 + resolution: {integrity: sha512-/B1j1pJs33y9ywtslOMxryUPHq8zIGu/OGEc2gyed0slimJ8fX2uR/SaJVhB4+NEgCFIeYDR4CX6jynAkeRuCA==} 412 + engines: {node: ^20.19.0 || >=22.12.0} 413 + cpu: [arm64] 414 + os: [win32] 415 + 416 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': 417 + resolution: {integrity: sha512-29oG1swCz7hNP+CQYrsM4EtylsKwuYzM8ljqbqC5TsQwmKat7P8ouDpImsqg/GZxFSXcPP9ezQm0Q0wQwGM3JA==} 418 + engines: {node: ^20.19.0 || >=22.12.0} 419 + cpu: [ia32] 420 + os: [win32] 421 + 422 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': 423 + resolution: {integrity: sha512-eWBV1Ef3gfGNehxVGCyXs7wLayRIgCmyItuCZwYYXW5bsk4EvR4n2GP5m3ohjnx7wdiY3nLmwQfH2Knb5gbNZw==} 424 + engines: {node: ^20.19.0 || >=22.12.0} 425 + cpu: [x64] 426 + os: [win32] 427 + 428 + '@rolldown/pluginutils@1.0.0-beta.43': 429 + resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} 430 + 431 + '@rollup/rollup-android-arm-eabi@4.52.4': 432 + resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==} 433 + cpu: [arm] 434 + os: [android] 435 + 436 + '@rollup/rollup-android-arm64@4.52.4': 437 + resolution: {integrity: sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==} 438 + cpu: [arm64] 439 + os: [android] 440 + 441 + '@rollup/rollup-darwin-arm64@4.52.4': 442 + resolution: {integrity: sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==} 443 + cpu: [arm64] 444 + os: [darwin] 445 + 446 + '@rollup/rollup-darwin-x64@4.52.4': 447 + resolution: {integrity: sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==} 448 + cpu: [x64] 449 + os: [darwin] 450 + 451 + '@rollup/rollup-freebsd-arm64@4.52.4': 452 + resolution: {integrity: sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==} 453 + cpu: [arm64] 454 + os: [freebsd] 455 + 456 + '@rollup/rollup-freebsd-x64@4.52.4': 457 + resolution: {integrity: sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==} 458 + cpu: [x64] 459 + os: [freebsd] 460 + 461 + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': 462 + resolution: {integrity: sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==} 463 + cpu: [arm] 464 + os: [linux] 465 + 466 + '@rollup/rollup-linux-arm-musleabihf@4.52.4': 467 + resolution: {integrity: sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==} 468 + cpu: [arm] 469 + os: [linux] 470 + 471 + '@rollup/rollup-linux-arm64-gnu@4.52.4': 472 + resolution: {integrity: sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==} 473 + cpu: [arm64] 474 + os: [linux] 475 + 476 + '@rollup/rollup-linux-arm64-musl@4.52.4': 477 + resolution: {integrity: sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==} 478 + cpu: [arm64] 479 + os: [linux] 480 + 481 + '@rollup/rollup-linux-loong64-gnu@4.52.4': 482 + resolution: {integrity: sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==} 483 + cpu: [loong64] 484 + os: [linux] 485 + 486 + '@rollup/rollup-linux-ppc64-gnu@4.52.4': 487 + resolution: {integrity: sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==} 488 + cpu: [ppc64] 489 + os: [linux] 490 + 491 + '@rollup/rollup-linux-riscv64-gnu@4.52.4': 492 + resolution: {integrity: sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==} 493 + cpu: [riscv64] 494 + os: [linux] 495 + 496 + '@rollup/rollup-linux-riscv64-musl@4.52.4': 497 + resolution: {integrity: sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==} 498 + cpu: [riscv64] 499 + os: [linux] 500 + 501 + '@rollup/rollup-linux-s390x-gnu@4.52.4': 502 + resolution: {integrity: sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==} 503 + cpu: [s390x] 504 + os: [linux] 505 + 506 + '@rollup/rollup-linux-x64-gnu@4.52.4': 507 + resolution: {integrity: sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==} 508 + cpu: [x64] 509 + os: [linux] 510 + 511 + '@rollup/rollup-linux-x64-musl@4.52.4': 512 + resolution: {integrity: sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==} 513 + cpu: [x64] 514 + os: [linux] 515 + 516 + '@rollup/rollup-openharmony-arm64@4.52.4': 517 + resolution: {integrity: sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==} 518 + cpu: [arm64] 519 + os: [openharmony] 520 + 521 + '@rollup/rollup-win32-arm64-msvc@4.52.4': 522 + resolution: {integrity: sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==} 523 + cpu: [arm64] 524 + os: [win32] 525 + 526 + '@rollup/rollup-win32-ia32-msvc@4.52.4': 527 + resolution: {integrity: sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==} 528 + cpu: [ia32] 529 + os: [win32] 530 + 531 + '@rollup/rollup-win32-x64-gnu@4.52.4': 532 + resolution: {integrity: sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==} 533 + cpu: [x64] 534 + os: [win32] 535 + 536 + '@rollup/rollup-win32-x64-msvc@4.52.4': 537 + resolution: {integrity: sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==} 538 + cpu: [x64] 539 + os: [win32] 540 + 541 + '@tybys/wasm-util@0.10.1': 542 + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} 543 + 544 + '@types/chai@5.2.2': 545 + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} 546 + 547 + '@types/deep-eql@4.0.2': 548 + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 549 + 550 + '@types/estree@1.0.8': 551 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 552 + 553 + '@types/json-schema@7.0.15': 554 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 555 + 556 + '@types/node@24.8.1': 557 + resolution: {integrity: sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==} 558 + 559 + '@typescript-eslint/eslint-plugin@8.46.1': 560 + resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==} 561 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 562 + peerDependencies: 563 + '@typescript-eslint/parser': ^8.46.1 564 + eslint: ^8.57.0 || ^9.0.0 565 + typescript: '>=4.8.4 <6.0.0' 566 + 567 + '@typescript-eslint/parser@8.46.1': 568 + resolution: {integrity: sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==} 569 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 570 + peerDependencies: 571 + eslint: ^8.57.0 || ^9.0.0 572 + typescript: '>=4.8.4 <6.0.0' 573 + 574 + '@typescript-eslint/project-service@8.46.1': 575 + resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==} 576 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 577 + peerDependencies: 578 + typescript: '>=4.8.4 <6.0.0' 579 + 580 + '@typescript-eslint/scope-manager@8.46.1': 581 + resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==} 582 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 583 + 584 + '@typescript-eslint/tsconfig-utils@8.46.1': 585 + resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==} 586 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 587 + peerDependencies: 588 + typescript: '>=4.8.4 <6.0.0' 589 + 590 + '@typescript-eslint/type-utils@8.46.1': 591 + resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==} 592 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 593 + peerDependencies: 594 + eslint: ^8.57.0 || ^9.0.0 595 + typescript: '>=4.8.4 <6.0.0' 596 + 597 + '@typescript-eslint/types@8.46.1': 598 + resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} 599 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 600 + 601 + '@typescript-eslint/typescript-estree@8.46.1': 602 + resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==} 603 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 604 + peerDependencies: 605 + typescript: '>=4.8.4 <6.0.0' 606 + 607 + '@typescript-eslint/utils@8.46.1': 608 + resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==} 609 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 610 + peerDependencies: 611 + eslint: ^8.57.0 || ^9.0.0 612 + typescript: '>=4.8.4 <6.0.0' 613 + 614 + '@typescript-eslint/visitor-keys@8.46.1': 615 + resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==} 616 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 617 + 618 + '@vitest/expect@3.2.4': 619 + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} 620 + 621 + '@vitest/mocker@3.2.4': 622 + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} 623 + peerDependencies: 624 + msw: ^2.4.9 625 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 626 + peerDependenciesMeta: 627 + msw: 628 + optional: true 629 + vite: 630 + optional: true 631 + 632 + '@vitest/pretty-format@3.2.4': 633 + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} 634 + 635 + '@vitest/runner@3.2.4': 636 + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} 637 + 638 + '@vitest/snapshot@3.2.4': 639 + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} 640 + 641 + '@vitest/spy@3.2.4': 642 + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} 643 + 644 + '@vitest/utils@3.2.4': 645 + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} 646 + 647 + acorn-jsx@5.3.2: 648 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 649 + peerDependencies: 650 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 651 + 652 + acorn@8.15.0: 653 + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 654 + engines: {node: '>=0.4.0'} 655 + hasBin: true 656 + 657 + ajv@6.12.6: 658 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 659 + 660 + ansi-styles@4.3.0: 661 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 662 + engines: {node: '>=8'} 663 + 664 + ansis@4.2.0: 665 + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} 666 + engines: {node: '>=14'} 667 + 668 + argparse@2.0.1: 669 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 670 + 671 + args-tokenizer@0.3.0: 672 + resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} 673 + 674 + assertion-error@2.0.1: 675 + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 676 + engines: {node: '>=12'} 677 + 678 + ast-kit@2.1.3: 679 + resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} 680 + engines: {node: '>=20.19.0'} 681 + 682 + balanced-match@1.0.2: 683 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 684 + 685 + baseline-browser-mapping@2.8.17: 686 + resolution: {integrity: sha512-j5zJcx6golJYTG6c05LUZ3Z8Gi+M62zRT/ycz4Xq4iCOdpcxwg7ngEYD4KA0eWZC7U17qh/Smq8bYbACJ0ipBA==} 687 + hasBin: true 688 + 689 + birpc@2.6.1: 690 + resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} 691 + 692 + brace-expansion@1.1.12: 693 + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} 694 + 695 + brace-expansion@2.0.2: 696 + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 697 + 698 + braces@3.0.3: 699 + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 700 + engines: {node: '>=8'} 701 + 702 + browserslist@4.26.3: 703 + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} 704 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 705 + hasBin: true 706 + 707 + builtin-modules@5.0.0: 708 + resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} 709 + engines: {node: '>=18.20'} 710 + 711 + bumpp@10.3.1: 712 + resolution: {integrity: sha512-cOKPRFCWvHcYPJQAHN6V7Jp/wAfnyqQRXQ+2fgWIL6Gao20rpu7xQ1cGGo1APOfmbQmmHngEPg9Fy7nJ3giRkQ==} 713 + engines: {node: '>=18'} 714 + hasBin: true 715 + 716 + c12@3.3.1: 717 + resolution: {integrity: sha512-LcWQ01LT9tkoUINHgpIOv3mMs+Abv7oVCrtpMRi1PaapVEpWoMga5WuT7/DqFTu7URP9ftbOmimNw1KNIGh9DQ==} 718 + peerDependencies: 719 + magicast: ^0.3.5 720 + peerDependenciesMeta: 721 + magicast: 722 + optional: true 723 + 724 + cac@6.7.14: 725 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 726 + engines: {node: '>=8'} 727 + 728 + callsites@3.1.0: 729 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 730 + engines: {node: '>=6'} 731 + 732 + caniuse-lite@1.0.30001751: 733 + resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} 734 + 735 + chai@5.3.3: 736 + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} 737 + engines: {node: '>=18'} 738 + 739 + chalk@4.1.2: 740 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 741 + engines: {node: '>=10'} 742 + 743 + chalk@5.6.2: 744 + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} 745 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 746 + 747 + change-case@5.4.4: 748 + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} 749 + 750 + check-error@2.1.1: 751 + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 752 + engines: {node: '>= 16'} 753 + 754 + chokidar@4.0.3: 755 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 756 + engines: {node: '>= 14.16.0'} 757 + 758 + ci-info@4.3.1: 759 + resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} 760 + engines: {node: '>=8'} 761 + 762 + citty@0.1.6: 763 + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} 764 + 765 + clean-regexp@1.0.0: 766 + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 767 + engines: {node: '>=4'} 768 + 769 + color-convert@2.0.1: 770 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 771 + engines: {node: '>=7.0.0'} 772 + 773 + color-name@1.1.4: 774 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 775 + 776 + commander@14.0.1: 777 + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} 778 + engines: {node: '>=20'} 779 + 780 + concat-map@0.0.1: 781 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 782 + 783 + confbox@0.2.2: 784 + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} 785 + 786 + consola@3.4.2: 787 + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} 788 + engines: {node: ^14.18.0 || >=16.10.0} 789 + 790 + core-js-compat@3.46.0: 791 + resolution: {integrity: sha512-p9hObIIEENxSV8xIu+V68JjSeARg6UVMG5mR+JEUguG3sI6MsiS1njz2jHmyJDvA+8jX/sytkBHup6kxhM9law==} 792 + 793 + cross-spawn@7.0.6: 794 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 795 + engines: {node: '>= 8'} 796 + 797 + debug@4.4.3: 798 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 799 + engines: {node: '>=6.0'} 800 + peerDependencies: 801 + supports-color: '*' 802 + peerDependenciesMeta: 803 + supports-color: 804 + optional: true 805 + 806 + deep-eql@5.0.2: 807 + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 808 + engines: {node: '>=6'} 809 + 810 + deep-is@0.1.4: 811 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 812 + 813 + defu@6.1.4: 814 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 815 + 816 + destr@2.0.5: 817 + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} 818 + 819 + diff@8.0.2: 820 + resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==} 821 + engines: {node: '>=0.3.1'} 822 + 823 + dotenv@17.2.3: 824 + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} 825 + engines: {node: '>=12'} 826 + 827 + dts-resolver@2.1.2: 828 + resolution: {integrity: sha512-xeXHBQkn2ISSXxbJWD828PFjtyg+/UrMDo7W4Ffcs7+YWCquxU8YjV1KoxuiL+eJ5pg3ll+bC6flVv61L3LKZg==} 829 + engines: {node: '>=20.18.0'} 830 + peerDependencies: 831 + oxc-resolver: '>=11.0.0' 832 + peerDependenciesMeta: 833 + oxc-resolver: 834 + optional: true 835 + 836 + electron-to-chromium@1.5.237: 837 + resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} 838 + 839 + empathic@2.0.0: 840 + resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} 841 + engines: {node: '>=14'} 842 + 843 + es-module-lexer@1.7.0: 844 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 845 + 846 + esbuild@0.25.11: 847 + resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} 848 + engines: {node: '>=18'} 849 + hasBin: true 850 + 851 + escalade@3.2.0: 852 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 853 + engines: {node: '>=6'} 854 + 855 + escape-string-regexp@1.0.5: 856 + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 857 + engines: {node: '>=0.8.0'} 858 + 859 + escape-string-regexp@4.0.0: 860 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 861 + engines: {node: '>=10'} 862 + 863 + eslint-plugin-unicorn@61.0.2: 864 + resolution: {integrity: sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==} 865 + engines: {node: ^20.10.0 || >=21.0.0} 866 + peerDependencies: 867 + eslint: '>=9.29.0' 868 + 869 + eslint-scope@8.4.0: 870 + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} 871 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 872 + 873 + eslint-visitor-keys@3.4.3: 874 + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 875 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 876 + 877 + eslint-visitor-keys@4.2.1: 878 + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} 879 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 880 + 881 + eslint@9.38.0: 882 + resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==} 883 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 884 + hasBin: true 885 + peerDependencies: 886 + jiti: '*' 887 + peerDependenciesMeta: 888 + jiti: 889 + optional: true 890 + 891 + espree@10.4.0: 892 + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} 893 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 894 + 895 + esquery@1.6.0: 896 + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 897 + engines: {node: '>=0.10'} 898 + 899 + esrecurse@4.3.0: 900 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 901 + engines: {node: '>=4.0'} 902 + 903 + estraverse@5.3.0: 904 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 905 + engines: {node: '>=4.0'} 906 + 907 + estree-walker@3.0.3: 908 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 909 + 910 + esutils@2.0.3: 911 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 912 + engines: {node: '>=0.10.0'} 913 + 914 + expect-type@1.2.2: 915 + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} 916 + engines: {node: '>=12.0.0'} 917 + 918 + exsolve@1.0.7: 919 + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 920 + 921 + fast-deep-equal@3.1.3: 922 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 923 + 924 + fast-glob@3.3.3: 925 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 926 + engines: {node: '>=8.6.0'} 927 + 928 + fast-json-stable-stringify@2.1.0: 929 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 930 + 931 + fast-levenshtein@2.0.6: 932 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 933 + 934 + fastq@1.19.1: 935 + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 936 + 937 + fdir@6.5.0: 938 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 939 + engines: {node: '>=12.0.0'} 940 + peerDependencies: 941 + picomatch: ^3 || ^4 942 + peerDependenciesMeta: 943 + picomatch: 944 + optional: true 945 + 946 + file-entry-cache@8.0.0: 947 + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 948 + engines: {node: '>=16.0.0'} 949 + 950 + fill-range@7.1.1: 951 + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 952 + engines: {node: '>=8'} 953 + 954 + find-up-simple@1.0.1: 955 + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} 956 + engines: {node: '>=18'} 957 + 958 + find-up@5.0.0: 959 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 960 + engines: {node: '>=10'} 961 + 962 + flat-cache@4.0.1: 963 + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 964 + engines: {node: '>=16'} 965 + 966 + flatted@3.3.3: 967 + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 968 + 969 + fsevents@2.3.3: 970 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 971 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 972 + os: [darwin] 973 + 974 + get-tsconfig@4.12.0: 975 + resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} 976 + 977 + giget@2.0.0: 978 + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} 979 + hasBin: true 980 + 981 + glob-parent@5.1.2: 982 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 983 + engines: {node: '>= 6'} 984 + 985 + glob-parent@6.0.2: 986 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 987 + engines: {node: '>=10.13.0'} 988 + 989 + globals@14.0.0: 990 + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 991 + engines: {node: '>=18'} 992 + 993 + globals@16.4.0: 994 + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} 995 + engines: {node: '>=18'} 996 + 997 + graphemer@1.4.0: 998 + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 999 + 1000 + has-flag@4.0.0: 1001 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1002 + engines: {node: '>=8'} 1003 + 1004 + hookable@5.5.3: 1005 + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} 1006 + 1007 + ignore@5.3.2: 1008 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1009 + engines: {node: '>= 4'} 1010 + 1011 + ignore@7.0.5: 1012 + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} 1013 + engines: {node: '>= 4'} 1014 + 1015 + import-fresh@3.3.1: 1016 + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1017 + engines: {node: '>=6'} 1018 + 1019 + imurmurhash@0.1.4: 1020 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1021 + engines: {node: '>=0.8.19'} 1022 + 1023 + indent-string@5.0.0: 1024 + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1025 + engines: {node: '>=12'} 1026 + 1027 + is-builtin-module@5.0.0: 1028 + resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} 1029 + engines: {node: '>=18.20'} 1030 + 1031 + is-extglob@2.1.1: 1032 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1033 + engines: {node: '>=0.10.0'} 1034 + 1035 + is-glob@4.0.3: 1036 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1037 + engines: {node: '>=0.10.0'} 1038 + 1039 + is-number@7.0.0: 1040 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1041 + engines: {node: '>=0.12.0'} 1042 + 1043 + isexe@2.0.0: 1044 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1045 + 1046 + jiti@2.6.1: 1047 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 1048 + hasBin: true 1049 + 1050 + js-tokens@9.0.1: 1051 + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} 1052 + 1053 + js-yaml@4.1.0: 1054 + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1055 + hasBin: true 1056 + 1057 + jsesc@3.0.2: 1058 + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1059 + engines: {node: '>=6'} 1060 + hasBin: true 1061 + 1062 + jsesc@3.1.0: 1063 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1064 + engines: {node: '>=6'} 1065 + hasBin: true 1066 + 1067 + json-buffer@3.0.1: 1068 + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1069 + 1070 + json-schema-traverse@0.4.1: 1071 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1072 + 1073 + json-stable-stringify-without-jsonify@1.0.1: 1074 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1075 + 1076 + jsonc-parser@3.3.1: 1077 + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} 1078 + 1079 + keyv@4.5.4: 1080 + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1081 + 1082 + levn@0.4.1: 1083 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1084 + engines: {node: '>= 0.8.0'} 1085 + 1086 + locate-path@6.0.0: 1087 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1088 + engines: {node: '>=10'} 1089 + 1090 + lodash.merge@4.6.2: 1091 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1092 + 1093 + loupe@3.2.1: 1094 + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} 1095 + 1096 + magic-string@0.30.19: 1097 + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} 1098 + 1099 + merge2@1.4.1: 1100 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1101 + engines: {node: '>= 8'} 1102 + 1103 + micromatch@4.0.8: 1104 + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1105 + engines: {node: '>=8.6'} 1106 + 1107 + minimatch@3.1.2: 1108 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1109 + 1110 + minimatch@9.0.5: 1111 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1112 + engines: {node: '>=16 || 14 >=14.17'} 1113 + 1114 + ms@2.1.3: 1115 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1116 + 1117 + nanoid@3.3.11: 1118 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1119 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1120 + hasBin: true 1121 + 1122 + natural-compare@1.4.0: 1123 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1124 + 1125 + node-fetch-native@1.6.7: 1126 + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} 1127 + 1128 + node-releases@2.0.25: 1129 + resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} 1130 + 1131 + nypm@0.6.2: 1132 + resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} 1133 + engines: {node: ^14.16.0 || >=16.10.0} 1134 + hasBin: true 1135 + 1136 + ohash@2.0.11: 1137 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1138 + 1139 + optionator@0.9.4: 1140 + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1141 + engines: {node: '>= 0.8.0'} 1142 + 1143 + p-limit@3.1.0: 1144 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1145 + engines: {node: '>=10'} 1146 + 1147 + p-locate@5.0.0: 1148 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1149 + engines: {node: '>=10'} 1150 + 1151 + package-manager-detector@1.4.1: 1152 + resolution: {integrity: sha512-dSMiVLBEA4XaNJ0PRb4N5cV/SEP4BWrWZKBmfF+OUm2pQTiZ6DDkKeWaltwu3JRhLoy59ayIkJ00cx9K9CaYTg==} 1153 + 1154 + parent-module@1.0.1: 1155 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1156 + engines: {node: '>=6'} 1157 + 1158 + path-exists@4.0.0: 1159 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1160 + engines: {node: '>=8'} 1161 + 1162 + path-key@3.1.1: 1163 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1164 + engines: {node: '>=8'} 1165 + 1166 + pathe@2.0.3: 1167 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1168 + 1169 + pathval@2.0.1: 1170 + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} 1171 + engines: {node: '>= 14.16'} 1172 + 1173 + perfect-debounce@2.0.0: 1174 + resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} 1175 + 1176 + picocolors@1.1.1: 1177 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1178 + 1179 + picomatch@2.3.1: 1180 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1181 + engines: {node: '>=8.6'} 1182 + 1183 + picomatch@4.0.3: 1184 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1185 + engines: {node: '>=12'} 1186 + 1187 + pkg-types@2.3.0: 1188 + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} 1189 + 1190 + pluralize@8.0.0: 1191 + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1192 + engines: {node: '>=4'} 1193 + 1194 + postcss@8.5.6: 1195 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1196 + engines: {node: ^10 || ^12 || >=14} 1197 + 1198 + prelude-ls@1.2.1: 1199 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1200 + engines: {node: '>= 0.8.0'} 1201 + 1202 + punycode@2.3.1: 1203 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1204 + engines: {node: '>=6'} 1205 + 1206 + quansync@0.2.11: 1207 + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} 1208 + 1209 + queue-microtask@1.2.3: 1210 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1211 + 1212 + rc9@2.1.2: 1213 + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} 1214 + 1215 + readdirp@4.1.2: 1216 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1217 + engines: {node: '>= 14.18.0'} 1218 + 1219 + regexp-tree@0.1.27: 1220 + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 1221 + hasBin: true 1222 + 1223 + regjsparser@0.12.0: 1224 + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} 1225 + hasBin: true 1226 + 1227 + resolve-from@4.0.0: 1228 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1229 + engines: {node: '>=4'} 1230 + 1231 + resolve-pkg-maps@1.0.0: 1232 + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1233 + 1234 + reusify@1.1.0: 1235 + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1236 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1237 + 1238 + rolldown-plugin-dts@0.16.12: 1239 + resolution: {integrity: sha512-9dGjm5oqtKcbZNhpzyBgb8KrYiU616A7IqcFWG7Msp1RKAXQ/hapjivRg+g5IYWSiFhnk3OKYV5T4Ft1t8Cczg==} 1240 + engines: {node: '>=20.18.0'} 1241 + peerDependencies: 1242 + '@ts-macro/tsc': ^0.3.6 1243 + '@typescript/native-preview': '>=7.0.0-dev.20250601.1' 1244 + rolldown: ^1.0.0-beta.9 1245 + typescript: ^5.0.0 1246 + vue-tsc: ~3.1.0 1247 + peerDependenciesMeta: 1248 + '@ts-macro/tsc': 1249 + optional: true 1250 + '@typescript/native-preview': 1251 + optional: true 1252 + typescript: 1253 + optional: true 1254 + vue-tsc: 1255 + optional: true 1256 + 1257 + rolldown@1.0.0-beta.43: 1258 + resolution: {integrity: sha512-6RcqyRx0tY1MlRLnjXPp/849Rl/CPFhzpGGwNPEPjKwqBMqPq/Rbbkxasa8s0x+IkUk46ty4jazb5skZ/Vgdhw==} 1259 + engines: {node: ^20.19.0 || >=22.12.0} 1260 + hasBin: true 1261 + 1262 + rollup@4.52.4: 1263 + resolution: {integrity: sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==} 1264 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1265 + hasBin: true 1266 + 1267 + run-parallel@1.2.0: 1268 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1269 + 1270 + semver@7.7.3: 1271 + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} 1272 + engines: {node: '>=10'} 1273 + hasBin: true 1274 + 1275 + shebang-command@2.0.0: 1276 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1277 + engines: {node: '>=8'} 1278 + 1279 + shebang-regex@3.0.0: 1280 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1281 + engines: {node: '>=8'} 1282 + 1283 + siginfo@2.0.0: 1284 + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1285 + 1286 + source-map-js@1.2.1: 1287 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1288 + engines: {node: '>=0.10.0'} 1289 + 1290 + stackback@0.0.2: 1291 + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1292 + 1293 + std-env@3.10.0: 1294 + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 1295 + 1296 + strip-indent@4.1.1: 1297 + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} 1298 + engines: {node: '>=12'} 1299 + 1300 + strip-json-comments@3.1.1: 1301 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1302 + engines: {node: '>=8'} 1303 + 1304 + strip-literal@3.1.0: 1305 + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} 1306 + 1307 + supports-color@7.2.0: 1308 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1309 + engines: {node: '>=8'} 1310 + 1311 + tinybench@2.9.0: 1312 + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1313 + 1314 + tinyexec@0.3.2: 1315 + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1316 + 1317 + tinyexec@1.0.1: 1318 + resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} 1319 + 1320 + tinyglobby@0.2.15: 1321 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1322 + engines: {node: '>=12.0.0'} 1323 + 1324 + tinypool@1.1.1: 1325 + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} 1326 + engines: {node: ^18.0.0 || >=20.0.0} 1327 + 1328 + tinyrainbow@2.0.0: 1329 + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1330 + engines: {node: '>=14.0.0'} 1331 + 1332 + tinyspy@4.0.4: 1333 + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} 1334 + engines: {node: '>=14.0.0'} 1335 + 1336 + to-regex-range@5.0.1: 1337 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1338 + engines: {node: '>=8.0'} 1339 + 1340 + tree-kill@1.2.2: 1341 + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1342 + hasBin: true 1343 + 1344 + ts-api-utils@2.1.0: 1345 + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1346 + engines: {node: '>=18.12'} 1347 + peerDependencies: 1348 + typescript: '>=4.8.4' 1349 + 1350 + tsdown@0.15.7: 1351 + resolution: {integrity: sha512-uFaVgWAogjOMqjY+CQwrUt3C6wzy6ynt82CIoXymnbS17ipUZ8WDXUceJjkislUahF/BZc5+W44Ue3p2oWtqUg==} 1352 + engines: {node: '>=20.19.0'} 1353 + hasBin: true 1354 + peerDependencies: 1355 + '@arethetypeswrong/core': ^0.18.1 1356 + publint: ^0.3.0 1357 + typescript: ^5.0.0 1358 + unplugin-lightningcss: ^0.4.0 1359 + unplugin-unused: ^0.5.0 1360 + peerDependenciesMeta: 1361 + '@arethetypeswrong/core': 1362 + optional: true 1363 + publint: 1364 + optional: true 1365 + typescript: 1366 + optional: true 1367 + unplugin-lightningcss: 1368 + optional: true 1369 + unplugin-unused: 1370 + optional: true 1371 + 1372 + tslib@2.8.1: 1373 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1374 + 1375 + type-check@0.4.0: 1376 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1377 + engines: {node: '>= 0.8.0'} 1378 + 1379 + typescript-eslint@8.46.1: 1380 + resolution: {integrity: sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==} 1381 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1382 + peerDependencies: 1383 + eslint: ^8.57.0 || ^9.0.0 1384 + typescript: '>=4.8.4 <6.0.0' 1385 + 1386 + typescript@5.9.3: 1387 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 1388 + engines: {node: '>=14.17'} 1389 + hasBin: true 1390 + 1391 + unconfig@7.3.3: 1392 + resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} 1393 + 1394 + undici-types@7.14.0: 1395 + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} 1396 + 1397 + update-browserslist-db@1.1.3: 1398 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1399 + hasBin: true 1400 + peerDependencies: 1401 + browserslist: '>= 4.21.0' 1402 + 1403 + uri-js@4.4.1: 1404 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1405 + 1406 + vite-node@3.2.4: 1407 + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} 1408 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1409 + hasBin: true 1410 + 1411 + vite@7.1.10: 1412 + resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==} 1413 + engines: {node: ^20.19.0 || >=22.12.0} 1414 + hasBin: true 1415 + peerDependencies: 1416 + '@types/node': ^20.19.0 || >=22.12.0 1417 + jiti: '>=1.21.0' 1418 + less: ^4.0.0 1419 + lightningcss: ^1.21.0 1420 + sass: ^1.70.0 1421 + sass-embedded: ^1.70.0 1422 + stylus: '>=0.54.8' 1423 + sugarss: ^5.0.0 1424 + terser: ^5.16.0 1425 + tsx: ^4.8.1 1426 + yaml: ^2.4.2 1427 + peerDependenciesMeta: 1428 + '@types/node': 1429 + optional: true 1430 + jiti: 1431 + optional: true 1432 + less: 1433 + optional: true 1434 + lightningcss: 1435 + optional: true 1436 + sass: 1437 + optional: true 1438 + sass-embedded: 1439 + optional: true 1440 + stylus: 1441 + optional: true 1442 + sugarss: 1443 + optional: true 1444 + terser: 1445 + optional: true 1446 + tsx: 1447 + optional: true 1448 + yaml: 1449 + optional: true 1450 + 1451 + vitest@3.2.4: 1452 + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} 1453 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1454 + hasBin: true 1455 + peerDependencies: 1456 + '@edge-runtime/vm': '*' 1457 + '@types/debug': ^4.1.12 1458 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1459 + '@vitest/browser': 3.2.4 1460 + '@vitest/ui': 3.2.4 1461 + happy-dom: '*' 1462 + jsdom: '*' 1463 + peerDependenciesMeta: 1464 + '@edge-runtime/vm': 1465 + optional: true 1466 + '@types/debug': 1467 + optional: true 1468 + '@types/node': 1469 + optional: true 1470 + '@vitest/browser': 1471 + optional: true 1472 + '@vitest/ui': 1473 + optional: true 1474 + happy-dom: 1475 + optional: true 1476 + jsdom: 1477 + optional: true 1478 + 1479 + which@2.0.2: 1480 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1481 + engines: {node: '>= 8'} 1482 + hasBin: true 1483 + 1484 + why-is-node-running@2.3.0: 1485 + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1486 + engines: {node: '>=8'} 1487 + hasBin: true 1488 + 1489 + word-wrap@1.2.5: 1490 + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1491 + engines: {node: '>=0.10.0'} 1492 + 1493 + yaml@2.8.1: 1494 + resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} 1495 + engines: {node: '>= 14.6'} 1496 + hasBin: true 1497 + 1498 + yocto-queue@0.1.0: 1499 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1500 + engines: {node: '>=10'} 1501 + 1502 + snapshots: 1503 + 1504 + '@babel/generator@7.28.3': 1505 + dependencies: 1506 + '@babel/parser': 7.28.4 1507 + '@babel/types': 7.28.4 1508 + '@jridgewell/gen-mapping': 0.3.13 1509 + '@jridgewell/trace-mapping': 0.3.31 1510 + jsesc: 3.1.0 1511 + 1512 + '@babel/helper-string-parser@7.27.1': {} 1513 + 1514 + '@babel/helper-validator-identifier@7.27.1': {} 1515 + 1516 + '@babel/parser@7.28.4': 1517 + dependencies: 1518 + '@babel/types': 7.28.4 1519 + 1520 + '@babel/types@7.28.4': 1521 + dependencies: 1522 + '@babel/helper-string-parser': 7.27.1 1523 + '@babel/helper-validator-identifier': 7.27.1 1524 + 1525 + '@emnapi/core@1.5.0': 1526 + dependencies: 1527 + '@emnapi/wasi-threads': 1.1.0 1528 + tslib: 2.8.1 1529 + optional: true 1530 + 1531 + '@emnapi/runtime@1.5.0': 1532 + dependencies: 1533 + tslib: 2.8.1 1534 + optional: true 1535 + 1536 + '@emnapi/wasi-threads@1.1.0': 1537 + dependencies: 1538 + tslib: 2.8.1 1539 + optional: true 1540 + 1541 + '@esbuild/aix-ppc64@0.25.11': 1542 + optional: true 1543 + 1544 + '@esbuild/android-arm64@0.25.11': 1545 + optional: true 1546 + 1547 + '@esbuild/android-arm@0.25.11': 1548 + optional: true 1549 + 1550 + '@esbuild/android-x64@0.25.11': 1551 + optional: true 1552 + 1553 + '@esbuild/darwin-arm64@0.25.11': 1554 + optional: true 1555 + 1556 + '@esbuild/darwin-x64@0.25.11': 1557 + optional: true 1558 + 1559 + '@esbuild/freebsd-arm64@0.25.11': 1560 + optional: true 1561 + 1562 + '@esbuild/freebsd-x64@0.25.11': 1563 + optional: true 1564 + 1565 + '@esbuild/linux-arm64@0.25.11': 1566 + optional: true 1567 + 1568 + '@esbuild/linux-arm@0.25.11': 1569 + optional: true 1570 + 1571 + '@esbuild/linux-ia32@0.25.11': 1572 + optional: true 1573 + 1574 + '@esbuild/linux-loong64@0.25.11': 1575 + optional: true 1576 + 1577 + '@esbuild/linux-mips64el@0.25.11': 1578 + optional: true 1579 + 1580 + '@esbuild/linux-ppc64@0.25.11': 1581 + optional: true 1582 + 1583 + '@esbuild/linux-riscv64@0.25.11': 1584 + optional: true 1585 + 1586 + '@esbuild/linux-s390x@0.25.11': 1587 + optional: true 1588 + 1589 + '@esbuild/linux-x64@0.25.11': 1590 + optional: true 1591 + 1592 + '@esbuild/netbsd-arm64@0.25.11': 1593 + optional: true 1594 + 1595 + '@esbuild/netbsd-x64@0.25.11': 1596 + optional: true 1597 + 1598 + '@esbuild/openbsd-arm64@0.25.11': 1599 + optional: true 1600 + 1601 + '@esbuild/openbsd-x64@0.25.11': 1602 + optional: true 1603 + 1604 + '@esbuild/openharmony-arm64@0.25.11': 1605 + optional: true 1606 + 1607 + '@esbuild/sunos-x64@0.25.11': 1608 + optional: true 1609 + 1610 + '@esbuild/win32-arm64@0.25.11': 1611 + optional: true 1612 + 1613 + '@esbuild/win32-ia32@0.25.11': 1614 + optional: true 1615 + 1616 + '@esbuild/win32-x64@0.25.11': 1617 + optional: true 1618 + 1619 + '@eslint-community/eslint-utils@4.9.0(eslint@9.38.0(jiti@2.6.1))': 1620 + dependencies: 1621 + eslint: 9.38.0(jiti@2.6.1) 1622 + eslint-visitor-keys: 3.4.3 1623 + 1624 + '@eslint-community/regexpp@4.12.1': {} 1625 + 1626 + '@eslint/compat@1.4.0(eslint@9.38.0(jiti@2.6.1))': 1627 + dependencies: 1628 + '@eslint/core': 0.16.0 1629 + optionalDependencies: 1630 + eslint: 9.38.0(jiti@2.6.1) 1631 + 1632 + '@eslint/config-array@0.21.1': 1633 + dependencies: 1634 + '@eslint/object-schema': 2.1.7 1635 + debug: 4.4.3 1636 + minimatch: 3.1.2 1637 + transitivePeerDependencies: 1638 + - supports-color 1639 + 1640 + '@eslint/config-helpers@0.4.1': 1641 + dependencies: 1642 + '@eslint/core': 0.16.0 1643 + 1644 + '@eslint/core@0.15.2': 1645 + dependencies: 1646 + '@types/json-schema': 7.0.15 1647 + 1648 + '@eslint/core@0.16.0': 1649 + dependencies: 1650 + '@types/json-schema': 7.0.15 1651 + 1652 + '@eslint/eslintrc@3.3.1': 1653 + dependencies: 1654 + ajv: 6.12.6 1655 + debug: 4.4.3 1656 + espree: 10.4.0 1657 + globals: 14.0.0 1658 + ignore: 5.3.2 1659 + import-fresh: 3.3.1 1660 + js-yaml: 4.1.0 1661 + minimatch: 3.1.2 1662 + strip-json-comments: 3.1.1 1663 + transitivePeerDependencies: 1664 + - supports-color 1665 + 1666 + '@eslint/js@9.38.0': {} 1667 + 1668 + '@eslint/object-schema@2.1.7': {} 1669 + 1670 + '@eslint/plugin-kit@0.3.5': 1671 + dependencies: 1672 + '@eslint/core': 0.15.2 1673 + levn: 0.4.1 1674 + 1675 + '@eslint/plugin-kit@0.4.0': 1676 + dependencies: 1677 + '@eslint/core': 0.16.0 1678 + levn: 0.4.1 1679 + 1680 + '@humanfs/core@0.19.1': {} 1681 + 1682 + '@humanfs/node@0.16.7': 1683 + dependencies: 1684 + '@humanfs/core': 0.19.1 1685 + '@humanwhocodes/retry': 0.4.3 1686 + 1687 + '@humanwhocodes/module-importer@1.0.1': {} 1688 + 1689 + '@humanwhocodes/retry@0.4.3': {} 1690 + 1691 + '@jridgewell/gen-mapping@0.3.13': 1692 + dependencies: 1693 + '@jridgewell/sourcemap-codec': 1.5.5 1694 + '@jridgewell/trace-mapping': 0.3.31 1695 + 1696 + '@jridgewell/resolve-uri@3.1.2': {} 1697 + 1698 + '@jridgewell/sourcemap-codec@1.5.5': {} 1699 + 1700 + '@jridgewell/trace-mapping@0.3.31': 1701 + dependencies: 1702 + '@jridgewell/resolve-uri': 3.1.2 1703 + '@jridgewell/sourcemap-codec': 1.5.5 1704 + 1705 + '@napi-rs/wasm-runtime@1.0.7': 1706 + dependencies: 1707 + '@emnapi/core': 1.5.0 1708 + '@emnapi/runtime': 1.5.0 1709 + '@tybys/wasm-util': 0.10.1 1710 + optional: true 1711 + 1712 + '@nodelib/fs.scandir@2.1.5': 1713 + dependencies: 1714 + '@nodelib/fs.stat': 2.0.5 1715 + run-parallel: 1.2.0 1716 + 1717 + '@nodelib/fs.stat@2.0.5': {} 1718 + 1719 + '@nodelib/fs.walk@1.2.8': 1720 + dependencies: 1721 + '@nodelib/fs.scandir': 2.1.5 1722 + fastq: 1.19.1 1723 + 1724 + '@oxc-project/types@0.94.0': {} 1725 + 1726 + '@quansync/fs@0.1.5': 1727 + dependencies: 1728 + quansync: 0.2.11 1729 + 1730 + '@rolldown/binding-android-arm64@1.0.0-beta.43': 1731 + optional: true 1732 + 1733 + '@rolldown/binding-darwin-arm64@1.0.0-beta.43': 1734 + optional: true 1735 + 1736 + '@rolldown/binding-darwin-x64@1.0.0-beta.43': 1737 + optional: true 1738 + 1739 + '@rolldown/binding-freebsd-x64@1.0.0-beta.43': 1740 + optional: true 1741 + 1742 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.43': 1743 + optional: true 1744 + 1745 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.43': 1746 + optional: true 1747 + 1748 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.43': 1749 + optional: true 1750 + 1751 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.43': 1752 + optional: true 1753 + 1754 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.43': 1755 + optional: true 1756 + 1757 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.43': 1758 + optional: true 1759 + 1760 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.43': 1761 + dependencies: 1762 + '@napi-rs/wasm-runtime': 1.0.7 1763 + optional: true 1764 + 1765 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.43': 1766 + optional: true 1767 + 1768 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.43': 1769 + optional: true 1770 + 1771 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.43': 1772 + optional: true 1773 + 1774 + '@rolldown/pluginutils@1.0.0-beta.43': {} 1775 + 1776 + '@rollup/rollup-android-arm-eabi@4.52.4': 1777 + optional: true 1778 + 1779 + '@rollup/rollup-android-arm64@4.52.4': 1780 + optional: true 1781 + 1782 + '@rollup/rollup-darwin-arm64@4.52.4': 1783 + optional: true 1784 + 1785 + '@rollup/rollup-darwin-x64@4.52.4': 1786 + optional: true 1787 + 1788 + '@rollup/rollup-freebsd-arm64@4.52.4': 1789 + optional: true 1790 + 1791 + '@rollup/rollup-freebsd-x64@4.52.4': 1792 + optional: true 1793 + 1794 + '@rollup/rollup-linux-arm-gnueabihf@4.52.4': 1795 + optional: true 1796 + 1797 + '@rollup/rollup-linux-arm-musleabihf@4.52.4': 1798 + optional: true 1799 + 1800 + '@rollup/rollup-linux-arm64-gnu@4.52.4': 1801 + optional: true 1802 + 1803 + '@rollup/rollup-linux-arm64-musl@4.52.4': 1804 + optional: true 1805 + 1806 + '@rollup/rollup-linux-loong64-gnu@4.52.4': 1807 + optional: true 1808 + 1809 + '@rollup/rollup-linux-ppc64-gnu@4.52.4': 1810 + optional: true 1811 + 1812 + '@rollup/rollup-linux-riscv64-gnu@4.52.4': 1813 + optional: true 1814 + 1815 + '@rollup/rollup-linux-riscv64-musl@4.52.4': 1816 + optional: true 1817 + 1818 + '@rollup/rollup-linux-s390x-gnu@4.52.4': 1819 + optional: true 1820 + 1821 + '@rollup/rollup-linux-x64-gnu@4.52.4': 1822 + optional: true 1823 + 1824 + '@rollup/rollup-linux-x64-musl@4.52.4': 1825 + optional: true 1826 + 1827 + '@rollup/rollup-openharmony-arm64@4.52.4': 1828 + optional: true 1829 + 1830 + '@rollup/rollup-win32-arm64-msvc@4.52.4': 1831 + optional: true 1832 + 1833 + '@rollup/rollup-win32-ia32-msvc@4.52.4': 1834 + optional: true 1835 + 1836 + '@rollup/rollup-win32-x64-gnu@4.52.4': 1837 + optional: true 1838 + 1839 + '@rollup/rollup-win32-x64-msvc@4.52.4': 1840 + optional: true 1841 + 1842 + '@tybys/wasm-util@0.10.1': 1843 + dependencies: 1844 + tslib: 2.8.1 1845 + optional: true 1846 + 1847 + '@types/chai@5.2.2': 1848 + dependencies: 1849 + '@types/deep-eql': 4.0.2 1850 + 1851 + '@types/deep-eql@4.0.2': {} 1852 + 1853 + '@types/estree@1.0.8': {} 1854 + 1855 + '@types/json-schema@7.0.15': {} 1856 + 1857 + '@types/node@24.8.1': 1858 + dependencies: 1859 + undici-types: 7.14.0 1860 + 1861 + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 1862 + dependencies: 1863 + '@eslint-community/regexpp': 4.12.1 1864 + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 1865 + '@typescript-eslint/scope-manager': 8.46.1 1866 + '@typescript-eslint/type-utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 1867 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 1868 + '@typescript-eslint/visitor-keys': 8.46.1 1869 + eslint: 9.38.0(jiti@2.6.1) 1870 + graphemer: 1.4.0 1871 + ignore: 7.0.5 1872 + natural-compare: 1.4.0 1873 + ts-api-utils: 2.1.0(typescript@5.9.3) 1874 + typescript: 5.9.3 1875 + transitivePeerDependencies: 1876 + - supports-color 1877 + 1878 + '@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 1879 + dependencies: 1880 + '@typescript-eslint/scope-manager': 8.46.1 1881 + '@typescript-eslint/types': 8.46.1 1882 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 1883 + '@typescript-eslint/visitor-keys': 8.46.1 1884 + debug: 4.4.3 1885 + eslint: 9.38.0(jiti@2.6.1) 1886 + typescript: 5.9.3 1887 + transitivePeerDependencies: 1888 + - supports-color 1889 + 1890 + '@typescript-eslint/project-service@8.46.1(typescript@5.9.3)': 1891 + dependencies: 1892 + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) 1893 + '@typescript-eslint/types': 8.46.1 1894 + debug: 4.4.3 1895 + typescript: 5.9.3 1896 + transitivePeerDependencies: 1897 + - supports-color 1898 + 1899 + '@typescript-eslint/scope-manager@8.46.1': 1900 + dependencies: 1901 + '@typescript-eslint/types': 8.46.1 1902 + '@typescript-eslint/visitor-keys': 8.46.1 1903 + 1904 + '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3)': 1905 + dependencies: 1906 + typescript: 5.9.3 1907 + 1908 + '@typescript-eslint/type-utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 1909 + dependencies: 1910 + '@typescript-eslint/types': 8.46.1 1911 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 1912 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 1913 + debug: 4.4.3 1914 + eslint: 9.38.0(jiti@2.6.1) 1915 + ts-api-utils: 2.1.0(typescript@5.9.3) 1916 + typescript: 5.9.3 1917 + transitivePeerDependencies: 1918 + - supports-color 1919 + 1920 + '@typescript-eslint/types@8.46.1': {} 1921 + 1922 + '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)': 1923 + dependencies: 1924 + '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3) 1925 + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) 1926 + '@typescript-eslint/types': 8.46.1 1927 + '@typescript-eslint/visitor-keys': 8.46.1 1928 + debug: 4.4.3 1929 + fast-glob: 3.3.3 1930 + is-glob: 4.0.3 1931 + minimatch: 9.0.5 1932 + semver: 7.7.3 1933 + ts-api-utils: 2.1.0(typescript@5.9.3) 1934 + typescript: 5.9.3 1935 + transitivePeerDependencies: 1936 + - supports-color 1937 + 1938 + '@typescript-eslint/utils@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3)': 1939 + dependencies: 1940 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 1941 + '@typescript-eslint/scope-manager': 8.46.1 1942 + '@typescript-eslint/types': 8.46.1 1943 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 1944 + eslint: 9.38.0(jiti@2.6.1) 1945 + typescript: 5.9.3 1946 + transitivePeerDependencies: 1947 + - supports-color 1948 + 1949 + '@typescript-eslint/visitor-keys@8.46.1': 1950 + dependencies: 1951 + '@typescript-eslint/types': 8.46.1 1952 + eslint-visitor-keys: 4.2.1 1953 + 1954 + '@vitest/expect@3.2.4': 1955 + dependencies: 1956 + '@types/chai': 5.2.2 1957 + '@vitest/spy': 3.2.4 1958 + '@vitest/utils': 3.2.4 1959 + chai: 5.3.3 1960 + tinyrainbow: 2.0.0 1961 + 1962 + '@vitest/mocker@3.2.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1))': 1963 + dependencies: 1964 + '@vitest/spy': 3.2.4 1965 + estree-walker: 3.0.3 1966 + magic-string: 0.30.19 1967 + optionalDependencies: 1968 + vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1) 1969 + 1970 + '@vitest/pretty-format@3.2.4': 1971 + dependencies: 1972 + tinyrainbow: 2.0.0 1973 + 1974 + '@vitest/runner@3.2.4': 1975 + dependencies: 1976 + '@vitest/utils': 3.2.4 1977 + pathe: 2.0.3 1978 + strip-literal: 3.1.0 1979 + 1980 + '@vitest/snapshot@3.2.4': 1981 + dependencies: 1982 + '@vitest/pretty-format': 3.2.4 1983 + magic-string: 0.30.19 1984 + pathe: 2.0.3 1985 + 1986 + '@vitest/spy@3.2.4': 1987 + dependencies: 1988 + tinyspy: 4.0.4 1989 + 1990 + '@vitest/utils@3.2.4': 1991 + dependencies: 1992 + '@vitest/pretty-format': 3.2.4 1993 + loupe: 3.2.1 1994 + tinyrainbow: 2.0.0 1995 + 1996 + acorn-jsx@5.3.2(acorn@8.15.0): 1997 + dependencies: 1998 + acorn: 8.15.0 1999 + 2000 + acorn@8.15.0: {} 2001 + 2002 + ajv@6.12.6: 2003 + dependencies: 2004 + fast-deep-equal: 3.1.3 2005 + fast-json-stable-stringify: 2.1.0 2006 + json-schema-traverse: 0.4.1 2007 + uri-js: 4.4.1 2008 + 2009 + ansi-styles@4.3.0: 2010 + dependencies: 2011 + color-convert: 2.0.1 2012 + 2013 + ansis@4.2.0: {} 2014 + 2015 + argparse@2.0.1: {} 2016 + 2017 + args-tokenizer@0.3.0: {} 2018 + 2019 + assertion-error@2.0.1: {} 2020 + 2021 + ast-kit@2.1.3: 2022 + dependencies: 2023 + '@babel/parser': 7.28.4 2024 + pathe: 2.0.3 2025 + 2026 + balanced-match@1.0.2: {} 2027 + 2028 + baseline-browser-mapping@2.8.17: {} 2029 + 2030 + birpc@2.6.1: {} 2031 + 2032 + brace-expansion@1.1.12: 2033 + dependencies: 2034 + balanced-match: 1.0.2 2035 + concat-map: 0.0.1 2036 + 2037 + brace-expansion@2.0.2: 2038 + dependencies: 2039 + balanced-match: 1.0.2 2040 + 2041 + braces@3.0.3: 2042 + dependencies: 2043 + fill-range: 7.1.1 2044 + 2045 + browserslist@4.26.3: 2046 + dependencies: 2047 + baseline-browser-mapping: 2.8.17 2048 + caniuse-lite: 1.0.30001751 2049 + electron-to-chromium: 1.5.237 2050 + node-releases: 2.0.25 2051 + update-browserslist-db: 1.1.3(browserslist@4.26.3) 2052 + 2053 + builtin-modules@5.0.0: {} 2054 + 2055 + bumpp@10.3.1: 2056 + dependencies: 2057 + ansis: 4.2.0 2058 + args-tokenizer: 0.3.0 2059 + c12: 3.3.1 2060 + cac: 6.7.14 2061 + escalade: 3.2.0 2062 + jsonc-parser: 3.3.1 2063 + package-manager-detector: 1.4.1 2064 + semver: 7.7.3 2065 + tinyexec: 1.0.1 2066 + tinyglobby: 0.2.15 2067 + yaml: 2.8.1 2068 + transitivePeerDependencies: 2069 + - magicast 2070 + 2071 + c12@3.3.1: 2072 + dependencies: 2073 + chokidar: 4.0.3 2074 + confbox: 0.2.2 2075 + defu: 6.1.4 2076 + dotenv: 17.2.3 2077 + exsolve: 1.0.7 2078 + giget: 2.0.0 2079 + jiti: 2.6.1 2080 + ohash: 2.0.11 2081 + pathe: 2.0.3 2082 + perfect-debounce: 2.0.0 2083 + pkg-types: 2.3.0 2084 + rc9: 2.1.2 2085 + 2086 + cac@6.7.14: {} 2087 + 2088 + callsites@3.1.0: {} 2089 + 2090 + caniuse-lite@1.0.30001751: {} 2091 + 2092 + chai@5.3.3: 2093 + dependencies: 2094 + assertion-error: 2.0.1 2095 + check-error: 2.1.1 2096 + deep-eql: 5.0.2 2097 + loupe: 3.2.1 2098 + pathval: 2.0.1 2099 + 2100 + chalk@4.1.2: 2101 + dependencies: 2102 + ansi-styles: 4.3.0 2103 + supports-color: 7.2.0 2104 + 2105 + chalk@5.6.2: {} 2106 + 2107 + change-case@5.4.4: {} 2108 + 2109 + check-error@2.1.1: {} 2110 + 2111 + chokidar@4.0.3: 2112 + dependencies: 2113 + readdirp: 4.1.2 2114 + 2115 + ci-info@4.3.1: {} 2116 + 2117 + citty@0.1.6: 2118 + dependencies: 2119 + consola: 3.4.2 2120 + 2121 + clean-regexp@1.0.0: 2122 + dependencies: 2123 + escape-string-regexp: 1.0.5 2124 + 2125 + color-convert@2.0.1: 2126 + dependencies: 2127 + color-name: 1.1.4 2128 + 2129 + color-name@1.1.4: {} 2130 + 2131 + commander@14.0.1: {} 2132 + 2133 + concat-map@0.0.1: {} 2134 + 2135 + confbox@0.2.2: {} 2136 + 2137 + consola@3.4.2: {} 2138 + 2139 + core-js-compat@3.46.0: 2140 + dependencies: 2141 + browserslist: 4.26.3 2142 + 2143 + cross-spawn@7.0.6: 2144 + dependencies: 2145 + path-key: 3.1.1 2146 + shebang-command: 2.0.0 2147 + which: 2.0.2 2148 + 2149 + debug@4.4.3: 2150 + dependencies: 2151 + ms: 2.1.3 2152 + 2153 + deep-eql@5.0.2: {} 2154 + 2155 + deep-is@0.1.4: {} 2156 + 2157 + defu@6.1.4: {} 2158 + 2159 + destr@2.0.5: {} 2160 + 2161 + diff@8.0.2: {} 2162 + 2163 + dotenv@17.2.3: {} 2164 + 2165 + dts-resolver@2.1.2: {} 2166 + 2167 + electron-to-chromium@1.5.237: {} 2168 + 2169 + empathic@2.0.0: {} 2170 + 2171 + es-module-lexer@1.7.0: {} 2172 + 2173 + esbuild@0.25.11: 2174 + optionalDependencies: 2175 + '@esbuild/aix-ppc64': 0.25.11 2176 + '@esbuild/android-arm': 0.25.11 2177 + '@esbuild/android-arm64': 0.25.11 2178 + '@esbuild/android-x64': 0.25.11 2179 + '@esbuild/darwin-arm64': 0.25.11 2180 + '@esbuild/darwin-x64': 0.25.11 2181 + '@esbuild/freebsd-arm64': 0.25.11 2182 + '@esbuild/freebsd-x64': 0.25.11 2183 + '@esbuild/linux-arm': 0.25.11 2184 + '@esbuild/linux-arm64': 0.25.11 2185 + '@esbuild/linux-ia32': 0.25.11 2186 + '@esbuild/linux-loong64': 0.25.11 2187 + '@esbuild/linux-mips64el': 0.25.11 2188 + '@esbuild/linux-ppc64': 0.25.11 2189 + '@esbuild/linux-riscv64': 0.25.11 2190 + '@esbuild/linux-s390x': 0.25.11 2191 + '@esbuild/linux-x64': 0.25.11 2192 + '@esbuild/netbsd-arm64': 0.25.11 2193 + '@esbuild/netbsd-x64': 0.25.11 2194 + '@esbuild/openbsd-arm64': 0.25.11 2195 + '@esbuild/openbsd-x64': 0.25.11 2196 + '@esbuild/openharmony-arm64': 0.25.11 2197 + '@esbuild/sunos-x64': 0.25.11 2198 + '@esbuild/win32-arm64': 0.25.11 2199 + '@esbuild/win32-ia32': 0.25.11 2200 + '@esbuild/win32-x64': 0.25.11 2201 + 2202 + escalade@3.2.0: {} 2203 + 2204 + escape-string-regexp@1.0.5: {} 2205 + 2206 + escape-string-regexp@4.0.0: {} 2207 + 2208 + eslint-plugin-unicorn@61.0.2(eslint@9.38.0(jiti@2.6.1)): 2209 + dependencies: 2210 + '@babel/helper-validator-identifier': 7.27.1 2211 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 2212 + '@eslint/plugin-kit': 0.3.5 2213 + change-case: 5.4.4 2214 + ci-info: 4.3.1 2215 + clean-regexp: 1.0.0 2216 + core-js-compat: 3.46.0 2217 + eslint: 9.38.0(jiti@2.6.1) 2218 + esquery: 1.6.0 2219 + find-up-simple: 1.0.1 2220 + globals: 16.4.0 2221 + indent-string: 5.0.0 2222 + is-builtin-module: 5.0.0 2223 + jsesc: 3.1.0 2224 + pluralize: 8.0.0 2225 + regexp-tree: 0.1.27 2226 + regjsparser: 0.12.0 2227 + semver: 7.7.3 2228 + strip-indent: 4.1.1 2229 + 2230 + eslint-scope@8.4.0: 2231 + dependencies: 2232 + esrecurse: 4.3.0 2233 + estraverse: 5.3.0 2234 + 2235 + eslint-visitor-keys@3.4.3: {} 2236 + 2237 + eslint-visitor-keys@4.2.1: {} 2238 + 2239 + eslint@9.38.0(jiti@2.6.1): 2240 + dependencies: 2241 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0(jiti@2.6.1)) 2242 + '@eslint-community/regexpp': 4.12.1 2243 + '@eslint/config-array': 0.21.1 2244 + '@eslint/config-helpers': 0.4.1 2245 + '@eslint/core': 0.16.0 2246 + '@eslint/eslintrc': 3.3.1 2247 + '@eslint/js': 9.38.0 2248 + '@eslint/plugin-kit': 0.4.0 2249 + '@humanfs/node': 0.16.7 2250 + '@humanwhocodes/module-importer': 1.0.1 2251 + '@humanwhocodes/retry': 0.4.3 2252 + '@types/estree': 1.0.8 2253 + ajv: 6.12.6 2254 + chalk: 4.1.2 2255 + cross-spawn: 7.0.6 2256 + debug: 4.4.3 2257 + escape-string-regexp: 4.0.0 2258 + eslint-scope: 8.4.0 2259 + eslint-visitor-keys: 4.2.1 2260 + espree: 10.4.0 2261 + esquery: 1.6.0 2262 + esutils: 2.0.3 2263 + fast-deep-equal: 3.1.3 2264 + file-entry-cache: 8.0.0 2265 + find-up: 5.0.0 2266 + glob-parent: 6.0.2 2267 + ignore: 5.3.2 2268 + imurmurhash: 0.1.4 2269 + is-glob: 4.0.3 2270 + json-stable-stringify-without-jsonify: 1.0.1 2271 + lodash.merge: 4.6.2 2272 + minimatch: 3.1.2 2273 + natural-compare: 1.4.0 2274 + optionator: 0.9.4 2275 + optionalDependencies: 2276 + jiti: 2.6.1 2277 + transitivePeerDependencies: 2278 + - supports-color 2279 + 2280 + espree@10.4.0: 2281 + dependencies: 2282 + acorn: 8.15.0 2283 + acorn-jsx: 5.3.2(acorn@8.15.0) 2284 + eslint-visitor-keys: 4.2.1 2285 + 2286 + esquery@1.6.0: 2287 + dependencies: 2288 + estraverse: 5.3.0 2289 + 2290 + esrecurse@4.3.0: 2291 + dependencies: 2292 + estraverse: 5.3.0 2293 + 2294 + estraverse@5.3.0: {} 2295 + 2296 + estree-walker@3.0.3: 2297 + dependencies: 2298 + '@types/estree': 1.0.8 2299 + 2300 + esutils@2.0.3: {} 2301 + 2302 + expect-type@1.2.2: {} 2303 + 2304 + exsolve@1.0.7: {} 2305 + 2306 + fast-deep-equal@3.1.3: {} 2307 + 2308 + fast-glob@3.3.3: 2309 + dependencies: 2310 + '@nodelib/fs.stat': 2.0.5 2311 + '@nodelib/fs.walk': 1.2.8 2312 + glob-parent: 5.1.2 2313 + merge2: 1.4.1 2314 + micromatch: 4.0.8 2315 + 2316 + fast-json-stable-stringify@2.1.0: {} 2317 + 2318 + fast-levenshtein@2.0.6: {} 2319 + 2320 + fastq@1.19.1: 2321 + dependencies: 2322 + reusify: 1.1.0 2323 + 2324 + fdir@6.5.0(picomatch@4.0.3): 2325 + optionalDependencies: 2326 + picomatch: 4.0.3 2327 + 2328 + file-entry-cache@8.0.0: 2329 + dependencies: 2330 + flat-cache: 4.0.1 2331 + 2332 + fill-range@7.1.1: 2333 + dependencies: 2334 + to-regex-range: 5.0.1 2335 + 2336 + find-up-simple@1.0.1: {} 2337 + 2338 + find-up@5.0.0: 2339 + dependencies: 2340 + locate-path: 6.0.0 2341 + path-exists: 4.0.0 2342 + 2343 + flat-cache@4.0.1: 2344 + dependencies: 2345 + flatted: 3.3.3 2346 + keyv: 4.5.4 2347 + 2348 + flatted@3.3.3: {} 2349 + 2350 + fsevents@2.3.3: 2351 + optional: true 2352 + 2353 + get-tsconfig@4.12.0: 2354 + dependencies: 2355 + resolve-pkg-maps: 1.0.0 2356 + 2357 + giget@2.0.0: 2358 + dependencies: 2359 + citty: 0.1.6 2360 + consola: 3.4.2 2361 + defu: 6.1.4 2362 + node-fetch-native: 1.6.7 2363 + nypm: 0.6.2 2364 + pathe: 2.0.3 2365 + 2366 + glob-parent@5.1.2: 2367 + dependencies: 2368 + is-glob: 4.0.3 2369 + 2370 + glob-parent@6.0.2: 2371 + dependencies: 2372 + is-glob: 4.0.3 2373 + 2374 + globals@14.0.0: {} 2375 + 2376 + globals@16.4.0: {} 2377 + 2378 + graphemer@1.4.0: {} 2379 + 2380 + has-flag@4.0.0: {} 2381 + 2382 + hookable@5.5.3: {} 2383 + 2384 + ignore@5.3.2: {} 2385 + 2386 + ignore@7.0.5: {} 2387 + 2388 + import-fresh@3.3.1: 2389 + dependencies: 2390 + parent-module: 1.0.1 2391 + resolve-from: 4.0.0 2392 + 2393 + imurmurhash@0.1.4: {} 2394 + 2395 + indent-string@5.0.0: {} 2396 + 2397 + is-builtin-module@5.0.0: 2398 + dependencies: 2399 + builtin-modules: 5.0.0 2400 + 2401 + is-extglob@2.1.1: {} 2402 + 2403 + is-glob@4.0.3: 2404 + dependencies: 2405 + is-extglob: 2.1.1 2406 + 2407 + is-number@7.0.0: {} 2408 + 2409 + isexe@2.0.0: {} 2410 + 2411 + jiti@2.6.1: {} 2412 + 2413 + js-tokens@9.0.1: {} 2414 + 2415 + js-yaml@4.1.0: 2416 + dependencies: 2417 + argparse: 2.0.1 2418 + 2419 + jsesc@3.0.2: {} 2420 + 2421 + jsesc@3.1.0: {} 2422 + 2423 + json-buffer@3.0.1: {} 2424 + 2425 + json-schema-traverse@0.4.1: {} 2426 + 2427 + json-stable-stringify-without-jsonify@1.0.1: {} 2428 + 2429 + jsonc-parser@3.3.1: {} 2430 + 2431 + keyv@4.5.4: 2432 + dependencies: 2433 + json-buffer: 3.0.1 2434 + 2435 + levn@0.4.1: 2436 + dependencies: 2437 + prelude-ls: 1.2.1 2438 + type-check: 0.4.0 2439 + 2440 + locate-path@6.0.0: 2441 + dependencies: 2442 + p-locate: 5.0.0 2443 + 2444 + lodash.merge@4.6.2: {} 2445 + 2446 + loupe@3.2.1: {} 2447 + 2448 + magic-string@0.30.19: 2449 + dependencies: 2450 + '@jridgewell/sourcemap-codec': 1.5.5 2451 + 2452 + merge2@1.4.1: {} 2453 + 2454 + micromatch@4.0.8: 2455 + dependencies: 2456 + braces: 3.0.3 2457 + picomatch: 2.3.1 2458 + 2459 + minimatch@3.1.2: 2460 + dependencies: 2461 + brace-expansion: 1.1.12 2462 + 2463 + minimatch@9.0.5: 2464 + dependencies: 2465 + brace-expansion: 2.0.2 2466 + 2467 + ms@2.1.3: {} 2468 + 2469 + nanoid@3.3.11: {} 2470 + 2471 + natural-compare@1.4.0: {} 2472 + 2473 + node-fetch-native@1.6.7: {} 2474 + 2475 + node-releases@2.0.25: {} 2476 + 2477 + nypm@0.6.2: 2478 + dependencies: 2479 + citty: 0.1.6 2480 + consola: 3.4.2 2481 + pathe: 2.0.3 2482 + pkg-types: 2.3.0 2483 + tinyexec: 1.0.1 2484 + 2485 + ohash@2.0.11: {} 2486 + 2487 + optionator@0.9.4: 2488 + dependencies: 2489 + deep-is: 0.1.4 2490 + fast-levenshtein: 2.0.6 2491 + levn: 0.4.1 2492 + prelude-ls: 1.2.1 2493 + type-check: 0.4.0 2494 + word-wrap: 1.2.5 2495 + 2496 + p-limit@3.1.0: 2497 + dependencies: 2498 + yocto-queue: 0.1.0 2499 + 2500 + p-locate@5.0.0: 2501 + dependencies: 2502 + p-limit: 3.1.0 2503 + 2504 + package-manager-detector@1.4.1: {} 2505 + 2506 + parent-module@1.0.1: 2507 + dependencies: 2508 + callsites: 3.1.0 2509 + 2510 + path-exists@4.0.0: {} 2511 + 2512 + path-key@3.1.1: {} 2513 + 2514 + pathe@2.0.3: {} 2515 + 2516 + pathval@2.0.1: {} 2517 + 2518 + perfect-debounce@2.0.0: {} 2519 + 2520 + picocolors@1.1.1: {} 2521 + 2522 + picomatch@2.3.1: {} 2523 + 2524 + picomatch@4.0.3: {} 2525 + 2526 + pkg-types@2.3.0: 2527 + dependencies: 2528 + confbox: 0.2.2 2529 + exsolve: 1.0.7 2530 + pathe: 2.0.3 2531 + 2532 + pluralize@8.0.0: {} 2533 + 2534 + postcss@8.5.6: 2535 + dependencies: 2536 + nanoid: 3.3.11 2537 + picocolors: 1.1.1 2538 + source-map-js: 1.2.1 2539 + 2540 + prelude-ls@1.2.1: {} 2541 + 2542 + punycode@2.3.1: {} 2543 + 2544 + quansync@0.2.11: {} 2545 + 2546 + queue-microtask@1.2.3: {} 2547 + 2548 + rc9@2.1.2: 2549 + dependencies: 2550 + defu: 6.1.4 2551 + destr: 2.0.5 2552 + 2553 + readdirp@4.1.2: {} 2554 + 2555 + regexp-tree@0.1.27: {} 2556 + 2557 + regjsparser@0.12.0: 2558 + dependencies: 2559 + jsesc: 3.0.2 2560 + 2561 + resolve-from@4.0.0: {} 2562 + 2563 + resolve-pkg-maps@1.0.0: {} 2564 + 2565 + reusify@1.1.0: {} 2566 + 2567 + rolldown-plugin-dts@0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3): 2568 + dependencies: 2569 + '@babel/generator': 7.28.3 2570 + '@babel/parser': 7.28.4 2571 + '@babel/types': 7.28.4 2572 + ast-kit: 2.1.3 2573 + birpc: 2.6.1 2574 + debug: 4.4.3 2575 + dts-resolver: 2.1.2 2576 + get-tsconfig: 4.12.0 2577 + magic-string: 0.30.19 2578 + rolldown: 1.0.0-beta.43 2579 + optionalDependencies: 2580 + typescript: 5.9.3 2581 + transitivePeerDependencies: 2582 + - oxc-resolver 2583 + - supports-color 2584 + 2585 + rolldown@1.0.0-beta.43: 2586 + dependencies: 2587 + '@oxc-project/types': 0.94.0 2588 + '@rolldown/pluginutils': 1.0.0-beta.43 2589 + ansis: 4.2.0 2590 + optionalDependencies: 2591 + '@rolldown/binding-android-arm64': 1.0.0-beta.43 2592 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.43 2593 + '@rolldown/binding-darwin-x64': 1.0.0-beta.43 2594 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.43 2595 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.43 2596 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.43 2597 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.43 2598 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.43 2599 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.43 2600 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.43 2601 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.43 2602 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.43 2603 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.43 2604 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.43 2605 + 2606 + rollup@4.52.4: 2607 + dependencies: 2608 + '@types/estree': 1.0.8 2609 + optionalDependencies: 2610 + '@rollup/rollup-android-arm-eabi': 4.52.4 2611 + '@rollup/rollup-android-arm64': 4.52.4 2612 + '@rollup/rollup-darwin-arm64': 4.52.4 2613 + '@rollup/rollup-darwin-x64': 4.52.4 2614 + '@rollup/rollup-freebsd-arm64': 4.52.4 2615 + '@rollup/rollup-freebsd-x64': 4.52.4 2616 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.4 2617 + '@rollup/rollup-linux-arm-musleabihf': 4.52.4 2618 + '@rollup/rollup-linux-arm64-gnu': 4.52.4 2619 + '@rollup/rollup-linux-arm64-musl': 4.52.4 2620 + '@rollup/rollup-linux-loong64-gnu': 4.52.4 2621 + '@rollup/rollup-linux-ppc64-gnu': 4.52.4 2622 + '@rollup/rollup-linux-riscv64-gnu': 4.52.4 2623 + '@rollup/rollup-linux-riscv64-musl': 4.52.4 2624 + '@rollup/rollup-linux-s390x-gnu': 4.52.4 2625 + '@rollup/rollup-linux-x64-gnu': 4.52.4 2626 + '@rollup/rollup-linux-x64-musl': 4.52.4 2627 + '@rollup/rollup-openharmony-arm64': 4.52.4 2628 + '@rollup/rollup-win32-arm64-msvc': 4.52.4 2629 + '@rollup/rollup-win32-ia32-msvc': 4.52.4 2630 + '@rollup/rollup-win32-x64-gnu': 4.52.4 2631 + '@rollup/rollup-win32-x64-msvc': 4.52.4 2632 + fsevents: 2.3.3 2633 + 2634 + run-parallel@1.2.0: 2635 + dependencies: 2636 + queue-microtask: 1.2.3 2637 + 2638 + semver@7.7.3: {} 2639 + 2640 + shebang-command@2.0.0: 2641 + dependencies: 2642 + shebang-regex: 3.0.0 2643 + 2644 + shebang-regex@3.0.0: {} 2645 + 2646 + siginfo@2.0.0: {} 2647 + 2648 + source-map-js@1.2.1: {} 2649 + 2650 + stackback@0.0.2: {} 2651 + 2652 + std-env@3.10.0: {} 2653 + 2654 + strip-indent@4.1.1: {} 2655 + 2656 + strip-json-comments@3.1.1: {} 2657 + 2658 + strip-literal@3.1.0: 2659 + dependencies: 2660 + js-tokens: 9.0.1 2661 + 2662 + supports-color@7.2.0: 2663 + dependencies: 2664 + has-flag: 4.0.0 2665 + 2666 + tinybench@2.9.0: {} 2667 + 2668 + tinyexec@0.3.2: {} 2669 + 2670 + tinyexec@1.0.1: {} 2671 + 2672 + tinyglobby@0.2.15: 2673 + dependencies: 2674 + fdir: 6.5.0(picomatch@4.0.3) 2675 + picomatch: 4.0.3 2676 + 2677 + tinypool@1.1.1: {} 2678 + 2679 + tinyrainbow@2.0.0: {} 2680 + 2681 + tinyspy@4.0.4: {} 2682 + 2683 + to-regex-range@5.0.1: 2684 + dependencies: 2685 + is-number: 7.0.0 2686 + 2687 + tree-kill@1.2.2: {} 2688 + 2689 + ts-api-utils@2.1.0(typescript@5.9.3): 2690 + dependencies: 2691 + typescript: 5.9.3 2692 + 2693 + tsdown@0.15.7(typescript@5.9.3): 2694 + dependencies: 2695 + ansis: 4.2.0 2696 + cac: 6.7.14 2697 + chokidar: 4.0.3 2698 + debug: 4.4.3 2699 + diff: 8.0.2 2700 + empathic: 2.0.0 2701 + hookable: 5.5.3 2702 + rolldown: 1.0.0-beta.43 2703 + rolldown-plugin-dts: 0.16.12(rolldown@1.0.0-beta.43)(typescript@5.9.3) 2704 + semver: 7.7.3 2705 + tinyexec: 1.0.1 2706 + tinyglobby: 0.2.15 2707 + tree-kill: 1.2.2 2708 + unconfig: 7.3.3 2709 + optionalDependencies: 2710 + typescript: 5.9.3 2711 + transitivePeerDependencies: 2712 + - '@ts-macro/tsc' 2713 + - '@typescript/native-preview' 2714 + - oxc-resolver 2715 + - supports-color 2716 + - vue-tsc 2717 + 2718 + tslib@2.8.1: 2719 + optional: true 2720 + 2721 + type-check@0.4.0: 2722 + dependencies: 2723 + prelude-ls: 1.2.1 2724 + 2725 + typescript-eslint@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3): 2726 + dependencies: 2727 + '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2728 + '@typescript-eslint/parser': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2729 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) 2730 + '@typescript-eslint/utils': 8.46.1(eslint@9.38.0(jiti@2.6.1))(typescript@5.9.3) 2731 + eslint: 9.38.0(jiti@2.6.1) 2732 + typescript: 5.9.3 2733 + transitivePeerDependencies: 2734 + - supports-color 2735 + 2736 + typescript@5.9.3: {} 2737 + 2738 + unconfig@7.3.3: 2739 + dependencies: 2740 + '@quansync/fs': 0.1.5 2741 + defu: 6.1.4 2742 + jiti: 2.6.1 2743 + quansync: 0.2.11 2744 + 2745 + undici-types@7.14.0: {} 2746 + 2747 + update-browserslist-db@1.1.3(browserslist@4.26.3): 2748 + dependencies: 2749 + browserslist: 4.26.3 2750 + escalade: 3.2.0 2751 + picocolors: 1.1.1 2752 + 2753 + uri-js@4.4.1: 2754 + dependencies: 2755 + punycode: 2.3.1 2756 + 2757 + vite-node@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1): 2758 + dependencies: 2759 + cac: 6.7.14 2760 + debug: 4.4.3 2761 + es-module-lexer: 1.7.0 2762 + pathe: 2.0.3 2763 + vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1) 2764 + transitivePeerDependencies: 2765 + - '@types/node' 2766 + - jiti 2767 + - less 2768 + - lightningcss 2769 + - sass 2770 + - sass-embedded 2771 + - stylus 2772 + - sugarss 2773 + - supports-color 2774 + - terser 2775 + - tsx 2776 + - yaml 2777 + 2778 + vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1): 2779 + dependencies: 2780 + esbuild: 0.25.11 2781 + fdir: 6.5.0(picomatch@4.0.3) 2782 + picomatch: 4.0.3 2783 + postcss: 8.5.6 2784 + rollup: 4.52.4 2785 + tinyglobby: 0.2.15 2786 + optionalDependencies: 2787 + '@types/node': 24.8.1 2788 + fsevents: 2.3.3 2789 + jiti: 2.6.1 2790 + yaml: 2.8.1 2791 + 2792 + vitest@3.2.4(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1): 2793 + dependencies: 2794 + '@types/chai': 5.2.2 2795 + '@vitest/expect': 3.2.4 2796 + '@vitest/mocker': 3.2.4(vite@7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1)) 2797 + '@vitest/pretty-format': 3.2.4 2798 + '@vitest/runner': 3.2.4 2799 + '@vitest/snapshot': 3.2.4 2800 + '@vitest/spy': 3.2.4 2801 + '@vitest/utils': 3.2.4 2802 + chai: 5.3.3 2803 + debug: 4.4.3 2804 + expect-type: 1.2.2 2805 + magic-string: 0.30.19 2806 + pathe: 2.0.3 2807 + picomatch: 4.0.3 2808 + std-env: 3.10.0 2809 + tinybench: 2.9.0 2810 + tinyexec: 0.3.2 2811 + tinyglobby: 0.2.15 2812 + tinypool: 1.1.1 2813 + tinyrainbow: 2.0.0 2814 + vite: 7.1.10(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1) 2815 + vite-node: 3.2.4(@types/node@24.8.1)(jiti@2.6.1)(yaml@2.8.1) 2816 + why-is-node-running: 2.3.0 2817 + optionalDependencies: 2818 + '@types/node': 24.8.1 2819 + transitivePeerDependencies: 2820 + - jiti 2821 + - less 2822 + - lightningcss 2823 + - msw 2824 + - sass 2825 + - sass-embedded 2826 + - stylus 2827 + - sugarss 2828 + - supports-color 2829 + - terser 2830 + - tsx 2831 + - yaml 2832 + 2833 + which@2.0.2: 2834 + dependencies: 2835 + isexe: 2.0.0 2836 + 2837 + why-is-node-running@2.3.0: 2838 + dependencies: 2839 + siginfo: 2.0.0 2840 + stackback: 0.0.2 2841 + 2842 + word-wrap@1.2.5: {} 2843 + 2844 + yaml@2.8.1: {} 2845 + 2846 + yocto-queue@0.1.0: {}
+2
cli/pnpm-workspace.yaml
··· 1 + onlyBuiltDependencies: 2 + - esbuild
+303
cli/src/commands/docs.ts
··· 1 + import chalk from "chalk"; 2 + import { mkdir, readdir, readFile, writeFile } from "node:fs/promises"; 3 + import path from "node:path"; 4 + import ts from "typescript"; 5 + 6 + type Member = { name: string; type: string; docs?: string }; 7 + type EntryKind = "function" | "interface" | "type" | "class"; 8 + 9 + type DocumentEntry = { 10 + name: string; 11 + kind: EntryKind; 12 + description: string; 13 + examples: string[]; 14 + signature?: string; 15 + members?: Array<Member>; 16 + }; 17 + 18 + type JSDocumentParsed = { description: string; examples: string[] }; 19 + 20 + /** 21 + * Extract and parse JSDoc comment text 22 + */ 23 + function extractJSDocument(node: ts.Node, sourceFile: ts.SourceFile): JSDocumentParsed { 24 + const fullText = sourceFile.getFullText(); 25 + const ranges = ts.getLeadingCommentRanges(fullText, node.getFullStart()); 26 + 27 + if (!ranges || ranges.length === 0) { 28 + return { description: "", examples: [] }; 29 + } 30 + 31 + const comments = ranges.map((range) => fullText.substring(range.pos, range.end)); 32 + const jsdocComments = comments.filter((c) => c.trim().startsWith("/**")); 33 + 34 + if (jsdocComments.length === 0) { 35 + return { description: "", examples: [] }; 36 + } 37 + 38 + const comment = jsdocComments.at(-1); 39 + const lines = comment!.split("\n").map((line) => line.trim()).map((line) => line.replace(/^\/\*\*\s?/, "")).map(( 40 + line, 41 + ) => line.replace(/^\*\s?/, "")).map((line) => line.replace(/\*\/\s*$/, "")).filter((line) => 42 + line !== "/" && line !== "*" 43 + ); 44 + 45 + const description: string[] = []; 46 + const examples: string[] = []; 47 + let currentExample: string[] = []; 48 + let inExample = false; 49 + 50 + for (const line of lines) { 51 + if (line.startsWith("@example")) { 52 + inExample = true; 53 + continue; 54 + } 55 + 56 + if (line.startsWith("@") && !line.startsWith("@example")) { 57 + if (inExample && currentExample.length > 0) { 58 + examples.push(currentExample.join("\n").trim()); 59 + currentExample = []; 60 + } 61 + inExample = false; 62 + continue; 63 + } 64 + 65 + if (inExample) { 66 + currentExample.push(line); 67 + } else { 68 + description.push(line); 69 + } 70 + } 71 + 72 + if (currentExample.length > 0) { 73 + examples.push(currentExample.join("\n").trim()); 74 + } 75 + 76 + return { description: description.join("\n").trim(), examples }; 77 + } 78 + 79 + /** 80 + * Extract function signature 81 + */ 82 + function extractFunctionSignature(node: ts.FunctionDeclaration, sourceFile: ts.SourceFile): string { 83 + const start = node.getStart(sourceFile); 84 + const end = node.body ? node.body.getStart(sourceFile) : node.getEnd(); 85 + return sourceFile.text.substring(start, end).trim().replaceAll(/\s+/g, " "); 86 + } 87 + 88 + /** 89 + * Extract interface members 90 + */ 91 + function extractInterfaceMembers( 92 + node: ts.InterfaceDeclaration, 93 + sourceFile: ts.SourceFile, 94 + ): Array<{ name: string; type: string; docs?: string }> { 95 + const members: Array<{ name: string; type: string; docs?: string }> = []; 96 + 97 + for (const member of node.members) { 98 + if (ts.isPropertySignature(member) && member.name) { 99 + const name = member.name.getText(sourceFile); 100 + const type = member.type ? member.type.getText(sourceFile) : "unknown"; 101 + const { description } = extractJSDocument(member, sourceFile); 102 + 103 + members.push({ name, type, docs: description || undefined }); 104 + } 105 + } 106 + 107 + return members; 108 + } 109 + 110 + /** 111 + * Parse a TypeScript file and extract documentation 112 + */ 113 + function parseFile(filePath: string, content: string): DocumentEntry[] { 114 + const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true); 115 + const entries: DocumentEntry[] = []; 116 + 117 + function visit(node: ts.Node) { 118 + if (ts.isFunctionDeclaration(node) && node.name) { 119 + const modifiers = node.modifiers; 120 + const isExported = modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword); 121 + 122 + if (isExported) { 123 + const name = node.name.text; 124 + const { description, examples } = extractJSDocument(node, sourceFile); 125 + const signature = extractFunctionSignature(node, sourceFile); 126 + 127 + entries.push({ name, kind: "function", description, examples, signature }); 128 + } 129 + } 130 + 131 + if (ts.isInterfaceDeclaration(node)) { 132 + const modifiers = node.modifiers; 133 + const isExported = modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword); 134 + 135 + if (isExported) { 136 + const name = node.name.text; 137 + const { description, examples } = extractJSDocument(node, sourceFile); 138 + const members = extractInterfaceMembers(node, sourceFile); 139 + 140 + entries.push({ name, kind: "interface", description, examples, members }); 141 + } 142 + } 143 + 144 + if (ts.isTypeAliasDeclaration(node)) { 145 + const modifiers = node.modifiers; 146 + const isExported = modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword); 147 + 148 + if (isExported) { 149 + const name = node.name.text; 150 + const { description, examples } = extractJSDocument(node, sourceFile); 151 + const signature = node.type.getText(sourceFile); 152 + 153 + entries.push({ name, kind: "type", description, examples, signature }); 154 + } 155 + } 156 + 157 + ts.forEachChild(node, visit); 158 + } 159 + 160 + visit(sourceFile); 161 + return entries; 162 + } 163 + 164 + /** 165 + * Generate markdown for a documentation entry 166 + */ 167 + function generateMarkdown(entries: DocumentEntry[], moduleName: string, moduleDocs: string): string { 168 + const lines: string[] = []; 169 + 170 + lines.push(`# ${moduleName}`, ""); 171 + 172 + if (moduleDocs) { 173 + lines.push(moduleDocs, ""); 174 + } 175 + 176 + for (const entry of entries) { 177 + lines.push(`## ${entry.name}`, ""); 178 + 179 + if (entry.description) { 180 + lines.push(entry.description, ""); 181 + } 182 + 183 + if (entry.signature) { 184 + lines.push("```typescript", entry.signature, "```", ""); 185 + } 186 + 187 + if (entry.examples && entry.examples.length > 0) { 188 + for (const example of entry.examples) { 189 + lines.push("**Example:**", "", "```typescript", example, "```", ""); 190 + } 191 + } 192 + 193 + if (entry.members && entry.members.length > 0) { 194 + lines.push("### Members", ""); 195 + 196 + for (const member of entry.members) { 197 + lines.push(`- **${member.name}**: \`${member.type}\``); 198 + if (member.docs) { 199 + lines.push(` ${member.docs}`); 200 + } 201 + } 202 + 203 + lines.push(""); 204 + } 205 + } 206 + 207 + return lines.join("\n"); 208 + } 209 + 210 + /** 211 + * Extract module-level documentation 212 + */ 213 + function extractModuleDocs(content: string): string { 214 + const lines = content.split("\n"); 215 + const documentLines: string[] = []; 216 + let inDocument = false; 217 + 218 + for (const line of lines) { 219 + const trimmed = line.trim(); 220 + 221 + if (trimmed === "/**") { 222 + inDocument = true; 223 + continue; 224 + } 225 + 226 + if (inDocument) { 227 + if (trimmed === "*/") { 228 + break; 229 + } 230 + 231 + const cleaned = trimmed.replace(/^\*\s?/, ""); 232 + if (!cleaned.startsWith("@packageDocumentation")) { 233 + documentLines.push(cleaned); 234 + } 235 + } 236 + } 237 + 238 + return documentLines.join("\n").trim(); 239 + } 240 + 241 + /** 242 + * Process a TypeScript file and generate documentation 243 + */ 244 + async function processFile(filePath: string, baseDir: string, outputDir: string): Promise<void> { 245 + const content = await readFile(filePath, "utf8"); 246 + const entries = parseFile(filePath, content); 247 + 248 + if (entries.length === 0) { 249 + return; 250 + } 251 + 252 + const moduleDocs = extractModuleDocs(content); 253 + const relativePath = path.relative(baseDir, filePath); 254 + const moduleName = path.basename(relativePath, ".ts"); 255 + const markdown = generateMarkdown(entries, moduleName, moduleDocs); 256 + 257 + const outputPath = path.join(outputDir, `${moduleName}.md`); 258 + await writeFile(outputPath, markdown, "utf8"); 259 + 260 + console.log(chalk.green(` Generated: ${relativePath} -> api/${moduleName}.md`)); 261 + } 262 + 263 + /** 264 + * Recursively find all TypeScript files 265 + */ 266 + async function findTsFiles(dir: string, files: string[] = []): Promise<string[]> { 267 + const entries = await readdir(dir, { withFileTypes: true }); 268 + 269 + for (const entry of entries) { 270 + const fullPath = path.join(dir, entry.name); 271 + 272 + if (entry.isDirectory()) { 273 + await findTsFiles(fullPath, files); 274 + } else if (entry.isFile() && entry.name.endsWith(".ts")) { 275 + files.push(fullPath); 276 + } 277 + } 278 + 279 + return files; 280 + } 281 + 282 + /** 283 + * Docs command implementation 284 + */ 285 + export async function docsCommand(): Promise<void> { 286 + const projectRoot = path.join(process.cwd(), ".."); 287 + const srcDir = path.join(projectRoot, "src"); 288 + const docsDir = path.join(projectRoot, "docs", "api"); 289 + 290 + console.log(chalk.blue.bold("\nGenerating API Documentation\n")); 291 + 292 + await mkdir(docsDir, { recursive: true }); 293 + 294 + const files = await findTsFiles(srcDir); 295 + 296 + console.log(chalk.cyan(`Found ${files.length} TypeScript files\n`)); 297 + 298 + for (const file of files) { 299 + await processFile(file, srcDir, docsDir); 300 + } 301 + 302 + console.log(chalk.green.bold(`\nAPI documentation generated in docs/api/\n`)); 303 + }
+139
cli/src/commands/stats.ts
··· 1 + import chalk from "chalk"; 2 + import { readdir, readFile, stat } from "node:fs/promises"; 3 + import path from "node:path"; 4 + 5 + type FileStats = { path: string; lines: number; totalLines: number }; 6 + type DirectoryStats = { totalLines: number; codeLines: number; files: FileStats[] }; 7 + type Lines = { lines: number; totalLines: number }; 8 + 9 + /** 10 + * Count lines of code in a file, excluding doc comments 11 + */ 12 + async function countLines(filePath: string): Promise<Lines> { 13 + const content = await readFile(filePath, "utf8"); 14 + const lines = content.split("\n"); 15 + 16 + let codeLines = 0; 17 + let inDocComment = false; 18 + 19 + for (const line of lines) { 20 + const trimmed = line.trim(); 21 + 22 + if (trimmed.startsWith("/**")) { 23 + inDocComment = true; 24 + continue; 25 + } 26 + 27 + if (inDocComment) { 28 + if (trimmed.endsWith("*/")) { 29 + inDocComment = false; 30 + } 31 + continue; 32 + } 33 + 34 + if (trimmed === "" || trimmed.startsWith("//")) { 35 + continue; 36 + } 37 + 38 + codeLines++; 39 + } 40 + 41 + return { lines: codeLines, totalLines: lines.length }; 42 + } 43 + 44 + /** 45 + * Recursively walk a directory and collect TypeScript files 46 + */ 47 + async function walkDirectory(dir: string, files: string[] = []): Promise<string[]> { 48 + const entries = await readdir(dir); 49 + 50 + for (const entry of entries) { 51 + const fullPath = path.join(dir, entry); 52 + const stats = await stat(fullPath); 53 + 54 + if (stats.isDirectory()) { 55 + if (entry !== "node_modules" && entry !== "dist" && entry !== ".git") { 56 + await walkDirectory(fullPath, files); 57 + } 58 + } else if (stats.isFile() && entry.endsWith(".ts")) { 59 + files.push(fullPath); 60 + } 61 + } 62 + 63 + return files; 64 + } 65 + 66 + /** 67 + * Collect stats for a directory 68 + */ 69 + async function collectStats(directory: string, baseDir: string): Promise<DirectoryStats> { 70 + const files = await walkDirectory(directory); 71 + const fileStats: FileStats[] = []; 72 + let totalLines = 0; 73 + let codeLines = 0; 74 + 75 + for (const file of files) { 76 + const { lines, totalLines: total } = await countLines(file); 77 + const relativePath = path.relative(baseDir, file); 78 + 79 + fileStats.push({ path: relativePath, lines, totalLines: total }); 80 + 81 + codeLines += lines; 82 + totalLines += total; 83 + } 84 + 85 + return { totalLines, codeLines, files: fileStats }; 86 + } 87 + 88 + /** 89 + * Stats command implementation 90 + */ 91 + export async function statsCommand(includeFull: boolean): Promise<void> { 92 + const projectRoot = path.join(process.cwd(), ".."); 93 + const srcDir = path.join(projectRoot, "src"); 94 + const testDir = path.join(projectRoot, "test"); 95 + 96 + console.log(chalk.blue.bold("\nVolt.js Code Statistics\n")); 97 + 98 + const srcStats = await collectStats(srcDir, projectRoot); 99 + 100 + console.log(chalk.cyan("Source Code (src/):")); 101 + console.log(` Files: ${srcStats.files.length}`); 102 + console.log(` Total Lines: ${srcStats.totalLines}`); 103 + console.log(chalk.green(` Code Lines: ${srcStats.codeLines}`)); 104 + console.log(` Doc/Comments: ${srcStats.totalLines - srcStats.codeLines}`); 105 + 106 + let totalCode = srcStats.codeLines; 107 + let totalTotal = srcStats.totalLines; 108 + let totalFileCount = srcStats.files.length; 109 + 110 + // Include tests if --full flag is set 111 + if (includeFull) { 112 + const testStats = await collectStats(testDir, projectRoot); 113 + 114 + console.log(chalk.cyan("\nTest Code (test/):")); 115 + console.log(` Files: ${testStats.files.length}`); 116 + console.log(` Total Lines: ${testStats.totalLines}`); 117 + console.log(chalk.green(` Code Lines: ${testStats.codeLines}`)); 118 + console.log(` Doc/Comments: ${testStats.totalLines - testStats.codeLines}`); 119 + 120 + totalCode += testStats.codeLines; 121 + totalTotal += testStats.totalLines; 122 + totalFileCount += testStats.files.length; 123 + } 124 + 125 + console.log(chalk.blue.bold("\nTotal:")); 126 + console.log(` Files: ${totalFileCount}`); 127 + console.log(` Total Lines: ${totalTotal}`); 128 + console.log(chalk.green.bold(` Code Lines: ${totalCode}`)); 129 + console.log(` Doc/Comments: ${totalTotal - totalCode}`); 130 + 131 + if (process.env.VERBOSE) { 132 + console.log(chalk.yellow("\n\nFile Breakdown:")); 133 + for (const file of srcStats.files) { 134 + console.log(` ${file.path}: ${file.lines} lines`); 135 + } 136 + } 137 + 138 + console.log(); 139 + }
+31
cli/src/index.ts
··· 1 + import chalk from "chalk"; 2 + import { Command } from "commander"; 3 + import { docsCommand } from "./commands/docs.js"; 4 + import { statsCommand } from "./commands/stats.js"; 5 + 6 + const program = new Command(); 7 + 8 + program.name("volt").description("CLI tools for Volt.js development").version("0.1.0"); 9 + 10 + program.command("docs").description("Generate API documentation from TypeScript doc comments").action(async () => { 11 + try { 12 + await docsCommand(); 13 + } catch (error) { 14 + console.error(chalk.red("Error generating docs:"), error); 15 + process.exit(1); 16 + } 17 + }); 18 + 19 + program.command("stats").description("Display lines of code statistics").option( 20 + "--full", 21 + "Include test files in the count", 22 + ).action(async (options) => { 23 + try { 24 + await statsCommand(options.full); 25 + } catch (error) { 26 + console.error(chalk.red("Error generating stats:"), error); 27 + process.exit(1); 28 + } 29 + }); 30 + 31 + program.parse();
+104
cli/tests/docs.test.ts
··· 1 + import { readFile } from "node:fs/promises"; 2 + import { join } from "node:path"; 3 + import { describe, expect, it } from "vitest"; 4 + 5 + describe("docs generation", () => { 6 + it("should extract function documentation", async () => { 7 + const testFile = join(process.cwd(), "..", "src", "core", "signal.ts"); 8 + const content = await readFile(testFile, "utf-8"); 9 + 10 + expect(content).toContain("Creates a new signal"); 11 + expect(content).toContain("@param initialValue"); 12 + expect(content).toContain("@returns A Signal object"); 13 + expect(content).toContain("@example"); 14 + }); 15 + 16 + it("should extract interface documentation", async () => { 17 + const testFile = join(process.cwd(), "..", "src", "core", "signal.ts"); 18 + const content = await readFile(testFile, "utf-8"); 19 + 20 + expect(content).toContain("interface Signal"); 21 + expect(content).toContain("interface ComputedSignal"); 22 + }); 23 + 24 + it("should handle JSDoc with examples", () => { 25 + const jsdoc = `/** 26 + * Creates a signal 27 + * @example 28 + * const count = signal(0); 29 + * count.set(1); 30 + */`; 31 + 32 + const hasExample = jsdoc.includes("@example"); 33 + expect(hasExample).toBe(true); 34 + 35 + const lines = jsdoc.split("\n"); 36 + const exampleLines: string[] = []; 37 + let inExample = false; 38 + 39 + for (const line of lines) { 40 + const trimmed = line.trim().replace(/^\*\s?/, ""); 41 + 42 + if (trimmed.startsWith("@example")) { 43 + inExample = true; 44 + continue; 45 + } 46 + 47 + if (trimmed.startsWith("@") && !trimmed.startsWith("@example")) { 48 + inExample = false; 49 + continue; 50 + } 51 + 52 + if (inExample && trimmed !== "" && !trimmed.startsWith("*/")) { 53 + exampleLines.push(trimmed); 54 + } 55 + } 56 + 57 + expect(exampleLines.length).toBeGreaterThan(0); 58 + expect(exampleLines.join("\n")).toContain("signal(0)"); 59 + }); 60 + 61 + it("should clean up JSDoc comments", () => { 62 + const jsdoc = `/** 63 + * This is a description 64 + * with multiple lines 65 + * @param foo - description 66 + */`; 67 + 68 + const lines = jsdoc.split("\n").map((line) => line.trim()).map((line) => line.replace(/^\/\*\*\s?/, "")).map(( 69 + line, 70 + ) => line.replace(/^\*\s?/, "")).map((line) => line.replace(/\*\/\s*$/, "")).filter((line) => 71 + !line.startsWith("@") && line !== "" 72 + ); 73 + 74 + const description = lines.join("\n").trim(); 75 + 76 + expect(description).toContain("This is a description"); 77 + expect(description).toContain("with multiple lines"); 78 + expect(description).not.toContain("@param"); 79 + }); 80 + 81 + it("should parse markdown structure", () => { 82 + const markdown = `# Module 83 + 84 + ## Function 85 + 86 + Description here 87 + 88 + \`\`\`typescript 89 + function foo(): void 90 + \`\`\` 91 + 92 + **Example:** 93 + 94 + \`\`\`typescript 95 + foo(); 96 + \`\`\` 97 + `; 98 + 99 + expect(markdown).toContain("# Module"); 100 + expect(markdown).toContain("## Function"); 101 + expect(markdown).toContain("**Example:**"); 102 + expect(markdown).toMatch(/```typescript[\s\S]*?```/); 103 + }); 104 + });
+126
cli/tests/stats.test.ts
··· 1 + import { readFile } from "node:fs/promises"; 2 + import { join } from "node:path"; 3 + import { describe, expect, it } from "vitest"; 4 + 5 + describe("stats command", () => { 6 + it("should count lines excluding doc comments", async () => { 7 + const testDir = join(process.cwd(), "..", "src", "core"); 8 + const signalFile = join(testDir, "signal.ts"); 9 + const content = await readFile(signalFile, "utf-8"); 10 + 11 + const lines = content.split("\n"); 12 + let codeLines = 0; 13 + let inDocComment = false; 14 + 15 + for (const line of lines) { 16 + const trimmed = line.trim(); 17 + 18 + if (trimmed.startsWith("/**")) { 19 + inDocComment = true; 20 + continue; 21 + } 22 + 23 + if (inDocComment) { 24 + if (trimmed.endsWith("*/")) { 25 + inDocComment = false; 26 + } 27 + continue; 28 + } 29 + 30 + if (trimmed === "" || trimmed.startsWith("//")) { 31 + continue; 32 + } 33 + 34 + codeLines++; 35 + } 36 + 37 + expect(codeLines).toBeGreaterThan(0); 38 + expect(codeLines).toBeLessThan(lines.length); 39 + }); 40 + 41 + it("should exclude empty lines", () => { 42 + const content = ` 43 + function test() { 44 + return true; 45 + } 46 + 47 + export { test }; 48 + `; 49 + 50 + const lines = content.split("\n"); 51 + let codeLines = 0; 52 + 53 + for (const line of lines) { 54 + const trimmed = line.trim(); 55 + 56 + if (trimmed === "" || trimmed.startsWith("//")) { 57 + continue; 58 + } 59 + 60 + codeLines++; 61 + } 62 + 63 + expect(codeLines).toBe(4); 64 + }); 65 + 66 + it("should exclude single-line comments", () => { 67 + const content = `// This is a comment 68 + function test() { 69 + // Another comment 70 + return true; 71 + }`; 72 + 73 + const lines = content.split("\n"); 74 + let codeLines = 0; 75 + 76 + for (const line of lines) { 77 + const trimmed = line.trim(); 78 + 79 + if (trimmed === "" || trimmed.startsWith("//")) { 80 + continue; 81 + } 82 + 83 + codeLines++; 84 + } 85 + 86 + expect(codeLines).toBe(3); 87 + }); 88 + 89 + it("should exclude doc comment blocks", () => { 90 + const content = `/** 91 + * This is a doc comment 92 + * @param foo - some param 93 + */ 94 + function test(foo: string) { 95 + return foo; 96 + }`; 97 + 98 + const lines = content.split("\n"); 99 + let codeLines = 0; 100 + let inDocComment = false; 101 + 102 + for (const line of lines) { 103 + const trimmed = line.trim(); 104 + 105 + if (trimmed.startsWith("/**")) { 106 + inDocComment = true; 107 + continue; 108 + } 109 + 110 + if (inDocComment) { 111 + if (trimmed.endsWith("*/")) { 112 + inDocComment = false; 113 + } 114 + continue; 115 + } 116 + 117 + if (trimmed === "" || trimmed.startsWith("//")) { 118 + continue; 119 + } 120 + 121 + codeLines++; 122 + } 123 + 124 + expect(codeLines).toBe(3); 125 + }); 126 + });
+20
cli/tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "target": "esnext", 4 + "lib": ["es2023"], 5 + "moduleDetection": "force", 6 + "module": "preserve", 7 + "moduleResolution": "bundler", 8 + "resolveJsonModule": true, 9 + "types": ["node"], 10 + "strict": true, 11 + "noUnusedLocals": true, 12 + "declaration": true, 13 + "emitDeclarationOnly": true, 14 + "esModuleInterop": true, 15 + "isolatedModules": true, 16 + "verbatimModuleSyntax": true, 17 + "skipLibCheck": true 18 + }, 19 + "include": ["src"] 20 + }
+9
cli/tsdown.config.ts
··· 1 + import { defineConfig } from "tsdown"; 2 + 3 + export default defineConfig({ 4 + entry: ["src/index.ts"], 5 + format: ["esm"], 6 + clean: true, 7 + shims: true, 8 + banner: { js: "#!/usr/bin/env node" }, 9 + });
+8 -1
eslint.config.js
··· 5 5 import { fileURLToPath } from "node:url"; 6 6 import ts from "typescript-eslint"; 7 7 8 - const gitignorePath = fileURLToPath(new URL("./.gitignore", import.meta.url)); 8 + const gitignorePath = fileURLToPath( 9 + new globals.URL("./.gitignore", import.meta.url) 10 + ); 9 11 10 12 /** @type {import('eslint').Linter.Config} */ 11 13 export default ts.config( ··· 21 23 tsconfigRootDir: import.meta.dirname, 22 24 }, 23 25 }, 26 + ignores: ["./cli/**", "eslint.config.js"], 24 27 rules: { 25 28 "no-undef": "off", 26 29 "@typescript-eslint/no-unused-vars": [ ··· 42 45 "warn", 43 46 { 44 47 replacements: { 48 + src: { source: false }, 49 + dir: { direction: false, directory: false }, 50 + docs: { documentation: false, documents: false }, 51 + doc: { document: false }, 45 52 props: { properties: false }, 46 53 params: { parameters: false }, 47 54 param: { parameter: false },