├── .prettierrc ├── .husky └── pre-commit ├── .prettierignore ├── src ├── types.ts ├── index.ts ├── utils.ts ├── index.test.ts ├── dependency.ts └── dependency.test.ts ├── .github ├── codecov.yml └── workflows │ ├── release-please.yml │ └── ci.yml ├── eslint.config.js ├── vite.config.ts ├── tsup.config.ts ├── lint-staged.config.js ├── tsconfig.json ├── LICENSE ├── CHANGELOG.md ├── package.json ├── .gitignore ├── README.md └── pnpm-lock.yaml /.prettierrc: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | npx lint-staged -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type Scope = "default" | "request"; 2 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { Dependency } from "./dependency"; 2 | export * from "./types"; 3 | -------------------------------------------------------------------------------- /.github/codecov.yml: -------------------------------------------------------------------------------- 1 | coverage: 2 | status: 3 | project: 4 | default: 5 | threshold: 5% 6 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | /** if T1 is undefined, return T2 */ 2 | export type Default = T1 extends undefined ? T2 : T1; 3 | 4 | /** T | Promise */ 5 | export type MaybePromise = T | Promise; 6 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import tseslint from "typescript-eslint"; 2 | 3 | export default [ 4 | { files: ["**/*.{js,mjs,cjs,ts}"] }, 5 | { ignores: ["dist/"] }, 6 | ...tseslint.configs.recommended, 7 | ]; 8 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | coverage: { 6 | include: ["src/**/*.ts"], 7 | }, 8 | }, 9 | }); 10 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { expect, it } from "vitest"; 2 | import * as exports from "./index"; 3 | 4 | it("exports", () => { 5 | expect(exports).toBeDefined(); 6 | expect(exports.Dependency).toBeDefined(); 7 | }); 8 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "tsup"; 2 | 3 | export default defineConfig({ 4 | entry: ["src/index.ts"], 5 | splitting: false, 6 | format: ["cjs", "esm"], 7 | dts: true, 8 | clean: true, 9 | minify: false, 10 | platform: "node", 11 | }); 12 | -------------------------------------------------------------------------------- /lint-staged.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // The Typescript compiler can't type-check a single file, it needs to run on 3 | // the whole project. To do that we use a function (instead of a string or 4 | // array) so that no matter what file or how many, we will always run the same 5 | // command. 6 | "*.{ts,tsx}": () => "tsc --noEmit", 7 | "*.{ts,tsx,js,jsx}": ["eslint --fix", "prettier --write"], 8 | "*": "prettier --ignore-unknown --write", 9 | }; 10 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | // Enable latest features 4 | "lib": ["ESNext", "DOM"], 5 | "target": "ESNext", 6 | "module": "ESNext", 7 | "moduleDetection": "force", 8 | "jsx": "react-jsx", 9 | "allowJs": true, 10 | 11 | // Bundler mode 12 | "moduleResolution": "bundler", 13 | "allowImportingTsExtensions": true, 14 | "verbatimModuleSyntax": true, 15 | "noEmit": true, 16 | 17 | // Best practices 18 | "strict": true, 19 | "skipLibCheck": true, 20 | "noFallthroughCasesInSwitch": true, 21 | 22 | // Some stricter flags (disabled by default) 23 | "noUnusedLocals": false, 24 | "noUnusedParameters": false, 25 | "noPropertyAccessFromIndexSignature": false 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 - present, Yusuke Wada and Hono contributors 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. -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [0.2.1](https://github.com/maou-shonen/hono-simple-DI/compare/v0.2.0...v0.2.1) (2024-10-26) 4 | 5 | 6 | ### Bug Fixes 7 | 8 | * injected services should not be re-evaluated within the request scope ([#12](https://github.com/maou-shonen/hono-simple-DI/issues/12)) ([47703d3](https://github.com/maou-shonen/hono-simple-DI/commit/47703d37f008e8aaa0575e2f3a25254dfd132229)) 9 | 10 | ## [0.2.0](https://github.com/maou-shonen/hono-simple-DI/compare/v0.1.0...v0.2.0) (2024-10-26) 11 | 12 | 13 | ### Features 14 | 15 | * add clear injected service method ([#7](https://github.com/maou-shonen/hono-simple-DI/issues/7)) ([e684aec](https://github.com/maou-shonen/hono-simple-DI/commit/e684aecc9817305cfea643952241e34751bfae7c)) 16 | * can resolve another dependency ([#10](https://github.com/maou-shonen/hono-simple-DI/issues/10)) ([25bd652](https://github.com/maou-shonen/hono-simple-DI/commit/25bd6526a91fcb56c46dcd199b8f653427455f64)) 17 | 18 | ## 0.1.0 (2024-10-24) 19 | 20 | 21 | ### ⚠ BREAKING CHANGES 22 | 23 | * explicitly declare the contextKey in the middleware ([#2](https://github.com/maou-shonen/hono-simple-DI/issues/2)) 24 | 25 | ### Features 26 | 27 | * explicitly declare the contextKey in the middleware ([#2](https://github.com/maou-shonen/hono-simple-DI/issues/2)) ([ce68281](https://github.com/maou-shonen/hono-simple-DI/commit/ce6828192efcad230af2092571b7a7d08a6760e2)) 28 | -------------------------------------------------------------------------------- /.github/workflows/release-please.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | 6 | permissions: 7 | contents: write 8 | pull-requests: write 9 | 10 | name: release-please 11 | 12 | jobs: 13 | release-please: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: googleapis/release-please-action@v4 17 | id: release 18 | with: 19 | release-type: node 20 | # The logic below handles the npm publication: 21 | - uses: actions/checkout@v4 22 | # these if statements ensure that a publication only occurs when 23 | # a new release is created: 24 | if: ${{ steps.release.outputs.release_created }} 25 | - run: corepack enable 26 | if: ${{ steps.release.outputs.release_created }} 27 | - uses: actions/setup-node@v4 28 | with: 29 | node-version: 20 30 | cache: pnpm 31 | registry-url: "https://registry.npmjs.org" 32 | if: ${{ steps.release.outputs.release_created }} 33 | - run: pnpm install 34 | if: ${{ steps.release.outputs.release_created }} 35 | - run: npm test 36 | if: ${{ steps.release.outputs.release_created }} 37 | - run: npm run build 38 | if: ${{ steps.release.outputs.release_created }} 39 | - run: npm publish 40 | env: 41 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 42 | if: ${{ steps.release.outputs.release_created }} 43 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - .github/workflows/ci.yml 9 | - src/** 10 | pull_request: 11 | branches: 12 | - main 13 | paths: 14 | - .github/workflows/ci.yml 15 | - src/** 16 | 17 | jobs: 18 | lint: 19 | runs-on: ubuntu-latest 20 | steps: 21 | - uses: actions/checkout@v4 22 | - run: corepack enable 23 | - name: Use Node.js 24 | uses: actions/setup-node@v4 25 | with: 26 | node-version: 20 27 | cache: pnpm 28 | - run: pnpm install 29 | 30 | - run: pnpm run typecheck 31 | - run: pnpm run lint 32 | 33 | coverage: 34 | needs: 35 | - lint 36 | runs-on: ubuntu-latest 37 | steps: 38 | - uses: actions/checkout@v4 39 | - run: corepack enable 40 | - name: Use Node.js 41 | uses: actions/setup-node@v4 42 | with: 43 | node-version: 20 44 | cache: pnpm 45 | - run: pnpm install 46 | 47 | - run: pnpm run coverage 48 | - name: Upload coverage reports to Codecov 49 | uses: codecov/codecov-action@v4 50 | with: 51 | token: ${{ secrets.CODECOV_TOKEN }} 52 | 53 | unit-test: 54 | needs: 55 | - coverage 56 | runs-on: ubuntu-latest 57 | strategy: 58 | matrix: 59 | node-version: [18.x, 20.x, 22.x] 60 | steps: 61 | - uses: actions/checkout@v4 62 | - run: corepack enable 63 | - name: Use Node.js ${{ matrix.node-version }} 64 | uses: actions/setup-node@v4 65 | with: 66 | node-version: ${{ matrix.node-version }} 67 | cache: pnpm 68 | - run: pnpm install 69 | 70 | - run: pnpm run test 71 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hono-simple-di", 3 | "version": "0.2.1", 4 | "description": "A small, type-safe DI library optimized for hono.js.", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/maou-shonen/hono-simple-DI.git" 8 | }, 9 | "license": "MIT", 10 | "author": "maou-shonen", 11 | "type": "module", 12 | "exports": { 13 | ".": { 14 | "import": { 15 | "types": "./dist/index.d.ts", 16 | "default": "./dist/index.js" 17 | }, 18 | "require": { 19 | "types": "./dist/index.d.cts", 20 | "default": "./dist/index.cjs" 21 | } 22 | } 23 | }, 24 | "module": "./dist/index.js", 25 | "main": "./dist/index.cjs", 26 | "types": "./dist/index.d.ts", 27 | "files": [ 28 | "dist" 29 | ], 30 | "keywords": [ 31 | "typescript", 32 | "hono", 33 | "ioc", 34 | "inversion-of-control", 35 | "dependency-injection" 36 | ], 37 | "homepage": "https://github.com/maou-shonen/hono-simple-DI#readme", 38 | "bugs": { 39 | "url": "https://github.com/maou-shonen/hono-simple-DI/issues" 40 | }, 41 | "packageManager": "pnpm@9.12.2", 42 | "scripts": { 43 | "prepare": "husky", 44 | "build": "tsup-node", 45 | "format": "prettier --write src", 46 | "typecheck": "tsc", 47 | "lint": "eslint --quiet .", 48 | "test": "vitest run", 49 | "test:watch": "vitest", 50 | "coverage": "vitest run --coverage" 51 | }, 52 | "peerDependencies": { 53 | "hono": ">=4.0.0", 54 | "typescript": ">=5.0.0" 55 | }, 56 | "devDependencies": { 57 | "@vitest/coverage-v8": "^2.1.3", 58 | "eslint": "^9.13.0", 59 | "hono": "^4.6.6", 60 | "husky": "^9.1.6", 61 | "lint-staged": "^15.2.10", 62 | "prettier": "^3.3.3", 63 | "tsup": "^8.3.0", 64 | "typescript-eslint": "^8.11.0", 65 | "vitest": "^2.1.3" 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/dependency.ts: -------------------------------------------------------------------------------- 1 | import type { Context, MiddlewareHandler } from "hono"; 2 | import type { Scope } from "./types"; 3 | import type { MaybePromise } from "./utils"; 4 | 5 | /** 6 | * A Dependency class used for injecting services into hono.js context. 7 | */ 8 | export class Dependency { 9 | constructor( 10 | /** A function to initialize the service. */ 11 | private serviceInitializer: (c: Context) => MaybePromise, 12 | private opts?: { 13 | /** 14 | * The scope of the dependency. 15 | * @default 'default' 16 | * @remarks 17 | * - 'default': Service will be initialized only once. 18 | * - 'request': Service is initialized once per request and reused across requests. 19 | */ 20 | scope?: Scope; 21 | }, 22 | ) {} 23 | 24 | private serviceInjected?: Service; 25 | private serviceCached?: Service; 26 | // used as a basis for caching when evaluating the request scope 27 | private lastRequest?: Request; 28 | 29 | /** 30 | * Injects a service instance directly. Useful for overriding the default service. 31 | */ 32 | injection(service: Service): this { 33 | this.serviceInjected = service; 34 | return this; 35 | } 36 | 37 | /** 38 | * Clear injected service. 39 | */ 40 | clearInjected(): this { 41 | this.serviceInjected = undefined; 42 | return this; 43 | } 44 | 45 | /** 46 | * Resolve service. 47 | */ 48 | async resolve(c: Context): Promise { 49 | if (this.serviceInjected) { 50 | return this.serviceInjected; 51 | } 52 | 53 | // evaluate and clear the cache when handling the request scope 54 | if (this.opts?.scope === "request" && this.lastRequest !== c.req.raw) { 55 | this.serviceCached = undefined; 56 | this.lastRequest = c.req.raw; 57 | } 58 | 59 | const service = (this.serviceCached ??= await this.serviceInitializer(c)); 60 | 61 | return service; 62 | } 63 | 64 | /** 65 | * Creates a middleware that injects the service into the context. 66 | */ 67 | middleware( 68 | /** The key used to store the service in the context. */ 69 | contextKey: ContextKey, 70 | ): MiddlewareHandler<{ 71 | Variables: { 72 | [key in ContextKey]: Service; 73 | }; 74 | }> { 75 | return async (c, next) => { 76 | const service = await this.resolve(c); 77 | 78 | c.set(contextKey, service); 79 | 80 | await next(); 81 | }; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore 2 | 3 | # Logs 4 | 5 | logs 6 | _.log 7 | npm-debug.log_ 8 | yarn-debug.log* 9 | yarn-error.log* 10 | lerna-debug.log* 11 | .pnpm-debug.log* 12 | 13 | # Caches 14 | 15 | .cache 16 | 17 | # Diagnostic reports (https://nodejs.org/api/report.html) 18 | 19 | report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json 20 | 21 | # Runtime data 22 | 23 | pids 24 | _.pid 25 | _.seed 26 | *.pid.lock 27 | 28 | # Directory for instrumented libs generated by jscoverage/JSCover 29 | 30 | lib-cov 31 | 32 | # Coverage directory used by tools like istanbul 33 | 34 | coverage 35 | *.lcov 36 | 37 | # nyc test coverage 38 | 39 | .nyc_output 40 | 41 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 42 | 43 | .grunt 44 | 45 | # Bower dependency directory (https://bower.io/) 46 | 47 | bower_components 48 | 49 | # node-waf configuration 50 | 51 | .lock-wscript 52 | 53 | # Compiled binary addons (https://nodejs.org/api/addons.html) 54 | 55 | build/Release 56 | 57 | # Dependency directories 58 | 59 | node_modules/ 60 | jspm_packages/ 61 | 62 | # Snowpack dependency directory (https://snowpack.dev/) 63 | 64 | web_modules/ 65 | 66 | # TypeScript cache 67 | 68 | *.tsbuildinfo 69 | 70 | # Optional npm cache directory 71 | 72 | .npm 73 | 74 | # Optional eslint cache 75 | 76 | .eslintcache 77 | 78 | # Optional stylelint cache 79 | 80 | .stylelintcache 81 | 82 | # Microbundle cache 83 | 84 | .rpt2_cache/ 85 | .rts2_cache_cjs/ 86 | .rts2_cache_es/ 87 | .rts2_cache_umd/ 88 | 89 | # Optional REPL history 90 | 91 | .node_repl_history 92 | 93 | # Output of 'npm pack' 94 | 95 | *.tgz 96 | 97 | # Yarn Integrity file 98 | 99 | .yarn-integrity 100 | 101 | # dotenv environment variable files 102 | 103 | .env 104 | .env.development.local 105 | .env.test.local 106 | .env.production.local 107 | .env.local 108 | 109 | # parcel-bundler cache (https://parceljs.org/) 110 | 111 | .parcel-cache 112 | 113 | # Next.js build output 114 | 115 | .next 116 | out 117 | 118 | # Nuxt.js build / generate output 119 | 120 | .nuxt 121 | dist 122 | 123 | # Gatsby files 124 | 125 | # Comment in the public line in if your project uses Gatsby and not Next.js 126 | 127 | # https://nextjs.org/blog/next-9-1#public-directory-support 128 | 129 | # public 130 | 131 | # vuepress build output 132 | 133 | .vuepress/dist 134 | 135 | # vuepress v2.x temp and cache directory 136 | 137 | .temp 138 | 139 | # Docusaurus cache and generated files 140 | 141 | .docusaurus 142 | 143 | # Serverless directories 144 | 145 | .serverless/ 146 | 147 | # FuseBox cache 148 | 149 | .fusebox/ 150 | 151 | # DynamoDB Local files 152 | 153 | .dynamodb/ 154 | 155 | # TernJS port file 156 | 157 | .tern-port 158 | 159 | # Stores VSCode versions used for testing VSCode extensions 160 | 161 | .vscode-test 162 | 163 | # yarn v2 164 | 165 | .yarn/cache 166 | .yarn/unplugged 167 | .yarn/build-state.yml 168 | .yarn/install-state.gz 169 | .pnp.* 170 | 171 | # IntelliJ based IDEs 172 | .idea 173 | 174 | # Finder (MacOS) folder config 175 | .DS_Store 176 | -------------------------------------------------------------------------------- /src/dependency.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, expect, it } from "vitest"; 2 | import { Dependency } from "./dependency"; 3 | import { Hono } from "hono"; 4 | 5 | describe("Dependency", () => { 6 | class TestService { 7 | constructor(public name: string) {} 8 | 9 | hi() { 10 | return `Hello ${this.name}`; 11 | } 12 | } 13 | 14 | it("create", () => { 15 | const dep = new Dependency(() => null); 16 | expect(dep).instanceOf(Dependency); 17 | }); 18 | 19 | it("basic", async () => { 20 | const dep = new Dependency(() => new TestService("foo")); 21 | const app = new Hono() 22 | .use(dep.middleware("service")) 23 | .get("/", (c) => 24 | c.text(c.var.service.name, "service" in c.var ? 200 : 400), 25 | ); 26 | 27 | const res = await app.request("/"); 28 | expect(res.status).toBe(200); 29 | const data = await res.text(); 30 | expect(data).toBe("foo"); 31 | }); 32 | 33 | it("injection", async () => { 34 | const dep = new Dependency(() => new TestService("foo")); 35 | const app = new Hono() 36 | .use(dep.middleware("service")) 37 | .get("/", (c) => c.text(c.var.service.name)); 38 | 39 | dep.injection(new TestService("bar")); 40 | 41 | const res = await app.request("/"); 42 | expect(res.status).toBe(200); 43 | const data = await res.text(); 44 | expect(data).toBe("bar"); 45 | }); 46 | 47 | it("injection with default scope", async () => { 48 | let createCount = 0; 49 | const createService = () => { 50 | createCount++; 51 | return new TestService("foo"); 52 | }; 53 | 54 | const dep = new Dependency(() => createService(), { 55 | scope: "default", 56 | }); 57 | const app = new Hono() 58 | .use(dep.middleware("service")) 59 | .get("/", (c) => c.text(c.var.service.name)); 60 | 61 | const res1 = await app.request("/"); 62 | expect(res1.status).toBe(200); 63 | expect(await res1.text()).toBe("foo"); 64 | const res2 = await app.request("/"); 65 | expect(res2.status).toBe(200); 66 | expect(await res2.text()).toBe("foo"); 67 | 68 | expect(createCount).toBe(1); 69 | }); 70 | 71 | it("injection with request scope", async () => { 72 | let createCount = 0; 73 | const createService = () => { 74 | createCount++; 75 | return new TestService("foo"); 76 | }; 77 | 78 | const dep = new Dependency(() => createService(), { 79 | scope: "request", 80 | }); 81 | const app = new Hono() 82 | .use(dep.middleware("service")) 83 | .get("/", (c) => c.text(c.var.service.name)); 84 | 85 | const res1 = await app.request("/"); 86 | expect(res1.status).toBe(200); 87 | expect(await res1.text()).toBe("foo"); 88 | const res2 = await app.request("/"); 89 | expect(res2.status).toBe(200); 90 | expect(await res2.text()).toBe("foo"); 91 | 92 | expect(createCount).toBe(2); 93 | }); 94 | 95 | it("injected service will not be re-evaluated on request scope", async () => { 96 | const dep = new Dependency(() => new TestService("foo"), { 97 | scope: "request", 98 | }); 99 | const app = new Hono() 100 | .use(dep.middleware("service")) 101 | .get("/", (c) => c.text(c.var.service.name)); 102 | 103 | dep.injection(new TestService("bar")); 104 | 105 | const res1 = await app.request("/"); 106 | expect(res1.status).toBe(200); 107 | const data1 = await res1.text(); 108 | expect(data1).toBe("bar"); 109 | 110 | const res2 = await app.request("/"); 111 | expect(res2.status).toBe(200); 112 | const data2 = await res2.text(); 113 | expect(data2).toBe("bar"); 114 | }); 115 | 116 | it("clear injected service", async () => { 117 | const dep = new Dependency(() => new TestService("foo")); 118 | const app = new Hono() 119 | .use(dep.middleware("service")) 120 | .get("/", (c) => c.text(c.var.service.name)); 121 | 122 | dep.injection(new TestService("bar")); 123 | dep.clearInjected(); 124 | 125 | const res = await app.request("/"); 126 | expect(res.status).toBe(200); 127 | const data = await res.text(); 128 | expect(data).toBe("foo"); 129 | }); 130 | }); 131 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hono simple DI 2 | 3 | [![npm version][npm-version-src]][npm-version-href] 4 | [![npm downloads][npm-downloads-src]][npm-downloads-href] 5 | [![bundle][bundle-src]][bundle-href] 6 | [![Codecov][codecov-src]][codecov-href] 7 | [![License][license-src]][license-href] 8 | 9 | A small, type-safe DI library optimized for Hono.js. 10 | 11 | > [!IMPORTANT] 12 | > This package is optimized for [Hono.js](https://github.com/honojs/hono) and is not designed for large projects. If you require advanced DI features such as automatic circular injection, dynamic binding, and multi-binding, etc. you may need a dedicated DI library. 13 | 14 | ## Installation 15 | 16 | ```bash 17 | # npm 18 | npm install hono-simple-di 19 | # pnpm 20 | pnpm add hono-simple-di 21 | # bun 22 | bun add hono-simple-di 23 | ``` 24 | 25 | ## Usage 26 | 27 | ### Basic usage 28 | 29 | #### 1. Define a service 30 | 31 | First, you define a service that you want to inject. This could be any class or function that handles your business logic. 32 | 33 | ```ts 34 | // services/UserService.ts 35 | export class UserService { 36 | findOne(id: number) { 37 | return { id, name: `User ${id}` }; 38 | } 39 | } 40 | ``` 41 | 42 | #### 2. Create a Dependency 43 | 44 | Next, you create a dependency for your service, specifying how it should be initialized. You can also choose whether it should be a singleton (default) or multi-instance (per request). 45 | 46 | ```ts 47 | import { Dependency } from "hono-simple-di"; 48 | import { UserService } from "./services/UserService"; 49 | 50 | // Define the dependency for UserService 51 | const userServiceDep = new Dependency(() => new UserService()); 52 | ``` 53 | 54 | #### 3. Inject dependency via middleware 55 | 56 | Use the middleware method to inject the dependency into your Hono.js context. Once injected, the service will be accessible through the context's c.get method. 57 | 58 | ```ts 59 | import { Hono } from "hono"; 60 | import { userServiceDep } from "./dependencies"; 61 | 62 | const app = new Hono() 63 | // Use the dependency as middleware 64 | .use(userServiceDep.middleware("userService")) 65 | 66 | .get("/", (c) => { 67 | // Retrieve the injected service 68 | const { userService } = c.var; 69 | // or const userService = c.get('userService') 70 | 71 | const user = userService.findOne(1); 72 | 73 | return c.json(user); 74 | }); 75 | ``` 76 | 77 | #### 4. Override Service with injection 78 | 79 | You can override the service instance at runtime using the injection method. This is useful in testing or when dynamically providing service instances. 80 | 81 | ```ts 82 | // Inject a custom service instance 83 | userServiceDep.injection({ 84 | findOne(id: number) { 85 | return { id, name: "Injected User" }; 86 | }, 87 | }); 88 | ``` 89 | 90 | --- 91 | 92 | ### Reference another dependency 93 | 94 | ```ts 95 | const postServiceDep = new Dependency( 96 | async (c) => new PostService(await userServiceDep.resolve(c)), 97 | ); 98 | ``` 99 | 100 | --- 101 | 102 | ### A service can also be something other than a class 103 | 104 | For example, using headers from `c.req.headers`. 105 | 106 | ```ts 107 | const uaDep = new Dependency( 108 | (c) => new UAParser(c.req.header("User-Agent") ?? ""), 109 | { 110 | scope: "request", 111 | }, 112 | ); 113 | 114 | const app = new Hono() 115 | .use(uaDep.middleware("ua")) 116 | 117 | .get("/", (c) => { 118 | const ua = c.get("ua"); 119 | return c.text(`You are running on ${ua.getOS().name}!`); 120 | }); 121 | ``` 122 | 123 | --- 124 | 125 | ### Using request scope service 126 | 127 | If you need a new instance of the service for each request (multi-instance), set the scope option to `request`. 128 | 129 | ```ts 130 | const requestIdDep = new Dependency((c) => Math.random(), { 131 | scope: "request", 132 | }); 133 | 134 | const app = new Hono() 135 | // Inject a unique ID for each request 136 | .use(requestIdDep.middleware("requestId")) 137 | 138 | .get("/id", (c) => { 139 | const requestId = c.get("requestId"); 140 | return c.text(`Request ID: ${requestId}`); 141 | }); 142 | ``` 143 | 144 | --- 145 | 146 | ### Do not provide an initialization function 147 | 148 | ```ts 149 | const userServiceDep = new Dependency(() => null); 150 | ``` 151 | 152 | ## API 153 | 154 | ### `Dependency` Interface 155 | 156 | ```ts 157 | interface Dependency { 158 | constructor( 159 | /** A function to initialize the service. */ 160 | private serviceInitializer: (c: Context) => MaybePromise, 161 | private opts?: { 162 | /** 163 | * The scope of the dependency. 164 | * @default 'default' 165 | * @remarks 166 | * - 'default': Service will be initialized only once. 167 | * - 'request': Service is initialized once per request and reused across requests. 168 | */ 169 | scope?: Scope 170 | }, 171 | ): Dependency 172 | 173 | /** 174 | * Injects a service instance directly. Useful for overriding the default service. 175 | * @param service - The service instance to be injected. 176 | * @returns this - The instance of the dependency for chaining. 177 | */ 178 | injection(service: Service): this 179 | 180 | /** 181 | * Clear injected service. 182 | */ 183 | clearInjected(): this { 184 | this.service = undefined; 185 | return this; 186 | } 187 | 188 | /** 189 | * Creates a middleware that injects the service into the context. 190 | * @param contextKey - Optionally override the key used to store the service in the context. 191 | * @returns MiddlewareHandler - A Hono.js middleware function. 192 | */ 193 | middleware( 194 | /** The key used to store the service in the context. */ 195 | contextKey?: ContextKey, 196 | ): MiddlewareHandler<{ 197 | Variables: { 198 | [key in ContextKey]: Service 199 | } 200 | }> 201 | } 202 | ``` 203 | 204 | 205 | 206 | [npm-version-src]: https://img.shields.io/npm/v/hono-simple-di 207 | [npm-version-href]: https://npmjs.com/package/hono-simple-di 208 | [npm-downloads-src]: https://img.shields.io/npm/dm/hono-simple-di 209 | [npm-downloads-href]: https://npmjs.com/package/hono-simple-di 210 | [codecov-src]: https://img.shields.io/codecov/c/gh/maou-shonen/hono-simple-di/main 211 | [codecov-href]: https://codecov.io/gh/maou-shonen/hono-simple-di 212 | [bundle-src]: https://img.shields.io/bundlephobia/minzip/hono-simple-di 213 | [bundle-href]: https://bundlephobia.com/result?p=hono-simple-di 214 | [license-src]: https://img.shields.io/github/license/maou-shonen/hono-simple-di.svg 215 | [license-href]: https://github.com/maou-shonen/hono-simple-di/blob/main/LICENSE 216 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | typescript: 12 | specifier: '>=5.0.0' 13 | version: 5.6.3 14 | devDependencies: 15 | '@vitest/coverage-v8': 16 | specifier: ^2.1.3 17 | version: 2.1.3(vitest@2.1.9) 18 | eslint: 19 | specifier: ^9.13.0 20 | version: 9.13.0 21 | hono: 22 | specifier: ^4.6.6 23 | version: 4.10.3 24 | husky: 25 | specifier: ^9.1.6 26 | version: 9.1.6 27 | lint-staged: 28 | specifier: ^15.2.10 29 | version: 15.2.10 30 | prettier: 31 | specifier: ^3.3.3 32 | version: 3.3.3 33 | tsup: 34 | specifier: ^8.3.0 35 | version: 8.3.0(postcss@8.5.1)(typescript@5.6.3)(yaml@2.5.1) 36 | typescript-eslint: 37 | specifier: ^8.11.0 38 | version: 8.11.0(eslint@9.13.0)(typescript@5.6.3) 39 | vitest: 40 | specifier: ^2.1.3 41 | version: 2.1.9 42 | 43 | packages: 44 | 45 | '@ampproject/remapping@2.3.0': 46 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 47 | engines: {node: '>=6.0.0'} 48 | 49 | '@babel/helper-string-parser@7.25.9': 50 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 51 | engines: {node: '>=6.9.0'} 52 | 53 | '@babel/helper-validator-identifier@7.25.9': 54 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 55 | engines: {node: '>=6.9.0'} 56 | 57 | '@babel/parser@7.25.9': 58 | resolution: {integrity: sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==} 59 | engines: {node: '>=6.0.0'} 60 | hasBin: true 61 | 62 | '@babel/types@7.25.9': 63 | resolution: {integrity: sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==} 64 | engines: {node: '>=6.9.0'} 65 | 66 | '@bcoe/v8-coverage@0.2.3': 67 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 68 | 69 | '@esbuild/aix-ppc64@0.21.5': 70 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 71 | engines: {node: '>=12'} 72 | cpu: [ppc64] 73 | os: [aix] 74 | 75 | '@esbuild/aix-ppc64@0.23.1': 76 | resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} 77 | engines: {node: '>=18'} 78 | cpu: [ppc64] 79 | os: [aix] 80 | 81 | '@esbuild/android-arm64@0.21.5': 82 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 83 | engines: {node: '>=12'} 84 | cpu: [arm64] 85 | os: [android] 86 | 87 | '@esbuild/android-arm64@0.23.1': 88 | resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} 89 | engines: {node: '>=18'} 90 | cpu: [arm64] 91 | os: [android] 92 | 93 | '@esbuild/android-arm@0.21.5': 94 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 95 | engines: {node: '>=12'} 96 | cpu: [arm] 97 | os: [android] 98 | 99 | '@esbuild/android-arm@0.23.1': 100 | resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} 101 | engines: {node: '>=18'} 102 | cpu: [arm] 103 | os: [android] 104 | 105 | '@esbuild/android-x64@0.21.5': 106 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 107 | engines: {node: '>=12'} 108 | cpu: [x64] 109 | os: [android] 110 | 111 | '@esbuild/android-x64@0.23.1': 112 | resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} 113 | engines: {node: '>=18'} 114 | cpu: [x64] 115 | os: [android] 116 | 117 | '@esbuild/darwin-arm64@0.21.5': 118 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 119 | engines: {node: '>=12'} 120 | cpu: [arm64] 121 | os: [darwin] 122 | 123 | '@esbuild/darwin-arm64@0.23.1': 124 | resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} 125 | engines: {node: '>=18'} 126 | cpu: [arm64] 127 | os: [darwin] 128 | 129 | '@esbuild/darwin-x64@0.21.5': 130 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 131 | engines: {node: '>=12'} 132 | cpu: [x64] 133 | os: [darwin] 134 | 135 | '@esbuild/darwin-x64@0.23.1': 136 | resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} 137 | engines: {node: '>=18'} 138 | cpu: [x64] 139 | os: [darwin] 140 | 141 | '@esbuild/freebsd-arm64@0.21.5': 142 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 143 | engines: {node: '>=12'} 144 | cpu: [arm64] 145 | os: [freebsd] 146 | 147 | '@esbuild/freebsd-arm64@0.23.1': 148 | resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} 149 | engines: {node: '>=18'} 150 | cpu: [arm64] 151 | os: [freebsd] 152 | 153 | '@esbuild/freebsd-x64@0.21.5': 154 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 155 | engines: {node: '>=12'} 156 | cpu: [x64] 157 | os: [freebsd] 158 | 159 | '@esbuild/freebsd-x64@0.23.1': 160 | resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} 161 | engines: {node: '>=18'} 162 | cpu: [x64] 163 | os: [freebsd] 164 | 165 | '@esbuild/linux-arm64@0.21.5': 166 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 167 | engines: {node: '>=12'} 168 | cpu: [arm64] 169 | os: [linux] 170 | 171 | '@esbuild/linux-arm64@0.23.1': 172 | resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} 173 | engines: {node: '>=18'} 174 | cpu: [arm64] 175 | os: [linux] 176 | 177 | '@esbuild/linux-arm@0.21.5': 178 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 179 | engines: {node: '>=12'} 180 | cpu: [arm] 181 | os: [linux] 182 | 183 | '@esbuild/linux-arm@0.23.1': 184 | resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} 185 | engines: {node: '>=18'} 186 | cpu: [arm] 187 | os: [linux] 188 | 189 | '@esbuild/linux-ia32@0.21.5': 190 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 191 | engines: {node: '>=12'} 192 | cpu: [ia32] 193 | os: [linux] 194 | 195 | '@esbuild/linux-ia32@0.23.1': 196 | resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} 197 | engines: {node: '>=18'} 198 | cpu: [ia32] 199 | os: [linux] 200 | 201 | '@esbuild/linux-loong64@0.21.5': 202 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 203 | engines: {node: '>=12'} 204 | cpu: [loong64] 205 | os: [linux] 206 | 207 | '@esbuild/linux-loong64@0.23.1': 208 | resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} 209 | engines: {node: '>=18'} 210 | cpu: [loong64] 211 | os: [linux] 212 | 213 | '@esbuild/linux-mips64el@0.21.5': 214 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 215 | engines: {node: '>=12'} 216 | cpu: [mips64el] 217 | os: [linux] 218 | 219 | '@esbuild/linux-mips64el@0.23.1': 220 | resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} 221 | engines: {node: '>=18'} 222 | cpu: [mips64el] 223 | os: [linux] 224 | 225 | '@esbuild/linux-ppc64@0.21.5': 226 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 227 | engines: {node: '>=12'} 228 | cpu: [ppc64] 229 | os: [linux] 230 | 231 | '@esbuild/linux-ppc64@0.23.1': 232 | resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} 233 | engines: {node: '>=18'} 234 | cpu: [ppc64] 235 | os: [linux] 236 | 237 | '@esbuild/linux-riscv64@0.21.5': 238 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 239 | engines: {node: '>=12'} 240 | cpu: [riscv64] 241 | os: [linux] 242 | 243 | '@esbuild/linux-riscv64@0.23.1': 244 | resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} 245 | engines: {node: '>=18'} 246 | cpu: [riscv64] 247 | os: [linux] 248 | 249 | '@esbuild/linux-s390x@0.21.5': 250 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 251 | engines: {node: '>=12'} 252 | cpu: [s390x] 253 | os: [linux] 254 | 255 | '@esbuild/linux-s390x@0.23.1': 256 | resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} 257 | engines: {node: '>=18'} 258 | cpu: [s390x] 259 | os: [linux] 260 | 261 | '@esbuild/linux-x64@0.21.5': 262 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 263 | engines: {node: '>=12'} 264 | cpu: [x64] 265 | os: [linux] 266 | 267 | '@esbuild/linux-x64@0.23.1': 268 | resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} 269 | engines: {node: '>=18'} 270 | cpu: [x64] 271 | os: [linux] 272 | 273 | '@esbuild/netbsd-x64@0.21.5': 274 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 275 | engines: {node: '>=12'} 276 | cpu: [x64] 277 | os: [netbsd] 278 | 279 | '@esbuild/netbsd-x64@0.23.1': 280 | resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} 281 | engines: {node: '>=18'} 282 | cpu: [x64] 283 | os: [netbsd] 284 | 285 | '@esbuild/openbsd-arm64@0.23.1': 286 | resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} 287 | engines: {node: '>=18'} 288 | cpu: [arm64] 289 | os: [openbsd] 290 | 291 | '@esbuild/openbsd-x64@0.21.5': 292 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 293 | engines: {node: '>=12'} 294 | cpu: [x64] 295 | os: [openbsd] 296 | 297 | '@esbuild/openbsd-x64@0.23.1': 298 | resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} 299 | engines: {node: '>=18'} 300 | cpu: [x64] 301 | os: [openbsd] 302 | 303 | '@esbuild/sunos-x64@0.21.5': 304 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 305 | engines: {node: '>=12'} 306 | cpu: [x64] 307 | os: [sunos] 308 | 309 | '@esbuild/sunos-x64@0.23.1': 310 | resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} 311 | engines: {node: '>=18'} 312 | cpu: [x64] 313 | os: [sunos] 314 | 315 | '@esbuild/win32-arm64@0.21.5': 316 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 317 | engines: {node: '>=12'} 318 | cpu: [arm64] 319 | os: [win32] 320 | 321 | '@esbuild/win32-arm64@0.23.1': 322 | resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} 323 | engines: {node: '>=18'} 324 | cpu: [arm64] 325 | os: [win32] 326 | 327 | '@esbuild/win32-ia32@0.21.5': 328 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 329 | engines: {node: '>=12'} 330 | cpu: [ia32] 331 | os: [win32] 332 | 333 | '@esbuild/win32-ia32@0.23.1': 334 | resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} 335 | engines: {node: '>=18'} 336 | cpu: [ia32] 337 | os: [win32] 338 | 339 | '@esbuild/win32-x64@0.21.5': 340 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 341 | engines: {node: '>=12'} 342 | cpu: [x64] 343 | os: [win32] 344 | 345 | '@esbuild/win32-x64@0.23.1': 346 | resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} 347 | engines: {node: '>=18'} 348 | cpu: [x64] 349 | os: [win32] 350 | 351 | '@eslint-community/eslint-utils@4.4.0': 352 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 353 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 354 | peerDependencies: 355 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 356 | 357 | '@eslint-community/regexpp@4.11.1': 358 | resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} 359 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 360 | 361 | '@eslint/config-array@0.18.0': 362 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 363 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 364 | 365 | '@eslint/core@0.7.0': 366 | resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} 367 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 368 | 369 | '@eslint/eslintrc@3.1.0': 370 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 371 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 372 | 373 | '@eslint/js@9.13.0': 374 | resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} 375 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 376 | 377 | '@eslint/object-schema@2.1.4': 378 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 379 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 380 | 381 | '@eslint/plugin-kit@0.2.3': 382 | resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} 383 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 384 | 385 | '@humanfs/core@0.19.0': 386 | resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} 387 | engines: {node: '>=18.18.0'} 388 | 389 | '@humanfs/node@0.16.5': 390 | resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} 391 | engines: {node: '>=18.18.0'} 392 | 393 | '@humanwhocodes/module-importer@1.0.1': 394 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 395 | engines: {node: '>=12.22'} 396 | 397 | '@humanwhocodes/retry@0.3.1': 398 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 399 | engines: {node: '>=18.18'} 400 | 401 | '@isaacs/cliui@8.0.2': 402 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 403 | engines: {node: '>=12'} 404 | 405 | '@istanbuljs/schema@0.1.3': 406 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 407 | engines: {node: '>=8'} 408 | 409 | '@jridgewell/gen-mapping@0.3.5': 410 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 411 | engines: {node: '>=6.0.0'} 412 | 413 | '@jridgewell/resolve-uri@3.1.2': 414 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 415 | engines: {node: '>=6.0.0'} 416 | 417 | '@jridgewell/set-array@1.2.1': 418 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 419 | engines: {node: '>=6.0.0'} 420 | 421 | '@jridgewell/sourcemap-codec@1.5.0': 422 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 423 | 424 | '@jridgewell/trace-mapping@0.3.25': 425 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 426 | 427 | '@nodelib/fs.scandir@2.1.5': 428 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 429 | engines: {node: '>= 8'} 430 | 431 | '@nodelib/fs.stat@2.0.5': 432 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 433 | engines: {node: '>= 8'} 434 | 435 | '@nodelib/fs.walk@1.2.8': 436 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 437 | engines: {node: '>= 8'} 438 | 439 | '@pkgjs/parseargs@0.11.0': 440 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 441 | engines: {node: '>=14'} 442 | 443 | '@rollup/rollup-android-arm-eabi@4.24.0': 444 | resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} 445 | cpu: [arm] 446 | os: [android] 447 | 448 | '@rollup/rollup-android-arm-eabi@4.34.2': 449 | resolution: {integrity: sha512-6Fyg9yQbwJR+ykVdT9sid1oc2ewejS6h4wzQltmJfSW53N60G/ah9pngXGANdy9/aaE/TcUFpWosdm7JXS1WTQ==} 450 | cpu: [arm] 451 | os: [android] 452 | 453 | '@rollup/rollup-android-arm64@4.24.0': 454 | resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} 455 | cpu: [arm64] 456 | os: [android] 457 | 458 | '@rollup/rollup-android-arm64@4.34.2': 459 | resolution: {integrity: sha512-K5GfWe+vtQ3kyEbihrimM38UgX57UqHp+oME7X/EX9Im6suwZfa7Hsr8AtzbJvukTpwMGs+4s29YMSO3rwWtsw==} 460 | cpu: [arm64] 461 | os: [android] 462 | 463 | '@rollup/rollup-darwin-arm64@4.24.0': 464 | resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} 465 | cpu: [arm64] 466 | os: [darwin] 467 | 468 | '@rollup/rollup-darwin-arm64@4.34.2': 469 | resolution: {integrity: sha512-PSN58XG/V/tzqDb9kDGutUruycgylMlUE59f40ny6QIRNsTEIZsrNQTJKUN2keMMSmlzgunMFqyaGLmly39sug==} 470 | cpu: [arm64] 471 | os: [darwin] 472 | 473 | '@rollup/rollup-darwin-x64@4.24.0': 474 | resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} 475 | cpu: [x64] 476 | os: [darwin] 477 | 478 | '@rollup/rollup-darwin-x64@4.34.2': 479 | resolution: {integrity: sha512-gQhK788rQJm9pzmXyfBB84VHViDERhAhzGafw+E5mUpnGKuxZGkMVDa3wgDFKT6ukLC5V7QTifzsUKdNVxp5qQ==} 480 | cpu: [x64] 481 | os: [darwin] 482 | 483 | '@rollup/rollup-freebsd-arm64@4.34.2': 484 | resolution: {integrity: sha512-eiaHgQwGPpxLC3+zTAcdKl4VsBl3r0AiJOd1Um/ArEzAjN/dbPK1nROHrVkdnoE6p7Svvn04w3f/jEZSTVHunA==} 485 | cpu: [arm64] 486 | os: [freebsd] 487 | 488 | '@rollup/rollup-freebsd-x64@4.34.2': 489 | resolution: {integrity: sha512-lhdiwQ+jf8pewYOTG4bag0Qd68Jn1v2gO1i0mTuiD+Qkt5vNfHVK/jrT7uVvycV8ZchlzXp5HDVmhpzjC6mh0g==} 490 | cpu: [x64] 491 | os: [freebsd] 492 | 493 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 494 | resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} 495 | cpu: [arm] 496 | os: [linux] 497 | 498 | '@rollup/rollup-linux-arm-gnueabihf@4.34.2': 499 | resolution: {integrity: sha512-lfqTpWjSvbgQP1vqGTXdv+/kxIznKXZlI109WkIFPbud41bjigjNmOAAKoazmRGx+k9e3rtIdbq2pQZPV1pMig==} 500 | cpu: [arm] 501 | os: [linux] 502 | 503 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 504 | resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} 505 | cpu: [arm] 506 | os: [linux] 507 | 508 | '@rollup/rollup-linux-arm-musleabihf@4.34.2': 509 | resolution: {integrity: sha512-RGjqULqIurqqv+NJTyuPgdZhka8ImMLB32YwUle2BPTDqDoXNgwFjdjQC59FbSk08z0IqlRJjrJ0AvDQ5W5lpw==} 510 | cpu: [arm] 511 | os: [linux] 512 | 513 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 514 | resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} 515 | cpu: [arm64] 516 | os: [linux] 517 | 518 | '@rollup/rollup-linux-arm64-gnu@4.34.2': 519 | resolution: {integrity: sha512-ZvkPiheyXtXlFqHpsdgscx+tZ7hoR59vOettvArinEspq5fxSDSgfF+L5wqqJ9R4t+n53nyn0sKxeXlik7AY9Q==} 520 | cpu: [arm64] 521 | os: [linux] 522 | 523 | '@rollup/rollup-linux-arm64-musl@4.24.0': 524 | resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} 525 | cpu: [arm64] 526 | os: [linux] 527 | 528 | '@rollup/rollup-linux-arm64-musl@4.34.2': 529 | resolution: {integrity: sha512-UlFk+E46TZEoxD9ufLKDBzfSG7Ki03fo6hsNRRRHF+KuvNZ5vd1RRVQm8YZlGsjcJG8R252XFK0xNPay+4WV7w==} 530 | cpu: [arm64] 531 | os: [linux] 532 | 533 | '@rollup/rollup-linux-loongarch64-gnu@4.34.2': 534 | resolution: {integrity: sha512-hJhfsD9ykx59jZuuoQgYT1GEcNNi3RCoEmbo5OGfG8RlHOiVS7iVNev9rhLKh7UBYq409f4uEw0cclTXx8nh8Q==} 535 | cpu: [loong64] 536 | os: [linux] 537 | 538 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 539 | resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} 540 | cpu: [ppc64] 541 | os: [linux] 542 | 543 | '@rollup/rollup-linux-powerpc64le-gnu@4.34.2': 544 | resolution: {integrity: sha512-g/O5IpgtrQqPegvqopvmdCF9vneLE7eqYfdPWW8yjPS8f63DNam3U4ARL1PNNB64XHZDHKpvO2Giftf43puB8Q==} 545 | cpu: [ppc64] 546 | os: [linux] 547 | 548 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 549 | resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} 550 | cpu: [riscv64] 551 | os: [linux] 552 | 553 | '@rollup/rollup-linux-riscv64-gnu@4.34.2': 554 | resolution: {integrity: sha512-bSQijDC96M6PuooOuXHpvXUYiIwsnDmqGU8+br2U7iPoykNi9JtMUpN7K6xml29e0evK0/g0D1qbAUzWZFHY5Q==} 555 | cpu: [riscv64] 556 | os: [linux] 557 | 558 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 559 | resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} 560 | cpu: [s390x] 561 | os: [linux] 562 | 563 | '@rollup/rollup-linux-s390x-gnu@4.34.2': 564 | resolution: {integrity: sha512-49TtdeVAsdRuiUHXPrFVucaP4SivazetGUVH8CIxVsNsaPHV4PFkpLmH9LeqU/R4Nbgky9lzX5Xe1NrzLyraVA==} 565 | cpu: [s390x] 566 | os: [linux] 567 | 568 | '@rollup/rollup-linux-x64-gnu@4.24.0': 569 | resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} 570 | cpu: [x64] 571 | os: [linux] 572 | 573 | '@rollup/rollup-linux-x64-gnu@4.34.2': 574 | resolution: {integrity: sha512-j+jFdfOycLIQ7FWKka9Zd3qvsIyugg5LeZuHF6kFlXo6MSOc6R1w37YUVy8VpAKd81LMWGi5g9J25P09M0SSIw==} 575 | cpu: [x64] 576 | os: [linux] 577 | 578 | '@rollup/rollup-linux-x64-musl@4.24.0': 579 | resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} 580 | cpu: [x64] 581 | os: [linux] 582 | 583 | '@rollup/rollup-linux-x64-musl@4.34.2': 584 | resolution: {integrity: sha512-aDPHyM/D2SpXfSNCVWCxyHmOqN9qb7SWkY1+vaXqMNMXslZYnwh9V/UCudl6psyG0v6Ukj7pXanIpfZwCOEMUg==} 585 | cpu: [x64] 586 | os: [linux] 587 | 588 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 589 | resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} 590 | cpu: [arm64] 591 | os: [win32] 592 | 593 | '@rollup/rollup-win32-arm64-msvc@4.34.2': 594 | resolution: {integrity: sha512-LQRkCyUBnAo7r8dbEdtNU08EKLCJMgAk2oP5H3R7BnUlKLqgR3dUjrLBVirmc1RK6U6qhtDw29Dimeer8d5hzQ==} 595 | cpu: [arm64] 596 | os: [win32] 597 | 598 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 599 | resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} 600 | cpu: [ia32] 601 | os: [win32] 602 | 603 | '@rollup/rollup-win32-ia32-msvc@4.34.2': 604 | resolution: {integrity: sha512-wt8OhpQUi6JuPFkm1wbVi1BByeag87LDFzeKSXzIdGcX4bMLqORTtKxLoCbV57BHYNSUSOKlSL4BYYUghainYA==} 605 | cpu: [ia32] 606 | os: [win32] 607 | 608 | '@rollup/rollup-win32-x64-msvc@4.24.0': 609 | resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} 610 | cpu: [x64] 611 | os: [win32] 612 | 613 | '@rollup/rollup-win32-x64-msvc@4.34.2': 614 | resolution: {integrity: sha512-rUrqINax0TvrPBXrFKg0YbQx18NpPN3NNrgmaao9xRNbTwek7lOXObhx8tQy8gelmQ/gLaGy1WptpU2eKJZImg==} 615 | cpu: [x64] 616 | os: [win32] 617 | 618 | '@types/estree@1.0.6': 619 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 620 | 621 | '@types/json-schema@7.0.15': 622 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 623 | 624 | '@typescript-eslint/eslint-plugin@8.11.0': 625 | resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==} 626 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 627 | peerDependencies: 628 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 629 | eslint: ^8.57.0 || ^9.0.0 630 | typescript: '*' 631 | peerDependenciesMeta: 632 | typescript: 633 | optional: true 634 | 635 | '@typescript-eslint/parser@8.11.0': 636 | resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==} 637 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 638 | peerDependencies: 639 | eslint: ^8.57.0 || ^9.0.0 640 | typescript: '*' 641 | peerDependenciesMeta: 642 | typescript: 643 | optional: true 644 | 645 | '@typescript-eslint/scope-manager@8.11.0': 646 | resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} 647 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 648 | 649 | '@typescript-eslint/type-utils@8.11.0': 650 | resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==} 651 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 652 | peerDependencies: 653 | typescript: '*' 654 | peerDependenciesMeta: 655 | typescript: 656 | optional: true 657 | 658 | '@typescript-eslint/types@8.11.0': 659 | resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} 660 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 661 | 662 | '@typescript-eslint/typescript-estree@8.11.0': 663 | resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} 664 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 665 | peerDependencies: 666 | typescript: '*' 667 | peerDependenciesMeta: 668 | typescript: 669 | optional: true 670 | 671 | '@typescript-eslint/utils@8.11.0': 672 | resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} 673 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 674 | peerDependencies: 675 | eslint: ^8.57.0 || ^9.0.0 676 | 677 | '@typescript-eslint/visitor-keys@8.11.0': 678 | resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} 679 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 680 | 681 | '@vitest/coverage-v8@2.1.3': 682 | resolution: {integrity: sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==} 683 | peerDependencies: 684 | '@vitest/browser': 2.1.3 685 | vitest: 2.1.3 686 | peerDependenciesMeta: 687 | '@vitest/browser': 688 | optional: true 689 | 690 | '@vitest/expect@2.1.9': 691 | resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==} 692 | 693 | '@vitest/mocker@2.1.9': 694 | resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==} 695 | peerDependencies: 696 | msw: ^2.4.9 697 | vite: ^5.0.0 698 | peerDependenciesMeta: 699 | msw: 700 | optional: true 701 | vite: 702 | optional: true 703 | 704 | '@vitest/pretty-format@2.1.9': 705 | resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} 706 | 707 | '@vitest/runner@2.1.9': 708 | resolution: {integrity: sha512-ZXSSqTFIrzduD63btIfEyOmNcBmQvgOVsPNPe0jYtESiXkhd8u2erDLnMxmGrDCwHCCHE7hxwRDCT3pt0esT4g==} 709 | 710 | '@vitest/snapshot@2.1.9': 711 | resolution: {integrity: sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==} 712 | 713 | '@vitest/spy@2.1.9': 714 | resolution: {integrity: sha512-E1B35FwzXXTs9FHNK6bDszs7mtydNi5MIfUWpceJ8Xbfb1gBMscAnwLbEu+B44ed6W3XjL9/ehLPHR1fkf1KLQ==} 715 | 716 | '@vitest/utils@2.1.9': 717 | resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} 718 | 719 | acorn-jsx@5.3.2: 720 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 721 | peerDependencies: 722 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 723 | 724 | acorn@8.13.0: 725 | resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} 726 | engines: {node: '>=0.4.0'} 727 | hasBin: true 728 | 729 | ajv@6.12.6: 730 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 731 | 732 | ansi-escapes@7.0.0: 733 | resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} 734 | engines: {node: '>=18'} 735 | 736 | ansi-regex@5.0.1: 737 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 738 | engines: {node: '>=8'} 739 | 740 | ansi-regex@6.1.0: 741 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 742 | engines: {node: '>=12'} 743 | 744 | ansi-styles@4.3.0: 745 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 746 | engines: {node: '>=8'} 747 | 748 | ansi-styles@6.2.1: 749 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 750 | engines: {node: '>=12'} 751 | 752 | any-promise@1.3.0: 753 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 754 | 755 | anymatch@3.1.3: 756 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 757 | engines: {node: '>= 8'} 758 | 759 | argparse@2.0.1: 760 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 761 | 762 | assertion-error@2.0.1: 763 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 764 | engines: {node: '>=12'} 765 | 766 | balanced-match@1.0.2: 767 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 768 | 769 | binary-extensions@2.3.0: 770 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 771 | engines: {node: '>=8'} 772 | 773 | brace-expansion@1.1.11: 774 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 775 | 776 | brace-expansion@2.0.1: 777 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 778 | 779 | braces@3.0.3: 780 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 781 | engines: {node: '>=8'} 782 | 783 | bundle-require@5.0.0: 784 | resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 785 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 786 | peerDependencies: 787 | esbuild: '>=0.18' 788 | 789 | cac@6.7.14: 790 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 791 | engines: {node: '>=8'} 792 | 793 | callsites@3.1.0: 794 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 795 | engines: {node: '>=6'} 796 | 797 | chai@5.1.2: 798 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} 799 | engines: {node: '>=12'} 800 | 801 | chalk@4.1.2: 802 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 803 | engines: {node: '>=10'} 804 | 805 | chalk@5.3.0: 806 | resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} 807 | engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 808 | 809 | check-error@2.1.1: 810 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 811 | engines: {node: '>= 16'} 812 | 813 | chokidar@3.6.0: 814 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 815 | engines: {node: '>= 8.10.0'} 816 | 817 | cli-cursor@5.0.0: 818 | resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 819 | engines: {node: '>=18'} 820 | 821 | cli-truncate@4.0.0: 822 | resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 823 | engines: {node: '>=18'} 824 | 825 | color-convert@2.0.1: 826 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 827 | engines: {node: '>=7.0.0'} 828 | 829 | color-name@1.1.4: 830 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 831 | 832 | colorette@2.0.20: 833 | resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 834 | 835 | commander@12.1.0: 836 | resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} 837 | engines: {node: '>=18'} 838 | 839 | commander@4.1.1: 840 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 841 | engines: {node: '>= 6'} 842 | 843 | concat-map@0.0.1: 844 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 845 | 846 | consola@3.2.3: 847 | resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 848 | engines: {node: ^14.18.0 || >=16.10.0} 849 | 850 | cross-spawn@7.0.6: 851 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 852 | engines: {node: '>= 8'} 853 | 854 | debug@4.3.7: 855 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 856 | engines: {node: '>=6.0'} 857 | peerDependencies: 858 | supports-color: '*' 859 | peerDependenciesMeta: 860 | supports-color: 861 | optional: true 862 | 863 | debug@4.4.0: 864 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 865 | engines: {node: '>=6.0'} 866 | peerDependencies: 867 | supports-color: '*' 868 | peerDependenciesMeta: 869 | supports-color: 870 | optional: true 871 | 872 | deep-eql@5.0.2: 873 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 874 | engines: {node: '>=6'} 875 | 876 | deep-is@0.1.4: 877 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 878 | 879 | eastasianwidth@0.2.0: 880 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 881 | 882 | emoji-regex@10.4.0: 883 | resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 884 | 885 | emoji-regex@8.0.0: 886 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 887 | 888 | emoji-regex@9.2.2: 889 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 890 | 891 | environment@1.1.0: 892 | resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} 893 | engines: {node: '>=18'} 894 | 895 | es-module-lexer@1.6.0: 896 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 897 | 898 | esbuild@0.21.5: 899 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 900 | engines: {node: '>=12'} 901 | hasBin: true 902 | 903 | esbuild@0.23.1: 904 | resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} 905 | engines: {node: '>=18'} 906 | hasBin: true 907 | 908 | escape-string-regexp@4.0.0: 909 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 910 | engines: {node: '>=10'} 911 | 912 | eslint-scope@8.1.0: 913 | resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} 914 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 915 | 916 | eslint-visitor-keys@3.4.3: 917 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 918 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 919 | 920 | eslint-visitor-keys@4.1.0: 921 | resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} 922 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 923 | 924 | eslint@9.13.0: 925 | resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} 926 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 927 | hasBin: true 928 | peerDependencies: 929 | jiti: '*' 930 | peerDependenciesMeta: 931 | jiti: 932 | optional: true 933 | 934 | espree@10.2.0: 935 | resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} 936 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 937 | 938 | esquery@1.6.0: 939 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 940 | engines: {node: '>=0.10'} 941 | 942 | esrecurse@4.3.0: 943 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 944 | engines: {node: '>=4.0'} 945 | 946 | estraverse@5.3.0: 947 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 948 | engines: {node: '>=4.0'} 949 | 950 | estree-walker@3.0.3: 951 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 952 | 953 | esutils@2.0.3: 954 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 955 | engines: {node: '>=0.10.0'} 956 | 957 | eventemitter3@5.0.1: 958 | resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 959 | 960 | execa@5.1.1: 961 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 962 | engines: {node: '>=10'} 963 | 964 | execa@8.0.1: 965 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 966 | engines: {node: '>=16.17'} 967 | 968 | expect-type@1.1.0: 969 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 970 | engines: {node: '>=12.0.0'} 971 | 972 | fast-deep-equal@3.1.3: 973 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 974 | 975 | fast-glob@3.3.2: 976 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 977 | engines: {node: '>=8.6.0'} 978 | 979 | fast-json-stable-stringify@2.1.0: 980 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 981 | 982 | fast-levenshtein@2.0.6: 983 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 984 | 985 | fastq@1.17.1: 986 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 987 | 988 | fdir@6.4.2: 989 | resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 990 | peerDependencies: 991 | picomatch: ^3 || ^4 992 | peerDependenciesMeta: 993 | picomatch: 994 | optional: true 995 | 996 | file-entry-cache@8.0.0: 997 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 998 | engines: {node: '>=16.0.0'} 999 | 1000 | fill-range@7.1.1: 1001 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1002 | engines: {node: '>=8'} 1003 | 1004 | find-up@5.0.0: 1005 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1006 | engines: {node: '>=10'} 1007 | 1008 | flat-cache@4.0.1: 1009 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1010 | engines: {node: '>=16'} 1011 | 1012 | flatted@3.3.1: 1013 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1014 | 1015 | foreground-child@3.3.0: 1016 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1017 | engines: {node: '>=14'} 1018 | 1019 | fsevents@2.3.3: 1020 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1021 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1022 | os: [darwin] 1023 | 1024 | get-east-asian-width@1.3.0: 1025 | resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} 1026 | engines: {node: '>=18'} 1027 | 1028 | get-stream@6.0.1: 1029 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1030 | engines: {node: '>=10'} 1031 | 1032 | get-stream@8.0.1: 1033 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 1034 | engines: {node: '>=16'} 1035 | 1036 | glob-parent@5.1.2: 1037 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1038 | engines: {node: '>= 6'} 1039 | 1040 | glob-parent@6.0.2: 1041 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1042 | engines: {node: '>=10.13.0'} 1043 | 1044 | glob@10.4.5: 1045 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1046 | hasBin: true 1047 | 1048 | globals@14.0.0: 1049 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1050 | engines: {node: '>=18'} 1051 | 1052 | graphemer@1.4.0: 1053 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1054 | 1055 | has-flag@4.0.0: 1056 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1057 | engines: {node: '>=8'} 1058 | 1059 | hono@4.10.3: 1060 | resolution: {integrity: sha512-2LOYWUbnhdxdL8MNbNg9XZig6k+cZXm5IjHn2Aviv7honhBMOHb+jxrKIeJRZJRmn+htUCKhaicxwXuUDlchRA==} 1061 | engines: {node: '>=16.9.0'} 1062 | 1063 | html-escaper@2.0.2: 1064 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1065 | 1066 | human-signals@2.1.0: 1067 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1068 | engines: {node: '>=10.17.0'} 1069 | 1070 | human-signals@5.0.0: 1071 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 1072 | engines: {node: '>=16.17.0'} 1073 | 1074 | husky@9.1.6: 1075 | resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} 1076 | engines: {node: '>=18'} 1077 | hasBin: true 1078 | 1079 | ignore@5.3.2: 1080 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1081 | engines: {node: '>= 4'} 1082 | 1083 | import-fresh@3.3.0: 1084 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1085 | engines: {node: '>=6'} 1086 | 1087 | imurmurhash@0.1.4: 1088 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1089 | engines: {node: '>=0.8.19'} 1090 | 1091 | is-binary-path@2.1.0: 1092 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1093 | engines: {node: '>=8'} 1094 | 1095 | is-extglob@2.1.1: 1096 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1097 | engines: {node: '>=0.10.0'} 1098 | 1099 | is-fullwidth-code-point@3.0.0: 1100 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1101 | engines: {node: '>=8'} 1102 | 1103 | is-fullwidth-code-point@4.0.0: 1104 | resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 1105 | engines: {node: '>=12'} 1106 | 1107 | is-fullwidth-code-point@5.0.0: 1108 | resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} 1109 | engines: {node: '>=18'} 1110 | 1111 | is-glob@4.0.3: 1112 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1113 | engines: {node: '>=0.10.0'} 1114 | 1115 | is-number@7.0.0: 1116 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1117 | engines: {node: '>=0.12.0'} 1118 | 1119 | is-stream@2.0.1: 1120 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1121 | engines: {node: '>=8'} 1122 | 1123 | is-stream@3.0.0: 1124 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 1125 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1126 | 1127 | isexe@2.0.0: 1128 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1129 | 1130 | istanbul-lib-coverage@3.2.2: 1131 | resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} 1132 | engines: {node: '>=8'} 1133 | 1134 | istanbul-lib-report@3.0.1: 1135 | resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} 1136 | engines: {node: '>=10'} 1137 | 1138 | istanbul-lib-source-maps@5.0.6: 1139 | resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} 1140 | engines: {node: '>=10'} 1141 | 1142 | istanbul-reports@3.1.7: 1143 | resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} 1144 | engines: {node: '>=8'} 1145 | 1146 | jackspeak@3.4.3: 1147 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1148 | 1149 | joycon@3.1.1: 1150 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1151 | engines: {node: '>=10'} 1152 | 1153 | js-yaml@4.1.0: 1154 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1155 | hasBin: true 1156 | 1157 | json-buffer@3.0.1: 1158 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1159 | 1160 | json-schema-traverse@0.4.1: 1161 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1162 | 1163 | json-stable-stringify-without-jsonify@1.0.1: 1164 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1165 | 1166 | keyv@4.5.4: 1167 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1168 | 1169 | levn@0.4.1: 1170 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1171 | engines: {node: '>= 0.8.0'} 1172 | 1173 | lilconfig@3.1.2: 1174 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 1175 | engines: {node: '>=14'} 1176 | 1177 | lines-and-columns@1.2.4: 1178 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1179 | 1180 | lint-staged@15.2.10: 1181 | resolution: {integrity: sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==} 1182 | engines: {node: '>=18.12.0'} 1183 | hasBin: true 1184 | 1185 | listr2@8.2.5: 1186 | resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} 1187 | engines: {node: '>=18.0.0'} 1188 | 1189 | load-tsconfig@0.2.5: 1190 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1191 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1192 | 1193 | locate-path@6.0.0: 1194 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1195 | engines: {node: '>=10'} 1196 | 1197 | lodash.merge@4.6.2: 1198 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1199 | 1200 | lodash.sortby@4.7.0: 1201 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1202 | 1203 | log-update@6.1.0: 1204 | resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} 1205 | engines: {node: '>=18'} 1206 | 1207 | loupe@3.1.3: 1208 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 1209 | 1210 | lru-cache@10.4.3: 1211 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1212 | 1213 | magic-string@0.30.12: 1214 | resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} 1215 | 1216 | magic-string@0.30.17: 1217 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1218 | 1219 | magicast@0.3.5: 1220 | resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} 1221 | 1222 | make-dir@4.0.0: 1223 | resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} 1224 | engines: {node: '>=10'} 1225 | 1226 | merge-stream@2.0.0: 1227 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1228 | 1229 | merge2@1.4.1: 1230 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1231 | engines: {node: '>= 8'} 1232 | 1233 | micromatch@4.0.8: 1234 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1235 | engines: {node: '>=8.6'} 1236 | 1237 | mimic-fn@2.1.0: 1238 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1239 | engines: {node: '>=6'} 1240 | 1241 | mimic-fn@4.0.0: 1242 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1243 | engines: {node: '>=12'} 1244 | 1245 | mimic-function@5.0.1: 1246 | resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 1247 | engines: {node: '>=18'} 1248 | 1249 | minimatch@3.1.2: 1250 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1251 | 1252 | minimatch@9.0.5: 1253 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1254 | engines: {node: '>=16 || 14 >=14.17'} 1255 | 1256 | minipass@7.1.2: 1257 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1258 | engines: {node: '>=16 || 14 >=14.17'} 1259 | 1260 | ms@2.1.3: 1261 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1262 | 1263 | mz@2.7.0: 1264 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1265 | 1266 | nanoid@3.3.8: 1267 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1268 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1269 | hasBin: true 1270 | 1271 | natural-compare@1.4.0: 1272 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1273 | 1274 | normalize-path@3.0.0: 1275 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1276 | engines: {node: '>=0.10.0'} 1277 | 1278 | npm-run-path@4.0.1: 1279 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1280 | engines: {node: '>=8'} 1281 | 1282 | npm-run-path@5.3.0: 1283 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1284 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1285 | 1286 | object-assign@4.1.1: 1287 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1288 | engines: {node: '>=0.10.0'} 1289 | 1290 | onetime@5.1.2: 1291 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1292 | engines: {node: '>=6'} 1293 | 1294 | onetime@6.0.0: 1295 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1296 | engines: {node: '>=12'} 1297 | 1298 | onetime@7.0.0: 1299 | resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 1300 | engines: {node: '>=18'} 1301 | 1302 | optionator@0.9.4: 1303 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1304 | engines: {node: '>= 0.8.0'} 1305 | 1306 | p-limit@3.1.0: 1307 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1308 | engines: {node: '>=10'} 1309 | 1310 | p-locate@5.0.0: 1311 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1312 | engines: {node: '>=10'} 1313 | 1314 | package-json-from-dist@1.0.1: 1315 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1316 | 1317 | parent-module@1.0.1: 1318 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1319 | engines: {node: '>=6'} 1320 | 1321 | path-exists@4.0.0: 1322 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1323 | engines: {node: '>=8'} 1324 | 1325 | path-key@3.1.1: 1326 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1327 | engines: {node: '>=8'} 1328 | 1329 | path-key@4.0.0: 1330 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1331 | engines: {node: '>=12'} 1332 | 1333 | path-scurry@1.11.1: 1334 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1335 | engines: {node: '>=16 || 14 >=14.18'} 1336 | 1337 | pathe@1.1.2: 1338 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1339 | 1340 | pathval@2.0.0: 1341 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1342 | engines: {node: '>= 14.16'} 1343 | 1344 | picocolors@1.1.1: 1345 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1346 | 1347 | picomatch@2.3.1: 1348 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1349 | engines: {node: '>=8.6'} 1350 | 1351 | picomatch@4.0.2: 1352 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1353 | engines: {node: '>=12'} 1354 | 1355 | pidtree@0.6.0: 1356 | resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 1357 | engines: {node: '>=0.10'} 1358 | hasBin: true 1359 | 1360 | pirates@4.0.6: 1361 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1362 | engines: {node: '>= 6'} 1363 | 1364 | postcss-load-config@6.0.1: 1365 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1366 | engines: {node: '>= 18'} 1367 | peerDependencies: 1368 | jiti: '>=1.21.0' 1369 | postcss: '>=8.0.9' 1370 | tsx: ^4.8.1 1371 | yaml: ^2.4.2 1372 | peerDependenciesMeta: 1373 | jiti: 1374 | optional: true 1375 | postcss: 1376 | optional: true 1377 | tsx: 1378 | optional: true 1379 | yaml: 1380 | optional: true 1381 | 1382 | postcss@8.5.1: 1383 | resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} 1384 | engines: {node: ^10 || ^12 || >=14} 1385 | 1386 | prelude-ls@1.2.1: 1387 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1388 | engines: {node: '>= 0.8.0'} 1389 | 1390 | prettier@3.3.3: 1391 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1392 | engines: {node: '>=14'} 1393 | hasBin: true 1394 | 1395 | punycode@2.3.1: 1396 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1397 | engines: {node: '>=6'} 1398 | 1399 | queue-microtask@1.2.3: 1400 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1401 | 1402 | readdirp@3.6.0: 1403 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1404 | engines: {node: '>=8.10.0'} 1405 | 1406 | resolve-from@4.0.0: 1407 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1408 | engines: {node: '>=4'} 1409 | 1410 | resolve-from@5.0.0: 1411 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1412 | engines: {node: '>=8'} 1413 | 1414 | restore-cursor@5.1.0: 1415 | resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 1416 | engines: {node: '>=18'} 1417 | 1418 | reusify@1.0.4: 1419 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1420 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1421 | 1422 | rfdc@1.4.1: 1423 | resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1424 | 1425 | rollup@4.24.0: 1426 | resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} 1427 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1428 | hasBin: true 1429 | 1430 | rollup@4.34.2: 1431 | resolution: {integrity: sha512-sBDUoxZEaqLu9QeNalL8v3jw6WjPku4wfZGyTU7l7m1oC+rpRihXc/n/H+4148ZkGz5Xli8CHMns//fFGKvpIQ==} 1432 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1433 | hasBin: true 1434 | 1435 | run-parallel@1.2.0: 1436 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1437 | 1438 | semver@7.6.3: 1439 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1440 | engines: {node: '>=10'} 1441 | hasBin: true 1442 | 1443 | shebang-command@2.0.0: 1444 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1445 | engines: {node: '>=8'} 1446 | 1447 | shebang-regex@3.0.0: 1448 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1449 | engines: {node: '>=8'} 1450 | 1451 | siginfo@2.0.0: 1452 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1453 | 1454 | signal-exit@3.0.7: 1455 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1456 | 1457 | signal-exit@4.1.0: 1458 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1459 | engines: {node: '>=14'} 1460 | 1461 | slice-ansi@5.0.0: 1462 | resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1463 | engines: {node: '>=12'} 1464 | 1465 | slice-ansi@7.1.0: 1466 | resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} 1467 | engines: {node: '>=18'} 1468 | 1469 | source-map-js@1.2.1: 1470 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1471 | engines: {node: '>=0.10.0'} 1472 | 1473 | source-map@0.8.0-beta.0: 1474 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1475 | engines: {node: '>= 8'} 1476 | deprecated: The work that was done in this beta branch won't be included in future versions 1477 | 1478 | stackback@0.0.2: 1479 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1480 | 1481 | std-env@3.7.0: 1482 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 1483 | 1484 | std-env@3.8.0: 1485 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1486 | 1487 | string-argv@0.3.2: 1488 | resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 1489 | engines: {node: '>=0.6.19'} 1490 | 1491 | string-width@4.2.3: 1492 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1493 | engines: {node: '>=8'} 1494 | 1495 | string-width@5.1.2: 1496 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1497 | engines: {node: '>=12'} 1498 | 1499 | string-width@7.2.0: 1500 | resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 1501 | engines: {node: '>=18'} 1502 | 1503 | strip-ansi@6.0.1: 1504 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1505 | engines: {node: '>=8'} 1506 | 1507 | strip-ansi@7.1.0: 1508 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1509 | engines: {node: '>=12'} 1510 | 1511 | strip-final-newline@2.0.0: 1512 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1513 | engines: {node: '>=6'} 1514 | 1515 | strip-final-newline@3.0.0: 1516 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1517 | engines: {node: '>=12'} 1518 | 1519 | strip-json-comments@3.1.1: 1520 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1521 | engines: {node: '>=8'} 1522 | 1523 | sucrase@3.35.0: 1524 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1525 | engines: {node: '>=16 || 14 >=14.17'} 1526 | hasBin: true 1527 | 1528 | supports-color@7.2.0: 1529 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1530 | engines: {node: '>=8'} 1531 | 1532 | test-exclude@7.0.1: 1533 | resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} 1534 | engines: {node: '>=18'} 1535 | 1536 | text-table@0.2.0: 1537 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1538 | 1539 | thenify-all@1.6.0: 1540 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1541 | engines: {node: '>=0.8'} 1542 | 1543 | thenify@3.3.1: 1544 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1545 | 1546 | tinybench@2.9.0: 1547 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1548 | 1549 | tinyexec@0.3.2: 1550 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1551 | 1552 | tinyglobby@0.2.9: 1553 | resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} 1554 | engines: {node: '>=12.0.0'} 1555 | 1556 | tinypool@1.0.2: 1557 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1558 | engines: {node: ^18.0.0 || >=20.0.0} 1559 | 1560 | tinyrainbow@1.2.0: 1561 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1562 | engines: {node: '>=14.0.0'} 1563 | 1564 | tinyspy@3.0.2: 1565 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1566 | engines: {node: '>=14.0.0'} 1567 | 1568 | to-regex-range@5.0.1: 1569 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1570 | engines: {node: '>=8.0'} 1571 | 1572 | tr46@1.0.1: 1573 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1574 | 1575 | tree-kill@1.2.2: 1576 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1577 | hasBin: true 1578 | 1579 | ts-api-utils@1.3.0: 1580 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 1581 | engines: {node: '>=16'} 1582 | peerDependencies: 1583 | typescript: '>=4.2.0' 1584 | 1585 | ts-interface-checker@0.1.13: 1586 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1587 | 1588 | tsup@8.3.0: 1589 | resolution: {integrity: sha512-ALscEeyS03IomcuNdFdc0YWGVIkwH1Ws7nfTbAPuoILvEV2hpGQAY72LIOjglGo4ShWpZfpBqP/jpQVCzqYQag==} 1590 | engines: {node: '>=18'} 1591 | hasBin: true 1592 | peerDependencies: 1593 | '@microsoft/api-extractor': ^7.36.0 1594 | '@swc/core': ^1 1595 | postcss: ^8.4.12 1596 | typescript: '>=4.5.0' 1597 | peerDependenciesMeta: 1598 | '@microsoft/api-extractor': 1599 | optional: true 1600 | '@swc/core': 1601 | optional: true 1602 | postcss: 1603 | optional: true 1604 | typescript: 1605 | optional: true 1606 | 1607 | type-check@0.4.0: 1608 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1609 | engines: {node: '>= 0.8.0'} 1610 | 1611 | typescript-eslint@8.11.0: 1612 | resolution: {integrity: sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==} 1613 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1614 | peerDependencies: 1615 | typescript: '*' 1616 | peerDependenciesMeta: 1617 | typescript: 1618 | optional: true 1619 | 1620 | typescript@5.6.3: 1621 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 1622 | engines: {node: '>=14.17'} 1623 | hasBin: true 1624 | 1625 | uri-js@4.4.1: 1626 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1627 | 1628 | vite-node@2.1.9: 1629 | resolution: {integrity: sha512-AM9aQ/IPrW/6ENLQg3AGY4K1N2TGZdR5e4gu/MmmR2xR3Ll1+dib+nook92g4TV3PXVyeyxdWwtaCAiUL0hMxA==} 1630 | engines: {node: ^18.0.0 || >=20.0.0} 1631 | hasBin: true 1632 | 1633 | vite@5.4.14: 1634 | resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} 1635 | engines: {node: ^18.0.0 || >=20.0.0} 1636 | hasBin: true 1637 | peerDependencies: 1638 | '@types/node': ^18.0.0 || >=20.0.0 1639 | less: '*' 1640 | lightningcss: ^1.21.0 1641 | sass: '*' 1642 | sass-embedded: '*' 1643 | stylus: '*' 1644 | sugarss: '*' 1645 | terser: ^5.4.0 1646 | peerDependenciesMeta: 1647 | '@types/node': 1648 | optional: true 1649 | less: 1650 | optional: true 1651 | lightningcss: 1652 | optional: true 1653 | sass: 1654 | optional: true 1655 | sass-embedded: 1656 | optional: true 1657 | stylus: 1658 | optional: true 1659 | sugarss: 1660 | optional: true 1661 | terser: 1662 | optional: true 1663 | 1664 | vitest@2.1.9: 1665 | resolution: {integrity: sha512-MSmPM9REYqDGBI8439mA4mWhV5sKmDlBKWIYbA3lRb2PTHACE0mgKwA8yQ2xq9vxDTuk4iPrECBAEW2aoFXY0Q==} 1666 | engines: {node: ^18.0.0 || >=20.0.0} 1667 | hasBin: true 1668 | peerDependencies: 1669 | '@edge-runtime/vm': '*' 1670 | '@types/node': ^18.0.0 || >=20.0.0 1671 | '@vitest/browser': 2.1.9 1672 | '@vitest/ui': 2.1.9 1673 | happy-dom: '*' 1674 | jsdom: '*' 1675 | peerDependenciesMeta: 1676 | '@edge-runtime/vm': 1677 | optional: true 1678 | '@types/node': 1679 | optional: true 1680 | '@vitest/browser': 1681 | optional: true 1682 | '@vitest/ui': 1683 | optional: true 1684 | happy-dom: 1685 | optional: true 1686 | jsdom: 1687 | optional: true 1688 | 1689 | webidl-conversions@4.0.2: 1690 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1691 | 1692 | whatwg-url@7.1.0: 1693 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1694 | 1695 | which@2.0.2: 1696 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1697 | engines: {node: '>= 8'} 1698 | hasBin: true 1699 | 1700 | why-is-node-running@2.3.0: 1701 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1702 | engines: {node: '>=8'} 1703 | hasBin: true 1704 | 1705 | word-wrap@1.2.5: 1706 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1707 | engines: {node: '>=0.10.0'} 1708 | 1709 | wrap-ansi@7.0.0: 1710 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1711 | engines: {node: '>=10'} 1712 | 1713 | wrap-ansi@8.1.0: 1714 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1715 | engines: {node: '>=12'} 1716 | 1717 | wrap-ansi@9.0.0: 1718 | resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 1719 | engines: {node: '>=18'} 1720 | 1721 | yaml@2.5.1: 1722 | resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} 1723 | engines: {node: '>= 14'} 1724 | hasBin: true 1725 | 1726 | yocto-queue@0.1.0: 1727 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1728 | engines: {node: '>=10'} 1729 | 1730 | snapshots: 1731 | 1732 | '@ampproject/remapping@2.3.0': 1733 | dependencies: 1734 | '@jridgewell/gen-mapping': 0.3.5 1735 | '@jridgewell/trace-mapping': 0.3.25 1736 | 1737 | '@babel/helper-string-parser@7.25.9': {} 1738 | 1739 | '@babel/helper-validator-identifier@7.25.9': {} 1740 | 1741 | '@babel/parser@7.25.9': 1742 | dependencies: 1743 | '@babel/types': 7.25.9 1744 | 1745 | '@babel/types@7.25.9': 1746 | dependencies: 1747 | '@babel/helper-string-parser': 7.25.9 1748 | '@babel/helper-validator-identifier': 7.25.9 1749 | 1750 | '@bcoe/v8-coverage@0.2.3': {} 1751 | 1752 | '@esbuild/aix-ppc64@0.21.5': 1753 | optional: true 1754 | 1755 | '@esbuild/aix-ppc64@0.23.1': 1756 | optional: true 1757 | 1758 | '@esbuild/android-arm64@0.21.5': 1759 | optional: true 1760 | 1761 | '@esbuild/android-arm64@0.23.1': 1762 | optional: true 1763 | 1764 | '@esbuild/android-arm@0.21.5': 1765 | optional: true 1766 | 1767 | '@esbuild/android-arm@0.23.1': 1768 | optional: true 1769 | 1770 | '@esbuild/android-x64@0.21.5': 1771 | optional: true 1772 | 1773 | '@esbuild/android-x64@0.23.1': 1774 | optional: true 1775 | 1776 | '@esbuild/darwin-arm64@0.21.5': 1777 | optional: true 1778 | 1779 | '@esbuild/darwin-arm64@0.23.1': 1780 | optional: true 1781 | 1782 | '@esbuild/darwin-x64@0.21.5': 1783 | optional: true 1784 | 1785 | '@esbuild/darwin-x64@0.23.1': 1786 | optional: true 1787 | 1788 | '@esbuild/freebsd-arm64@0.21.5': 1789 | optional: true 1790 | 1791 | '@esbuild/freebsd-arm64@0.23.1': 1792 | optional: true 1793 | 1794 | '@esbuild/freebsd-x64@0.21.5': 1795 | optional: true 1796 | 1797 | '@esbuild/freebsd-x64@0.23.1': 1798 | optional: true 1799 | 1800 | '@esbuild/linux-arm64@0.21.5': 1801 | optional: true 1802 | 1803 | '@esbuild/linux-arm64@0.23.1': 1804 | optional: true 1805 | 1806 | '@esbuild/linux-arm@0.21.5': 1807 | optional: true 1808 | 1809 | '@esbuild/linux-arm@0.23.1': 1810 | optional: true 1811 | 1812 | '@esbuild/linux-ia32@0.21.5': 1813 | optional: true 1814 | 1815 | '@esbuild/linux-ia32@0.23.1': 1816 | optional: true 1817 | 1818 | '@esbuild/linux-loong64@0.21.5': 1819 | optional: true 1820 | 1821 | '@esbuild/linux-loong64@0.23.1': 1822 | optional: true 1823 | 1824 | '@esbuild/linux-mips64el@0.21.5': 1825 | optional: true 1826 | 1827 | '@esbuild/linux-mips64el@0.23.1': 1828 | optional: true 1829 | 1830 | '@esbuild/linux-ppc64@0.21.5': 1831 | optional: true 1832 | 1833 | '@esbuild/linux-ppc64@0.23.1': 1834 | optional: true 1835 | 1836 | '@esbuild/linux-riscv64@0.21.5': 1837 | optional: true 1838 | 1839 | '@esbuild/linux-riscv64@0.23.1': 1840 | optional: true 1841 | 1842 | '@esbuild/linux-s390x@0.21.5': 1843 | optional: true 1844 | 1845 | '@esbuild/linux-s390x@0.23.1': 1846 | optional: true 1847 | 1848 | '@esbuild/linux-x64@0.21.5': 1849 | optional: true 1850 | 1851 | '@esbuild/linux-x64@0.23.1': 1852 | optional: true 1853 | 1854 | '@esbuild/netbsd-x64@0.21.5': 1855 | optional: true 1856 | 1857 | '@esbuild/netbsd-x64@0.23.1': 1858 | optional: true 1859 | 1860 | '@esbuild/openbsd-arm64@0.23.1': 1861 | optional: true 1862 | 1863 | '@esbuild/openbsd-x64@0.21.5': 1864 | optional: true 1865 | 1866 | '@esbuild/openbsd-x64@0.23.1': 1867 | optional: true 1868 | 1869 | '@esbuild/sunos-x64@0.21.5': 1870 | optional: true 1871 | 1872 | '@esbuild/sunos-x64@0.23.1': 1873 | optional: true 1874 | 1875 | '@esbuild/win32-arm64@0.21.5': 1876 | optional: true 1877 | 1878 | '@esbuild/win32-arm64@0.23.1': 1879 | optional: true 1880 | 1881 | '@esbuild/win32-ia32@0.21.5': 1882 | optional: true 1883 | 1884 | '@esbuild/win32-ia32@0.23.1': 1885 | optional: true 1886 | 1887 | '@esbuild/win32-x64@0.21.5': 1888 | optional: true 1889 | 1890 | '@esbuild/win32-x64@0.23.1': 1891 | optional: true 1892 | 1893 | '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)': 1894 | dependencies: 1895 | eslint: 9.13.0 1896 | eslint-visitor-keys: 3.4.3 1897 | 1898 | '@eslint-community/regexpp@4.11.1': {} 1899 | 1900 | '@eslint/config-array@0.18.0': 1901 | dependencies: 1902 | '@eslint/object-schema': 2.1.4 1903 | debug: 4.3.7 1904 | minimatch: 3.1.2 1905 | transitivePeerDependencies: 1906 | - supports-color 1907 | 1908 | '@eslint/core@0.7.0': {} 1909 | 1910 | '@eslint/eslintrc@3.1.0': 1911 | dependencies: 1912 | ajv: 6.12.6 1913 | debug: 4.3.7 1914 | espree: 10.2.0 1915 | globals: 14.0.0 1916 | ignore: 5.3.2 1917 | import-fresh: 3.3.0 1918 | js-yaml: 4.1.0 1919 | minimatch: 3.1.2 1920 | strip-json-comments: 3.1.1 1921 | transitivePeerDependencies: 1922 | - supports-color 1923 | 1924 | '@eslint/js@9.13.0': {} 1925 | 1926 | '@eslint/object-schema@2.1.4': {} 1927 | 1928 | '@eslint/plugin-kit@0.2.3': 1929 | dependencies: 1930 | levn: 0.4.1 1931 | 1932 | '@humanfs/core@0.19.0': {} 1933 | 1934 | '@humanfs/node@0.16.5': 1935 | dependencies: 1936 | '@humanfs/core': 0.19.0 1937 | '@humanwhocodes/retry': 0.3.1 1938 | 1939 | '@humanwhocodes/module-importer@1.0.1': {} 1940 | 1941 | '@humanwhocodes/retry@0.3.1': {} 1942 | 1943 | '@isaacs/cliui@8.0.2': 1944 | dependencies: 1945 | string-width: 5.1.2 1946 | string-width-cjs: string-width@4.2.3 1947 | strip-ansi: 7.1.0 1948 | strip-ansi-cjs: strip-ansi@6.0.1 1949 | wrap-ansi: 8.1.0 1950 | wrap-ansi-cjs: wrap-ansi@7.0.0 1951 | 1952 | '@istanbuljs/schema@0.1.3': {} 1953 | 1954 | '@jridgewell/gen-mapping@0.3.5': 1955 | dependencies: 1956 | '@jridgewell/set-array': 1.2.1 1957 | '@jridgewell/sourcemap-codec': 1.5.0 1958 | '@jridgewell/trace-mapping': 0.3.25 1959 | 1960 | '@jridgewell/resolve-uri@3.1.2': {} 1961 | 1962 | '@jridgewell/set-array@1.2.1': {} 1963 | 1964 | '@jridgewell/sourcemap-codec@1.5.0': {} 1965 | 1966 | '@jridgewell/trace-mapping@0.3.25': 1967 | dependencies: 1968 | '@jridgewell/resolve-uri': 3.1.2 1969 | '@jridgewell/sourcemap-codec': 1.5.0 1970 | 1971 | '@nodelib/fs.scandir@2.1.5': 1972 | dependencies: 1973 | '@nodelib/fs.stat': 2.0.5 1974 | run-parallel: 1.2.0 1975 | 1976 | '@nodelib/fs.stat@2.0.5': {} 1977 | 1978 | '@nodelib/fs.walk@1.2.8': 1979 | dependencies: 1980 | '@nodelib/fs.scandir': 2.1.5 1981 | fastq: 1.17.1 1982 | 1983 | '@pkgjs/parseargs@0.11.0': 1984 | optional: true 1985 | 1986 | '@rollup/rollup-android-arm-eabi@4.24.0': 1987 | optional: true 1988 | 1989 | '@rollup/rollup-android-arm-eabi@4.34.2': 1990 | optional: true 1991 | 1992 | '@rollup/rollup-android-arm64@4.24.0': 1993 | optional: true 1994 | 1995 | '@rollup/rollup-android-arm64@4.34.2': 1996 | optional: true 1997 | 1998 | '@rollup/rollup-darwin-arm64@4.24.0': 1999 | optional: true 2000 | 2001 | '@rollup/rollup-darwin-arm64@4.34.2': 2002 | optional: true 2003 | 2004 | '@rollup/rollup-darwin-x64@4.24.0': 2005 | optional: true 2006 | 2007 | '@rollup/rollup-darwin-x64@4.34.2': 2008 | optional: true 2009 | 2010 | '@rollup/rollup-freebsd-arm64@4.34.2': 2011 | optional: true 2012 | 2013 | '@rollup/rollup-freebsd-x64@4.34.2': 2014 | optional: true 2015 | 2016 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 2017 | optional: true 2018 | 2019 | '@rollup/rollup-linux-arm-gnueabihf@4.34.2': 2020 | optional: true 2021 | 2022 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 2023 | optional: true 2024 | 2025 | '@rollup/rollup-linux-arm-musleabihf@4.34.2': 2026 | optional: true 2027 | 2028 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 2029 | optional: true 2030 | 2031 | '@rollup/rollup-linux-arm64-gnu@4.34.2': 2032 | optional: true 2033 | 2034 | '@rollup/rollup-linux-arm64-musl@4.24.0': 2035 | optional: true 2036 | 2037 | '@rollup/rollup-linux-arm64-musl@4.34.2': 2038 | optional: true 2039 | 2040 | '@rollup/rollup-linux-loongarch64-gnu@4.34.2': 2041 | optional: true 2042 | 2043 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 2044 | optional: true 2045 | 2046 | '@rollup/rollup-linux-powerpc64le-gnu@4.34.2': 2047 | optional: true 2048 | 2049 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 2050 | optional: true 2051 | 2052 | '@rollup/rollup-linux-riscv64-gnu@4.34.2': 2053 | optional: true 2054 | 2055 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 2056 | optional: true 2057 | 2058 | '@rollup/rollup-linux-s390x-gnu@4.34.2': 2059 | optional: true 2060 | 2061 | '@rollup/rollup-linux-x64-gnu@4.24.0': 2062 | optional: true 2063 | 2064 | '@rollup/rollup-linux-x64-gnu@4.34.2': 2065 | optional: true 2066 | 2067 | '@rollup/rollup-linux-x64-musl@4.24.0': 2068 | optional: true 2069 | 2070 | '@rollup/rollup-linux-x64-musl@4.34.2': 2071 | optional: true 2072 | 2073 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 2074 | optional: true 2075 | 2076 | '@rollup/rollup-win32-arm64-msvc@4.34.2': 2077 | optional: true 2078 | 2079 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 2080 | optional: true 2081 | 2082 | '@rollup/rollup-win32-ia32-msvc@4.34.2': 2083 | optional: true 2084 | 2085 | '@rollup/rollup-win32-x64-msvc@4.24.0': 2086 | optional: true 2087 | 2088 | '@rollup/rollup-win32-x64-msvc@4.34.2': 2089 | optional: true 2090 | 2091 | '@types/estree@1.0.6': {} 2092 | 2093 | '@types/json-schema@7.0.15': {} 2094 | 2095 | '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)': 2096 | dependencies: 2097 | '@eslint-community/regexpp': 4.11.1 2098 | '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 2099 | '@typescript-eslint/scope-manager': 8.11.0 2100 | '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 2101 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 2102 | '@typescript-eslint/visitor-keys': 8.11.0 2103 | eslint: 9.13.0 2104 | graphemer: 1.4.0 2105 | ignore: 5.3.2 2106 | natural-compare: 1.4.0 2107 | ts-api-utils: 1.3.0(typescript@5.6.3) 2108 | optionalDependencies: 2109 | typescript: 5.6.3 2110 | transitivePeerDependencies: 2111 | - supports-color 2112 | 2113 | '@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 2114 | dependencies: 2115 | '@typescript-eslint/scope-manager': 8.11.0 2116 | '@typescript-eslint/types': 8.11.0 2117 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 2118 | '@typescript-eslint/visitor-keys': 8.11.0 2119 | debug: 4.4.0 2120 | eslint: 9.13.0 2121 | optionalDependencies: 2122 | typescript: 5.6.3 2123 | transitivePeerDependencies: 2124 | - supports-color 2125 | 2126 | '@typescript-eslint/scope-manager@8.11.0': 2127 | dependencies: 2128 | '@typescript-eslint/types': 8.11.0 2129 | '@typescript-eslint/visitor-keys': 8.11.0 2130 | 2131 | '@typescript-eslint/type-utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 2132 | dependencies: 2133 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 2134 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 2135 | debug: 4.4.0 2136 | ts-api-utils: 1.3.0(typescript@5.6.3) 2137 | optionalDependencies: 2138 | typescript: 5.6.3 2139 | transitivePeerDependencies: 2140 | - eslint 2141 | - supports-color 2142 | 2143 | '@typescript-eslint/types@8.11.0': {} 2144 | 2145 | '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)': 2146 | dependencies: 2147 | '@typescript-eslint/types': 8.11.0 2148 | '@typescript-eslint/visitor-keys': 8.11.0 2149 | debug: 4.4.0 2150 | fast-glob: 3.3.2 2151 | is-glob: 4.0.3 2152 | minimatch: 9.0.5 2153 | semver: 7.6.3 2154 | ts-api-utils: 1.3.0(typescript@5.6.3) 2155 | optionalDependencies: 2156 | typescript: 5.6.3 2157 | transitivePeerDependencies: 2158 | - supports-color 2159 | 2160 | '@typescript-eslint/utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)': 2161 | dependencies: 2162 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) 2163 | '@typescript-eslint/scope-manager': 8.11.0 2164 | '@typescript-eslint/types': 8.11.0 2165 | '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3) 2166 | eslint: 9.13.0 2167 | transitivePeerDependencies: 2168 | - supports-color 2169 | - typescript 2170 | 2171 | '@typescript-eslint/visitor-keys@8.11.0': 2172 | dependencies: 2173 | '@typescript-eslint/types': 8.11.0 2174 | eslint-visitor-keys: 3.4.3 2175 | 2176 | '@vitest/coverage-v8@2.1.3(vitest@2.1.9)': 2177 | dependencies: 2178 | '@ampproject/remapping': 2.3.0 2179 | '@bcoe/v8-coverage': 0.2.3 2180 | debug: 4.3.7 2181 | istanbul-lib-coverage: 3.2.2 2182 | istanbul-lib-report: 3.0.1 2183 | istanbul-lib-source-maps: 5.0.6 2184 | istanbul-reports: 3.1.7 2185 | magic-string: 0.30.12 2186 | magicast: 0.3.5 2187 | std-env: 3.7.0 2188 | test-exclude: 7.0.1 2189 | tinyrainbow: 1.2.0 2190 | vitest: 2.1.9 2191 | transitivePeerDependencies: 2192 | - supports-color 2193 | 2194 | '@vitest/expect@2.1.9': 2195 | dependencies: 2196 | '@vitest/spy': 2.1.9 2197 | '@vitest/utils': 2.1.9 2198 | chai: 5.1.2 2199 | tinyrainbow: 1.2.0 2200 | 2201 | '@vitest/mocker@2.1.9(vite@5.4.14)': 2202 | dependencies: 2203 | '@vitest/spy': 2.1.9 2204 | estree-walker: 3.0.3 2205 | magic-string: 0.30.17 2206 | optionalDependencies: 2207 | vite: 5.4.14 2208 | 2209 | '@vitest/pretty-format@2.1.9': 2210 | dependencies: 2211 | tinyrainbow: 1.2.0 2212 | 2213 | '@vitest/runner@2.1.9': 2214 | dependencies: 2215 | '@vitest/utils': 2.1.9 2216 | pathe: 1.1.2 2217 | 2218 | '@vitest/snapshot@2.1.9': 2219 | dependencies: 2220 | '@vitest/pretty-format': 2.1.9 2221 | magic-string: 0.30.17 2222 | pathe: 1.1.2 2223 | 2224 | '@vitest/spy@2.1.9': 2225 | dependencies: 2226 | tinyspy: 3.0.2 2227 | 2228 | '@vitest/utils@2.1.9': 2229 | dependencies: 2230 | '@vitest/pretty-format': 2.1.9 2231 | loupe: 3.1.3 2232 | tinyrainbow: 1.2.0 2233 | 2234 | acorn-jsx@5.3.2(acorn@8.13.0): 2235 | dependencies: 2236 | acorn: 8.13.0 2237 | 2238 | acorn@8.13.0: {} 2239 | 2240 | ajv@6.12.6: 2241 | dependencies: 2242 | fast-deep-equal: 3.1.3 2243 | fast-json-stable-stringify: 2.1.0 2244 | json-schema-traverse: 0.4.1 2245 | uri-js: 4.4.1 2246 | 2247 | ansi-escapes@7.0.0: 2248 | dependencies: 2249 | environment: 1.1.0 2250 | 2251 | ansi-regex@5.0.1: {} 2252 | 2253 | ansi-regex@6.1.0: {} 2254 | 2255 | ansi-styles@4.3.0: 2256 | dependencies: 2257 | color-convert: 2.0.1 2258 | 2259 | ansi-styles@6.2.1: {} 2260 | 2261 | any-promise@1.3.0: {} 2262 | 2263 | anymatch@3.1.3: 2264 | dependencies: 2265 | normalize-path: 3.0.0 2266 | picomatch: 2.3.1 2267 | 2268 | argparse@2.0.1: {} 2269 | 2270 | assertion-error@2.0.1: {} 2271 | 2272 | balanced-match@1.0.2: {} 2273 | 2274 | binary-extensions@2.3.0: {} 2275 | 2276 | brace-expansion@1.1.11: 2277 | dependencies: 2278 | balanced-match: 1.0.2 2279 | concat-map: 0.0.1 2280 | 2281 | brace-expansion@2.0.1: 2282 | dependencies: 2283 | balanced-match: 1.0.2 2284 | 2285 | braces@3.0.3: 2286 | dependencies: 2287 | fill-range: 7.1.1 2288 | 2289 | bundle-require@5.0.0(esbuild@0.23.1): 2290 | dependencies: 2291 | esbuild: 0.23.1 2292 | load-tsconfig: 0.2.5 2293 | 2294 | cac@6.7.14: {} 2295 | 2296 | callsites@3.1.0: {} 2297 | 2298 | chai@5.1.2: 2299 | dependencies: 2300 | assertion-error: 2.0.1 2301 | check-error: 2.1.1 2302 | deep-eql: 5.0.2 2303 | loupe: 3.1.3 2304 | pathval: 2.0.0 2305 | 2306 | chalk@4.1.2: 2307 | dependencies: 2308 | ansi-styles: 4.3.0 2309 | supports-color: 7.2.0 2310 | 2311 | chalk@5.3.0: {} 2312 | 2313 | check-error@2.1.1: {} 2314 | 2315 | chokidar@3.6.0: 2316 | dependencies: 2317 | anymatch: 3.1.3 2318 | braces: 3.0.3 2319 | glob-parent: 5.1.2 2320 | is-binary-path: 2.1.0 2321 | is-glob: 4.0.3 2322 | normalize-path: 3.0.0 2323 | readdirp: 3.6.0 2324 | optionalDependencies: 2325 | fsevents: 2.3.3 2326 | 2327 | cli-cursor@5.0.0: 2328 | dependencies: 2329 | restore-cursor: 5.1.0 2330 | 2331 | cli-truncate@4.0.0: 2332 | dependencies: 2333 | slice-ansi: 5.0.0 2334 | string-width: 7.2.0 2335 | 2336 | color-convert@2.0.1: 2337 | dependencies: 2338 | color-name: 1.1.4 2339 | 2340 | color-name@1.1.4: {} 2341 | 2342 | colorette@2.0.20: {} 2343 | 2344 | commander@12.1.0: {} 2345 | 2346 | commander@4.1.1: {} 2347 | 2348 | concat-map@0.0.1: {} 2349 | 2350 | consola@3.2.3: {} 2351 | 2352 | cross-spawn@7.0.6: 2353 | dependencies: 2354 | path-key: 3.1.1 2355 | shebang-command: 2.0.0 2356 | which: 2.0.2 2357 | 2358 | debug@4.3.7: 2359 | dependencies: 2360 | ms: 2.1.3 2361 | 2362 | debug@4.4.0: 2363 | dependencies: 2364 | ms: 2.1.3 2365 | 2366 | deep-eql@5.0.2: {} 2367 | 2368 | deep-is@0.1.4: {} 2369 | 2370 | eastasianwidth@0.2.0: {} 2371 | 2372 | emoji-regex@10.4.0: {} 2373 | 2374 | emoji-regex@8.0.0: {} 2375 | 2376 | emoji-regex@9.2.2: {} 2377 | 2378 | environment@1.1.0: {} 2379 | 2380 | es-module-lexer@1.6.0: {} 2381 | 2382 | esbuild@0.21.5: 2383 | optionalDependencies: 2384 | '@esbuild/aix-ppc64': 0.21.5 2385 | '@esbuild/android-arm': 0.21.5 2386 | '@esbuild/android-arm64': 0.21.5 2387 | '@esbuild/android-x64': 0.21.5 2388 | '@esbuild/darwin-arm64': 0.21.5 2389 | '@esbuild/darwin-x64': 0.21.5 2390 | '@esbuild/freebsd-arm64': 0.21.5 2391 | '@esbuild/freebsd-x64': 0.21.5 2392 | '@esbuild/linux-arm': 0.21.5 2393 | '@esbuild/linux-arm64': 0.21.5 2394 | '@esbuild/linux-ia32': 0.21.5 2395 | '@esbuild/linux-loong64': 0.21.5 2396 | '@esbuild/linux-mips64el': 0.21.5 2397 | '@esbuild/linux-ppc64': 0.21.5 2398 | '@esbuild/linux-riscv64': 0.21.5 2399 | '@esbuild/linux-s390x': 0.21.5 2400 | '@esbuild/linux-x64': 0.21.5 2401 | '@esbuild/netbsd-x64': 0.21.5 2402 | '@esbuild/openbsd-x64': 0.21.5 2403 | '@esbuild/sunos-x64': 0.21.5 2404 | '@esbuild/win32-arm64': 0.21.5 2405 | '@esbuild/win32-ia32': 0.21.5 2406 | '@esbuild/win32-x64': 0.21.5 2407 | 2408 | esbuild@0.23.1: 2409 | optionalDependencies: 2410 | '@esbuild/aix-ppc64': 0.23.1 2411 | '@esbuild/android-arm': 0.23.1 2412 | '@esbuild/android-arm64': 0.23.1 2413 | '@esbuild/android-x64': 0.23.1 2414 | '@esbuild/darwin-arm64': 0.23.1 2415 | '@esbuild/darwin-x64': 0.23.1 2416 | '@esbuild/freebsd-arm64': 0.23.1 2417 | '@esbuild/freebsd-x64': 0.23.1 2418 | '@esbuild/linux-arm': 0.23.1 2419 | '@esbuild/linux-arm64': 0.23.1 2420 | '@esbuild/linux-ia32': 0.23.1 2421 | '@esbuild/linux-loong64': 0.23.1 2422 | '@esbuild/linux-mips64el': 0.23.1 2423 | '@esbuild/linux-ppc64': 0.23.1 2424 | '@esbuild/linux-riscv64': 0.23.1 2425 | '@esbuild/linux-s390x': 0.23.1 2426 | '@esbuild/linux-x64': 0.23.1 2427 | '@esbuild/netbsd-x64': 0.23.1 2428 | '@esbuild/openbsd-arm64': 0.23.1 2429 | '@esbuild/openbsd-x64': 0.23.1 2430 | '@esbuild/sunos-x64': 0.23.1 2431 | '@esbuild/win32-arm64': 0.23.1 2432 | '@esbuild/win32-ia32': 0.23.1 2433 | '@esbuild/win32-x64': 0.23.1 2434 | 2435 | escape-string-regexp@4.0.0: {} 2436 | 2437 | eslint-scope@8.1.0: 2438 | dependencies: 2439 | esrecurse: 4.3.0 2440 | estraverse: 5.3.0 2441 | 2442 | eslint-visitor-keys@3.4.3: {} 2443 | 2444 | eslint-visitor-keys@4.1.0: {} 2445 | 2446 | eslint@9.13.0: 2447 | dependencies: 2448 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0) 2449 | '@eslint-community/regexpp': 4.11.1 2450 | '@eslint/config-array': 0.18.0 2451 | '@eslint/core': 0.7.0 2452 | '@eslint/eslintrc': 3.1.0 2453 | '@eslint/js': 9.13.0 2454 | '@eslint/plugin-kit': 0.2.3 2455 | '@humanfs/node': 0.16.5 2456 | '@humanwhocodes/module-importer': 1.0.1 2457 | '@humanwhocodes/retry': 0.3.1 2458 | '@types/estree': 1.0.6 2459 | '@types/json-schema': 7.0.15 2460 | ajv: 6.12.6 2461 | chalk: 4.1.2 2462 | cross-spawn: 7.0.6 2463 | debug: 4.3.7 2464 | escape-string-regexp: 4.0.0 2465 | eslint-scope: 8.1.0 2466 | eslint-visitor-keys: 4.1.0 2467 | espree: 10.2.0 2468 | esquery: 1.6.0 2469 | esutils: 2.0.3 2470 | fast-deep-equal: 3.1.3 2471 | file-entry-cache: 8.0.0 2472 | find-up: 5.0.0 2473 | glob-parent: 6.0.2 2474 | ignore: 5.3.2 2475 | imurmurhash: 0.1.4 2476 | is-glob: 4.0.3 2477 | json-stable-stringify-without-jsonify: 1.0.1 2478 | lodash.merge: 4.6.2 2479 | minimatch: 3.1.2 2480 | natural-compare: 1.4.0 2481 | optionator: 0.9.4 2482 | text-table: 0.2.0 2483 | transitivePeerDependencies: 2484 | - supports-color 2485 | 2486 | espree@10.2.0: 2487 | dependencies: 2488 | acorn: 8.13.0 2489 | acorn-jsx: 5.3.2(acorn@8.13.0) 2490 | eslint-visitor-keys: 4.1.0 2491 | 2492 | esquery@1.6.0: 2493 | dependencies: 2494 | estraverse: 5.3.0 2495 | 2496 | esrecurse@4.3.0: 2497 | dependencies: 2498 | estraverse: 5.3.0 2499 | 2500 | estraverse@5.3.0: {} 2501 | 2502 | estree-walker@3.0.3: 2503 | dependencies: 2504 | '@types/estree': 1.0.6 2505 | 2506 | esutils@2.0.3: {} 2507 | 2508 | eventemitter3@5.0.1: {} 2509 | 2510 | execa@5.1.1: 2511 | dependencies: 2512 | cross-spawn: 7.0.6 2513 | get-stream: 6.0.1 2514 | human-signals: 2.1.0 2515 | is-stream: 2.0.1 2516 | merge-stream: 2.0.0 2517 | npm-run-path: 4.0.1 2518 | onetime: 5.1.2 2519 | signal-exit: 3.0.7 2520 | strip-final-newline: 2.0.0 2521 | 2522 | execa@8.0.1: 2523 | dependencies: 2524 | cross-spawn: 7.0.6 2525 | get-stream: 8.0.1 2526 | human-signals: 5.0.0 2527 | is-stream: 3.0.0 2528 | merge-stream: 2.0.0 2529 | npm-run-path: 5.3.0 2530 | onetime: 6.0.0 2531 | signal-exit: 4.1.0 2532 | strip-final-newline: 3.0.0 2533 | 2534 | expect-type@1.1.0: {} 2535 | 2536 | fast-deep-equal@3.1.3: {} 2537 | 2538 | fast-glob@3.3.2: 2539 | dependencies: 2540 | '@nodelib/fs.stat': 2.0.5 2541 | '@nodelib/fs.walk': 1.2.8 2542 | glob-parent: 5.1.2 2543 | merge2: 1.4.1 2544 | micromatch: 4.0.8 2545 | 2546 | fast-json-stable-stringify@2.1.0: {} 2547 | 2548 | fast-levenshtein@2.0.6: {} 2549 | 2550 | fastq@1.17.1: 2551 | dependencies: 2552 | reusify: 1.0.4 2553 | 2554 | fdir@6.4.2(picomatch@4.0.2): 2555 | optionalDependencies: 2556 | picomatch: 4.0.2 2557 | 2558 | file-entry-cache@8.0.0: 2559 | dependencies: 2560 | flat-cache: 4.0.1 2561 | 2562 | fill-range@7.1.1: 2563 | dependencies: 2564 | to-regex-range: 5.0.1 2565 | 2566 | find-up@5.0.0: 2567 | dependencies: 2568 | locate-path: 6.0.0 2569 | path-exists: 4.0.0 2570 | 2571 | flat-cache@4.0.1: 2572 | dependencies: 2573 | flatted: 3.3.1 2574 | keyv: 4.5.4 2575 | 2576 | flatted@3.3.1: {} 2577 | 2578 | foreground-child@3.3.0: 2579 | dependencies: 2580 | cross-spawn: 7.0.6 2581 | signal-exit: 4.1.0 2582 | 2583 | fsevents@2.3.3: 2584 | optional: true 2585 | 2586 | get-east-asian-width@1.3.0: {} 2587 | 2588 | get-stream@6.0.1: {} 2589 | 2590 | get-stream@8.0.1: {} 2591 | 2592 | glob-parent@5.1.2: 2593 | dependencies: 2594 | is-glob: 4.0.3 2595 | 2596 | glob-parent@6.0.2: 2597 | dependencies: 2598 | is-glob: 4.0.3 2599 | 2600 | glob@10.4.5: 2601 | dependencies: 2602 | foreground-child: 3.3.0 2603 | jackspeak: 3.4.3 2604 | minimatch: 9.0.5 2605 | minipass: 7.1.2 2606 | package-json-from-dist: 1.0.1 2607 | path-scurry: 1.11.1 2608 | 2609 | globals@14.0.0: {} 2610 | 2611 | graphemer@1.4.0: {} 2612 | 2613 | has-flag@4.0.0: {} 2614 | 2615 | hono@4.10.3: {} 2616 | 2617 | html-escaper@2.0.2: {} 2618 | 2619 | human-signals@2.1.0: {} 2620 | 2621 | human-signals@5.0.0: {} 2622 | 2623 | husky@9.1.6: {} 2624 | 2625 | ignore@5.3.2: {} 2626 | 2627 | import-fresh@3.3.0: 2628 | dependencies: 2629 | parent-module: 1.0.1 2630 | resolve-from: 4.0.0 2631 | 2632 | imurmurhash@0.1.4: {} 2633 | 2634 | is-binary-path@2.1.0: 2635 | dependencies: 2636 | binary-extensions: 2.3.0 2637 | 2638 | is-extglob@2.1.1: {} 2639 | 2640 | is-fullwidth-code-point@3.0.0: {} 2641 | 2642 | is-fullwidth-code-point@4.0.0: {} 2643 | 2644 | is-fullwidth-code-point@5.0.0: 2645 | dependencies: 2646 | get-east-asian-width: 1.3.0 2647 | 2648 | is-glob@4.0.3: 2649 | dependencies: 2650 | is-extglob: 2.1.1 2651 | 2652 | is-number@7.0.0: {} 2653 | 2654 | is-stream@2.0.1: {} 2655 | 2656 | is-stream@3.0.0: {} 2657 | 2658 | isexe@2.0.0: {} 2659 | 2660 | istanbul-lib-coverage@3.2.2: {} 2661 | 2662 | istanbul-lib-report@3.0.1: 2663 | dependencies: 2664 | istanbul-lib-coverage: 3.2.2 2665 | make-dir: 4.0.0 2666 | supports-color: 7.2.0 2667 | 2668 | istanbul-lib-source-maps@5.0.6: 2669 | dependencies: 2670 | '@jridgewell/trace-mapping': 0.3.25 2671 | debug: 4.3.7 2672 | istanbul-lib-coverage: 3.2.2 2673 | transitivePeerDependencies: 2674 | - supports-color 2675 | 2676 | istanbul-reports@3.1.7: 2677 | dependencies: 2678 | html-escaper: 2.0.2 2679 | istanbul-lib-report: 3.0.1 2680 | 2681 | jackspeak@3.4.3: 2682 | dependencies: 2683 | '@isaacs/cliui': 8.0.2 2684 | optionalDependencies: 2685 | '@pkgjs/parseargs': 0.11.0 2686 | 2687 | joycon@3.1.1: {} 2688 | 2689 | js-yaml@4.1.0: 2690 | dependencies: 2691 | argparse: 2.0.1 2692 | 2693 | json-buffer@3.0.1: {} 2694 | 2695 | json-schema-traverse@0.4.1: {} 2696 | 2697 | json-stable-stringify-without-jsonify@1.0.1: {} 2698 | 2699 | keyv@4.5.4: 2700 | dependencies: 2701 | json-buffer: 3.0.1 2702 | 2703 | levn@0.4.1: 2704 | dependencies: 2705 | prelude-ls: 1.2.1 2706 | type-check: 0.4.0 2707 | 2708 | lilconfig@3.1.2: {} 2709 | 2710 | lines-and-columns@1.2.4: {} 2711 | 2712 | lint-staged@15.2.10: 2713 | dependencies: 2714 | chalk: 5.3.0 2715 | commander: 12.1.0 2716 | debug: 4.3.7 2717 | execa: 8.0.1 2718 | lilconfig: 3.1.2 2719 | listr2: 8.2.5 2720 | micromatch: 4.0.8 2721 | pidtree: 0.6.0 2722 | string-argv: 0.3.2 2723 | yaml: 2.5.1 2724 | transitivePeerDependencies: 2725 | - supports-color 2726 | 2727 | listr2@8.2.5: 2728 | dependencies: 2729 | cli-truncate: 4.0.0 2730 | colorette: 2.0.20 2731 | eventemitter3: 5.0.1 2732 | log-update: 6.1.0 2733 | rfdc: 1.4.1 2734 | wrap-ansi: 9.0.0 2735 | 2736 | load-tsconfig@0.2.5: {} 2737 | 2738 | locate-path@6.0.0: 2739 | dependencies: 2740 | p-locate: 5.0.0 2741 | 2742 | lodash.merge@4.6.2: {} 2743 | 2744 | lodash.sortby@4.7.0: {} 2745 | 2746 | log-update@6.1.0: 2747 | dependencies: 2748 | ansi-escapes: 7.0.0 2749 | cli-cursor: 5.0.0 2750 | slice-ansi: 7.1.0 2751 | strip-ansi: 7.1.0 2752 | wrap-ansi: 9.0.0 2753 | 2754 | loupe@3.1.3: {} 2755 | 2756 | lru-cache@10.4.3: {} 2757 | 2758 | magic-string@0.30.12: 2759 | dependencies: 2760 | '@jridgewell/sourcemap-codec': 1.5.0 2761 | 2762 | magic-string@0.30.17: 2763 | dependencies: 2764 | '@jridgewell/sourcemap-codec': 1.5.0 2765 | 2766 | magicast@0.3.5: 2767 | dependencies: 2768 | '@babel/parser': 7.25.9 2769 | '@babel/types': 7.25.9 2770 | source-map-js: 1.2.1 2771 | 2772 | make-dir@4.0.0: 2773 | dependencies: 2774 | semver: 7.6.3 2775 | 2776 | merge-stream@2.0.0: {} 2777 | 2778 | merge2@1.4.1: {} 2779 | 2780 | micromatch@4.0.8: 2781 | dependencies: 2782 | braces: 3.0.3 2783 | picomatch: 2.3.1 2784 | 2785 | mimic-fn@2.1.0: {} 2786 | 2787 | mimic-fn@4.0.0: {} 2788 | 2789 | mimic-function@5.0.1: {} 2790 | 2791 | minimatch@3.1.2: 2792 | dependencies: 2793 | brace-expansion: 1.1.11 2794 | 2795 | minimatch@9.0.5: 2796 | dependencies: 2797 | brace-expansion: 2.0.1 2798 | 2799 | minipass@7.1.2: {} 2800 | 2801 | ms@2.1.3: {} 2802 | 2803 | mz@2.7.0: 2804 | dependencies: 2805 | any-promise: 1.3.0 2806 | object-assign: 4.1.1 2807 | thenify-all: 1.6.0 2808 | 2809 | nanoid@3.3.8: {} 2810 | 2811 | natural-compare@1.4.0: {} 2812 | 2813 | normalize-path@3.0.0: {} 2814 | 2815 | npm-run-path@4.0.1: 2816 | dependencies: 2817 | path-key: 3.1.1 2818 | 2819 | npm-run-path@5.3.0: 2820 | dependencies: 2821 | path-key: 4.0.0 2822 | 2823 | object-assign@4.1.1: {} 2824 | 2825 | onetime@5.1.2: 2826 | dependencies: 2827 | mimic-fn: 2.1.0 2828 | 2829 | onetime@6.0.0: 2830 | dependencies: 2831 | mimic-fn: 4.0.0 2832 | 2833 | onetime@7.0.0: 2834 | dependencies: 2835 | mimic-function: 5.0.1 2836 | 2837 | optionator@0.9.4: 2838 | dependencies: 2839 | deep-is: 0.1.4 2840 | fast-levenshtein: 2.0.6 2841 | levn: 0.4.1 2842 | prelude-ls: 1.2.1 2843 | type-check: 0.4.0 2844 | word-wrap: 1.2.5 2845 | 2846 | p-limit@3.1.0: 2847 | dependencies: 2848 | yocto-queue: 0.1.0 2849 | 2850 | p-locate@5.0.0: 2851 | dependencies: 2852 | p-limit: 3.1.0 2853 | 2854 | package-json-from-dist@1.0.1: {} 2855 | 2856 | parent-module@1.0.1: 2857 | dependencies: 2858 | callsites: 3.1.0 2859 | 2860 | path-exists@4.0.0: {} 2861 | 2862 | path-key@3.1.1: {} 2863 | 2864 | path-key@4.0.0: {} 2865 | 2866 | path-scurry@1.11.1: 2867 | dependencies: 2868 | lru-cache: 10.4.3 2869 | minipass: 7.1.2 2870 | 2871 | pathe@1.1.2: {} 2872 | 2873 | pathval@2.0.0: {} 2874 | 2875 | picocolors@1.1.1: {} 2876 | 2877 | picomatch@2.3.1: {} 2878 | 2879 | picomatch@4.0.2: {} 2880 | 2881 | pidtree@0.6.0: {} 2882 | 2883 | pirates@4.0.6: {} 2884 | 2885 | postcss-load-config@6.0.1(postcss@8.5.1)(yaml@2.5.1): 2886 | dependencies: 2887 | lilconfig: 3.1.2 2888 | optionalDependencies: 2889 | postcss: 8.5.1 2890 | yaml: 2.5.1 2891 | 2892 | postcss@8.5.1: 2893 | dependencies: 2894 | nanoid: 3.3.8 2895 | picocolors: 1.1.1 2896 | source-map-js: 1.2.1 2897 | 2898 | prelude-ls@1.2.1: {} 2899 | 2900 | prettier@3.3.3: {} 2901 | 2902 | punycode@2.3.1: {} 2903 | 2904 | queue-microtask@1.2.3: {} 2905 | 2906 | readdirp@3.6.0: 2907 | dependencies: 2908 | picomatch: 2.3.1 2909 | 2910 | resolve-from@4.0.0: {} 2911 | 2912 | resolve-from@5.0.0: {} 2913 | 2914 | restore-cursor@5.1.0: 2915 | dependencies: 2916 | onetime: 7.0.0 2917 | signal-exit: 4.1.0 2918 | 2919 | reusify@1.0.4: {} 2920 | 2921 | rfdc@1.4.1: {} 2922 | 2923 | rollup@4.24.0: 2924 | dependencies: 2925 | '@types/estree': 1.0.6 2926 | optionalDependencies: 2927 | '@rollup/rollup-android-arm-eabi': 4.24.0 2928 | '@rollup/rollup-android-arm64': 4.24.0 2929 | '@rollup/rollup-darwin-arm64': 4.24.0 2930 | '@rollup/rollup-darwin-x64': 4.24.0 2931 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 2932 | '@rollup/rollup-linux-arm-musleabihf': 4.24.0 2933 | '@rollup/rollup-linux-arm64-gnu': 4.24.0 2934 | '@rollup/rollup-linux-arm64-musl': 4.24.0 2935 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 2936 | '@rollup/rollup-linux-riscv64-gnu': 4.24.0 2937 | '@rollup/rollup-linux-s390x-gnu': 4.24.0 2938 | '@rollup/rollup-linux-x64-gnu': 4.24.0 2939 | '@rollup/rollup-linux-x64-musl': 4.24.0 2940 | '@rollup/rollup-win32-arm64-msvc': 4.24.0 2941 | '@rollup/rollup-win32-ia32-msvc': 4.24.0 2942 | '@rollup/rollup-win32-x64-msvc': 4.24.0 2943 | fsevents: 2.3.3 2944 | 2945 | rollup@4.34.2: 2946 | dependencies: 2947 | '@types/estree': 1.0.6 2948 | optionalDependencies: 2949 | '@rollup/rollup-android-arm-eabi': 4.34.2 2950 | '@rollup/rollup-android-arm64': 4.34.2 2951 | '@rollup/rollup-darwin-arm64': 4.34.2 2952 | '@rollup/rollup-darwin-x64': 4.34.2 2953 | '@rollup/rollup-freebsd-arm64': 4.34.2 2954 | '@rollup/rollup-freebsd-x64': 4.34.2 2955 | '@rollup/rollup-linux-arm-gnueabihf': 4.34.2 2956 | '@rollup/rollup-linux-arm-musleabihf': 4.34.2 2957 | '@rollup/rollup-linux-arm64-gnu': 4.34.2 2958 | '@rollup/rollup-linux-arm64-musl': 4.34.2 2959 | '@rollup/rollup-linux-loongarch64-gnu': 4.34.2 2960 | '@rollup/rollup-linux-powerpc64le-gnu': 4.34.2 2961 | '@rollup/rollup-linux-riscv64-gnu': 4.34.2 2962 | '@rollup/rollup-linux-s390x-gnu': 4.34.2 2963 | '@rollup/rollup-linux-x64-gnu': 4.34.2 2964 | '@rollup/rollup-linux-x64-musl': 4.34.2 2965 | '@rollup/rollup-win32-arm64-msvc': 4.34.2 2966 | '@rollup/rollup-win32-ia32-msvc': 4.34.2 2967 | '@rollup/rollup-win32-x64-msvc': 4.34.2 2968 | fsevents: 2.3.3 2969 | 2970 | run-parallel@1.2.0: 2971 | dependencies: 2972 | queue-microtask: 1.2.3 2973 | 2974 | semver@7.6.3: {} 2975 | 2976 | shebang-command@2.0.0: 2977 | dependencies: 2978 | shebang-regex: 3.0.0 2979 | 2980 | shebang-regex@3.0.0: {} 2981 | 2982 | siginfo@2.0.0: {} 2983 | 2984 | signal-exit@3.0.7: {} 2985 | 2986 | signal-exit@4.1.0: {} 2987 | 2988 | slice-ansi@5.0.0: 2989 | dependencies: 2990 | ansi-styles: 6.2.1 2991 | is-fullwidth-code-point: 4.0.0 2992 | 2993 | slice-ansi@7.1.0: 2994 | dependencies: 2995 | ansi-styles: 6.2.1 2996 | is-fullwidth-code-point: 5.0.0 2997 | 2998 | source-map-js@1.2.1: {} 2999 | 3000 | source-map@0.8.0-beta.0: 3001 | dependencies: 3002 | whatwg-url: 7.1.0 3003 | 3004 | stackback@0.0.2: {} 3005 | 3006 | std-env@3.7.0: {} 3007 | 3008 | std-env@3.8.0: {} 3009 | 3010 | string-argv@0.3.2: {} 3011 | 3012 | string-width@4.2.3: 3013 | dependencies: 3014 | emoji-regex: 8.0.0 3015 | is-fullwidth-code-point: 3.0.0 3016 | strip-ansi: 6.0.1 3017 | 3018 | string-width@5.1.2: 3019 | dependencies: 3020 | eastasianwidth: 0.2.0 3021 | emoji-regex: 9.2.2 3022 | strip-ansi: 7.1.0 3023 | 3024 | string-width@7.2.0: 3025 | dependencies: 3026 | emoji-regex: 10.4.0 3027 | get-east-asian-width: 1.3.0 3028 | strip-ansi: 7.1.0 3029 | 3030 | strip-ansi@6.0.1: 3031 | dependencies: 3032 | ansi-regex: 5.0.1 3033 | 3034 | strip-ansi@7.1.0: 3035 | dependencies: 3036 | ansi-regex: 6.1.0 3037 | 3038 | strip-final-newline@2.0.0: {} 3039 | 3040 | strip-final-newline@3.0.0: {} 3041 | 3042 | strip-json-comments@3.1.1: {} 3043 | 3044 | sucrase@3.35.0: 3045 | dependencies: 3046 | '@jridgewell/gen-mapping': 0.3.5 3047 | commander: 4.1.1 3048 | glob: 10.4.5 3049 | lines-and-columns: 1.2.4 3050 | mz: 2.7.0 3051 | pirates: 4.0.6 3052 | ts-interface-checker: 0.1.13 3053 | 3054 | supports-color@7.2.0: 3055 | dependencies: 3056 | has-flag: 4.0.0 3057 | 3058 | test-exclude@7.0.1: 3059 | dependencies: 3060 | '@istanbuljs/schema': 0.1.3 3061 | glob: 10.4.5 3062 | minimatch: 9.0.5 3063 | 3064 | text-table@0.2.0: {} 3065 | 3066 | thenify-all@1.6.0: 3067 | dependencies: 3068 | thenify: 3.3.1 3069 | 3070 | thenify@3.3.1: 3071 | dependencies: 3072 | any-promise: 1.3.0 3073 | 3074 | tinybench@2.9.0: {} 3075 | 3076 | tinyexec@0.3.2: {} 3077 | 3078 | tinyglobby@0.2.9: 3079 | dependencies: 3080 | fdir: 6.4.2(picomatch@4.0.2) 3081 | picomatch: 4.0.2 3082 | 3083 | tinypool@1.0.2: {} 3084 | 3085 | tinyrainbow@1.2.0: {} 3086 | 3087 | tinyspy@3.0.2: {} 3088 | 3089 | to-regex-range@5.0.1: 3090 | dependencies: 3091 | is-number: 7.0.0 3092 | 3093 | tr46@1.0.1: 3094 | dependencies: 3095 | punycode: 2.3.1 3096 | 3097 | tree-kill@1.2.2: {} 3098 | 3099 | ts-api-utils@1.3.0(typescript@5.6.3): 3100 | dependencies: 3101 | typescript: 5.6.3 3102 | 3103 | ts-interface-checker@0.1.13: {} 3104 | 3105 | tsup@8.3.0(postcss@8.5.1)(typescript@5.6.3)(yaml@2.5.1): 3106 | dependencies: 3107 | bundle-require: 5.0.0(esbuild@0.23.1) 3108 | cac: 6.7.14 3109 | chokidar: 3.6.0 3110 | consola: 3.2.3 3111 | debug: 4.3.7 3112 | esbuild: 0.23.1 3113 | execa: 5.1.1 3114 | joycon: 3.1.1 3115 | picocolors: 1.1.1 3116 | postcss-load-config: 6.0.1(postcss@8.5.1)(yaml@2.5.1) 3117 | resolve-from: 5.0.0 3118 | rollup: 4.24.0 3119 | source-map: 0.8.0-beta.0 3120 | sucrase: 3.35.0 3121 | tinyglobby: 0.2.9 3122 | tree-kill: 1.2.2 3123 | optionalDependencies: 3124 | postcss: 8.5.1 3125 | typescript: 5.6.3 3126 | transitivePeerDependencies: 3127 | - jiti 3128 | - supports-color 3129 | - tsx 3130 | - yaml 3131 | 3132 | type-check@0.4.0: 3133 | dependencies: 3134 | prelude-ls: 1.2.1 3135 | 3136 | typescript-eslint@8.11.0(eslint@9.13.0)(typescript@5.6.3): 3137 | dependencies: 3138 | '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3) 3139 | '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 3140 | '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3) 3141 | optionalDependencies: 3142 | typescript: 5.6.3 3143 | transitivePeerDependencies: 3144 | - eslint 3145 | - supports-color 3146 | 3147 | typescript@5.6.3: {} 3148 | 3149 | uri-js@4.4.1: 3150 | dependencies: 3151 | punycode: 2.3.1 3152 | 3153 | vite-node@2.1.9: 3154 | dependencies: 3155 | cac: 6.7.14 3156 | debug: 4.4.0 3157 | es-module-lexer: 1.6.0 3158 | pathe: 1.1.2 3159 | vite: 5.4.14 3160 | transitivePeerDependencies: 3161 | - '@types/node' 3162 | - less 3163 | - lightningcss 3164 | - sass 3165 | - sass-embedded 3166 | - stylus 3167 | - sugarss 3168 | - supports-color 3169 | - terser 3170 | 3171 | vite@5.4.14: 3172 | dependencies: 3173 | esbuild: 0.21.5 3174 | postcss: 8.5.1 3175 | rollup: 4.34.2 3176 | optionalDependencies: 3177 | fsevents: 2.3.3 3178 | 3179 | vitest@2.1.9: 3180 | dependencies: 3181 | '@vitest/expect': 2.1.9 3182 | '@vitest/mocker': 2.1.9(vite@5.4.14) 3183 | '@vitest/pretty-format': 2.1.9 3184 | '@vitest/runner': 2.1.9 3185 | '@vitest/snapshot': 2.1.9 3186 | '@vitest/spy': 2.1.9 3187 | '@vitest/utils': 2.1.9 3188 | chai: 5.1.2 3189 | debug: 4.4.0 3190 | expect-type: 1.1.0 3191 | magic-string: 0.30.17 3192 | pathe: 1.1.2 3193 | std-env: 3.8.0 3194 | tinybench: 2.9.0 3195 | tinyexec: 0.3.2 3196 | tinypool: 1.0.2 3197 | tinyrainbow: 1.2.0 3198 | vite: 5.4.14 3199 | vite-node: 2.1.9 3200 | why-is-node-running: 2.3.0 3201 | transitivePeerDependencies: 3202 | - less 3203 | - lightningcss 3204 | - msw 3205 | - sass 3206 | - sass-embedded 3207 | - stylus 3208 | - sugarss 3209 | - supports-color 3210 | - terser 3211 | 3212 | webidl-conversions@4.0.2: {} 3213 | 3214 | whatwg-url@7.1.0: 3215 | dependencies: 3216 | lodash.sortby: 4.7.0 3217 | tr46: 1.0.1 3218 | webidl-conversions: 4.0.2 3219 | 3220 | which@2.0.2: 3221 | dependencies: 3222 | isexe: 2.0.0 3223 | 3224 | why-is-node-running@2.3.0: 3225 | dependencies: 3226 | siginfo: 2.0.0 3227 | stackback: 0.0.2 3228 | 3229 | word-wrap@1.2.5: {} 3230 | 3231 | wrap-ansi@7.0.0: 3232 | dependencies: 3233 | ansi-styles: 4.3.0 3234 | string-width: 4.2.3 3235 | strip-ansi: 6.0.1 3236 | 3237 | wrap-ansi@8.1.0: 3238 | dependencies: 3239 | ansi-styles: 6.2.1 3240 | string-width: 5.1.2 3241 | strip-ansi: 7.1.0 3242 | 3243 | wrap-ansi@9.0.0: 3244 | dependencies: 3245 | ansi-styles: 6.2.1 3246 | string-width: 7.2.0 3247 | strip-ansi: 7.1.0 3248 | 3249 | yaml@2.5.1: {} 3250 | 3251 | yocto-queue@0.1.0: {} 3252 | --------------------------------------------------------------------------------