├── .editorconfig ├── .github └── workflows │ └── ci.yaml ├── .gitignore ├── .node-version ├── .npmrc ├── .prettierignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── biome.json ├── description.svg ├── package-lock.json ├── package.json ├── public ├── icons │ ├── icon.png │ ├── icon@2x.png │ └── icon@3x.png └── manifest.json ├── renovate.json5 ├── scripts └── zip.ts ├── src └── content │ └── index.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_size = 2 8 | indent_style = space 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | pull_request: 9 | 10 | jobs: 11 | npm-run: 12 | name: ${{ matrix.stage }} 13 | 14 | strategy: 15 | fail-fast: false 16 | 17 | matrix: 18 | stage: [lint, typecheck, package] 19 | 20 | runs-on: ubuntu-24.04 21 | 22 | steps: 23 | - uses: actions/checkout@v4 24 | 25 | - uses: actions/setup-node@v4 26 | with: 27 | node-version-file: .node-version 28 | cache: npm 29 | 30 | - run: npm ci 31 | 32 | - run: npm run ${{ matrix.stage }} 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependency directories 2 | node_modules/ 3 | 4 | # Webpack build / generate output 5 | dist/ 6 | *.zip 7 | -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 22.16.0 2 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | # Configure with an exact version rather than using npm’s default semver range operator. 2 | save-exact=true 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /node_modules 3 | package-lock.json 4 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Hideki Igarashi 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OctoSSO 2 | 3 | OctoSSO is a browser extension to assist GitHub's single sign-on feature. 4 | 5 | ![Description](description.svg) 6 | 7 | ## Installation 8 | 9 | You can install OctoSSO from each web browser's store: 10 | 11 | - Google Chrome: [Chrome Web Store](https://chrome.google.com/webstore/detail/octosso/ngkigjcddendcidingmacfbbjnbbefff) 12 | - Mozilla Firefox: [Mozilla Add-ons](https://addons.mozilla.org/ja/firefox/addon/octosso/) 13 | 14 | ## What's the problem? 15 | 16 | Even if your session with the Identity Provider is valid, GitHub's single sign-on sessions expire frequently. 17 | 18 | Once the session expires, you have to click on each organization's link to authenticate the IdP, and the more organizations that have SSO enabled, the more cumbersome it is. 19 | 20 | ## How does this web extension solve the problem? 21 | 22 | This web extension saves the pain by automatically clicking the Single sign-on link for each organization that prompts on the Top / Notifications / Profile page on GitHub and the Single sign-on page button beyond that. 23 | 24 | ## License 25 | 26 | [MIT](LICENSE) 27 | 28 | ## Disclaimer 29 | 30 | This OSS is unofficial and has no relationship with GitHub, Inc. 31 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", 3 | "files": { 4 | "include": ["src/**/*.ts", "scripts/**/*.ts"] 5 | }, 6 | "linter": { 7 | "enabled": true, 8 | "rules": { 9 | "recommended": true 10 | } 11 | }, 12 | "formatter": { 13 | "enabled": false 14 | }, 15 | "organizeImports": { 16 | "enabled": true 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "octosso", 3 | "lockfileVersion": 3, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "license": "MIT", 8 | "devDependencies": { 9 | "@biomejs/biome": "1.9.4", 10 | "@types/archiver": "6.0.3", 11 | "archiver": "7.0.1", 12 | "npm-run-all2": "7.0.2", 13 | "prettier": "3.5.3", 14 | "rimraf": "6.0.1", 15 | "tsx": "4.19.4", 16 | "typescript": "5.8.3", 17 | "vite": "6.3.5" 18 | } 19 | }, 20 | "node_modules/@biomejs/biome": { 21 | "version": "1.9.4", 22 | "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.9.4.tgz", 23 | "integrity": "sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==", 24 | "dev": true, 25 | "hasInstallScript": true, 26 | "license": "MIT OR Apache-2.0", 27 | "bin": { 28 | "biome": "bin/biome" 29 | }, 30 | "engines": { 31 | "node": ">=14.21.3" 32 | }, 33 | "funding": { 34 | "type": "opencollective", 35 | "url": "https://opencollective.com/biome" 36 | }, 37 | "optionalDependencies": { 38 | "@biomejs/cli-darwin-arm64": "1.9.4", 39 | "@biomejs/cli-darwin-x64": "1.9.4", 40 | "@biomejs/cli-linux-arm64": "1.9.4", 41 | "@biomejs/cli-linux-arm64-musl": "1.9.4", 42 | "@biomejs/cli-linux-x64": "1.9.4", 43 | "@biomejs/cli-linux-x64-musl": "1.9.4", 44 | "@biomejs/cli-win32-arm64": "1.9.4", 45 | "@biomejs/cli-win32-x64": "1.9.4" 46 | } 47 | }, 48 | "node_modules/@biomejs/cli-darwin-arm64": { 49 | "version": "1.9.4", 50 | "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-1.9.4.tgz", 51 | "integrity": "sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==", 52 | "cpu": [ 53 | "arm64" 54 | ], 55 | "dev": true, 56 | "license": "MIT OR Apache-2.0", 57 | "optional": true, 58 | "os": [ 59 | "darwin" 60 | ], 61 | "engines": { 62 | "node": ">=14.21.3" 63 | } 64 | }, 65 | "node_modules/@biomejs/cli-darwin-x64": { 66 | "version": "1.9.4", 67 | "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-1.9.4.tgz", 68 | "integrity": "sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==", 69 | "cpu": [ 70 | "x64" 71 | ], 72 | "dev": true, 73 | "license": "MIT OR Apache-2.0", 74 | "optional": true, 75 | "os": [ 76 | "darwin" 77 | ], 78 | "engines": { 79 | "node": ">=14.21.3" 80 | } 81 | }, 82 | "node_modules/@biomejs/cli-linux-arm64": { 83 | "version": "1.9.4", 84 | "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-1.9.4.tgz", 85 | "integrity": "sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==", 86 | "cpu": [ 87 | "arm64" 88 | ], 89 | "dev": true, 90 | "license": "MIT OR Apache-2.0", 91 | "optional": true, 92 | "os": [ 93 | "linux" 94 | ], 95 | "engines": { 96 | "node": ">=14.21.3" 97 | } 98 | }, 99 | "node_modules/@biomejs/cli-linux-arm64-musl": { 100 | "version": "1.9.4", 101 | "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.9.4.tgz", 102 | "integrity": "sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==", 103 | "cpu": [ 104 | "arm64" 105 | ], 106 | "dev": true, 107 | "license": "MIT OR Apache-2.0", 108 | "optional": true, 109 | "os": [ 110 | "linux" 111 | ], 112 | "engines": { 113 | "node": ">=14.21.3" 114 | } 115 | }, 116 | "node_modules/@biomejs/cli-linux-x64": { 117 | "version": "1.9.4", 118 | "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-1.9.4.tgz", 119 | "integrity": "sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==", 120 | "cpu": [ 121 | "x64" 122 | ], 123 | "dev": true, 124 | "license": "MIT OR Apache-2.0", 125 | "optional": true, 126 | "os": [ 127 | "linux" 128 | ], 129 | "engines": { 130 | "node": ">=14.21.3" 131 | } 132 | }, 133 | "node_modules/@biomejs/cli-linux-x64-musl": { 134 | "version": "1.9.4", 135 | "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-1.9.4.tgz", 136 | "integrity": "sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==", 137 | "cpu": [ 138 | "x64" 139 | ], 140 | "dev": true, 141 | "license": "MIT OR Apache-2.0", 142 | "optional": true, 143 | "os": [ 144 | "linux" 145 | ], 146 | "engines": { 147 | "node": ">=14.21.3" 148 | } 149 | }, 150 | "node_modules/@biomejs/cli-win32-arm64": { 151 | "version": "1.9.4", 152 | "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-1.9.4.tgz", 153 | "integrity": "sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==", 154 | "cpu": [ 155 | "arm64" 156 | ], 157 | "dev": true, 158 | "license": "MIT OR Apache-2.0", 159 | "optional": true, 160 | "os": [ 161 | "win32" 162 | ], 163 | "engines": { 164 | "node": ">=14.21.3" 165 | } 166 | }, 167 | "node_modules/@biomejs/cli-win32-x64": { 168 | "version": "1.9.4", 169 | "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-1.9.4.tgz", 170 | "integrity": "sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==", 171 | "cpu": [ 172 | "x64" 173 | ], 174 | "dev": true, 175 | "license": "MIT OR Apache-2.0", 176 | "optional": true, 177 | "os": [ 178 | "win32" 179 | ], 180 | "engines": { 181 | "node": ">=14.21.3" 182 | } 183 | }, 184 | "node_modules/@esbuild/aix-ppc64": { 185 | "version": "0.25.5", 186 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", 187 | "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", 188 | "cpu": [ 189 | "ppc64" 190 | ], 191 | "dev": true, 192 | "license": "MIT", 193 | "optional": true, 194 | "os": [ 195 | "aix" 196 | ], 197 | "engines": { 198 | "node": ">=18" 199 | } 200 | }, 201 | "node_modules/@esbuild/android-arm": { 202 | "version": "0.25.5", 203 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", 204 | "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", 205 | "cpu": [ 206 | "arm" 207 | ], 208 | "dev": true, 209 | "license": "MIT", 210 | "optional": true, 211 | "os": [ 212 | "android" 213 | ], 214 | "engines": { 215 | "node": ">=18" 216 | } 217 | }, 218 | "node_modules/@esbuild/android-arm64": { 219 | "version": "0.25.5", 220 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", 221 | "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", 222 | "cpu": [ 223 | "arm64" 224 | ], 225 | "dev": true, 226 | "license": "MIT", 227 | "optional": true, 228 | "os": [ 229 | "android" 230 | ], 231 | "engines": { 232 | "node": ">=18" 233 | } 234 | }, 235 | "node_modules/@esbuild/android-x64": { 236 | "version": "0.25.5", 237 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", 238 | "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", 239 | "cpu": [ 240 | "x64" 241 | ], 242 | "dev": true, 243 | "license": "MIT", 244 | "optional": true, 245 | "os": [ 246 | "android" 247 | ], 248 | "engines": { 249 | "node": ">=18" 250 | } 251 | }, 252 | "node_modules/@esbuild/darwin-arm64": { 253 | "version": "0.25.5", 254 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", 255 | "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", 256 | "cpu": [ 257 | "arm64" 258 | ], 259 | "dev": true, 260 | "license": "MIT", 261 | "optional": true, 262 | "os": [ 263 | "darwin" 264 | ], 265 | "engines": { 266 | "node": ">=18" 267 | } 268 | }, 269 | "node_modules/@esbuild/darwin-x64": { 270 | "version": "0.25.5", 271 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", 272 | "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", 273 | "cpu": [ 274 | "x64" 275 | ], 276 | "dev": true, 277 | "license": "MIT", 278 | "optional": true, 279 | "os": [ 280 | "darwin" 281 | ], 282 | "engines": { 283 | "node": ">=18" 284 | } 285 | }, 286 | "node_modules/@esbuild/freebsd-arm64": { 287 | "version": "0.25.5", 288 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", 289 | "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", 290 | "cpu": [ 291 | "arm64" 292 | ], 293 | "dev": true, 294 | "license": "MIT", 295 | "optional": true, 296 | "os": [ 297 | "freebsd" 298 | ], 299 | "engines": { 300 | "node": ">=18" 301 | } 302 | }, 303 | "node_modules/@esbuild/freebsd-x64": { 304 | "version": "0.25.5", 305 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", 306 | "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", 307 | "cpu": [ 308 | "x64" 309 | ], 310 | "dev": true, 311 | "license": "MIT", 312 | "optional": true, 313 | "os": [ 314 | "freebsd" 315 | ], 316 | "engines": { 317 | "node": ">=18" 318 | } 319 | }, 320 | "node_modules/@esbuild/linux-arm": { 321 | "version": "0.25.5", 322 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", 323 | "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", 324 | "cpu": [ 325 | "arm" 326 | ], 327 | "dev": true, 328 | "license": "MIT", 329 | "optional": true, 330 | "os": [ 331 | "linux" 332 | ], 333 | "engines": { 334 | "node": ">=18" 335 | } 336 | }, 337 | "node_modules/@esbuild/linux-arm64": { 338 | "version": "0.25.5", 339 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", 340 | "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", 341 | "cpu": [ 342 | "arm64" 343 | ], 344 | "dev": true, 345 | "license": "MIT", 346 | "optional": true, 347 | "os": [ 348 | "linux" 349 | ], 350 | "engines": { 351 | "node": ">=18" 352 | } 353 | }, 354 | "node_modules/@esbuild/linux-ia32": { 355 | "version": "0.25.5", 356 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", 357 | "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", 358 | "cpu": [ 359 | "ia32" 360 | ], 361 | "dev": true, 362 | "license": "MIT", 363 | "optional": true, 364 | "os": [ 365 | "linux" 366 | ], 367 | "engines": { 368 | "node": ">=18" 369 | } 370 | }, 371 | "node_modules/@esbuild/linux-loong64": { 372 | "version": "0.25.5", 373 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", 374 | "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", 375 | "cpu": [ 376 | "loong64" 377 | ], 378 | "dev": true, 379 | "license": "MIT", 380 | "optional": true, 381 | "os": [ 382 | "linux" 383 | ], 384 | "engines": { 385 | "node": ">=18" 386 | } 387 | }, 388 | "node_modules/@esbuild/linux-mips64el": { 389 | "version": "0.25.5", 390 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", 391 | "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", 392 | "cpu": [ 393 | "mips64el" 394 | ], 395 | "dev": true, 396 | "license": "MIT", 397 | "optional": true, 398 | "os": [ 399 | "linux" 400 | ], 401 | "engines": { 402 | "node": ">=18" 403 | } 404 | }, 405 | "node_modules/@esbuild/linux-ppc64": { 406 | "version": "0.25.5", 407 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", 408 | "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", 409 | "cpu": [ 410 | "ppc64" 411 | ], 412 | "dev": true, 413 | "license": "MIT", 414 | "optional": true, 415 | "os": [ 416 | "linux" 417 | ], 418 | "engines": { 419 | "node": ">=18" 420 | } 421 | }, 422 | "node_modules/@esbuild/linux-riscv64": { 423 | "version": "0.25.5", 424 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", 425 | "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", 426 | "cpu": [ 427 | "riscv64" 428 | ], 429 | "dev": true, 430 | "license": "MIT", 431 | "optional": true, 432 | "os": [ 433 | "linux" 434 | ], 435 | "engines": { 436 | "node": ">=18" 437 | } 438 | }, 439 | "node_modules/@esbuild/linux-s390x": { 440 | "version": "0.25.5", 441 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", 442 | "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", 443 | "cpu": [ 444 | "s390x" 445 | ], 446 | "dev": true, 447 | "license": "MIT", 448 | "optional": true, 449 | "os": [ 450 | "linux" 451 | ], 452 | "engines": { 453 | "node": ">=18" 454 | } 455 | }, 456 | "node_modules/@esbuild/linux-x64": { 457 | "version": "0.25.5", 458 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", 459 | "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", 460 | "cpu": [ 461 | "x64" 462 | ], 463 | "dev": true, 464 | "license": "MIT", 465 | "optional": true, 466 | "os": [ 467 | "linux" 468 | ], 469 | "engines": { 470 | "node": ">=18" 471 | } 472 | }, 473 | "node_modules/@esbuild/netbsd-arm64": { 474 | "version": "0.25.5", 475 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", 476 | "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", 477 | "cpu": [ 478 | "arm64" 479 | ], 480 | "dev": true, 481 | "license": "MIT", 482 | "optional": true, 483 | "os": [ 484 | "netbsd" 485 | ], 486 | "engines": { 487 | "node": ">=18" 488 | } 489 | }, 490 | "node_modules/@esbuild/netbsd-x64": { 491 | "version": "0.25.5", 492 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", 493 | "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", 494 | "cpu": [ 495 | "x64" 496 | ], 497 | "dev": true, 498 | "license": "MIT", 499 | "optional": true, 500 | "os": [ 501 | "netbsd" 502 | ], 503 | "engines": { 504 | "node": ">=18" 505 | } 506 | }, 507 | "node_modules/@esbuild/openbsd-arm64": { 508 | "version": "0.25.5", 509 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", 510 | "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", 511 | "cpu": [ 512 | "arm64" 513 | ], 514 | "dev": true, 515 | "license": "MIT", 516 | "optional": true, 517 | "os": [ 518 | "openbsd" 519 | ], 520 | "engines": { 521 | "node": ">=18" 522 | } 523 | }, 524 | "node_modules/@esbuild/openbsd-x64": { 525 | "version": "0.25.5", 526 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", 527 | "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", 528 | "cpu": [ 529 | "x64" 530 | ], 531 | "dev": true, 532 | "license": "MIT", 533 | "optional": true, 534 | "os": [ 535 | "openbsd" 536 | ], 537 | "engines": { 538 | "node": ">=18" 539 | } 540 | }, 541 | "node_modules/@esbuild/sunos-x64": { 542 | "version": "0.25.5", 543 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", 544 | "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", 545 | "cpu": [ 546 | "x64" 547 | ], 548 | "dev": true, 549 | "license": "MIT", 550 | "optional": true, 551 | "os": [ 552 | "sunos" 553 | ], 554 | "engines": { 555 | "node": ">=18" 556 | } 557 | }, 558 | "node_modules/@esbuild/win32-arm64": { 559 | "version": "0.25.5", 560 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", 561 | "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", 562 | "cpu": [ 563 | "arm64" 564 | ], 565 | "dev": true, 566 | "license": "MIT", 567 | "optional": true, 568 | "os": [ 569 | "win32" 570 | ], 571 | "engines": { 572 | "node": ">=18" 573 | } 574 | }, 575 | "node_modules/@esbuild/win32-ia32": { 576 | "version": "0.25.5", 577 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", 578 | "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", 579 | "cpu": [ 580 | "ia32" 581 | ], 582 | "dev": true, 583 | "license": "MIT", 584 | "optional": true, 585 | "os": [ 586 | "win32" 587 | ], 588 | "engines": { 589 | "node": ">=18" 590 | } 591 | }, 592 | "node_modules/@esbuild/win32-x64": { 593 | "version": "0.25.5", 594 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", 595 | "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", 596 | "cpu": [ 597 | "x64" 598 | ], 599 | "dev": true, 600 | "license": "MIT", 601 | "optional": true, 602 | "os": [ 603 | "win32" 604 | ], 605 | "engines": { 606 | "node": ">=18" 607 | } 608 | }, 609 | "node_modules/@isaacs/cliui": { 610 | "version": "8.0.2", 611 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 612 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 613 | "dev": true, 614 | "license": "ISC", 615 | "dependencies": { 616 | "string-width": "^5.1.2", 617 | "string-width-cjs": "npm:string-width@^4.2.0", 618 | "strip-ansi": "^7.0.1", 619 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 620 | "wrap-ansi": "^8.1.0", 621 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 622 | }, 623 | "engines": { 624 | "node": ">=12" 625 | } 626 | }, 627 | "node_modules/@pkgjs/parseargs": { 628 | "version": "0.11.0", 629 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 630 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 631 | "dev": true, 632 | "license": "MIT", 633 | "optional": true, 634 | "engines": { 635 | "node": ">=14" 636 | } 637 | }, 638 | "node_modules/@rollup/rollup-android-arm-eabi": { 639 | "version": "4.41.1", 640 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", 641 | "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", 642 | "cpu": [ 643 | "arm" 644 | ], 645 | "dev": true, 646 | "license": "MIT", 647 | "optional": true, 648 | "os": [ 649 | "android" 650 | ] 651 | }, 652 | "node_modules/@rollup/rollup-android-arm64": { 653 | "version": "4.41.1", 654 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", 655 | "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", 656 | "cpu": [ 657 | "arm64" 658 | ], 659 | "dev": true, 660 | "license": "MIT", 661 | "optional": true, 662 | "os": [ 663 | "android" 664 | ] 665 | }, 666 | "node_modules/@rollup/rollup-darwin-arm64": { 667 | "version": "4.41.1", 668 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", 669 | "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", 670 | "cpu": [ 671 | "arm64" 672 | ], 673 | "dev": true, 674 | "license": "MIT", 675 | "optional": true, 676 | "os": [ 677 | "darwin" 678 | ] 679 | }, 680 | "node_modules/@rollup/rollup-darwin-x64": { 681 | "version": "4.41.1", 682 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", 683 | "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", 684 | "cpu": [ 685 | "x64" 686 | ], 687 | "dev": true, 688 | "license": "MIT", 689 | "optional": true, 690 | "os": [ 691 | "darwin" 692 | ] 693 | }, 694 | "node_modules/@rollup/rollup-freebsd-arm64": { 695 | "version": "4.41.1", 696 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", 697 | "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", 698 | "cpu": [ 699 | "arm64" 700 | ], 701 | "dev": true, 702 | "license": "MIT", 703 | "optional": true, 704 | "os": [ 705 | "freebsd" 706 | ] 707 | }, 708 | "node_modules/@rollup/rollup-freebsd-x64": { 709 | "version": "4.41.1", 710 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", 711 | "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", 712 | "cpu": [ 713 | "x64" 714 | ], 715 | "dev": true, 716 | "license": "MIT", 717 | "optional": true, 718 | "os": [ 719 | "freebsd" 720 | ] 721 | }, 722 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 723 | "version": "4.41.1", 724 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", 725 | "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", 726 | "cpu": [ 727 | "arm" 728 | ], 729 | "dev": true, 730 | "license": "MIT", 731 | "optional": true, 732 | "os": [ 733 | "linux" 734 | ] 735 | }, 736 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 737 | "version": "4.41.1", 738 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", 739 | "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", 740 | "cpu": [ 741 | "arm" 742 | ], 743 | "dev": true, 744 | "license": "MIT", 745 | "optional": true, 746 | "os": [ 747 | "linux" 748 | ] 749 | }, 750 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 751 | "version": "4.41.1", 752 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", 753 | "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", 754 | "cpu": [ 755 | "arm64" 756 | ], 757 | "dev": true, 758 | "license": "MIT", 759 | "optional": true, 760 | "os": [ 761 | "linux" 762 | ] 763 | }, 764 | "node_modules/@rollup/rollup-linux-arm64-musl": { 765 | "version": "4.41.1", 766 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", 767 | "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", 768 | "cpu": [ 769 | "arm64" 770 | ], 771 | "dev": true, 772 | "license": "MIT", 773 | "optional": true, 774 | "os": [ 775 | "linux" 776 | ] 777 | }, 778 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 779 | "version": "4.41.1", 780 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", 781 | "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", 782 | "cpu": [ 783 | "loong64" 784 | ], 785 | "dev": true, 786 | "license": "MIT", 787 | "optional": true, 788 | "os": [ 789 | "linux" 790 | ] 791 | }, 792 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 793 | "version": "4.41.1", 794 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", 795 | "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", 796 | "cpu": [ 797 | "ppc64" 798 | ], 799 | "dev": true, 800 | "license": "MIT", 801 | "optional": true, 802 | "os": [ 803 | "linux" 804 | ] 805 | }, 806 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 807 | "version": "4.41.1", 808 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", 809 | "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", 810 | "cpu": [ 811 | "riscv64" 812 | ], 813 | "dev": true, 814 | "license": "MIT", 815 | "optional": true, 816 | "os": [ 817 | "linux" 818 | ] 819 | }, 820 | "node_modules/@rollup/rollup-linux-riscv64-musl": { 821 | "version": "4.41.1", 822 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", 823 | "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", 824 | "cpu": [ 825 | "riscv64" 826 | ], 827 | "dev": true, 828 | "license": "MIT", 829 | "optional": true, 830 | "os": [ 831 | "linux" 832 | ] 833 | }, 834 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 835 | "version": "4.41.1", 836 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", 837 | "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", 838 | "cpu": [ 839 | "s390x" 840 | ], 841 | "dev": true, 842 | "license": "MIT", 843 | "optional": true, 844 | "os": [ 845 | "linux" 846 | ] 847 | }, 848 | "node_modules/@rollup/rollup-linux-x64-gnu": { 849 | "version": "4.41.1", 850 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", 851 | "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", 852 | "cpu": [ 853 | "x64" 854 | ], 855 | "dev": true, 856 | "license": "MIT", 857 | "optional": true, 858 | "os": [ 859 | "linux" 860 | ] 861 | }, 862 | "node_modules/@rollup/rollup-linux-x64-musl": { 863 | "version": "4.41.1", 864 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", 865 | "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", 866 | "cpu": [ 867 | "x64" 868 | ], 869 | "dev": true, 870 | "license": "MIT", 871 | "optional": true, 872 | "os": [ 873 | "linux" 874 | ] 875 | }, 876 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 877 | "version": "4.41.1", 878 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", 879 | "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", 880 | "cpu": [ 881 | "arm64" 882 | ], 883 | "dev": true, 884 | "license": "MIT", 885 | "optional": true, 886 | "os": [ 887 | "win32" 888 | ] 889 | }, 890 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 891 | "version": "4.41.1", 892 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", 893 | "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", 894 | "cpu": [ 895 | "ia32" 896 | ], 897 | "dev": true, 898 | "license": "MIT", 899 | "optional": true, 900 | "os": [ 901 | "win32" 902 | ] 903 | }, 904 | "node_modules/@rollup/rollup-win32-x64-msvc": { 905 | "version": "4.41.1", 906 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", 907 | "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", 908 | "cpu": [ 909 | "x64" 910 | ], 911 | "dev": true, 912 | "license": "MIT", 913 | "optional": true, 914 | "os": [ 915 | "win32" 916 | ] 917 | }, 918 | "node_modules/@types/archiver": { 919 | "version": "6.0.3", 920 | "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.3.tgz", 921 | "integrity": "sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==", 922 | "dev": true, 923 | "license": "MIT", 924 | "dependencies": { 925 | "@types/readdir-glob": "*" 926 | } 927 | }, 928 | "node_modules/@types/estree": { 929 | "version": "1.0.7", 930 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 931 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 932 | "dev": true, 933 | "license": "MIT" 934 | }, 935 | "node_modules/@types/node": { 936 | "version": "22.15.29", 937 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", 938 | "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", 939 | "dev": true, 940 | "license": "MIT", 941 | "dependencies": { 942 | "undici-types": "~6.21.0" 943 | } 944 | }, 945 | "node_modules/@types/readdir-glob": { 946 | "version": "1.1.5", 947 | "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", 948 | "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", 949 | "dev": true, 950 | "license": "MIT", 951 | "dependencies": { 952 | "@types/node": "*" 953 | } 954 | }, 955 | "node_modules/abort-controller": { 956 | "version": "3.0.0", 957 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 958 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 959 | "dev": true, 960 | "license": "MIT", 961 | "dependencies": { 962 | "event-target-shim": "^5.0.0" 963 | }, 964 | "engines": { 965 | "node": ">=6.5" 966 | } 967 | }, 968 | "node_modules/ansi-regex": { 969 | "version": "6.1.0", 970 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", 971 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", 972 | "dev": true, 973 | "license": "MIT", 974 | "engines": { 975 | "node": ">=12" 976 | }, 977 | "funding": { 978 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 979 | } 980 | }, 981 | "node_modules/ansi-styles": { 982 | "version": "6.2.1", 983 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 984 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 985 | "dev": true, 986 | "license": "MIT", 987 | "engines": { 988 | "node": ">=12" 989 | }, 990 | "funding": { 991 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 992 | } 993 | }, 994 | "node_modules/archiver": { 995 | "version": "7.0.1", 996 | "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", 997 | "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", 998 | "dev": true, 999 | "license": "MIT", 1000 | "dependencies": { 1001 | "archiver-utils": "^5.0.2", 1002 | "async": "^3.2.4", 1003 | "buffer-crc32": "^1.0.0", 1004 | "readable-stream": "^4.0.0", 1005 | "readdir-glob": "^1.1.2", 1006 | "tar-stream": "^3.0.0", 1007 | "zip-stream": "^6.0.1" 1008 | }, 1009 | "engines": { 1010 | "node": ">= 14" 1011 | } 1012 | }, 1013 | "node_modules/archiver-utils": { 1014 | "version": "5.0.2", 1015 | "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", 1016 | "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", 1017 | "dev": true, 1018 | "license": "MIT", 1019 | "dependencies": { 1020 | "glob": "^10.0.0", 1021 | "graceful-fs": "^4.2.0", 1022 | "is-stream": "^2.0.1", 1023 | "lazystream": "^1.0.0", 1024 | "lodash": "^4.17.15", 1025 | "normalize-path": "^3.0.0", 1026 | "readable-stream": "^4.0.0" 1027 | }, 1028 | "engines": { 1029 | "node": ">= 14" 1030 | } 1031 | }, 1032 | "node_modules/async": { 1033 | "version": "3.2.6", 1034 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", 1035 | "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", 1036 | "dev": true, 1037 | "license": "MIT" 1038 | }, 1039 | "node_modules/b4a": { 1040 | "version": "1.6.7", 1041 | "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", 1042 | "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", 1043 | "dev": true, 1044 | "license": "Apache-2.0" 1045 | }, 1046 | "node_modules/balanced-match": { 1047 | "version": "1.0.2", 1048 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1049 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1050 | "dev": true, 1051 | "license": "MIT" 1052 | }, 1053 | "node_modules/bare-events": { 1054 | "version": "2.5.4", 1055 | "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", 1056 | "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", 1057 | "dev": true, 1058 | "license": "Apache-2.0", 1059 | "optional": true 1060 | }, 1061 | "node_modules/base64-js": { 1062 | "version": "1.5.1", 1063 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1064 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 1065 | "dev": true, 1066 | "funding": [ 1067 | { 1068 | "type": "github", 1069 | "url": "https://github.com/sponsors/feross" 1070 | }, 1071 | { 1072 | "type": "patreon", 1073 | "url": "https://www.patreon.com/feross" 1074 | }, 1075 | { 1076 | "type": "consulting", 1077 | "url": "https://feross.org/support" 1078 | } 1079 | ], 1080 | "license": "MIT" 1081 | }, 1082 | "node_modules/brace-expansion": { 1083 | "version": "2.0.1", 1084 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1085 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1086 | "dev": true, 1087 | "license": "MIT", 1088 | "dependencies": { 1089 | "balanced-match": "^1.0.0" 1090 | } 1091 | }, 1092 | "node_modules/buffer": { 1093 | "version": "6.0.3", 1094 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1095 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1096 | "dev": true, 1097 | "funding": [ 1098 | { 1099 | "type": "github", 1100 | "url": "https://github.com/sponsors/feross" 1101 | }, 1102 | { 1103 | "type": "patreon", 1104 | "url": "https://www.patreon.com/feross" 1105 | }, 1106 | { 1107 | "type": "consulting", 1108 | "url": "https://feross.org/support" 1109 | } 1110 | ], 1111 | "license": "MIT", 1112 | "dependencies": { 1113 | "base64-js": "^1.3.1", 1114 | "ieee754": "^1.2.1" 1115 | } 1116 | }, 1117 | "node_modules/buffer-crc32": { 1118 | "version": "1.0.0", 1119 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", 1120 | "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", 1121 | "dev": true, 1122 | "license": "MIT", 1123 | "engines": { 1124 | "node": ">=8.0.0" 1125 | } 1126 | }, 1127 | "node_modules/color-convert": { 1128 | "version": "2.0.1", 1129 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1130 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1131 | "dev": true, 1132 | "license": "MIT", 1133 | "dependencies": { 1134 | "color-name": "~1.1.4" 1135 | }, 1136 | "engines": { 1137 | "node": ">=7.0.0" 1138 | } 1139 | }, 1140 | "node_modules/color-name": { 1141 | "version": "1.1.4", 1142 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1143 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1144 | "dev": true, 1145 | "license": "MIT" 1146 | }, 1147 | "node_modules/compress-commons": { 1148 | "version": "6.0.2", 1149 | "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", 1150 | "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", 1151 | "dev": true, 1152 | "license": "MIT", 1153 | "dependencies": { 1154 | "crc-32": "^1.2.0", 1155 | "crc32-stream": "^6.0.0", 1156 | "is-stream": "^2.0.1", 1157 | "normalize-path": "^3.0.0", 1158 | "readable-stream": "^4.0.0" 1159 | }, 1160 | "engines": { 1161 | "node": ">= 14" 1162 | } 1163 | }, 1164 | "node_modules/core-util-is": { 1165 | "version": "1.0.3", 1166 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 1167 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", 1168 | "dev": true, 1169 | "license": "MIT" 1170 | }, 1171 | "node_modules/crc-32": { 1172 | "version": "1.2.2", 1173 | "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", 1174 | "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", 1175 | "dev": true, 1176 | "license": "Apache-2.0", 1177 | "bin": { 1178 | "crc32": "bin/crc32.njs" 1179 | }, 1180 | "engines": { 1181 | "node": ">=0.8" 1182 | } 1183 | }, 1184 | "node_modules/crc32-stream": { 1185 | "version": "6.0.0", 1186 | "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", 1187 | "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", 1188 | "dev": true, 1189 | "license": "MIT", 1190 | "dependencies": { 1191 | "crc-32": "^1.2.0", 1192 | "readable-stream": "^4.0.0" 1193 | }, 1194 | "engines": { 1195 | "node": ">= 14" 1196 | } 1197 | }, 1198 | "node_modules/cross-spawn": { 1199 | "version": "7.0.6", 1200 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1201 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1202 | "dev": true, 1203 | "license": "MIT", 1204 | "dependencies": { 1205 | "path-key": "^3.1.0", 1206 | "shebang-command": "^2.0.0", 1207 | "which": "^2.0.1" 1208 | }, 1209 | "engines": { 1210 | "node": ">= 8" 1211 | } 1212 | }, 1213 | "node_modules/eastasianwidth": { 1214 | "version": "0.2.0", 1215 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1216 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1217 | "dev": true, 1218 | "license": "MIT" 1219 | }, 1220 | "node_modules/emoji-regex": { 1221 | "version": "9.2.2", 1222 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1223 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1224 | "dev": true, 1225 | "license": "MIT" 1226 | }, 1227 | "node_modules/esbuild": { 1228 | "version": "0.25.5", 1229 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", 1230 | "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", 1231 | "dev": true, 1232 | "hasInstallScript": true, 1233 | "license": "MIT", 1234 | "bin": { 1235 | "esbuild": "bin/esbuild" 1236 | }, 1237 | "engines": { 1238 | "node": ">=18" 1239 | }, 1240 | "optionalDependencies": { 1241 | "@esbuild/aix-ppc64": "0.25.5", 1242 | "@esbuild/android-arm": "0.25.5", 1243 | "@esbuild/android-arm64": "0.25.5", 1244 | "@esbuild/android-x64": "0.25.5", 1245 | "@esbuild/darwin-arm64": "0.25.5", 1246 | "@esbuild/darwin-x64": "0.25.5", 1247 | "@esbuild/freebsd-arm64": "0.25.5", 1248 | "@esbuild/freebsd-x64": "0.25.5", 1249 | "@esbuild/linux-arm": "0.25.5", 1250 | "@esbuild/linux-arm64": "0.25.5", 1251 | "@esbuild/linux-ia32": "0.25.5", 1252 | "@esbuild/linux-loong64": "0.25.5", 1253 | "@esbuild/linux-mips64el": "0.25.5", 1254 | "@esbuild/linux-ppc64": "0.25.5", 1255 | "@esbuild/linux-riscv64": "0.25.5", 1256 | "@esbuild/linux-s390x": "0.25.5", 1257 | "@esbuild/linux-x64": "0.25.5", 1258 | "@esbuild/netbsd-arm64": "0.25.5", 1259 | "@esbuild/netbsd-x64": "0.25.5", 1260 | "@esbuild/openbsd-arm64": "0.25.5", 1261 | "@esbuild/openbsd-x64": "0.25.5", 1262 | "@esbuild/sunos-x64": "0.25.5", 1263 | "@esbuild/win32-arm64": "0.25.5", 1264 | "@esbuild/win32-ia32": "0.25.5", 1265 | "@esbuild/win32-x64": "0.25.5" 1266 | } 1267 | }, 1268 | "node_modules/event-target-shim": { 1269 | "version": "5.0.1", 1270 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1271 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 1272 | "dev": true, 1273 | "license": "MIT", 1274 | "engines": { 1275 | "node": ">=6" 1276 | } 1277 | }, 1278 | "node_modules/events": { 1279 | "version": "3.3.0", 1280 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 1281 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", 1282 | "dev": true, 1283 | "license": "MIT", 1284 | "engines": { 1285 | "node": ">=0.8.x" 1286 | } 1287 | }, 1288 | "node_modules/fast-fifo": { 1289 | "version": "1.3.2", 1290 | "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", 1291 | "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", 1292 | "dev": true, 1293 | "license": "MIT" 1294 | }, 1295 | "node_modules/fdir": { 1296 | "version": "6.4.5", 1297 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", 1298 | "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", 1299 | "dev": true, 1300 | "license": "MIT", 1301 | "peerDependencies": { 1302 | "picomatch": "^3 || ^4" 1303 | }, 1304 | "peerDependenciesMeta": { 1305 | "picomatch": { 1306 | "optional": true 1307 | } 1308 | } 1309 | }, 1310 | "node_modules/foreground-child": { 1311 | "version": "3.3.1", 1312 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", 1313 | "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", 1314 | "dev": true, 1315 | "license": "ISC", 1316 | "dependencies": { 1317 | "cross-spawn": "^7.0.6", 1318 | "signal-exit": "^4.0.1" 1319 | }, 1320 | "engines": { 1321 | "node": ">=14" 1322 | }, 1323 | "funding": { 1324 | "url": "https://github.com/sponsors/isaacs" 1325 | } 1326 | }, 1327 | "node_modules/fsevents": { 1328 | "version": "2.3.3", 1329 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1330 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1331 | "dev": true, 1332 | "hasInstallScript": true, 1333 | "license": "MIT", 1334 | "optional": true, 1335 | "os": [ 1336 | "darwin" 1337 | ], 1338 | "engines": { 1339 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1340 | } 1341 | }, 1342 | "node_modules/get-tsconfig": { 1343 | "version": "4.10.1", 1344 | "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", 1345 | "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", 1346 | "dev": true, 1347 | "license": "MIT", 1348 | "dependencies": { 1349 | "resolve-pkg-maps": "^1.0.0" 1350 | }, 1351 | "funding": { 1352 | "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" 1353 | } 1354 | }, 1355 | "node_modules/glob": { 1356 | "version": "10.4.5", 1357 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1358 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1359 | "dev": true, 1360 | "license": "ISC", 1361 | "dependencies": { 1362 | "foreground-child": "^3.1.0", 1363 | "jackspeak": "^3.1.2", 1364 | "minimatch": "^9.0.4", 1365 | "minipass": "^7.1.2", 1366 | "package-json-from-dist": "^1.0.0", 1367 | "path-scurry": "^1.11.1" 1368 | }, 1369 | "bin": { 1370 | "glob": "dist/esm/bin.mjs" 1371 | }, 1372 | "funding": { 1373 | "url": "https://github.com/sponsors/isaacs" 1374 | } 1375 | }, 1376 | "node_modules/graceful-fs": { 1377 | "version": "4.2.11", 1378 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1379 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1380 | "dev": true, 1381 | "license": "ISC" 1382 | }, 1383 | "node_modules/ieee754": { 1384 | "version": "1.2.1", 1385 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1386 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 1387 | "dev": true, 1388 | "funding": [ 1389 | { 1390 | "type": "github", 1391 | "url": "https://github.com/sponsors/feross" 1392 | }, 1393 | { 1394 | "type": "patreon", 1395 | "url": "https://www.patreon.com/feross" 1396 | }, 1397 | { 1398 | "type": "consulting", 1399 | "url": "https://feross.org/support" 1400 | } 1401 | ], 1402 | "license": "BSD-3-Clause" 1403 | }, 1404 | "node_modules/inherits": { 1405 | "version": "2.0.4", 1406 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1407 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1408 | "dev": true, 1409 | "license": "ISC" 1410 | }, 1411 | "node_modules/is-fullwidth-code-point": { 1412 | "version": "3.0.0", 1413 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1414 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1415 | "dev": true, 1416 | "license": "MIT", 1417 | "engines": { 1418 | "node": ">=8" 1419 | } 1420 | }, 1421 | "node_modules/is-stream": { 1422 | "version": "2.0.1", 1423 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", 1424 | "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", 1425 | "dev": true, 1426 | "license": "MIT", 1427 | "engines": { 1428 | "node": ">=8" 1429 | }, 1430 | "funding": { 1431 | "url": "https://github.com/sponsors/sindresorhus" 1432 | } 1433 | }, 1434 | "node_modules/isarray": { 1435 | "version": "1.0.0", 1436 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1437 | "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", 1438 | "dev": true, 1439 | "license": "MIT" 1440 | }, 1441 | "node_modules/isexe": { 1442 | "version": "2.0.0", 1443 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1444 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1445 | "dev": true, 1446 | "license": "ISC" 1447 | }, 1448 | "node_modules/jackspeak": { 1449 | "version": "3.4.3", 1450 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1451 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1452 | "dev": true, 1453 | "license": "BlueOak-1.0.0", 1454 | "dependencies": { 1455 | "@isaacs/cliui": "^8.0.2" 1456 | }, 1457 | "funding": { 1458 | "url": "https://github.com/sponsors/isaacs" 1459 | }, 1460 | "optionalDependencies": { 1461 | "@pkgjs/parseargs": "^0.11.0" 1462 | } 1463 | }, 1464 | "node_modules/json-parse-even-better-errors": { 1465 | "version": "4.0.0", 1466 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", 1467 | "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", 1468 | "dev": true, 1469 | "license": "MIT", 1470 | "engines": { 1471 | "node": "^18.17.0 || >=20.5.0" 1472 | } 1473 | }, 1474 | "node_modules/lazystream": { 1475 | "version": "1.0.1", 1476 | "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", 1477 | "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", 1478 | "dev": true, 1479 | "license": "MIT", 1480 | "dependencies": { 1481 | "readable-stream": "^2.0.5" 1482 | }, 1483 | "engines": { 1484 | "node": ">= 0.6.3" 1485 | } 1486 | }, 1487 | "node_modules/lazystream/node_modules/readable-stream": { 1488 | "version": "2.3.8", 1489 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", 1490 | "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", 1491 | "dev": true, 1492 | "license": "MIT", 1493 | "dependencies": { 1494 | "core-util-is": "~1.0.0", 1495 | "inherits": "~2.0.3", 1496 | "isarray": "~1.0.0", 1497 | "process-nextick-args": "~2.0.0", 1498 | "safe-buffer": "~5.1.1", 1499 | "string_decoder": "~1.1.1", 1500 | "util-deprecate": "~1.0.1" 1501 | } 1502 | }, 1503 | "node_modules/lazystream/node_modules/safe-buffer": { 1504 | "version": "5.1.2", 1505 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1506 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1507 | "dev": true, 1508 | "license": "MIT" 1509 | }, 1510 | "node_modules/lazystream/node_modules/string_decoder": { 1511 | "version": "1.1.1", 1512 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1513 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1514 | "dev": true, 1515 | "license": "MIT", 1516 | "dependencies": { 1517 | "safe-buffer": "~5.1.0" 1518 | } 1519 | }, 1520 | "node_modules/lodash": { 1521 | "version": "4.17.21", 1522 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1523 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1524 | "dev": true, 1525 | "license": "MIT" 1526 | }, 1527 | "node_modules/lru-cache": { 1528 | "version": "10.4.3", 1529 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1530 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1531 | "dev": true, 1532 | "license": "ISC" 1533 | }, 1534 | "node_modules/memorystream": { 1535 | "version": "0.3.1", 1536 | "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", 1537 | "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", 1538 | "dev": true, 1539 | "engines": { 1540 | "node": ">= 0.10.0" 1541 | } 1542 | }, 1543 | "node_modules/minimatch": { 1544 | "version": "9.0.5", 1545 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1546 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1547 | "dev": true, 1548 | "license": "ISC", 1549 | "dependencies": { 1550 | "brace-expansion": "^2.0.1" 1551 | }, 1552 | "engines": { 1553 | "node": ">=16 || 14 >=14.17" 1554 | }, 1555 | "funding": { 1556 | "url": "https://github.com/sponsors/isaacs" 1557 | } 1558 | }, 1559 | "node_modules/minipass": { 1560 | "version": "7.1.2", 1561 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1562 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1563 | "dev": true, 1564 | "license": "ISC", 1565 | "engines": { 1566 | "node": ">=16 || 14 >=14.17" 1567 | } 1568 | }, 1569 | "node_modules/nanoid": { 1570 | "version": "3.3.11", 1571 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1572 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1573 | "dev": true, 1574 | "funding": [ 1575 | { 1576 | "type": "github", 1577 | "url": "https://github.com/sponsors/ai" 1578 | } 1579 | ], 1580 | "license": "MIT", 1581 | "bin": { 1582 | "nanoid": "bin/nanoid.cjs" 1583 | }, 1584 | "engines": { 1585 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1586 | } 1587 | }, 1588 | "node_modules/normalize-path": { 1589 | "version": "3.0.0", 1590 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1591 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1592 | "dev": true, 1593 | "license": "MIT", 1594 | "engines": { 1595 | "node": ">=0.10.0" 1596 | } 1597 | }, 1598 | "node_modules/npm-normalize-package-bin": { 1599 | "version": "4.0.0", 1600 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", 1601 | "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", 1602 | "dev": true, 1603 | "license": "ISC", 1604 | "engines": { 1605 | "node": "^18.17.0 || >=20.5.0" 1606 | } 1607 | }, 1608 | "node_modules/npm-run-all2": { 1609 | "version": "7.0.2", 1610 | "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-7.0.2.tgz", 1611 | "integrity": "sha512-7tXR+r9hzRNOPNTvXegM+QzCuMjzUIIq66VDunL6j60O4RrExx32XUhlrS7UK4VcdGw5/Wxzb3kfNcFix9JKDA==", 1612 | "dev": true, 1613 | "license": "MIT", 1614 | "dependencies": { 1615 | "ansi-styles": "^6.2.1", 1616 | "cross-spawn": "^7.0.6", 1617 | "memorystream": "^0.3.1", 1618 | "minimatch": "^9.0.0", 1619 | "pidtree": "^0.6.0", 1620 | "read-package-json-fast": "^4.0.0", 1621 | "shell-quote": "^1.7.3", 1622 | "which": "^5.0.0" 1623 | }, 1624 | "bin": { 1625 | "npm-run-all": "bin/npm-run-all/index.js", 1626 | "npm-run-all2": "bin/npm-run-all/index.js", 1627 | "run-p": "bin/run-p/index.js", 1628 | "run-s": "bin/run-s/index.js" 1629 | }, 1630 | "engines": { 1631 | "node": "^18.17.0 || >=20.5.0", 1632 | "npm": ">= 9" 1633 | } 1634 | }, 1635 | "node_modules/npm-run-all2/node_modules/isexe": { 1636 | "version": "3.1.1", 1637 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", 1638 | "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", 1639 | "dev": true, 1640 | "license": "ISC", 1641 | "engines": { 1642 | "node": ">=16" 1643 | } 1644 | }, 1645 | "node_modules/npm-run-all2/node_modules/which": { 1646 | "version": "5.0.0", 1647 | "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", 1648 | "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", 1649 | "dev": true, 1650 | "license": "ISC", 1651 | "dependencies": { 1652 | "isexe": "^3.1.1" 1653 | }, 1654 | "bin": { 1655 | "node-which": "bin/which.js" 1656 | }, 1657 | "engines": { 1658 | "node": "^18.17.0 || >=20.5.0" 1659 | } 1660 | }, 1661 | "node_modules/package-json-from-dist": { 1662 | "version": "1.0.1", 1663 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 1664 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", 1665 | "dev": true, 1666 | "license": "BlueOak-1.0.0" 1667 | }, 1668 | "node_modules/path-key": { 1669 | "version": "3.1.1", 1670 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1671 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1672 | "dev": true, 1673 | "license": "MIT", 1674 | "engines": { 1675 | "node": ">=8" 1676 | } 1677 | }, 1678 | "node_modules/path-scurry": { 1679 | "version": "1.11.1", 1680 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1681 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1682 | "dev": true, 1683 | "license": "BlueOak-1.0.0", 1684 | "dependencies": { 1685 | "lru-cache": "^10.2.0", 1686 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1687 | }, 1688 | "engines": { 1689 | "node": ">=16 || 14 >=14.18" 1690 | }, 1691 | "funding": { 1692 | "url": "https://github.com/sponsors/isaacs" 1693 | } 1694 | }, 1695 | "node_modules/picocolors": { 1696 | "version": "1.1.1", 1697 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1698 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1699 | "dev": true, 1700 | "license": "ISC" 1701 | }, 1702 | "node_modules/picomatch": { 1703 | "version": "4.0.2", 1704 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 1705 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 1706 | "dev": true, 1707 | "license": "MIT", 1708 | "engines": { 1709 | "node": ">=12" 1710 | }, 1711 | "funding": { 1712 | "url": "https://github.com/sponsors/jonschlinkert" 1713 | } 1714 | }, 1715 | "node_modules/pidtree": { 1716 | "version": "0.6.0", 1717 | "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", 1718 | "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", 1719 | "dev": true, 1720 | "license": "MIT", 1721 | "bin": { 1722 | "pidtree": "bin/pidtree.js" 1723 | }, 1724 | "engines": { 1725 | "node": ">=0.10" 1726 | } 1727 | }, 1728 | "node_modules/postcss": { 1729 | "version": "8.5.4", 1730 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", 1731 | "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", 1732 | "dev": true, 1733 | "funding": [ 1734 | { 1735 | "type": "opencollective", 1736 | "url": "https://opencollective.com/postcss/" 1737 | }, 1738 | { 1739 | "type": "tidelift", 1740 | "url": "https://tidelift.com/funding/github/npm/postcss" 1741 | }, 1742 | { 1743 | "type": "github", 1744 | "url": "https://github.com/sponsors/ai" 1745 | } 1746 | ], 1747 | "license": "MIT", 1748 | "dependencies": { 1749 | "nanoid": "^3.3.11", 1750 | "picocolors": "^1.1.1", 1751 | "source-map-js": "^1.2.1" 1752 | }, 1753 | "engines": { 1754 | "node": "^10 || ^12 || >=14" 1755 | } 1756 | }, 1757 | "node_modules/prettier": { 1758 | "version": "3.5.3", 1759 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", 1760 | "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", 1761 | "dev": true, 1762 | "license": "MIT", 1763 | "bin": { 1764 | "prettier": "bin/prettier.cjs" 1765 | }, 1766 | "engines": { 1767 | "node": ">=14" 1768 | }, 1769 | "funding": { 1770 | "url": "https://github.com/prettier/prettier?sponsor=1" 1771 | } 1772 | }, 1773 | "node_modules/process": { 1774 | "version": "0.11.10", 1775 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 1776 | "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", 1777 | "dev": true, 1778 | "license": "MIT", 1779 | "engines": { 1780 | "node": ">= 0.6.0" 1781 | } 1782 | }, 1783 | "node_modules/process-nextick-args": { 1784 | "version": "2.0.1", 1785 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1786 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", 1787 | "dev": true, 1788 | "license": "MIT" 1789 | }, 1790 | "node_modules/read-package-json-fast": { 1791 | "version": "4.0.0", 1792 | "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-4.0.0.tgz", 1793 | "integrity": "sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==", 1794 | "dev": true, 1795 | "license": "ISC", 1796 | "dependencies": { 1797 | "json-parse-even-better-errors": "^4.0.0", 1798 | "npm-normalize-package-bin": "^4.0.0" 1799 | }, 1800 | "engines": { 1801 | "node": "^18.17.0 || >=20.5.0" 1802 | } 1803 | }, 1804 | "node_modules/readable-stream": { 1805 | "version": "4.7.0", 1806 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", 1807 | "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", 1808 | "dev": true, 1809 | "license": "MIT", 1810 | "dependencies": { 1811 | "abort-controller": "^3.0.0", 1812 | "buffer": "^6.0.3", 1813 | "events": "^3.3.0", 1814 | "process": "^0.11.10", 1815 | "string_decoder": "^1.3.0" 1816 | }, 1817 | "engines": { 1818 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 1819 | } 1820 | }, 1821 | "node_modules/readdir-glob": { 1822 | "version": "1.1.3", 1823 | "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", 1824 | "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", 1825 | "dev": true, 1826 | "license": "Apache-2.0", 1827 | "dependencies": { 1828 | "minimatch": "^5.1.0" 1829 | } 1830 | }, 1831 | "node_modules/readdir-glob/node_modules/minimatch": { 1832 | "version": "5.1.6", 1833 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 1834 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 1835 | "dev": true, 1836 | "license": "ISC", 1837 | "dependencies": { 1838 | "brace-expansion": "^2.0.1" 1839 | }, 1840 | "engines": { 1841 | "node": ">=10" 1842 | } 1843 | }, 1844 | "node_modules/resolve-pkg-maps": { 1845 | "version": "1.0.0", 1846 | "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", 1847 | "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", 1848 | "dev": true, 1849 | "license": "MIT", 1850 | "funding": { 1851 | "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" 1852 | } 1853 | }, 1854 | "node_modules/rimraf": { 1855 | "version": "6.0.1", 1856 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", 1857 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", 1858 | "dev": true, 1859 | "license": "ISC", 1860 | "dependencies": { 1861 | "glob": "^11.0.0", 1862 | "package-json-from-dist": "^1.0.0" 1863 | }, 1864 | "bin": { 1865 | "rimraf": "dist/esm/bin.mjs" 1866 | }, 1867 | "engines": { 1868 | "node": "20 || >=22" 1869 | }, 1870 | "funding": { 1871 | "url": "https://github.com/sponsors/isaacs" 1872 | } 1873 | }, 1874 | "node_modules/rimraf/node_modules/glob": { 1875 | "version": "11.0.2", 1876 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", 1877 | "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", 1878 | "dev": true, 1879 | "license": "ISC", 1880 | "dependencies": { 1881 | "foreground-child": "^3.1.0", 1882 | "jackspeak": "^4.0.1", 1883 | "minimatch": "^10.0.0", 1884 | "minipass": "^7.1.2", 1885 | "package-json-from-dist": "^1.0.0", 1886 | "path-scurry": "^2.0.0" 1887 | }, 1888 | "bin": { 1889 | "glob": "dist/esm/bin.mjs" 1890 | }, 1891 | "engines": { 1892 | "node": "20 || >=22" 1893 | }, 1894 | "funding": { 1895 | "url": "https://github.com/sponsors/isaacs" 1896 | } 1897 | }, 1898 | "node_modules/rimraf/node_modules/jackspeak": { 1899 | "version": "4.1.1", 1900 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", 1901 | "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", 1902 | "dev": true, 1903 | "license": "BlueOak-1.0.0", 1904 | "dependencies": { 1905 | "@isaacs/cliui": "^8.0.2" 1906 | }, 1907 | "engines": { 1908 | "node": "20 || >=22" 1909 | }, 1910 | "funding": { 1911 | "url": "https://github.com/sponsors/isaacs" 1912 | } 1913 | }, 1914 | "node_modules/rimraf/node_modules/lru-cache": { 1915 | "version": "11.1.0", 1916 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", 1917 | "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", 1918 | "dev": true, 1919 | "license": "ISC", 1920 | "engines": { 1921 | "node": "20 || >=22" 1922 | } 1923 | }, 1924 | "node_modules/rimraf/node_modules/minimatch": { 1925 | "version": "10.0.1", 1926 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 1927 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 1928 | "dev": true, 1929 | "license": "ISC", 1930 | "dependencies": { 1931 | "brace-expansion": "^2.0.1" 1932 | }, 1933 | "engines": { 1934 | "node": "20 || >=22" 1935 | }, 1936 | "funding": { 1937 | "url": "https://github.com/sponsors/isaacs" 1938 | } 1939 | }, 1940 | "node_modules/rimraf/node_modules/path-scurry": { 1941 | "version": "2.0.0", 1942 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", 1943 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", 1944 | "dev": true, 1945 | "license": "BlueOak-1.0.0", 1946 | "dependencies": { 1947 | "lru-cache": "^11.0.0", 1948 | "minipass": "^7.1.2" 1949 | }, 1950 | "engines": { 1951 | "node": "20 || >=22" 1952 | }, 1953 | "funding": { 1954 | "url": "https://github.com/sponsors/isaacs" 1955 | } 1956 | }, 1957 | "node_modules/rollup": { 1958 | "version": "4.41.1", 1959 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", 1960 | "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", 1961 | "dev": true, 1962 | "license": "MIT", 1963 | "dependencies": { 1964 | "@types/estree": "1.0.7" 1965 | }, 1966 | "bin": { 1967 | "rollup": "dist/bin/rollup" 1968 | }, 1969 | "engines": { 1970 | "node": ">=18.0.0", 1971 | "npm": ">=8.0.0" 1972 | }, 1973 | "optionalDependencies": { 1974 | "@rollup/rollup-android-arm-eabi": "4.41.1", 1975 | "@rollup/rollup-android-arm64": "4.41.1", 1976 | "@rollup/rollup-darwin-arm64": "4.41.1", 1977 | "@rollup/rollup-darwin-x64": "4.41.1", 1978 | "@rollup/rollup-freebsd-arm64": "4.41.1", 1979 | "@rollup/rollup-freebsd-x64": "4.41.1", 1980 | "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", 1981 | "@rollup/rollup-linux-arm-musleabihf": "4.41.1", 1982 | "@rollup/rollup-linux-arm64-gnu": "4.41.1", 1983 | "@rollup/rollup-linux-arm64-musl": "4.41.1", 1984 | "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", 1985 | "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", 1986 | "@rollup/rollup-linux-riscv64-gnu": "4.41.1", 1987 | "@rollup/rollup-linux-riscv64-musl": "4.41.1", 1988 | "@rollup/rollup-linux-s390x-gnu": "4.41.1", 1989 | "@rollup/rollup-linux-x64-gnu": "4.41.1", 1990 | "@rollup/rollup-linux-x64-musl": "4.41.1", 1991 | "@rollup/rollup-win32-arm64-msvc": "4.41.1", 1992 | "@rollup/rollup-win32-ia32-msvc": "4.41.1", 1993 | "@rollup/rollup-win32-x64-msvc": "4.41.1", 1994 | "fsevents": "~2.3.2" 1995 | } 1996 | }, 1997 | "node_modules/safe-buffer": { 1998 | "version": "5.2.1", 1999 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2000 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2001 | "dev": true, 2002 | "funding": [ 2003 | { 2004 | "type": "github", 2005 | "url": "https://github.com/sponsors/feross" 2006 | }, 2007 | { 2008 | "type": "patreon", 2009 | "url": "https://www.patreon.com/feross" 2010 | }, 2011 | { 2012 | "type": "consulting", 2013 | "url": "https://feross.org/support" 2014 | } 2015 | ], 2016 | "license": "MIT" 2017 | }, 2018 | "node_modules/shebang-command": { 2019 | "version": "2.0.0", 2020 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2021 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2022 | "dev": true, 2023 | "license": "MIT", 2024 | "dependencies": { 2025 | "shebang-regex": "^3.0.0" 2026 | }, 2027 | "engines": { 2028 | "node": ">=8" 2029 | } 2030 | }, 2031 | "node_modules/shebang-regex": { 2032 | "version": "3.0.0", 2033 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2034 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2035 | "dev": true, 2036 | "license": "MIT", 2037 | "engines": { 2038 | "node": ">=8" 2039 | } 2040 | }, 2041 | "node_modules/shell-quote": { 2042 | "version": "1.8.2", 2043 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", 2044 | "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", 2045 | "dev": true, 2046 | "license": "MIT", 2047 | "engines": { 2048 | "node": ">= 0.4" 2049 | }, 2050 | "funding": { 2051 | "url": "https://github.com/sponsors/ljharb" 2052 | } 2053 | }, 2054 | "node_modules/signal-exit": { 2055 | "version": "4.1.0", 2056 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2057 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2058 | "dev": true, 2059 | "license": "ISC", 2060 | "engines": { 2061 | "node": ">=14" 2062 | }, 2063 | "funding": { 2064 | "url": "https://github.com/sponsors/isaacs" 2065 | } 2066 | }, 2067 | "node_modules/source-map-js": { 2068 | "version": "1.2.1", 2069 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2070 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2071 | "dev": true, 2072 | "license": "BSD-3-Clause", 2073 | "engines": { 2074 | "node": ">=0.10.0" 2075 | } 2076 | }, 2077 | "node_modules/streamx": { 2078 | "version": "2.22.0", 2079 | "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", 2080 | "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", 2081 | "dev": true, 2082 | "license": "MIT", 2083 | "dependencies": { 2084 | "fast-fifo": "^1.3.2", 2085 | "text-decoder": "^1.1.0" 2086 | }, 2087 | "optionalDependencies": { 2088 | "bare-events": "^2.2.0" 2089 | } 2090 | }, 2091 | "node_modules/string_decoder": { 2092 | "version": "1.3.0", 2093 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2094 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2095 | "dev": true, 2096 | "license": "MIT", 2097 | "dependencies": { 2098 | "safe-buffer": "~5.2.0" 2099 | } 2100 | }, 2101 | "node_modules/string-width": { 2102 | "version": "5.1.2", 2103 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2104 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2105 | "dev": true, 2106 | "license": "MIT", 2107 | "dependencies": { 2108 | "eastasianwidth": "^0.2.0", 2109 | "emoji-regex": "^9.2.2", 2110 | "strip-ansi": "^7.0.1" 2111 | }, 2112 | "engines": { 2113 | "node": ">=12" 2114 | }, 2115 | "funding": { 2116 | "url": "https://github.com/sponsors/sindresorhus" 2117 | } 2118 | }, 2119 | "node_modules/string-width-cjs": { 2120 | "name": "string-width", 2121 | "version": "4.2.3", 2122 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2123 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2124 | "dev": true, 2125 | "license": "MIT", 2126 | "dependencies": { 2127 | "emoji-regex": "^8.0.0", 2128 | "is-fullwidth-code-point": "^3.0.0", 2129 | "strip-ansi": "^6.0.1" 2130 | }, 2131 | "engines": { 2132 | "node": ">=8" 2133 | } 2134 | }, 2135 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 2136 | "version": "5.0.1", 2137 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2138 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2139 | "dev": true, 2140 | "license": "MIT", 2141 | "engines": { 2142 | "node": ">=8" 2143 | } 2144 | }, 2145 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 2146 | "version": "8.0.0", 2147 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2148 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2149 | "dev": true, 2150 | "license": "MIT" 2151 | }, 2152 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 2153 | "version": "6.0.1", 2154 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2155 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2156 | "dev": true, 2157 | "license": "MIT", 2158 | "dependencies": { 2159 | "ansi-regex": "^5.0.1" 2160 | }, 2161 | "engines": { 2162 | "node": ">=8" 2163 | } 2164 | }, 2165 | "node_modules/strip-ansi": { 2166 | "version": "7.1.0", 2167 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2168 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2169 | "dev": true, 2170 | "license": "MIT", 2171 | "dependencies": { 2172 | "ansi-regex": "^6.0.1" 2173 | }, 2174 | "engines": { 2175 | "node": ">=12" 2176 | }, 2177 | "funding": { 2178 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2179 | } 2180 | }, 2181 | "node_modules/strip-ansi-cjs": { 2182 | "name": "strip-ansi", 2183 | "version": "6.0.1", 2184 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2185 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2186 | "dev": true, 2187 | "license": "MIT", 2188 | "dependencies": { 2189 | "ansi-regex": "^5.0.1" 2190 | }, 2191 | "engines": { 2192 | "node": ">=8" 2193 | } 2194 | }, 2195 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 2196 | "version": "5.0.1", 2197 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2198 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2199 | "dev": true, 2200 | "license": "MIT", 2201 | "engines": { 2202 | "node": ">=8" 2203 | } 2204 | }, 2205 | "node_modules/tar-stream": { 2206 | "version": "3.1.7", 2207 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", 2208 | "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", 2209 | "dev": true, 2210 | "license": "MIT", 2211 | "dependencies": { 2212 | "b4a": "^1.6.4", 2213 | "fast-fifo": "^1.2.0", 2214 | "streamx": "^2.15.0" 2215 | } 2216 | }, 2217 | "node_modules/text-decoder": { 2218 | "version": "1.2.3", 2219 | "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", 2220 | "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", 2221 | "dev": true, 2222 | "license": "Apache-2.0", 2223 | "dependencies": { 2224 | "b4a": "^1.6.4" 2225 | } 2226 | }, 2227 | "node_modules/tinyglobby": { 2228 | "version": "0.2.14", 2229 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", 2230 | "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", 2231 | "dev": true, 2232 | "license": "MIT", 2233 | "dependencies": { 2234 | "fdir": "^6.4.4", 2235 | "picomatch": "^4.0.2" 2236 | }, 2237 | "engines": { 2238 | "node": ">=12.0.0" 2239 | }, 2240 | "funding": { 2241 | "url": "https://github.com/sponsors/SuperchupuDev" 2242 | } 2243 | }, 2244 | "node_modules/tsx": { 2245 | "version": "4.19.4", 2246 | "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", 2247 | "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", 2248 | "dev": true, 2249 | "license": "MIT", 2250 | "dependencies": { 2251 | "esbuild": "~0.25.0", 2252 | "get-tsconfig": "^4.7.5" 2253 | }, 2254 | "bin": { 2255 | "tsx": "dist/cli.mjs" 2256 | }, 2257 | "engines": { 2258 | "node": ">=18.0.0" 2259 | }, 2260 | "optionalDependencies": { 2261 | "fsevents": "~2.3.3" 2262 | } 2263 | }, 2264 | "node_modules/typescript": { 2265 | "version": "5.8.3", 2266 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", 2267 | "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", 2268 | "dev": true, 2269 | "license": "Apache-2.0", 2270 | "bin": { 2271 | "tsc": "bin/tsc", 2272 | "tsserver": "bin/tsserver" 2273 | }, 2274 | "engines": { 2275 | "node": ">=14.17" 2276 | } 2277 | }, 2278 | "node_modules/undici-types": { 2279 | "version": "6.21.0", 2280 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 2281 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 2282 | "dev": true, 2283 | "license": "MIT" 2284 | }, 2285 | "node_modules/util-deprecate": { 2286 | "version": "1.0.2", 2287 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2288 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2289 | "dev": true, 2290 | "license": "MIT" 2291 | }, 2292 | "node_modules/vite": { 2293 | "version": "6.3.5", 2294 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", 2295 | "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", 2296 | "dev": true, 2297 | "license": "MIT", 2298 | "dependencies": { 2299 | "esbuild": "^0.25.0", 2300 | "fdir": "^6.4.4", 2301 | "picomatch": "^4.0.2", 2302 | "postcss": "^8.5.3", 2303 | "rollup": "^4.34.9", 2304 | "tinyglobby": "^0.2.13" 2305 | }, 2306 | "bin": { 2307 | "vite": "bin/vite.js" 2308 | }, 2309 | "engines": { 2310 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 2311 | }, 2312 | "funding": { 2313 | "url": "https://github.com/vitejs/vite?sponsor=1" 2314 | }, 2315 | "optionalDependencies": { 2316 | "fsevents": "~2.3.3" 2317 | }, 2318 | "peerDependencies": { 2319 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 2320 | "jiti": ">=1.21.0", 2321 | "less": "*", 2322 | "lightningcss": "^1.21.0", 2323 | "sass": "*", 2324 | "sass-embedded": "*", 2325 | "stylus": "*", 2326 | "sugarss": "*", 2327 | "terser": "^5.16.0", 2328 | "tsx": "^4.8.1", 2329 | "yaml": "^2.4.2" 2330 | }, 2331 | "peerDependenciesMeta": { 2332 | "@types/node": { 2333 | "optional": true 2334 | }, 2335 | "jiti": { 2336 | "optional": true 2337 | }, 2338 | "less": { 2339 | "optional": true 2340 | }, 2341 | "lightningcss": { 2342 | "optional": true 2343 | }, 2344 | "sass": { 2345 | "optional": true 2346 | }, 2347 | "sass-embedded": { 2348 | "optional": true 2349 | }, 2350 | "stylus": { 2351 | "optional": true 2352 | }, 2353 | "sugarss": { 2354 | "optional": true 2355 | }, 2356 | "terser": { 2357 | "optional": true 2358 | }, 2359 | "tsx": { 2360 | "optional": true 2361 | }, 2362 | "yaml": { 2363 | "optional": true 2364 | } 2365 | } 2366 | }, 2367 | "node_modules/which": { 2368 | "version": "2.0.2", 2369 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2370 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2371 | "dev": true, 2372 | "license": "ISC", 2373 | "dependencies": { 2374 | "isexe": "^2.0.0" 2375 | }, 2376 | "bin": { 2377 | "node-which": "bin/node-which" 2378 | }, 2379 | "engines": { 2380 | "node": ">= 8" 2381 | } 2382 | }, 2383 | "node_modules/wrap-ansi": { 2384 | "version": "8.1.0", 2385 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 2386 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2387 | "dev": true, 2388 | "license": "MIT", 2389 | "dependencies": { 2390 | "ansi-styles": "^6.1.0", 2391 | "string-width": "^5.0.1", 2392 | "strip-ansi": "^7.0.1" 2393 | }, 2394 | "engines": { 2395 | "node": ">=12" 2396 | }, 2397 | "funding": { 2398 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2399 | } 2400 | }, 2401 | "node_modules/wrap-ansi-cjs": { 2402 | "name": "wrap-ansi", 2403 | "version": "7.0.0", 2404 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2405 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2406 | "dev": true, 2407 | "license": "MIT", 2408 | "dependencies": { 2409 | "ansi-styles": "^4.0.0", 2410 | "string-width": "^4.1.0", 2411 | "strip-ansi": "^6.0.0" 2412 | }, 2413 | "engines": { 2414 | "node": ">=10" 2415 | }, 2416 | "funding": { 2417 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2418 | } 2419 | }, 2420 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 2421 | "version": "5.0.1", 2422 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2423 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2424 | "dev": true, 2425 | "license": "MIT", 2426 | "engines": { 2427 | "node": ">=8" 2428 | } 2429 | }, 2430 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 2431 | "version": "4.3.0", 2432 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2433 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2434 | "dev": true, 2435 | "license": "MIT", 2436 | "dependencies": { 2437 | "color-convert": "^2.0.1" 2438 | }, 2439 | "engines": { 2440 | "node": ">=8" 2441 | }, 2442 | "funding": { 2443 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2444 | } 2445 | }, 2446 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 2447 | "version": "8.0.0", 2448 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2449 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2450 | "dev": true, 2451 | "license": "MIT" 2452 | }, 2453 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 2454 | "version": "4.2.3", 2455 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2456 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2457 | "dev": true, 2458 | "license": "MIT", 2459 | "dependencies": { 2460 | "emoji-regex": "^8.0.0", 2461 | "is-fullwidth-code-point": "^3.0.0", 2462 | "strip-ansi": "^6.0.1" 2463 | }, 2464 | "engines": { 2465 | "node": ">=8" 2466 | } 2467 | }, 2468 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 2469 | "version": "6.0.1", 2470 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2471 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2472 | "dev": true, 2473 | "license": "MIT", 2474 | "dependencies": { 2475 | "ansi-regex": "^5.0.1" 2476 | }, 2477 | "engines": { 2478 | "node": ">=8" 2479 | } 2480 | }, 2481 | "node_modules/zip-stream": { 2482 | "version": "6.0.1", 2483 | "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", 2484 | "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", 2485 | "dev": true, 2486 | "license": "MIT", 2487 | "dependencies": { 2488 | "archiver-utils": "^5.0.0", 2489 | "compress-commons": "^6.0.2", 2490 | "readable-stream": "^4.0.0" 2491 | }, 2492 | "engines": { 2493 | "node": ">= 14" 2494 | } 2495 | } 2496 | } 2497 | } 2498 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "OctoSSO is a browser extension to assist GitHub's single sign-on feature", 3 | "license": "MIT", 4 | "repository": { 5 | "type": "git", 6 | "url": "git+https://github.com/ganta/octosso.git" 7 | }, 8 | "bugs": { 9 | "url": "https://github.com/ganta/octosso/issues" 10 | }, 11 | "type": "module", 12 | "scripts": { 13 | "dev": "vite build --watch", 14 | "clean": "rimraf 'dist/*' '*.zip'", 15 | "build": "tsc && vite build", 16 | "typecheck": "tsc --noEmit", 17 | "lint": "run-p --print-label 'lint:*'", 18 | "lint:biome": "biome lint .", 19 | "lint:prettier": "prettier --check .", 20 | "fix": "run-s --print-label 'fix:*'", 21 | "fix:biome": "biome lint --apply .", 22 | "fix:prettier": "prettier --write .", 23 | "package": "run-s --print-label clean build && tsx scripts/zip.ts octosso.zip dist" 24 | }, 25 | "devDependencies": { 26 | "@biomejs/biome": "1.9.4", 27 | "@types/archiver": "6.0.3", 28 | "archiver": "7.0.1", 29 | "npm-run-all2": "7.0.2", 30 | "prettier": "3.5.3", 31 | "rimraf": "6.0.1", 32 | "tsx": "4.19.4", 33 | "typescript": "5.8.3", 34 | "vite": "6.3.5" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /public/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ganta/octosso/178c1b35124fbce48dfa51ad3181294169f8975e/public/icons/icon.png -------------------------------------------------------------------------------- /public/icons/icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ganta/octosso/178c1b35124fbce48dfa51ad3181294169f8975e/public/icons/icon@2x.png -------------------------------------------------------------------------------- /public/icons/icon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ganta/octosso/178c1b35124fbce48dfa51ad3181294169f8975e/public/icons/icon@3x.png -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OctoSSO", 3 | "version": "1.1.0", 4 | "manifest_version": 3, 5 | "description": "OctoSSO is a browser extension to assist GitHub's single sign-on feature", 6 | "homepage_url": "https://github.com/ganta/octosso", 7 | "icons": { 8 | "48": "icons/icon.png", 9 | "96": "icons/icon@2x.png", 10 | "144": "icons/icon@3x.png" 11 | }, 12 | "content_scripts": [ 13 | { 14 | "matches": ["https://github.com/*"], 15 | "js": ["content.js"], 16 | "run_at": "document_end", 17 | "all_frames": true 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | $schema: "https://docs.renovatebot.com/renovate-schema.json", 3 | extends: ["github>ganta/renovate-config"], 4 | packageRules: [ 5 | // TODO: Remove this setting when clean-webpack-plugin supports webpack v5. 6 | { 7 | matchPackageNames: ["webpack"], 8 | allowedVersions: "< 5.0.0", 9 | }, 10 | // TODO: Remove this setting when clean-webpack-plugin supports webpack v5. 11 | { 12 | matchPackageNames: ["copy-webpack-plugin"], 13 | allowedVersions: "< 7.0.0", 14 | }, 15 | // TODO: Remove this setting when clean-webpack-plugin supports webpack v5. 16 | { 17 | matchPackageNames: ["ts-loader"], 18 | allowedVersions: "< 9.0.0", 19 | }, 20 | ], 21 | } 22 | -------------------------------------------------------------------------------- /scripts/zip.ts: -------------------------------------------------------------------------------- 1 | import { createWriteStream } from "node:fs"; 2 | import { dirname, join } from "node:path"; 3 | import { fileURLToPath } from "node:url"; 4 | 5 | import archiver from "archiver"; 6 | 7 | const __filename = fileURLToPath(import.meta.url); 8 | const __dirname = dirname(__filename); 9 | const rootDir = dirname(__dirname); 10 | 11 | const archiveName = process.argv[2]; 12 | const targetDir = process.argv[3]; 13 | 14 | const output = createWriteStream(join(rootDir, archiveName)); 15 | const archive = archiver("zip", { zlib: { level: 9 } }); 16 | 17 | console.log(`Creating ${archiveName}...`); 18 | 19 | output.on("close", () => { 20 | console.log( 21 | `The archive has been created (${archive.pointer()} total bytes)`, 22 | ); 23 | }); 24 | 25 | output.on("end", () => { 26 | console.log("Data has been drained"); 27 | }); 28 | 29 | archive.on("warning", (err) => { 30 | if (err.code === "ENOENT") { 31 | console.warn(err); 32 | } else { 33 | throw err; 34 | } 35 | }); 36 | 37 | archive.on("error", (err) => { 38 | throw err; 39 | }); 40 | 41 | archive.pipe(output); 42 | 43 | archive.directory(join(rootDir, targetDir), false); 44 | 45 | await archive.finalize(); 46 | -------------------------------------------------------------------------------- /src/content/index.ts: -------------------------------------------------------------------------------- 1 | function isSingleSignOnPromptPage(): boolean { 2 | // /orgs/*/saml/consume is the page being processed 3 | if ( 4 | location.pathname.startsWith("/orgs/") && 5 | location.pathname.endsWith("/saml/consume") 6 | ) { 7 | return false; 8 | } 9 | 10 | // When a user opens the single sign-on page. 11 | // https://github.com/orgs//sso?return_to= 12 | if ( 13 | location.pathname.startsWith("/orgs/") && 14 | location.pathname.endsWith("/sso") 15 | ) { 16 | return true; 17 | } 18 | 19 | // When a user opens a page that requires single sign-on. 20 | if ( 21 | document.body.classList.contains("session-authentication") && 22 | document.querySelector(".org-sso") !== null 23 | ) { 24 | return true; 25 | } 26 | 27 | return false; 28 | } 29 | 30 | function clickSingleSignOnPrompt(promptListEl: HTMLUListElement | null) { 31 | if (promptListEl === null) return; 32 | 33 | const singleSignOnAnchorEl = 34 | promptListEl.querySelector("a[href^='/orgs/']"); 35 | 36 | if (singleSignOnAnchorEl !== null) { 37 | singleSignOnAnchorEl.click(); 38 | } 39 | } 40 | 41 | function handleSingleSignOnPage(): void { 42 | const singleSignOnContinueButtonEl = 43 | document.querySelector( 44 | "div.org-sso-panel > form > button", 45 | ); 46 | 47 | if (singleSignOnContinueButtonEl === null) return; 48 | 49 | if (singleSignOnContinueButtonEl.innerText !== "Continue") return; 50 | 51 | singleSignOnContinueButtonEl.click(); 52 | } 53 | 54 | function handleTopPage(): void { 55 | // The single sign-on prompts are lazy-loaded at the top page, 56 | // so they need to be detected by MutationObserver before they can be retrieved. 57 | const dashboardEl = document.querySelector("#dashboard"); 58 | const dashboardObserver = new MutationObserver((_records, observer) => { 59 | const singleSignOnPromptListEl = document.querySelector( 60 | "#dashboard .js-recent-activity-container", 61 | ); 62 | if (singleSignOnPromptListEl === null) return; 63 | 64 | clickSingleSignOnPrompt(singleSignOnPromptListEl); 65 | 66 | observer.disconnect(); 67 | }); 68 | 69 | if (dashboardEl) { 70 | const config = { childList: true, subtree: true }; 71 | dashboardObserver.observe(dashboardEl, config); 72 | } 73 | } 74 | 75 | function handleNotificationPage(): void { 76 | const singleSignOnPromptListEl = document.querySelector( 77 | "#js-repo-pjax-container .js-check-all-container", 78 | ); 79 | clickSingleSignOnPrompt(singleSignOnPromptListEl); 80 | } 81 | 82 | function handleProfilePage(): void { 83 | const singleSignOnPromptListEl = document.querySelector( 84 | "body.page-profile .js-yearly-contributions", 85 | ); 86 | clickSingleSignOnPrompt(singleSignOnPromptListEl); 87 | } 88 | 89 | if (isSingleSignOnPromptPage()) { 90 | handleSingleSignOnPage(); 91 | } else if (location.pathname === "/") { 92 | // https://github.com/ 93 | handleTopPage(); 94 | } else if (location.pathname === "/notifications") { 95 | // https://github.com/notifications 96 | handleNotificationPage(); 97 | } else if (document.body.classList.contains("page-profile")) { 98 | // https://github.com/ 99 | handleProfilePage(); 100 | } 101 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | "typeRoots": ["./types", "node_modules/@types"], 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "noEmit": true, 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "strictNullChecks": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true 23 | }, 24 | "include": ["src"], 25 | "references": [{ "path": "./tsconfig.node.json" }] 26 | } 27 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | "moduleResolution": "bundler", 7 | "allowSyntheticDefaultImports": true 8 | }, 9 | "include": ["vite.config.ts", "scripts"] 10 | } 11 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { resolve } from "node:path"; 2 | 3 | import { defineConfig } from "vite"; 4 | 5 | export default defineConfig({ 6 | publicDir: "public", 7 | build: { 8 | outDir: "dist", 9 | minify: false, 10 | rollupOptions: { 11 | input: { 12 | content: resolve(__dirname, "src/content/index.ts"), 13 | }, 14 | output: { 15 | entryFileNames: (chunkInfo) => { 16 | return chunkInfo.name === "content" 17 | ? "content.js" 18 | : "assets/[name]-[hash].js"; 19 | }, 20 | }, 21 | }, 22 | }, 23 | }); 24 | --------------------------------------------------------------------------------