├── .prettierignore ├── .gitignore ├── .codesandbox └── ci.json ├── src ├── index.ts ├── actions.ts ├── withHistory.ts ├── withUndoableHistory.ts └── withUndo.ts ├── .prettierrc ├── types ├── eslint-config-prettier.d.ts └── eslint-plugin-import.d.ts ├── vite.config.ts ├── tsconfig.test.json ├── tsconfig.cjs.json ├── .github └── workflows │ ├── ci.yml │ └── cd.yml ├── tsconfig.json ├── tsconfig.esm.json ├── LICENSE ├── tests ├── withHistory.test.ts ├── withUndoableHistory.test.ts └── withUndo.test.ts ├── README.md ├── package.json ├── eslint.config.ts └── pnpm-lock.yaml /.prettierignore: -------------------------------------------------------------------------------- 1 | /pnpm-lock.yaml 2 | /dist 3 | README.md 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.swp 3 | .vscode 4 | dist 5 | jotai 6 | node_modules 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /.codesandbox/ci.json: -------------------------------------------------------------------------------- 1 | { 2 | "buildCommand": "compile", 3 | "sandboxes": ["new", "react-typescript-react-ts"], 4 | "node": "18" 5 | } 6 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export { withUndoableHistory as withHistory } from './withUndoableHistory' 2 | export { REDO, RESET, UNDO } from './actions' 3 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "trailingComma": "es5", 4 | "singleQuote": true, 5 | "bracketSameLine": true, 6 | "tabWidth": 2, 7 | "printWidth": 80 8 | } 9 | -------------------------------------------------------------------------------- /types/eslint-config-prettier.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'eslint-config-prettier' { 2 | const config: { 3 | rules: Record 4 | } 5 | export default config 6 | } 7 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | 3 | export default defineConfig({ 4 | test: { 5 | environment: 'happy-dom', 6 | globals: true, 7 | }, 8 | }) 9 | -------------------------------------------------------------------------------- /src/actions.ts: -------------------------------------------------------------------------------- 1 | export const UNDO = Symbol('undo') 2 | export type UNDO = typeof UNDO 3 | 4 | export const REDO = Symbol('redo') 5 | export type REDO = typeof REDO 6 | 7 | export const RESET = Symbol('reset') 8 | export type RESET = typeof RESET 9 | -------------------------------------------------------------------------------- /types/eslint-plugin-import.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'eslint-plugin-import' { 2 | const plugin: { 3 | flatConfigs: { 4 | recommended: { 5 | rules: Record 6 | } 7 | } 8 | } 9 | export default plugin 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "noUnusedLocals": false, 5 | "noUnusedParameters": false, 6 | "jsx": "react-jsx", 7 | "jsxImportSource": "react" 8 | }, 9 | "include": ["**/tests/*", "**/*.test.*"] 10 | } 11 | -------------------------------------------------------------------------------- /tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./dist/cjs", 5 | "module": "CommonJS", 6 | "target": "es2015", 7 | "moduleResolution": "node", 8 | "exactOptionalPropertyTypes": false, 9 | "declaration": true, 10 | "declarationMap": true, 11 | "sourceMap": true 12 | }, 13 | "include": ["src"], 14 | "exclude": ["**/tests/*", "**/*.test.*"] 15 | } 16 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | pull_request: 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v3 12 | - uses: pnpm/action-setup@v2 13 | with: 14 | version: 8.15.0 15 | - uses: actions/setup-node@v3 16 | with: 17 | node-version: 20 18 | cache: 'pnpm' 19 | cache-dependency-path: '**/pnpm-lock.yaml' 20 | - run: pnpm install --frozen-lockfile 21 | - run: npm test 22 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "target": "esnext", 5 | "downlevelIteration": true, 6 | "esModuleInterop": true, 7 | "module": "esnext", 8 | "moduleResolution": "bundler", 9 | "allowJs": true, 10 | "noUnusedLocals": true, 11 | "noUnusedParameters": true, 12 | "noUncheckedIndexedAccess": true, 13 | "exactOptionalPropertyTypes": true, 14 | "skipLibCheck": true, 15 | "baseUrl": ".", 16 | "paths": { 17 | "jotai-history": ["./src"] 18 | } 19 | }, 20 | "include": ["src", "tests"], 21 | "exclude": ["dist"] 22 | } 23 | -------------------------------------------------------------------------------- /tsconfig.esm.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./dist", 5 | "declaration": true, 6 | "declarationMap": true, 7 | "sourceMap": true, 8 | "verbatimModuleSyntax": true, 9 | "allowImportingTsExtensions": true, 10 | "rewriteRelativeImportExtensions": true 11 | }, 12 | "include": ["src"], 13 | "exclude": ["**/tests/*", "**/*.test.*"], 14 | "tsc-alias": { 15 | "forceReplace": true, 16 | "replaceExtensions": { 17 | ".ts": ".js", 18 | ".tsx": ".js" 19 | }, 20 | "resolveFullPaths": true, 21 | "verbose": true 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.github/workflows/cd.yml: -------------------------------------------------------------------------------- 1 | name: CD 2 | 3 | on: 4 | push: 5 | tags: 6 | - v* 7 | 8 | jobs: 9 | publish: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - uses: pnpm/action-setup@v2 14 | with: 15 | version: 8.15.0 16 | - uses: actions/setup-node@v3 17 | with: 18 | node-version: 20 19 | registry-url: 'https://registry.npmjs.org' 20 | cache: 'pnpm' 21 | cache-dependency-path: '**/pnpm-lock.yaml' 22 | - run: pnpm install --frozen-lockfile 23 | - run: npm test 24 | - run: npm run compile 25 | - run: npm publish 26 | env: 27 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Jotai Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/withHistory.ts: -------------------------------------------------------------------------------- 1 | import type { Atom, WritableAtom } from 'jotai' 2 | import { atom } from 'jotai/vanilla' 3 | import { RESET } from './actions' 4 | 5 | export type History = Value[] 6 | 7 | /** 8 | * @param targetAtom an atom or derived atom 9 | * @param limit the maximum number of history states to keep 10 | * @returns an atom with an array of history states 11 | */ 12 | export function withHistory( 13 | targetAtom: Atom, 14 | limit: number 15 | ): WritableAtom, [RESET], void> { 16 | const refreshAtom = atom(0) 17 | refreshAtom.debugPrivate = true 18 | const historyAtom = { 19 | read: (get) => (get(refreshAtom), { history: [] }), 20 | write: (get, set) => { 21 | get(historyAtom).history.length = 0 22 | set(refreshAtom, (v) => v + 1) 23 | }, 24 | onMount: (reset) => reset, 25 | debugPrivate: true, 26 | init: 1, // dirty hack to bypass hasInitialValue 27 | } as WritableAtom<{ history: Value[] }, [], void> 28 | return atom( 29 | (get) => { 30 | const ref = get(historyAtom) 31 | return (ref.history = [get(targetAtom), ...ref.history].slice(0, limit)) 32 | }, 33 | (_, set, action: RESET) => { 34 | if (action === RESET) { 35 | set(historyAtom) 36 | } 37 | } 38 | ) 39 | } 40 | -------------------------------------------------------------------------------- /tests/withHistory.test.ts: -------------------------------------------------------------------------------- 1 | import { atom, createStore } from 'jotai/vanilla' 2 | import type { PrimitiveAtom } from 'jotai/vanilla' 3 | import { beforeEach, describe, expect, it } from 'vitest' 4 | import { RESET } from '../src/actions' 5 | import { withHistory } from '../src/withHistory' 6 | 7 | describe('withHistory', () => { 8 | let store: ReturnType 9 | let baseAtom: PrimitiveAtom 10 | let historyAtom: ReturnType> 11 | let unsub: () => void 12 | 13 | beforeEach(() => { 14 | store = createStore() 15 | baseAtom = atom(0) // Initial value is 0 16 | historyAtom = withHistory(baseAtom, 3) // Limit history to 3 entries 17 | unsub = store.sub(historyAtom, () => {}) // Subscribe to trigger onMount 18 | }) 19 | 20 | it('tracks history of changes', () => { 21 | store.set(baseAtom, 1) 22 | store.set(baseAtom, 2) 23 | expect([...store.get(historyAtom)]).toEqual([2, 1, 0]) // History should track changes 24 | }) 25 | 26 | it('enforces history limit', () => { 27 | store.set(baseAtom, 1) 28 | store.set(baseAtom, 2) 29 | store.set(baseAtom, 3) 30 | store.set(baseAtom, 4) 31 | expect(store.get(historyAtom).length).toBe(3) // Length should not exceed limit 32 | expect([...store.get(historyAtom)]).toEqual([4, 3, 2]) // Only the most recent 3 states are kept 33 | }) 34 | 35 | it('cleans up history on unmount', () => { 36 | store.set(baseAtom, 1) 37 | expect([...store.get(historyAtom)]).toEqual([1, 0]) // History before unmount 38 | unsub() // Unsubscribe to unmount 39 | unsub = store.sub(historyAtom, () => {}) // Subscribe to mount 40 | expect([...store.get(historyAtom)]).toEqual([1]) // History should be cleared 41 | }) 42 | 43 | it('resets history with RESET', () => { 44 | store.set(baseAtom, 1) 45 | store.set(baseAtom, 2) 46 | store.set(historyAtom, RESET) 47 | expect([...store.get(historyAtom)]).toEqual([2]) // History should be reset 48 | }) 49 | }) 50 | -------------------------------------------------------------------------------- /src/withUndoableHistory.ts: -------------------------------------------------------------------------------- 1 | import type { 2 | Atom, 3 | ExtractAtomArgs, 4 | ExtractAtomResult, 5 | ExtractAtomValue, 6 | WritableAtom, 7 | } from 'jotai/vanilla' 8 | import { atom } from 'jotai/vanilla' 9 | import { REDO, RESET, UNDO } from './actions' 10 | import { type History, withHistory } from './withHistory' 11 | import { type Indicators, withUndo } from './withUndo' 12 | 13 | type WithUndoableHistory> = 14 | T extends WritableAtom 15 | ? WritableAtom< 16 | History> & Indicators, 17 | ExtractAtomArgs | [RESET | UNDO | REDO], 18 | ExtractAtomResult | void 19 | > 20 | : WritableAtom>, [RESET], void> 21 | 22 | export function withUndoableHistory>( 23 | targetAtom: T, 24 | limit: number 25 | ): WithUndoableHistory { 26 | const historyAtom = withPrivate(withHistory(targetAtom, limit)) 27 | let undoAtom: ReturnType | undefined 28 | if (isWritableAtom(targetAtom)) { 29 | // eslint-disable-next-line prefer-rest-params 30 | const getArgs = arguments[2] ?? Array.of 31 | undoAtom = withPrivate(withUndo(historyAtom, targetAtom, limit, getArgs)) 32 | } 33 | return atom( 34 | (get) => 35 | Object.assign( 36 | get(historyAtom), 37 | isWritableAtom(targetAtom) ? get(undoAtom!) : {} 38 | ), 39 | (_, set, ...args: unknown[]) => { 40 | const [action] = args 41 | if (action === RESET) { 42 | set(historyAtom, action) 43 | if (undoAtom) { 44 | set(undoAtom, action) 45 | } 46 | } else if (!isWritableAtom(targetAtom)) { 47 | return 48 | } else if (action === UNDO || action === REDO) { 49 | set(undoAtom!, action) 50 | } else { 51 | return set(targetAtom, ...args) 52 | } 53 | } 54 | ) as WithUndoableHistory 55 | } 56 | 57 | type InferWritableAtom> = 58 | T extends WritableAtom 59 | ? WritableAtom 60 | : never 61 | 62 | function isWritableAtom>( 63 | atom: T 64 | ): atom is T & InferWritableAtom { 65 | return 'write' in atom 66 | } 67 | 68 | function withPrivate>(atom: T) { 69 | atom.debugPrivate = true 70 | return atom 71 | } 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # jotai-history 2 | 3 | [jotai-history](https://jotai.org/docs/extensions/history) is a utility package for tracking state history in Jotai. 4 | 5 | ## Installation 6 | 7 | ``` 8 | npm install jotai-history 9 | ``` 10 | 11 | ## `withHistory` 12 | 13 | ```js 14 | import { withHistory } from 'jotai-history' 15 | 16 | const targetAtom = atom(0) 17 | const limit = 2 18 | const historyAtom = withHistory(targetAtom, limit) 19 | 20 | function Component() { 21 | const [current, previous] = useAtomValue(historyAtom) 22 | ... 23 | } 24 | ``` 25 | 26 | ### Description 27 | 28 | `withHistory` creates an atom that tracks the history of states for a given `targetAtom` and provides undo/redo capabilities. The most recent `limit` states are retained. 29 | 30 | The returned atom value includes: 31 | - An array of historical states (most recent first) 32 | - `canUndo` and `canRedo` indicators (for writable atoms) 33 | 34 | ### Action Symbols 35 | 36 | - **RESET** 37 | Clears the entire history, removing all previous states (including the undo/redo stack). 38 | ```js 39 | import { RESET } from 'jotai-history' 40 | 41 | ... 42 | 43 | function Component() { 44 | const setHistoryAtom = useSetAtom(historyAtom) 45 | ... 46 | setHistoryAtom(RESET) 47 | } 48 | ``` 49 | 50 | - **UNDO** and **REDO** 51 | Moves the `targetAtom` backward or forward in its history. 52 | ```js 53 | import { REDO, UNDO } from 'jotai-history' 54 | 55 | ... 56 | 57 | function Component() { 58 | const setHistoryAtom = useSetAtom(historyAtom) 59 | ... 60 | setHistoryAtom(UNDO) 61 | setHistoryAtom(REDO) 62 | } 63 | ``` 64 | 65 | ### Indicators 66 | 67 | - **canUndo** and **canRedo** 68 | Booleans indicating whether undo or redo actions are currently possible. These can be used to disable buttons or conditionally trigger actions. 69 | 70 | ```jsx 71 | ... 72 | 73 | function Component() { 74 | const history = useAtomValue(historyAtom) 75 | 76 | return ( 77 | <> 78 | 79 | 80 | 81 | ) 82 | } 83 | ``` 84 | 85 | 86 | 87 | ## Memory Management 88 | 89 | > Because `withHistory` maintains a list of previous states, be mindful of memory usage by setting a reasonable `limit`. Applications that update state frequently can grow significantly in memory usage. 90 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jotai-history", 3 | "description": "👻⌛", 4 | "version": "0.5.0", 5 | "type": "module", 6 | "author": "David Maskasky", 7 | "contributors": [], 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/jotaijs/jotai-history.git" 11 | }, 12 | "bugs": { 13 | "url": "https://github.com/jotaijs/jotai-history/issues" 14 | }, 15 | "source": "./src/index.ts", 16 | "main": "./dist/index.js", 17 | "types": "./dist/index.d.ts", 18 | "exports": { 19 | "./package.json": "./package.json", 20 | ".": { 21 | "import": { 22 | "types": "./dist/index.d.ts", 23 | "default": "./dist/index.js" 24 | }, 25 | "require": { 26 | "types": "./dist/cjs/index.d.ts", 27 | "default": "./dist/cjs/index.js" 28 | }, 29 | "default": { 30 | "types": "./dist/index.d.ts", 31 | "default": "./dist/index.js" 32 | } 33 | } 34 | }, 35 | "sideEffects": false, 36 | "files": [ 37 | "src", 38 | "dist" 39 | ], 40 | "packageManager": "pnpm@8.15.0", 41 | "scripts": { 42 | "compile": "rm -rf dist && pnpm run '/^compile:.*/'", 43 | "compile:esm": "tsc -p tsconfig.esm.json && tsc-alias -p tsconfig.esm.json", 44 | "compile:cjs": "tsc -p tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json", 45 | "fix": "pnpm run '/^fix:.*/'", 46 | "fix:format": "prettier --write .", 47 | "fix:lint": "eslint --config ./eslint.config.ts --fix .", 48 | "pretest": "pnpm compile", 49 | "test": "pnpm run \"/^test:.*/\"", 50 | "test:format": "prettier --list-different .", 51 | "test:types": "tsc --noEmit", 52 | "test:lint": "eslint .", 53 | "test:spec": "vitest run" 54 | }, 55 | "keywords": [ 56 | "jotai", 57 | "react", 58 | "history", 59 | "undo", 60 | "redo", 61 | "reset" 62 | ], 63 | "license": "MIT", 64 | "devDependencies": { 65 | "@eslint/js": "^9.18.0", 66 | "@testing-library/dom": "10.0.0", 67 | "@testing-library/react": "^16.2.0", 68 | "@testing-library/user-event": "^14.6.1", 69 | "@types/minimalistic-assert": "^1.0.3", 70 | "@types/node": "^22.10.2", 71 | "@types/react": "^19.0.2", 72 | "@types/react-dom": "^19.0.2", 73 | "@typescript-eslint/eslint-plugin": "^8.18.1", 74 | "@typescript-eslint/parser": "^8.18.1", 75 | "@vitejs/plugin-react": "^4.3.4", 76 | "eslint": "^9.18.0", 77 | "eslint-config-prettier": "^9.1.0", 78 | "eslint-import-resolver-typescript": "^3.7.0", 79 | "eslint-plugin-import": "2.31.0", 80 | "eslint-plugin-prettier": "^5.2.3", 81 | "happy-dom": "^15.11.7", 82 | "jiti": "^2.4.2", 83 | "jotai": "2.16.0", 84 | "jotai-history": "link:", 85 | "prettier": "^3.4.2", 86 | "react": "^19.0.0", 87 | "react-dom": "^19.0.0", 88 | "react-error-boundary": "^4.0.11", 89 | "tsc-alias": "^1.8.16", 90 | "typescript": "^5.7.2", 91 | "typescript-eslint": "^8.21.0", 92 | "vite": "^6.0.11", 93 | "vitest": "^3.0.3" 94 | }, 95 | "peerDependencies": { 96 | "jotai": ">=2.9.0" 97 | }, 98 | "engines": { 99 | "node": ">=12.20.0" 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /tests/withUndoableHistory.test.ts: -------------------------------------------------------------------------------- 1 | import { atom, createStore } from 'jotai/vanilla' 2 | import type { PrimitiveAtom } from 'jotai/vanilla' 3 | import { beforeEach, describe, expect, it } from 'vitest' 4 | import { REDO, RESET, UNDO } from '../src/actions' 5 | import { withUndoableHistory } from '../src/withUndoableHistory' 6 | 7 | describe('withUndoableHistory', () => { 8 | let store: ReturnType 9 | let baseAtom: PrimitiveAtom 10 | let historyUndoableAtom: ReturnType< 11 | typeof withUndoableHistory> 12 | > 13 | 14 | beforeEach(() => { 15 | store = createStore() 16 | baseAtom = atom(0) 17 | historyUndoableAtom = withUndoableHistory(baseAtom, 3) // Limit history to 3 entries 18 | store.sub(historyUndoableAtom, () => {}) 19 | }) 20 | 21 | it('tracks history of changes', () => { 22 | store.set(baseAtom, 1) 23 | store.set(baseAtom, 2) 24 | expect([...store.get(historyUndoableAtom)]).toEqual([2, 1, 0]) // History should track changes 25 | }) 26 | 27 | it('enforces history limit', () => { 28 | store.set(baseAtom, 1) 29 | store.set(baseAtom, 2) 30 | store.set(baseAtom, 3) 31 | store.set(baseAtom, 4) 32 | expect(store.get(historyUndoableAtom).length).toBe(3) // Length should not exceed limit 33 | expect([...store.get(historyUndoableAtom)]).toEqual([4, 3, 2]) // Only the most recent 3 states are kept 34 | }) 35 | 36 | it('supports undo operation', () => { 37 | store.set(baseAtom, 1) 38 | store.set(baseAtom, 2) 39 | store.set(historyUndoableAtom, UNDO) 40 | expect(store.get(baseAtom)).toBe(1) // Should undo to the previous value 41 | }) 42 | 43 | it('supports redo operation', () => { 44 | store.set(baseAtom, 1) 45 | store.set(baseAtom, 2) 46 | store.set(historyUndoableAtom, UNDO) 47 | store.set(historyUndoableAtom, REDO) 48 | expect(store.get(baseAtom)).toBe(2) // Should redo to the value before undo 49 | }) 50 | 51 | it('checks undo and redo availability', () => { 52 | expect(store.get(historyUndoableAtom).canUndo).toBe(false) // No undo initially 53 | expect(store.get(historyUndoableAtom).canRedo).toBe(false) // No redo initially 54 | store.set(baseAtom, 1) 55 | expect(store.get(historyUndoableAtom).canUndo).toBe(true) // Undo becomes available 56 | store.set(historyUndoableAtom, UNDO) 57 | expect(store.get(historyUndoableAtom).canRedo).toBe(true) // Redo becomes available after undo 58 | }) 59 | 60 | it('resets history with RESET', () => { 61 | store.set(baseAtom, 1) 62 | store.set(baseAtom, 2) 63 | store.set(historyUndoableAtom, RESET) 64 | expect([...store.get(historyUndoableAtom)]).toEqual([2]) // History should be reset 65 | }) 66 | 67 | it('supports undo with UNDO', () => { 68 | store.set(baseAtom, 1) 69 | store.set(baseAtom, 2) 70 | store.set(historyUndoableAtom, UNDO) 71 | expect(store.get(baseAtom)).toBe(1) // Should undo to the previous value 72 | }) 73 | 74 | it('supports redo with REDO', () => { 75 | store.set(baseAtom, 1) 76 | store.set(baseAtom, 2) 77 | store.set(historyUndoableAtom, UNDO) 78 | store.set(historyUndoableAtom, REDO) 79 | expect(store.get(baseAtom)).toBe(2) // Should redo to the value before undo 80 | }) 81 | 82 | it('resets undo stack with RESET', () => { 83 | store.set(baseAtom, 1) 84 | store.set(baseAtom, 2) 85 | store.set(historyUndoableAtom, UNDO) 86 | store.set(historyUndoableAtom, RESET) 87 | expect(store.get(historyUndoableAtom).canUndo).toBe(false) 88 | expect(store.get(historyUndoableAtom).canRedo).toBe(false) 89 | }) 90 | }) 91 | -------------------------------------------------------------------------------- /src/withUndo.ts: -------------------------------------------------------------------------------- 1 | import type { WritableAtom } from 'jotai/vanilla' 2 | import { atom } from 'jotai/vanilla' 3 | import { REDO, RESET, UNDO } from './actions' 4 | import type { withHistory } from './withHistory' 5 | 6 | export type Indicators = { 7 | canUndo: boolean 8 | canRedo: boolean 9 | } 10 | 11 | /** 12 | * @param targetAtom a primitive atom or equivalent 13 | * @param limit the maximum number of history states to keep 14 | * @returns an atom with undo/redo capabilities 15 | */ 16 | export function withUndo( 17 | historyAtom: ReturnType, 18 | targetAtom: WritableAtom, 19 | limit: number, 20 | getArgs?: (value: Value) => Args 21 | ): WritableAtom { 22 | const createRef = () => ({ 23 | index: 0, 24 | stack: [] as Value[], 25 | action: null as UNDO | REDO | RESET | null, 26 | }) 27 | const refreshAtom = atom(0) 28 | const refAtom = atom(createRef, (get, set, action: RESET) => { 29 | if (action === RESET) { 30 | void Object.assign(get(refAtom), createRef()) 31 | set(refreshAtom, (v) => v + 1) 32 | } 33 | }) 34 | refAtom.onMount = (setAtom) => () => setAtom(RESET) 35 | refAtom.debugPrivate = true 36 | const updateRefAtom = atom( 37 | (get) => { 38 | const history = get(historyAtom) 39 | const ref = get(refAtom) 40 | get(refreshAtom) 41 | if (ref.action) { 42 | // recalculation caused by undo/redo/reset 43 | ref.action = null 44 | } else { 45 | // Remove future states if any 46 | ref.stack = ref.stack.slice(0, ref.index + 1) 47 | // Push the current state to the stack 48 | ref.stack.push(history[0] as Value) 49 | // Limit the stack 50 | ref.stack = ref.stack.slice(-limit) 51 | // Move the current index to the end 52 | ref.index = ref.stack.length - 1 53 | } 54 | return { ...ref } 55 | }, 56 | (get, set) => { 57 | const ref = get(refAtom) 58 | ref.stack = [get(targetAtom)] 59 | return () => set(refAtom, RESET) 60 | } 61 | ) 62 | updateRefAtom.onMount = (mount) => mount() 63 | updateRefAtom.debugPrivate = true 64 | const canUndoAtom = atom((get) => { 65 | return get(updateRefAtom).index > 0 66 | }) 67 | const canRedoAtom = atom((get) => { 68 | const ref = get(updateRefAtom) 69 | return ref.index < ref.stack.length - 1 70 | }) 71 | return atom( 72 | (get) => ({ 73 | canUndo: get(canUndoAtom), 74 | canRedo: get(canRedoAtom), 75 | }), 76 | (get, set, action) => { 77 | const ref = get(refAtom) 78 | const setCurrentState = (index: number) => { 79 | if (index in ref.stack) { 80 | const value = ref.stack[index]! 81 | const args = typeof getArgs === 'function' ? getArgs(value) : [value] 82 | set(targetAtom, ...(args as Args)) 83 | } 84 | } 85 | if (action === UNDO) { 86 | if (get(canUndoAtom)) { 87 | ref.action = UNDO 88 | get(historyAtom).shift() 89 | setCurrentState(--ref.index) 90 | get(historyAtom).shift() 91 | } 92 | } else if (action === REDO) { 93 | if (get(canRedoAtom)) { 94 | ref.action = REDO 95 | setCurrentState(++ref.index) 96 | } 97 | } else if (action === RESET) { 98 | ref.action = RESET 99 | set(refAtom, action) 100 | } else { 101 | return 102 | } 103 | set(refreshAtom, (v) => v + 1) 104 | } 105 | ) 106 | } 107 | -------------------------------------------------------------------------------- /eslint.config.ts: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import configPrettier from 'eslint-config-prettier' 3 | import importPlugin from 'eslint-plugin-import' 4 | import prettierPlugin from 'eslint-plugin-prettier' 5 | import * as tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | // ───────────────────────────────────────────────────────────── 9 | // 1) Main config, merges "extends" equivalents + custom rules 10 | // ───────────────────────────────────────────────────────────── 11 | { 12 | files: ['**/*.{js,jsx,ts,tsx,json}'], 13 | }, 14 | { 15 | plugins: { 16 | prettier: prettierPlugin, 17 | '@typescript-eslint': tseslint.plugin, 18 | }, 19 | }, 20 | js.configs.recommended, 21 | tseslint.configs.recommended, 22 | configPrettier, 23 | importPlugin.flatConfigs.recommended, 24 | { 25 | rules: { 26 | curly: ['warn', 'multi-line', 'consistent'], 27 | eqeqeq: 'error', 28 | 'no-console': 'warn', 29 | 'no-inner-declarations': 'off', 30 | 'no-var': 'error', 31 | 'prefer-const': 'error', 32 | 'sort-imports': [ 33 | 'error', 34 | { 35 | ignoreDeclarationSort: true, 36 | }, 37 | ], 38 | 'import/export': 'error', 39 | 'import/no-duplicates': ['error'], 40 | 'import/no-unresolved': ['error', { commonjs: true, amd: true }], 41 | 'import/order': [ 42 | 'error', 43 | { 44 | alphabetize: { order: 'asc', caseInsensitive: true }, 45 | groups: [ 46 | 'builtin', 47 | 'external', 48 | 'internal', 49 | 'parent', 50 | 'sibling', 51 | 'index', 52 | 'object', 53 | ], 54 | 'newlines-between': 'never', 55 | pathGroups: [ 56 | { 57 | pattern: 'react', 58 | group: 'builtin', 59 | position: 'before', 60 | }, 61 | ], 62 | pathGroupsExcludedImportTypes: ['builtin'], 63 | }, 64 | ], 65 | '@typescript-eslint/consistent-type-imports': [ 66 | 'error', 67 | { 68 | prefer: 'type-imports', 69 | fixStyle: 'inline-type-imports', 70 | }, 71 | ], 72 | 'prettier/prettier': 'error', 73 | '@typescript-eslint/explicit-module-boundary-types': 'off', 74 | '@typescript-eslint/no-empty-function': 'off', 75 | '@typescript-eslint/no-explicit-any': 'off', 76 | '@typescript-eslint/no-unused-expressions': 'off', 77 | '@typescript-eslint/no-unused-vars': [ 78 | 'warn', 79 | { argsIgnorePattern: '^_', varsIgnorePattern: '^_' }, 80 | ], 81 | '@typescript-eslint/no-use-before-define': 'off', 82 | }, 83 | settings: { 84 | react: { version: 'detect' }, 85 | 'import/extensions': ['.js', '.jsx', '.ts', '.tsx'], 86 | 'import/parsers': { 87 | '@typescript-eslint/parser': ['.js', '.jsx', '.ts', '.tsx'], 88 | }, 89 | 'import/resolver': { 90 | typescript: true, 91 | node: { 92 | extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], 93 | paths: ['src'], 94 | }, 95 | }, 96 | }, 97 | }, 98 | { 99 | ignores: ['dist/'], 100 | }, 101 | 102 | // ───────────────────────────────────────────────────────────── 103 | // 2) Overrides for "src" — specify TS project config 104 | // ───────────────────────────────────────────────────────────── 105 | { 106 | files: ['src'], 107 | languageOptions: { 108 | parserOptions: { 109 | project: './tsconfig.json', 110 | }, 111 | }, 112 | }, 113 | 114 | // ───────────────────────────────────────────────────────────── 115 | // 3) Overrides for test files (if needed) 116 | // ───────────────────────────────────────────────────────────── 117 | { 118 | files: ['tests/**/*.tsx', 'tests/**/*'], 119 | rules: {}, 120 | }, 121 | 122 | // ───────────────────────────────────────────────────────────── 123 | // 4) Overrides for JS config files in root 124 | // ───────────────────────────────────────────────────────────── 125 | { 126 | files: ['./*.js'], 127 | rules: {}, 128 | } 129 | ) 130 | -------------------------------------------------------------------------------- /tests/withUndo.test.ts: -------------------------------------------------------------------------------- 1 | import { atom, createStore } from 'jotai/vanilla' 2 | import type { PrimitiveAtom } from 'jotai/vanilla' 3 | import { beforeEach, describe, expect, it, vi } from 'vitest' 4 | import { REDO, RESET, UNDO } from '../src/actions' 5 | import { withHistory } from '../src/withHistory' 6 | import { withUndo } from '../src/withUndo' 7 | 8 | describe('withUndo', () => { 9 | let store: ReturnType 10 | let baseAtom: PrimitiveAtom 11 | let historyAtom: ReturnType> 12 | let undoableAtom: ReturnType> 13 | let unsub: () => void 14 | 15 | beforeEach(() => { 16 | store = createStore() 17 | baseAtom = atom(0) 18 | historyAtom = withHistory(baseAtom, 3) 19 | undoableAtom = withUndo(historyAtom, baseAtom, 3) // Limit history to 3 entries 20 | unsub = store.sub(undoableAtom, () => {}) // Subscribe to trigger onMount 21 | }) 22 | 23 | it('supports undo operation', () => { 24 | store.set(baseAtom, 1) 25 | store.set(baseAtom, 2) 26 | store.set(undoableAtom, UNDO) 27 | expect(store.get(baseAtom)).toBe(1) // Should undo to the previous value 28 | }) 29 | 30 | it('supports redo operation', () => { 31 | store.set(baseAtom, 1) 32 | store.set(baseAtom, 2) 33 | store.set(undoableAtom, UNDO) 34 | store.set(undoableAtom, REDO) 35 | expect(store.get(baseAtom)).toBe(2) // Should redo to the value before undo 36 | }) 37 | 38 | it('respects history limit', () => { 39 | // Limit is 3, so max undos is 2, and max redos is 2 40 | store.set(baseAtom, 1) 41 | store.set(baseAtom, 2) 42 | store.set(baseAtom, 3) 43 | store.set(baseAtom, 4) 44 | 45 | expect(store.get(undoableAtom).canUndo).toBe(true) 46 | expect(store.get(undoableAtom).canRedo).toBe(false) 47 | store.set(undoableAtom, UNDO) 48 | expect(store.get(undoableAtom).canUndo).toBe(true) 49 | store.set(undoableAtom, UNDO) 50 | 51 | expect(store.get(undoableAtom).canUndo).toBe(false) // Cannot undo beyond limit 52 | expect(store.get(undoableAtom).canRedo).toBe(true) 53 | store.set(undoableAtom, REDO) 54 | expect(store.get(undoableAtom).canUndo).toBe(true) 55 | store.set(undoableAtom, REDO) 56 | 57 | expect(store.get(undoableAtom).canUndo).toBe(true) 58 | expect(store.get(undoableAtom).canRedo).toBe(false) // Cannot redo beyond limit 59 | }) 60 | 61 | it('checks undo and redo availability', () => { 62 | expect(store.get(undoableAtom).canUndo).toBe(false) // No undo initially 63 | expect(store.get(undoableAtom).canRedo).toBe(false) // No redo initially 64 | store.set(baseAtom, 1) 65 | expect(store.get(undoableAtom).canUndo).toBe(true) // Undo becomes available 66 | store.set(undoableAtom, UNDO) 67 | expect(store.get(undoableAtom).canRedo).toBe(true) // Redo becomes available after undo 68 | }) 69 | 70 | it('cleans up history on unmount', () => { 71 | store.set(baseAtom, 1) 72 | expect(store.get(undoableAtom).canUndo).toBe(true) // Can undo before unmount 73 | unsub() // Unsubscribe to unmount 74 | unsub = store.sub(undoableAtom, () => {}) // Subscribe to mount 75 | expect(store.get(undoableAtom).canUndo).toBe(false) // Cannot undo after unmount 76 | }) 77 | 78 | it('rerenders when only undo/redo is changes', () => { 79 | const spy = vi.fn() 80 | store.sub(undoableAtom, spy) 81 | expect(store.get(undoableAtom)).toMatchObject({ 82 | canUndo: false, 83 | canRedo: false, 84 | }) // start 85 | store.set(baseAtom, 1) 86 | expect(store.get(undoableAtom)).toMatchObject({ 87 | canUndo: true, 88 | canRedo: false, 89 | }) // canUndo changed 90 | expect(spy).toBeCalledTimes(1) 91 | store.set(baseAtom, 2) 92 | expect(store.get(undoableAtom)).toMatchObject({ 93 | canUndo: true, 94 | canRedo: false, 95 | }) // no-change 96 | expect(spy).toBeCalledTimes(1) 97 | store.set(undoableAtom, UNDO) 98 | expect(store.get(undoableAtom)).toMatchObject({ 99 | canUndo: true, 100 | canRedo: true, 101 | }) // canRedo changed 102 | expect(spy).toBeCalledTimes(2) 103 | store.set(undoableAtom, UNDO) 104 | expect(store.get(undoableAtom)).toMatchObject({ 105 | canUndo: false, 106 | canRedo: true, 107 | }) // canUndo changed 108 | expect(spy).toBeCalledTimes(3) 109 | store.set(undoableAtom, REDO) 110 | expect(store.get(undoableAtom)).toMatchObject({ 111 | canUndo: true, 112 | canRedo: true, 113 | }) // canUndo changed 114 | expect(spy).toBeCalledTimes(4) 115 | store.set(undoableAtom, REDO) 116 | expect(store.get(undoableAtom)).toMatchObject({ 117 | canUndo: true, 118 | canRedo: false, 119 | }) // no-change 120 | expect(spy).toBeCalledTimes(5) 121 | }) 122 | 123 | it('supports custom getArgs', () => { 124 | const baseAtom = atom(0, (_, set, a: number, b: number = 0) => { 125 | set(baseAtom, a + b) 126 | }) 127 | const historyAtom = withHistory(baseAtom, 3) 128 | const undoableAtom = withUndo( 129 | historyAtom, 130 | baseAtom, 131 | 3, 132 | (value) => [value, 0] as const 133 | ) 134 | store.sub(undoableAtom, () => {}) 135 | store.set(baseAtom, 1) 136 | expect(store.get(baseAtom)).toBe(1) 137 | store.set(undoableAtom, UNDO) 138 | expect(store.get(baseAtom)).toBe(0) 139 | store.set(undoableAtom, REDO) 140 | expect(store.get(baseAtom)).toBe(1) 141 | }) 142 | 143 | it('resets undo stack with RESET', () => { 144 | store.set(baseAtom, 1) 145 | store.set(baseAtom, 2) 146 | store.set(undoableAtom, RESET) 147 | expect(store.get(undoableAtom).canUndo).toBe(false) 148 | expect(store.get(undoableAtom).canRedo).toBe(false) 149 | }) 150 | 151 | it('removes the current state from the history on UNDO', () => { 152 | store.set(baseAtom, 1) 153 | store.set(baseAtom, 2) 154 | store.set(undoableAtom, UNDO) 155 | expect([...store.get(historyAtom)]).toEqual([1, 0]) 156 | }) 157 | 158 | it('removes and adds states to history on UNDO and REDO', () => { 159 | store.set(baseAtom, 1) 160 | store.set(baseAtom, 2) 161 | store.set(undoableAtom, UNDO) 162 | expect([...store.get(historyAtom)]).toEqual([1, 0]) 163 | store.set(undoableAtom, REDO) 164 | expect([...store.get(historyAtom)]).toEqual([2, 1, 0]) 165 | store.set(baseAtom, 3) 166 | expect([...store.get(historyAtom)]).toEqual([3, 2, 1]) 167 | store.set(undoableAtom, UNDO) 168 | store.set(undoableAtom, UNDO) 169 | expect([...store.get(historyAtom)]).toEqual([1]) 170 | store.set(undoableAtom, REDO) 171 | store.set(undoableAtom, REDO) 172 | expect([...store.get(historyAtom)]).toEqual([3, 2, 1]) 173 | }) 174 | }) 175 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | '@eslint/js': 9 | specifier: ^9.18.0 10 | version: 9.22.0 11 | '@testing-library/dom': 12 | specifier: 10.0.0 13 | version: 10.0.0 14 | '@testing-library/react': 15 | specifier: ^16.2.0 16 | version: 16.2.0(@testing-library/dom@10.0.0)(@types/react-dom@19.0.4)(@types/react@19.0.10)(react-dom@19.0.0)(react@19.0.0) 17 | '@testing-library/user-event': 18 | specifier: ^14.6.1 19 | version: 14.6.1(@testing-library/dom@10.0.0) 20 | '@types/minimalistic-assert': 21 | specifier: ^1.0.3 22 | version: 1.0.3 23 | '@types/node': 24 | specifier: ^22.10.2 25 | version: 22.13.10 26 | '@types/react': 27 | specifier: ^19.0.2 28 | version: 19.0.10 29 | '@types/react-dom': 30 | specifier: ^19.0.2 31 | version: 19.0.4(@types/react@19.0.10) 32 | '@typescript-eslint/eslint-plugin': 33 | specifier: ^8.18.1 34 | version: 8.26.1(@typescript-eslint/parser@8.26.1)(eslint@9.22.0)(typescript@5.8.2) 35 | '@typescript-eslint/parser': 36 | specifier: ^8.18.1 37 | version: 8.26.1(eslint@9.22.0)(typescript@5.8.2) 38 | '@vitejs/plugin-react': 39 | specifier: ^4.3.4 40 | version: 4.3.4(vite@6.2.1) 41 | eslint: 42 | specifier: ^9.18.0 43 | version: 9.22.0(jiti@2.4.2) 44 | eslint-config-prettier: 45 | specifier: ^9.1.0 46 | version: 9.1.0(eslint@9.22.0) 47 | eslint-import-resolver-typescript: 48 | specifier: ^3.7.0 49 | version: 3.8.4(eslint-plugin-import@2.31.0)(eslint@9.22.0) 50 | eslint-plugin-import: 51 | specifier: 2.31.0 52 | version: 2.31.0(@typescript-eslint/parser@8.26.1)(eslint-import-resolver-typescript@3.8.4)(eslint@9.22.0) 53 | eslint-plugin-prettier: 54 | specifier: ^5.2.3 55 | version: 5.2.3(eslint-config-prettier@9.1.0)(eslint@9.22.0)(prettier@3.5.3) 56 | happy-dom: 57 | specifier: ^15.11.7 58 | version: 15.11.7 59 | jiti: 60 | specifier: ^2.4.2 61 | version: 2.4.2 62 | jotai: 63 | specifier: 2.16.0 64 | version: 2.16.0(@babel/core@7.26.9)(@types/react@19.0.10)(react@19.0.0) 65 | jotai-history: 66 | specifier: 'link:' 67 | version: 'link:' 68 | prettier: 69 | specifier: ^3.4.2 70 | version: 3.5.3 71 | react: 72 | specifier: ^19.0.0 73 | version: 19.0.0 74 | react-dom: 75 | specifier: ^19.0.0 76 | version: 19.0.0(react@19.0.0) 77 | react-error-boundary: 78 | specifier: ^4.0.11 79 | version: 4.1.2(react@19.0.0) 80 | tsc-alias: 81 | specifier: ^1.8.16 82 | version: 1.8.16 83 | typescript: 84 | specifier: ^5.7.2 85 | version: 5.8.2 86 | typescript-eslint: 87 | specifier: ^8.21.0 88 | version: 8.26.1(eslint@9.22.0)(typescript@5.8.2) 89 | vite: 90 | specifier: ^6.0.11 91 | version: 6.2.1(@types/node@22.13.10)(jiti@2.4.2) 92 | vitest: 93 | specifier: ^3.0.3 94 | version: 3.0.8(@types/node@22.13.10)(happy-dom@15.11.7)(jiti@2.4.2) 95 | 96 | packages: 97 | 98 | /@ampproject/remapping@2.3.0: 99 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 100 | engines: {node: '>=6.0.0'} 101 | dependencies: 102 | '@jridgewell/gen-mapping': 0.3.8 103 | '@jridgewell/trace-mapping': 0.3.25 104 | dev: true 105 | 106 | /@babel/code-frame@7.26.2: 107 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 108 | engines: {node: '>=6.9.0'} 109 | dependencies: 110 | '@babel/helper-validator-identifier': 7.25.9 111 | js-tokens: 4.0.0 112 | picocolors: 1.1.1 113 | dev: true 114 | 115 | /@babel/compat-data@7.26.8: 116 | resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} 117 | engines: {node: '>=6.9.0'} 118 | dev: true 119 | 120 | /@babel/core@7.26.9: 121 | resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} 122 | engines: {node: '>=6.9.0'} 123 | dependencies: 124 | '@ampproject/remapping': 2.3.0 125 | '@babel/code-frame': 7.26.2 126 | '@babel/generator': 7.26.9 127 | '@babel/helper-compilation-targets': 7.26.5 128 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) 129 | '@babel/helpers': 7.26.9 130 | '@babel/parser': 7.26.9 131 | '@babel/template': 7.26.9 132 | '@babel/traverse': 7.26.9 133 | '@babel/types': 7.26.9 134 | convert-source-map: 2.0.0 135 | debug: 4.4.0 136 | gensync: 1.0.0-beta.2 137 | json5: 2.2.3 138 | semver: 6.3.1 139 | transitivePeerDependencies: 140 | - supports-color 141 | dev: true 142 | 143 | /@babel/generator@7.26.9: 144 | resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} 145 | engines: {node: '>=6.9.0'} 146 | dependencies: 147 | '@babel/parser': 7.26.9 148 | '@babel/types': 7.26.9 149 | '@jridgewell/gen-mapping': 0.3.8 150 | '@jridgewell/trace-mapping': 0.3.25 151 | jsesc: 3.1.0 152 | dev: true 153 | 154 | /@babel/helper-compilation-targets@7.26.5: 155 | resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} 156 | engines: {node: '>=6.9.0'} 157 | dependencies: 158 | '@babel/compat-data': 7.26.8 159 | '@babel/helper-validator-option': 7.25.9 160 | browserslist: 4.24.4 161 | lru-cache: 5.1.1 162 | semver: 6.3.1 163 | dev: true 164 | 165 | /@babel/helper-module-imports@7.25.9: 166 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 167 | engines: {node: '>=6.9.0'} 168 | dependencies: 169 | '@babel/traverse': 7.26.9 170 | '@babel/types': 7.26.9 171 | transitivePeerDependencies: 172 | - supports-color 173 | dev: true 174 | 175 | /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9): 176 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 177 | engines: {node: '>=6.9.0'} 178 | peerDependencies: 179 | '@babel/core': ^7.0.0 180 | dependencies: 181 | '@babel/core': 7.26.9 182 | '@babel/helper-module-imports': 7.25.9 183 | '@babel/helper-validator-identifier': 7.25.9 184 | '@babel/traverse': 7.26.9 185 | transitivePeerDependencies: 186 | - supports-color 187 | dev: true 188 | 189 | /@babel/helper-plugin-utils@7.26.5: 190 | resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 191 | engines: {node: '>=6.9.0'} 192 | dev: true 193 | 194 | /@babel/helper-string-parser@7.25.9: 195 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 196 | engines: {node: '>=6.9.0'} 197 | dev: true 198 | 199 | /@babel/helper-validator-identifier@7.25.9: 200 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 201 | engines: {node: '>=6.9.0'} 202 | dev: true 203 | 204 | /@babel/helper-validator-option@7.25.9: 205 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 206 | engines: {node: '>=6.9.0'} 207 | dev: true 208 | 209 | /@babel/helpers@7.26.9: 210 | resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} 211 | engines: {node: '>=6.9.0'} 212 | dependencies: 213 | '@babel/template': 7.26.9 214 | '@babel/types': 7.26.9 215 | dev: true 216 | 217 | /@babel/parser@7.26.9: 218 | resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} 219 | engines: {node: '>=6.0.0'} 220 | hasBin: true 221 | dependencies: 222 | '@babel/types': 7.26.9 223 | dev: true 224 | 225 | /@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.9): 226 | resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} 227 | engines: {node: '>=6.9.0'} 228 | peerDependencies: 229 | '@babel/core': ^7.0.0-0 230 | dependencies: 231 | '@babel/core': 7.26.9 232 | '@babel/helper-plugin-utils': 7.26.5 233 | dev: true 234 | 235 | /@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.9): 236 | resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} 237 | engines: {node: '>=6.9.0'} 238 | peerDependencies: 239 | '@babel/core': ^7.0.0-0 240 | dependencies: 241 | '@babel/core': 7.26.9 242 | '@babel/helper-plugin-utils': 7.26.5 243 | dev: true 244 | 245 | /@babel/runtime@7.26.9: 246 | resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} 247 | engines: {node: '>=6.9.0'} 248 | dependencies: 249 | regenerator-runtime: 0.14.1 250 | dev: true 251 | 252 | /@babel/template@7.26.9: 253 | resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} 254 | engines: {node: '>=6.9.0'} 255 | dependencies: 256 | '@babel/code-frame': 7.26.2 257 | '@babel/parser': 7.26.9 258 | '@babel/types': 7.26.9 259 | dev: true 260 | 261 | /@babel/traverse@7.26.9: 262 | resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} 263 | engines: {node: '>=6.9.0'} 264 | dependencies: 265 | '@babel/code-frame': 7.26.2 266 | '@babel/generator': 7.26.9 267 | '@babel/parser': 7.26.9 268 | '@babel/template': 7.26.9 269 | '@babel/types': 7.26.9 270 | debug: 4.4.0 271 | globals: 11.12.0 272 | transitivePeerDependencies: 273 | - supports-color 274 | dev: true 275 | 276 | /@babel/types@7.26.9: 277 | resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} 278 | engines: {node: '>=6.9.0'} 279 | dependencies: 280 | '@babel/helper-string-parser': 7.25.9 281 | '@babel/helper-validator-identifier': 7.25.9 282 | dev: true 283 | 284 | /@esbuild/aix-ppc64@0.25.1: 285 | resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} 286 | engines: {node: '>=18'} 287 | cpu: [ppc64] 288 | os: [aix] 289 | requiresBuild: true 290 | dev: true 291 | optional: true 292 | 293 | /@esbuild/android-arm64@0.25.1: 294 | resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==} 295 | engines: {node: '>=18'} 296 | cpu: [arm64] 297 | os: [android] 298 | requiresBuild: true 299 | dev: true 300 | optional: true 301 | 302 | /@esbuild/android-arm@0.25.1: 303 | resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==} 304 | engines: {node: '>=18'} 305 | cpu: [arm] 306 | os: [android] 307 | requiresBuild: true 308 | dev: true 309 | optional: true 310 | 311 | /@esbuild/android-x64@0.25.1: 312 | resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==} 313 | engines: {node: '>=18'} 314 | cpu: [x64] 315 | os: [android] 316 | requiresBuild: true 317 | dev: true 318 | optional: true 319 | 320 | /@esbuild/darwin-arm64@0.25.1: 321 | resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==} 322 | engines: {node: '>=18'} 323 | cpu: [arm64] 324 | os: [darwin] 325 | requiresBuild: true 326 | dev: true 327 | optional: true 328 | 329 | /@esbuild/darwin-x64@0.25.1: 330 | resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==} 331 | engines: {node: '>=18'} 332 | cpu: [x64] 333 | os: [darwin] 334 | requiresBuild: true 335 | dev: true 336 | optional: true 337 | 338 | /@esbuild/freebsd-arm64@0.25.1: 339 | resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==} 340 | engines: {node: '>=18'} 341 | cpu: [arm64] 342 | os: [freebsd] 343 | requiresBuild: true 344 | dev: true 345 | optional: true 346 | 347 | /@esbuild/freebsd-x64@0.25.1: 348 | resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==} 349 | engines: {node: '>=18'} 350 | cpu: [x64] 351 | os: [freebsd] 352 | requiresBuild: true 353 | dev: true 354 | optional: true 355 | 356 | /@esbuild/linux-arm64@0.25.1: 357 | resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==} 358 | engines: {node: '>=18'} 359 | cpu: [arm64] 360 | os: [linux] 361 | requiresBuild: true 362 | dev: true 363 | optional: true 364 | 365 | /@esbuild/linux-arm@0.25.1: 366 | resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==} 367 | engines: {node: '>=18'} 368 | cpu: [arm] 369 | os: [linux] 370 | requiresBuild: true 371 | dev: true 372 | optional: true 373 | 374 | /@esbuild/linux-ia32@0.25.1: 375 | resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==} 376 | engines: {node: '>=18'} 377 | cpu: [ia32] 378 | os: [linux] 379 | requiresBuild: true 380 | dev: true 381 | optional: true 382 | 383 | /@esbuild/linux-loong64@0.25.1: 384 | resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==} 385 | engines: {node: '>=18'} 386 | cpu: [loong64] 387 | os: [linux] 388 | requiresBuild: true 389 | dev: true 390 | optional: true 391 | 392 | /@esbuild/linux-mips64el@0.25.1: 393 | resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==} 394 | engines: {node: '>=18'} 395 | cpu: [mips64el] 396 | os: [linux] 397 | requiresBuild: true 398 | dev: true 399 | optional: true 400 | 401 | /@esbuild/linux-ppc64@0.25.1: 402 | resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==} 403 | engines: {node: '>=18'} 404 | cpu: [ppc64] 405 | os: [linux] 406 | requiresBuild: true 407 | dev: true 408 | optional: true 409 | 410 | /@esbuild/linux-riscv64@0.25.1: 411 | resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==} 412 | engines: {node: '>=18'} 413 | cpu: [riscv64] 414 | os: [linux] 415 | requiresBuild: true 416 | dev: true 417 | optional: true 418 | 419 | /@esbuild/linux-s390x@0.25.1: 420 | resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==} 421 | engines: {node: '>=18'} 422 | cpu: [s390x] 423 | os: [linux] 424 | requiresBuild: true 425 | dev: true 426 | optional: true 427 | 428 | /@esbuild/linux-x64@0.25.1: 429 | resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==} 430 | engines: {node: '>=18'} 431 | cpu: [x64] 432 | os: [linux] 433 | requiresBuild: true 434 | dev: true 435 | optional: true 436 | 437 | /@esbuild/netbsd-arm64@0.25.1: 438 | resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==} 439 | engines: {node: '>=18'} 440 | cpu: [arm64] 441 | os: [netbsd] 442 | requiresBuild: true 443 | dev: true 444 | optional: true 445 | 446 | /@esbuild/netbsd-x64@0.25.1: 447 | resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==} 448 | engines: {node: '>=18'} 449 | cpu: [x64] 450 | os: [netbsd] 451 | requiresBuild: true 452 | dev: true 453 | optional: true 454 | 455 | /@esbuild/openbsd-arm64@0.25.1: 456 | resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==} 457 | engines: {node: '>=18'} 458 | cpu: [arm64] 459 | os: [openbsd] 460 | requiresBuild: true 461 | dev: true 462 | optional: true 463 | 464 | /@esbuild/openbsd-x64@0.25.1: 465 | resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==} 466 | engines: {node: '>=18'} 467 | cpu: [x64] 468 | os: [openbsd] 469 | requiresBuild: true 470 | dev: true 471 | optional: true 472 | 473 | /@esbuild/sunos-x64@0.25.1: 474 | resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==} 475 | engines: {node: '>=18'} 476 | cpu: [x64] 477 | os: [sunos] 478 | requiresBuild: true 479 | dev: true 480 | optional: true 481 | 482 | /@esbuild/win32-arm64@0.25.1: 483 | resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==} 484 | engines: {node: '>=18'} 485 | cpu: [arm64] 486 | os: [win32] 487 | requiresBuild: true 488 | dev: true 489 | optional: true 490 | 491 | /@esbuild/win32-ia32@0.25.1: 492 | resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==} 493 | engines: {node: '>=18'} 494 | cpu: [ia32] 495 | os: [win32] 496 | requiresBuild: true 497 | dev: true 498 | optional: true 499 | 500 | /@esbuild/win32-x64@0.25.1: 501 | resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==} 502 | engines: {node: '>=18'} 503 | cpu: [x64] 504 | os: [win32] 505 | requiresBuild: true 506 | dev: true 507 | optional: true 508 | 509 | /@eslint-community/eslint-utils@4.5.0(eslint@9.22.0): 510 | resolution: {integrity: sha512-RoV8Xs9eNwiDvhv7M+xcL4PWyRyIXRY/FLp3buU4h1EYfdF7unWUy3dOjPqb3C7rMUewIcqwW850PgS8h1o1yg==} 511 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 512 | peerDependencies: 513 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 514 | dependencies: 515 | eslint: 9.22.0(jiti@2.4.2) 516 | eslint-visitor-keys: 3.4.3 517 | dev: true 518 | 519 | /@eslint-community/regexpp@4.12.1: 520 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 521 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 522 | dev: true 523 | 524 | /@eslint/config-array@0.19.2: 525 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 526 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 527 | dependencies: 528 | '@eslint/object-schema': 2.1.6 529 | debug: 4.4.0 530 | minimatch: 3.1.2 531 | transitivePeerDependencies: 532 | - supports-color 533 | dev: true 534 | 535 | /@eslint/config-helpers@0.1.0: 536 | resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} 537 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 538 | dev: true 539 | 540 | /@eslint/core@0.12.0: 541 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 542 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 543 | dependencies: 544 | '@types/json-schema': 7.0.15 545 | dev: true 546 | 547 | /@eslint/eslintrc@3.3.0: 548 | resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} 549 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 550 | dependencies: 551 | ajv: 6.12.6 552 | debug: 4.4.0 553 | espree: 10.3.0 554 | globals: 14.0.0 555 | ignore: 5.3.2 556 | import-fresh: 3.3.1 557 | js-yaml: 4.1.0 558 | minimatch: 3.1.2 559 | strip-json-comments: 3.1.1 560 | transitivePeerDependencies: 561 | - supports-color 562 | dev: true 563 | 564 | /@eslint/js@9.22.0: 565 | resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} 566 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 567 | dev: true 568 | 569 | /@eslint/object-schema@2.1.6: 570 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 571 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 572 | dev: true 573 | 574 | /@eslint/plugin-kit@0.2.7: 575 | resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} 576 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 577 | dependencies: 578 | '@eslint/core': 0.12.0 579 | levn: 0.4.1 580 | dev: true 581 | 582 | /@humanfs/core@0.19.1: 583 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 584 | engines: {node: '>=18.18.0'} 585 | dev: true 586 | 587 | /@humanfs/node@0.16.6: 588 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 589 | engines: {node: '>=18.18.0'} 590 | dependencies: 591 | '@humanfs/core': 0.19.1 592 | '@humanwhocodes/retry': 0.3.1 593 | dev: true 594 | 595 | /@humanwhocodes/module-importer@1.0.1: 596 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 597 | engines: {node: '>=12.22'} 598 | dev: true 599 | 600 | /@humanwhocodes/retry@0.3.1: 601 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 602 | engines: {node: '>=18.18'} 603 | dev: true 604 | 605 | /@humanwhocodes/retry@0.4.2: 606 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 607 | engines: {node: '>=18.18'} 608 | dev: true 609 | 610 | /@jridgewell/gen-mapping@0.3.8: 611 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 612 | engines: {node: '>=6.0.0'} 613 | dependencies: 614 | '@jridgewell/set-array': 1.2.1 615 | '@jridgewell/sourcemap-codec': 1.5.0 616 | '@jridgewell/trace-mapping': 0.3.25 617 | dev: true 618 | 619 | /@jridgewell/resolve-uri@3.1.2: 620 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 621 | engines: {node: '>=6.0.0'} 622 | dev: true 623 | 624 | /@jridgewell/set-array@1.2.1: 625 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 626 | engines: {node: '>=6.0.0'} 627 | dev: true 628 | 629 | /@jridgewell/sourcemap-codec@1.5.0: 630 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 631 | dev: true 632 | 633 | /@jridgewell/trace-mapping@0.3.25: 634 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 635 | dependencies: 636 | '@jridgewell/resolve-uri': 3.1.2 637 | '@jridgewell/sourcemap-codec': 1.5.0 638 | dev: true 639 | 640 | /@nodelib/fs.scandir@2.1.5: 641 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 642 | engines: {node: '>= 8'} 643 | dependencies: 644 | '@nodelib/fs.stat': 2.0.5 645 | run-parallel: 1.2.0 646 | dev: true 647 | 648 | /@nodelib/fs.stat@2.0.5: 649 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 650 | engines: {node: '>= 8'} 651 | dev: true 652 | 653 | /@nodelib/fs.walk@1.2.8: 654 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 655 | engines: {node: '>= 8'} 656 | dependencies: 657 | '@nodelib/fs.scandir': 2.1.5 658 | fastq: 1.19.1 659 | dev: true 660 | 661 | /@nolyfill/is-core-module@1.0.39: 662 | resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} 663 | engines: {node: '>=12.4.0'} 664 | dev: true 665 | 666 | /@pkgr/core@0.1.1: 667 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 668 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 669 | dev: true 670 | 671 | /@rollup/rollup-android-arm-eabi@4.35.0: 672 | resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} 673 | cpu: [arm] 674 | os: [android] 675 | requiresBuild: true 676 | dev: true 677 | optional: true 678 | 679 | /@rollup/rollup-android-arm64@4.35.0: 680 | resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} 681 | cpu: [arm64] 682 | os: [android] 683 | requiresBuild: true 684 | dev: true 685 | optional: true 686 | 687 | /@rollup/rollup-darwin-arm64@4.35.0: 688 | resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} 689 | cpu: [arm64] 690 | os: [darwin] 691 | requiresBuild: true 692 | dev: true 693 | optional: true 694 | 695 | /@rollup/rollup-darwin-x64@4.35.0: 696 | resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} 697 | cpu: [x64] 698 | os: [darwin] 699 | requiresBuild: true 700 | dev: true 701 | optional: true 702 | 703 | /@rollup/rollup-freebsd-arm64@4.35.0: 704 | resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} 705 | cpu: [arm64] 706 | os: [freebsd] 707 | requiresBuild: true 708 | dev: true 709 | optional: true 710 | 711 | /@rollup/rollup-freebsd-x64@4.35.0: 712 | resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} 713 | cpu: [x64] 714 | os: [freebsd] 715 | requiresBuild: true 716 | dev: true 717 | optional: true 718 | 719 | /@rollup/rollup-linux-arm-gnueabihf@4.35.0: 720 | resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} 721 | cpu: [arm] 722 | os: [linux] 723 | requiresBuild: true 724 | dev: true 725 | optional: true 726 | 727 | /@rollup/rollup-linux-arm-musleabihf@4.35.0: 728 | resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} 729 | cpu: [arm] 730 | os: [linux] 731 | requiresBuild: true 732 | dev: true 733 | optional: true 734 | 735 | /@rollup/rollup-linux-arm64-gnu@4.35.0: 736 | resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} 737 | cpu: [arm64] 738 | os: [linux] 739 | requiresBuild: true 740 | dev: true 741 | optional: true 742 | 743 | /@rollup/rollup-linux-arm64-musl@4.35.0: 744 | resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} 745 | cpu: [arm64] 746 | os: [linux] 747 | requiresBuild: true 748 | dev: true 749 | optional: true 750 | 751 | /@rollup/rollup-linux-loongarch64-gnu@4.35.0: 752 | resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} 753 | cpu: [loong64] 754 | os: [linux] 755 | requiresBuild: true 756 | dev: true 757 | optional: true 758 | 759 | /@rollup/rollup-linux-powerpc64le-gnu@4.35.0: 760 | resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} 761 | cpu: [ppc64] 762 | os: [linux] 763 | requiresBuild: true 764 | dev: true 765 | optional: true 766 | 767 | /@rollup/rollup-linux-riscv64-gnu@4.35.0: 768 | resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} 769 | cpu: [riscv64] 770 | os: [linux] 771 | requiresBuild: true 772 | dev: true 773 | optional: true 774 | 775 | /@rollup/rollup-linux-s390x-gnu@4.35.0: 776 | resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} 777 | cpu: [s390x] 778 | os: [linux] 779 | requiresBuild: true 780 | dev: true 781 | optional: true 782 | 783 | /@rollup/rollup-linux-x64-gnu@4.35.0: 784 | resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} 785 | cpu: [x64] 786 | os: [linux] 787 | requiresBuild: true 788 | dev: true 789 | optional: true 790 | 791 | /@rollup/rollup-linux-x64-musl@4.35.0: 792 | resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} 793 | cpu: [x64] 794 | os: [linux] 795 | requiresBuild: true 796 | dev: true 797 | optional: true 798 | 799 | /@rollup/rollup-win32-arm64-msvc@4.35.0: 800 | resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} 801 | cpu: [arm64] 802 | os: [win32] 803 | requiresBuild: true 804 | dev: true 805 | optional: true 806 | 807 | /@rollup/rollup-win32-ia32-msvc@4.35.0: 808 | resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} 809 | cpu: [ia32] 810 | os: [win32] 811 | requiresBuild: true 812 | dev: true 813 | optional: true 814 | 815 | /@rollup/rollup-win32-x64-msvc@4.35.0: 816 | resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} 817 | cpu: [x64] 818 | os: [win32] 819 | requiresBuild: true 820 | dev: true 821 | optional: true 822 | 823 | /@rtsao/scc@1.1.0: 824 | resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} 825 | dev: true 826 | 827 | /@testing-library/dom@10.0.0: 828 | resolution: {integrity: sha512-PmJPnogldqoVFf+EwbHvbBJ98MmqASV8kLrBYgsDNxQcFMeIS7JFL48sfyXvuMtgmWO/wMhh25odr+8VhDmn4g==} 829 | engines: {node: '>=18'} 830 | dependencies: 831 | '@babel/code-frame': 7.26.2 832 | '@babel/runtime': 7.26.9 833 | '@types/aria-query': 5.0.4 834 | aria-query: 5.3.0 835 | chalk: 4.1.2 836 | dom-accessibility-api: 0.5.16 837 | lz-string: 1.5.0 838 | pretty-format: 27.5.1 839 | dev: true 840 | 841 | /@testing-library/react@16.2.0(@testing-library/dom@10.0.0)(@types/react-dom@19.0.4)(@types/react@19.0.10)(react-dom@19.0.0)(react@19.0.0): 842 | resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} 843 | engines: {node: '>=18'} 844 | peerDependencies: 845 | '@testing-library/dom': ^10.0.0 846 | '@types/react': ^18.0.0 || ^19.0.0 847 | '@types/react-dom': ^18.0.0 || ^19.0.0 848 | react: ^18.0.0 || ^19.0.0 849 | react-dom: ^18.0.0 || ^19.0.0 850 | peerDependenciesMeta: 851 | '@types/react': 852 | optional: true 853 | '@types/react-dom': 854 | optional: true 855 | dependencies: 856 | '@babel/runtime': 7.26.9 857 | '@testing-library/dom': 10.0.0 858 | '@types/react': 19.0.10 859 | '@types/react-dom': 19.0.4(@types/react@19.0.10) 860 | react: 19.0.0 861 | react-dom: 19.0.0(react@19.0.0) 862 | dev: true 863 | 864 | /@testing-library/user-event@14.6.1(@testing-library/dom@10.0.0): 865 | resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} 866 | engines: {node: '>=12', npm: '>=6'} 867 | peerDependencies: 868 | '@testing-library/dom': '>=7.21.4' 869 | dependencies: 870 | '@testing-library/dom': 10.0.0 871 | dev: true 872 | 873 | /@types/aria-query@5.0.4: 874 | resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} 875 | dev: true 876 | 877 | /@types/babel__core@7.20.5: 878 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 879 | dependencies: 880 | '@babel/parser': 7.26.9 881 | '@babel/types': 7.26.9 882 | '@types/babel__generator': 7.6.8 883 | '@types/babel__template': 7.4.4 884 | '@types/babel__traverse': 7.20.6 885 | dev: true 886 | 887 | /@types/babel__generator@7.6.8: 888 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 889 | dependencies: 890 | '@babel/types': 7.26.9 891 | dev: true 892 | 893 | /@types/babel__template@7.4.4: 894 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 895 | dependencies: 896 | '@babel/parser': 7.26.9 897 | '@babel/types': 7.26.9 898 | dev: true 899 | 900 | /@types/babel__traverse@7.20.6: 901 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 902 | dependencies: 903 | '@babel/types': 7.26.9 904 | dev: true 905 | 906 | /@types/estree@1.0.6: 907 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 908 | dev: true 909 | 910 | /@types/json-schema@7.0.15: 911 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 912 | dev: true 913 | 914 | /@types/json5@0.0.29: 915 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 916 | dev: true 917 | 918 | /@types/minimalistic-assert@1.0.3: 919 | resolution: {integrity: sha512-Ku87cam4YxiXcEpeUemo+vO8QWGQ7U2CwEEcLcYFhxG8b4CK8gWxSX/oWjePWKwqPaWWxxVqXAdAjGdlJtVzDA==} 920 | dev: true 921 | 922 | /@types/node@22.13.10: 923 | resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} 924 | dependencies: 925 | undici-types: 6.20.0 926 | dev: true 927 | 928 | /@types/react-dom@19.0.4(@types/react@19.0.10): 929 | resolution: {integrity: sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==} 930 | peerDependencies: 931 | '@types/react': ^19.0.0 932 | dependencies: 933 | '@types/react': 19.0.10 934 | dev: true 935 | 936 | /@types/react@19.0.10: 937 | resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} 938 | dependencies: 939 | csstype: 3.1.3 940 | dev: true 941 | 942 | /@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1)(eslint@9.22.0)(typescript@5.8.2): 943 | resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==} 944 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 945 | peerDependencies: 946 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 947 | eslint: ^8.57.0 || ^9.0.0 948 | typescript: '>=4.8.4 <5.9.0' 949 | dependencies: 950 | '@eslint-community/regexpp': 4.12.1 951 | '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 952 | '@typescript-eslint/scope-manager': 8.26.1 953 | '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 954 | '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 955 | '@typescript-eslint/visitor-keys': 8.26.1 956 | eslint: 9.22.0(jiti@2.4.2) 957 | graphemer: 1.4.0 958 | ignore: 5.3.2 959 | natural-compare: 1.4.0 960 | ts-api-utils: 2.0.1(typescript@5.8.2) 961 | typescript: 5.8.2 962 | transitivePeerDependencies: 963 | - supports-color 964 | dev: true 965 | 966 | /@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2): 967 | resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==} 968 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 969 | peerDependencies: 970 | eslint: ^8.57.0 || ^9.0.0 971 | typescript: '>=4.8.4 <5.9.0' 972 | dependencies: 973 | '@typescript-eslint/scope-manager': 8.26.1 974 | '@typescript-eslint/types': 8.26.1 975 | '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) 976 | '@typescript-eslint/visitor-keys': 8.26.1 977 | debug: 4.4.0 978 | eslint: 9.22.0(jiti@2.4.2) 979 | typescript: 5.8.2 980 | transitivePeerDependencies: 981 | - supports-color 982 | dev: true 983 | 984 | /@typescript-eslint/scope-manager@8.26.1: 985 | resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} 986 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 987 | dependencies: 988 | '@typescript-eslint/types': 8.26.1 989 | '@typescript-eslint/visitor-keys': 8.26.1 990 | dev: true 991 | 992 | /@typescript-eslint/type-utils@8.26.1(eslint@9.22.0)(typescript@5.8.2): 993 | resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==} 994 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 995 | peerDependencies: 996 | eslint: ^8.57.0 || ^9.0.0 997 | typescript: '>=4.8.4 <5.9.0' 998 | dependencies: 999 | '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) 1000 | '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 1001 | debug: 4.4.0 1002 | eslint: 9.22.0(jiti@2.4.2) 1003 | ts-api-utils: 2.0.1(typescript@5.8.2) 1004 | typescript: 5.8.2 1005 | transitivePeerDependencies: 1006 | - supports-color 1007 | dev: true 1008 | 1009 | /@typescript-eslint/types@8.26.1: 1010 | resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} 1011 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1012 | dev: true 1013 | 1014 | /@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2): 1015 | resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} 1016 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1017 | peerDependencies: 1018 | typescript: '>=4.8.4 <5.9.0' 1019 | dependencies: 1020 | '@typescript-eslint/types': 8.26.1 1021 | '@typescript-eslint/visitor-keys': 8.26.1 1022 | debug: 4.4.0 1023 | fast-glob: 3.3.3 1024 | is-glob: 4.0.3 1025 | minimatch: 9.0.5 1026 | semver: 7.7.1 1027 | ts-api-utils: 2.0.1(typescript@5.8.2) 1028 | typescript: 5.8.2 1029 | transitivePeerDependencies: 1030 | - supports-color 1031 | dev: true 1032 | 1033 | /@typescript-eslint/utils@8.26.1(eslint@9.22.0)(typescript@5.8.2): 1034 | resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} 1035 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1036 | peerDependencies: 1037 | eslint: ^8.57.0 || ^9.0.0 1038 | typescript: '>=4.8.4 <5.9.0' 1039 | dependencies: 1040 | '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0) 1041 | '@typescript-eslint/scope-manager': 8.26.1 1042 | '@typescript-eslint/types': 8.26.1 1043 | '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) 1044 | eslint: 9.22.0(jiti@2.4.2) 1045 | typescript: 5.8.2 1046 | transitivePeerDependencies: 1047 | - supports-color 1048 | dev: true 1049 | 1050 | /@typescript-eslint/visitor-keys@8.26.1: 1051 | resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} 1052 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1053 | dependencies: 1054 | '@typescript-eslint/types': 8.26.1 1055 | eslint-visitor-keys: 4.2.0 1056 | dev: true 1057 | 1058 | /@vitejs/plugin-react@4.3.4(vite@6.2.1): 1059 | resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} 1060 | engines: {node: ^14.18.0 || >=16.0.0} 1061 | peerDependencies: 1062 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 1063 | dependencies: 1064 | '@babel/core': 7.26.9 1065 | '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.9) 1066 | '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.9) 1067 | '@types/babel__core': 7.20.5 1068 | react-refresh: 0.14.2 1069 | vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2) 1070 | transitivePeerDependencies: 1071 | - supports-color 1072 | dev: true 1073 | 1074 | /@vitest/expect@3.0.8: 1075 | resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} 1076 | dependencies: 1077 | '@vitest/spy': 3.0.8 1078 | '@vitest/utils': 3.0.8 1079 | chai: 5.2.0 1080 | tinyrainbow: 2.0.0 1081 | dev: true 1082 | 1083 | /@vitest/mocker@3.0.8(vite@6.2.1): 1084 | resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} 1085 | peerDependencies: 1086 | msw: ^2.4.9 1087 | vite: ^5.0.0 || ^6.0.0 1088 | peerDependenciesMeta: 1089 | msw: 1090 | optional: true 1091 | vite: 1092 | optional: true 1093 | dependencies: 1094 | '@vitest/spy': 3.0.8 1095 | estree-walker: 3.0.3 1096 | magic-string: 0.30.17 1097 | vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2) 1098 | dev: true 1099 | 1100 | /@vitest/pretty-format@3.0.8: 1101 | resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} 1102 | dependencies: 1103 | tinyrainbow: 2.0.0 1104 | dev: true 1105 | 1106 | /@vitest/runner@3.0.8: 1107 | resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} 1108 | dependencies: 1109 | '@vitest/utils': 3.0.8 1110 | pathe: 2.0.3 1111 | dev: true 1112 | 1113 | /@vitest/snapshot@3.0.8: 1114 | resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} 1115 | dependencies: 1116 | '@vitest/pretty-format': 3.0.8 1117 | magic-string: 0.30.17 1118 | pathe: 2.0.3 1119 | dev: true 1120 | 1121 | /@vitest/spy@3.0.8: 1122 | resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} 1123 | dependencies: 1124 | tinyspy: 3.0.2 1125 | dev: true 1126 | 1127 | /@vitest/utils@3.0.8: 1128 | resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} 1129 | dependencies: 1130 | '@vitest/pretty-format': 3.0.8 1131 | loupe: 3.1.3 1132 | tinyrainbow: 2.0.0 1133 | dev: true 1134 | 1135 | /acorn-jsx@5.3.2(acorn@8.14.1): 1136 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 1137 | peerDependencies: 1138 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 1139 | dependencies: 1140 | acorn: 8.14.1 1141 | dev: true 1142 | 1143 | /acorn@8.14.1: 1144 | resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 1145 | engines: {node: '>=0.4.0'} 1146 | hasBin: true 1147 | dev: true 1148 | 1149 | /ajv@6.12.6: 1150 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1151 | dependencies: 1152 | fast-deep-equal: 3.1.3 1153 | fast-json-stable-stringify: 2.1.0 1154 | json-schema-traverse: 0.4.1 1155 | uri-js: 4.4.1 1156 | dev: true 1157 | 1158 | /ansi-regex@5.0.1: 1159 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1160 | engines: {node: '>=8'} 1161 | dev: true 1162 | 1163 | /ansi-styles@4.3.0: 1164 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1165 | engines: {node: '>=8'} 1166 | dependencies: 1167 | color-convert: 2.0.1 1168 | dev: true 1169 | 1170 | /ansi-styles@5.2.0: 1171 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 1172 | engines: {node: '>=10'} 1173 | dev: true 1174 | 1175 | /anymatch@3.1.3: 1176 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1177 | engines: {node: '>= 8'} 1178 | dependencies: 1179 | normalize-path: 3.0.0 1180 | picomatch: 2.3.1 1181 | dev: true 1182 | 1183 | /argparse@2.0.1: 1184 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 1185 | dev: true 1186 | 1187 | /aria-query@5.3.0: 1188 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 1189 | dependencies: 1190 | dequal: 2.0.3 1191 | dev: true 1192 | 1193 | /array-buffer-byte-length@1.0.2: 1194 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 1195 | engines: {node: '>= 0.4'} 1196 | dependencies: 1197 | call-bound: 1.0.4 1198 | is-array-buffer: 3.0.5 1199 | dev: true 1200 | 1201 | /array-includes@3.1.8: 1202 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 1203 | engines: {node: '>= 0.4'} 1204 | dependencies: 1205 | call-bind: 1.0.8 1206 | define-properties: 1.2.1 1207 | es-abstract: 1.23.9 1208 | es-object-atoms: 1.1.1 1209 | get-intrinsic: 1.3.0 1210 | is-string: 1.1.1 1211 | dev: true 1212 | 1213 | /array-union@2.1.0: 1214 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 1215 | engines: {node: '>=8'} 1216 | dev: true 1217 | 1218 | /array.prototype.findlastindex@1.2.5: 1219 | resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} 1220 | engines: {node: '>= 0.4'} 1221 | dependencies: 1222 | call-bind: 1.0.8 1223 | define-properties: 1.2.1 1224 | es-abstract: 1.23.9 1225 | es-errors: 1.3.0 1226 | es-object-atoms: 1.1.1 1227 | es-shim-unscopables: 1.1.0 1228 | dev: true 1229 | 1230 | /array.prototype.flat@1.3.3: 1231 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 1232 | engines: {node: '>= 0.4'} 1233 | dependencies: 1234 | call-bind: 1.0.8 1235 | define-properties: 1.2.1 1236 | es-abstract: 1.23.9 1237 | es-shim-unscopables: 1.1.0 1238 | dev: true 1239 | 1240 | /array.prototype.flatmap@1.3.3: 1241 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} 1242 | engines: {node: '>= 0.4'} 1243 | dependencies: 1244 | call-bind: 1.0.8 1245 | define-properties: 1.2.1 1246 | es-abstract: 1.23.9 1247 | es-shim-unscopables: 1.1.0 1248 | dev: true 1249 | 1250 | /arraybuffer.prototype.slice@1.0.4: 1251 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 1252 | engines: {node: '>= 0.4'} 1253 | dependencies: 1254 | array-buffer-byte-length: 1.0.2 1255 | call-bind: 1.0.8 1256 | define-properties: 1.2.1 1257 | es-abstract: 1.23.9 1258 | es-errors: 1.3.0 1259 | get-intrinsic: 1.3.0 1260 | is-array-buffer: 3.0.5 1261 | dev: true 1262 | 1263 | /assertion-error@2.0.1: 1264 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 1265 | engines: {node: '>=12'} 1266 | dev: true 1267 | 1268 | /async-function@1.0.0: 1269 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 1270 | engines: {node: '>= 0.4'} 1271 | dev: true 1272 | 1273 | /available-typed-arrays@1.0.7: 1274 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 1275 | engines: {node: '>= 0.4'} 1276 | dependencies: 1277 | possible-typed-array-names: 1.1.0 1278 | dev: true 1279 | 1280 | /balanced-match@1.0.2: 1281 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1282 | dev: true 1283 | 1284 | /binary-extensions@2.3.0: 1285 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 1286 | engines: {node: '>=8'} 1287 | dev: true 1288 | 1289 | /brace-expansion@1.1.11: 1290 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1291 | dependencies: 1292 | balanced-match: 1.0.2 1293 | concat-map: 0.0.1 1294 | dev: true 1295 | 1296 | /brace-expansion@2.0.1: 1297 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1298 | dependencies: 1299 | balanced-match: 1.0.2 1300 | dev: true 1301 | 1302 | /braces@3.0.3: 1303 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1304 | engines: {node: '>=8'} 1305 | dependencies: 1306 | fill-range: 7.1.1 1307 | dev: true 1308 | 1309 | /browserslist@4.24.4: 1310 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 1311 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1312 | hasBin: true 1313 | dependencies: 1314 | caniuse-lite: 1.0.30001703 1315 | electron-to-chromium: 1.5.114 1316 | node-releases: 2.0.19 1317 | update-browserslist-db: 1.1.3(browserslist@4.24.4) 1318 | dev: true 1319 | 1320 | /cac@6.7.14: 1321 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1322 | engines: {node: '>=8'} 1323 | dev: true 1324 | 1325 | /call-bind-apply-helpers@1.0.2: 1326 | resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 1327 | engines: {node: '>= 0.4'} 1328 | dependencies: 1329 | es-errors: 1.3.0 1330 | function-bind: 1.1.2 1331 | dev: true 1332 | 1333 | /call-bind@1.0.8: 1334 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 1335 | engines: {node: '>= 0.4'} 1336 | dependencies: 1337 | call-bind-apply-helpers: 1.0.2 1338 | es-define-property: 1.0.1 1339 | get-intrinsic: 1.3.0 1340 | set-function-length: 1.2.2 1341 | dev: true 1342 | 1343 | /call-bound@1.0.4: 1344 | resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 1345 | engines: {node: '>= 0.4'} 1346 | dependencies: 1347 | call-bind-apply-helpers: 1.0.2 1348 | get-intrinsic: 1.3.0 1349 | dev: true 1350 | 1351 | /callsites@3.1.0: 1352 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1353 | engines: {node: '>=6'} 1354 | dev: true 1355 | 1356 | /caniuse-lite@1.0.30001703: 1357 | resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} 1358 | dev: true 1359 | 1360 | /chai@5.2.0: 1361 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 1362 | engines: {node: '>=12'} 1363 | dependencies: 1364 | assertion-error: 2.0.1 1365 | check-error: 2.1.1 1366 | deep-eql: 5.0.2 1367 | loupe: 3.1.3 1368 | pathval: 2.0.0 1369 | dev: true 1370 | 1371 | /chalk@4.1.2: 1372 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1373 | engines: {node: '>=10'} 1374 | dependencies: 1375 | ansi-styles: 4.3.0 1376 | supports-color: 7.2.0 1377 | dev: true 1378 | 1379 | /check-error@2.1.1: 1380 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 1381 | engines: {node: '>= 16'} 1382 | dev: true 1383 | 1384 | /chokidar@3.6.0: 1385 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 1386 | engines: {node: '>= 8.10.0'} 1387 | dependencies: 1388 | anymatch: 3.1.3 1389 | braces: 3.0.3 1390 | glob-parent: 5.1.2 1391 | is-binary-path: 2.1.0 1392 | is-glob: 4.0.3 1393 | normalize-path: 3.0.0 1394 | readdirp: 3.6.0 1395 | optionalDependencies: 1396 | fsevents: 2.3.3 1397 | dev: true 1398 | 1399 | /color-convert@2.0.1: 1400 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1401 | engines: {node: '>=7.0.0'} 1402 | dependencies: 1403 | color-name: 1.1.4 1404 | dev: true 1405 | 1406 | /color-name@1.1.4: 1407 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1408 | dev: true 1409 | 1410 | /commander@9.5.0: 1411 | resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} 1412 | engines: {node: ^12.20.0 || >=14} 1413 | dev: true 1414 | 1415 | /concat-map@0.0.1: 1416 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1417 | dev: true 1418 | 1419 | /convert-source-map@2.0.0: 1420 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1421 | dev: true 1422 | 1423 | /cross-spawn@7.0.6: 1424 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1425 | engines: {node: '>= 8'} 1426 | dependencies: 1427 | path-key: 3.1.1 1428 | shebang-command: 2.0.0 1429 | which: 2.0.2 1430 | dev: true 1431 | 1432 | /csstype@3.1.3: 1433 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1434 | dev: true 1435 | 1436 | /data-view-buffer@1.0.2: 1437 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 1438 | engines: {node: '>= 0.4'} 1439 | dependencies: 1440 | call-bound: 1.0.4 1441 | es-errors: 1.3.0 1442 | is-data-view: 1.0.2 1443 | dev: true 1444 | 1445 | /data-view-byte-length@1.0.2: 1446 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 1447 | engines: {node: '>= 0.4'} 1448 | dependencies: 1449 | call-bound: 1.0.4 1450 | es-errors: 1.3.0 1451 | is-data-view: 1.0.2 1452 | dev: true 1453 | 1454 | /data-view-byte-offset@1.0.1: 1455 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 1456 | engines: {node: '>= 0.4'} 1457 | dependencies: 1458 | call-bound: 1.0.4 1459 | es-errors: 1.3.0 1460 | is-data-view: 1.0.2 1461 | dev: true 1462 | 1463 | /debug@3.2.7: 1464 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1465 | peerDependencies: 1466 | supports-color: '*' 1467 | peerDependenciesMeta: 1468 | supports-color: 1469 | optional: true 1470 | dependencies: 1471 | ms: 2.1.3 1472 | dev: true 1473 | 1474 | /debug@4.4.0: 1475 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 1476 | engines: {node: '>=6.0'} 1477 | peerDependencies: 1478 | supports-color: '*' 1479 | peerDependenciesMeta: 1480 | supports-color: 1481 | optional: true 1482 | dependencies: 1483 | ms: 2.1.3 1484 | dev: true 1485 | 1486 | /deep-eql@5.0.2: 1487 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 1488 | engines: {node: '>=6'} 1489 | dev: true 1490 | 1491 | /deep-is@0.1.4: 1492 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1493 | dev: true 1494 | 1495 | /define-data-property@1.1.4: 1496 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1497 | engines: {node: '>= 0.4'} 1498 | dependencies: 1499 | es-define-property: 1.0.1 1500 | es-errors: 1.3.0 1501 | gopd: 1.2.0 1502 | dev: true 1503 | 1504 | /define-properties@1.2.1: 1505 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1506 | engines: {node: '>= 0.4'} 1507 | dependencies: 1508 | define-data-property: 1.1.4 1509 | has-property-descriptors: 1.0.2 1510 | object-keys: 1.1.1 1511 | dev: true 1512 | 1513 | /dequal@2.0.3: 1514 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1515 | engines: {node: '>=6'} 1516 | dev: true 1517 | 1518 | /dir-glob@3.0.1: 1519 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1520 | engines: {node: '>=8'} 1521 | dependencies: 1522 | path-type: 4.0.0 1523 | dev: true 1524 | 1525 | /doctrine@2.1.0: 1526 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1527 | engines: {node: '>=0.10.0'} 1528 | dependencies: 1529 | esutils: 2.0.3 1530 | dev: true 1531 | 1532 | /dom-accessibility-api@0.5.16: 1533 | resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 1534 | dev: true 1535 | 1536 | /dunder-proto@1.0.1: 1537 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 1538 | engines: {node: '>= 0.4'} 1539 | dependencies: 1540 | call-bind-apply-helpers: 1.0.2 1541 | es-errors: 1.3.0 1542 | gopd: 1.2.0 1543 | dev: true 1544 | 1545 | /electron-to-chromium@1.5.114: 1546 | resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} 1547 | dev: true 1548 | 1549 | /enhanced-resolve@5.18.1: 1550 | resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 1551 | engines: {node: '>=10.13.0'} 1552 | dependencies: 1553 | graceful-fs: 4.2.11 1554 | tapable: 2.2.1 1555 | dev: true 1556 | 1557 | /entities@4.5.0: 1558 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1559 | engines: {node: '>=0.12'} 1560 | dev: true 1561 | 1562 | /es-abstract@1.23.9: 1563 | resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} 1564 | engines: {node: '>= 0.4'} 1565 | dependencies: 1566 | array-buffer-byte-length: 1.0.2 1567 | arraybuffer.prototype.slice: 1.0.4 1568 | available-typed-arrays: 1.0.7 1569 | call-bind: 1.0.8 1570 | call-bound: 1.0.4 1571 | data-view-buffer: 1.0.2 1572 | data-view-byte-length: 1.0.2 1573 | data-view-byte-offset: 1.0.1 1574 | es-define-property: 1.0.1 1575 | es-errors: 1.3.0 1576 | es-object-atoms: 1.1.1 1577 | es-set-tostringtag: 2.1.0 1578 | es-to-primitive: 1.3.0 1579 | function.prototype.name: 1.1.8 1580 | get-intrinsic: 1.3.0 1581 | get-proto: 1.0.1 1582 | get-symbol-description: 1.1.0 1583 | globalthis: 1.0.4 1584 | gopd: 1.2.0 1585 | has-property-descriptors: 1.0.2 1586 | has-proto: 1.2.0 1587 | has-symbols: 1.1.0 1588 | hasown: 2.0.2 1589 | internal-slot: 1.1.0 1590 | is-array-buffer: 3.0.5 1591 | is-callable: 1.2.7 1592 | is-data-view: 1.0.2 1593 | is-regex: 1.2.1 1594 | is-shared-array-buffer: 1.0.4 1595 | is-string: 1.1.1 1596 | is-typed-array: 1.1.15 1597 | is-weakref: 1.1.1 1598 | math-intrinsics: 1.1.0 1599 | object-inspect: 1.13.4 1600 | object-keys: 1.1.1 1601 | object.assign: 4.1.7 1602 | own-keys: 1.0.1 1603 | regexp.prototype.flags: 1.5.4 1604 | safe-array-concat: 1.1.3 1605 | safe-push-apply: 1.0.0 1606 | safe-regex-test: 1.1.0 1607 | set-proto: 1.0.0 1608 | string.prototype.trim: 1.2.10 1609 | string.prototype.trimend: 1.0.9 1610 | string.prototype.trimstart: 1.0.8 1611 | typed-array-buffer: 1.0.3 1612 | typed-array-byte-length: 1.0.3 1613 | typed-array-byte-offset: 1.0.4 1614 | typed-array-length: 1.0.7 1615 | unbox-primitive: 1.1.0 1616 | which-typed-array: 1.1.19 1617 | dev: true 1618 | 1619 | /es-define-property@1.0.1: 1620 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 1621 | engines: {node: '>= 0.4'} 1622 | dev: true 1623 | 1624 | /es-errors@1.3.0: 1625 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1626 | engines: {node: '>= 0.4'} 1627 | dev: true 1628 | 1629 | /es-module-lexer@1.6.0: 1630 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 1631 | dev: true 1632 | 1633 | /es-object-atoms@1.1.1: 1634 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 1635 | engines: {node: '>= 0.4'} 1636 | dependencies: 1637 | es-errors: 1.3.0 1638 | dev: true 1639 | 1640 | /es-set-tostringtag@2.1.0: 1641 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 1642 | engines: {node: '>= 0.4'} 1643 | dependencies: 1644 | es-errors: 1.3.0 1645 | get-intrinsic: 1.3.0 1646 | has-tostringtag: 1.0.2 1647 | hasown: 2.0.2 1648 | dev: true 1649 | 1650 | /es-shim-unscopables@1.1.0: 1651 | resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} 1652 | engines: {node: '>= 0.4'} 1653 | dependencies: 1654 | hasown: 2.0.2 1655 | dev: true 1656 | 1657 | /es-to-primitive@1.3.0: 1658 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 1659 | engines: {node: '>= 0.4'} 1660 | dependencies: 1661 | is-callable: 1.2.7 1662 | is-date-object: 1.1.0 1663 | is-symbol: 1.1.1 1664 | dev: true 1665 | 1666 | /esbuild@0.25.1: 1667 | resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==} 1668 | engines: {node: '>=18'} 1669 | hasBin: true 1670 | requiresBuild: true 1671 | optionalDependencies: 1672 | '@esbuild/aix-ppc64': 0.25.1 1673 | '@esbuild/android-arm': 0.25.1 1674 | '@esbuild/android-arm64': 0.25.1 1675 | '@esbuild/android-x64': 0.25.1 1676 | '@esbuild/darwin-arm64': 0.25.1 1677 | '@esbuild/darwin-x64': 0.25.1 1678 | '@esbuild/freebsd-arm64': 0.25.1 1679 | '@esbuild/freebsd-x64': 0.25.1 1680 | '@esbuild/linux-arm': 0.25.1 1681 | '@esbuild/linux-arm64': 0.25.1 1682 | '@esbuild/linux-ia32': 0.25.1 1683 | '@esbuild/linux-loong64': 0.25.1 1684 | '@esbuild/linux-mips64el': 0.25.1 1685 | '@esbuild/linux-ppc64': 0.25.1 1686 | '@esbuild/linux-riscv64': 0.25.1 1687 | '@esbuild/linux-s390x': 0.25.1 1688 | '@esbuild/linux-x64': 0.25.1 1689 | '@esbuild/netbsd-arm64': 0.25.1 1690 | '@esbuild/netbsd-x64': 0.25.1 1691 | '@esbuild/openbsd-arm64': 0.25.1 1692 | '@esbuild/openbsd-x64': 0.25.1 1693 | '@esbuild/sunos-x64': 0.25.1 1694 | '@esbuild/win32-arm64': 0.25.1 1695 | '@esbuild/win32-ia32': 0.25.1 1696 | '@esbuild/win32-x64': 0.25.1 1697 | dev: true 1698 | 1699 | /escalade@3.2.0: 1700 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1701 | engines: {node: '>=6'} 1702 | dev: true 1703 | 1704 | /escape-string-regexp@4.0.0: 1705 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1706 | engines: {node: '>=10'} 1707 | dev: true 1708 | 1709 | /eslint-config-prettier@9.1.0(eslint@9.22.0): 1710 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 1711 | hasBin: true 1712 | peerDependencies: 1713 | eslint: '>=7.0.0' 1714 | dependencies: 1715 | eslint: 9.22.0(jiti@2.4.2) 1716 | dev: true 1717 | 1718 | /eslint-import-resolver-node@0.3.9: 1719 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1720 | dependencies: 1721 | debug: 3.2.7 1722 | is-core-module: 2.16.1 1723 | resolve: 1.22.10 1724 | transitivePeerDependencies: 1725 | - supports-color 1726 | dev: true 1727 | 1728 | /eslint-import-resolver-typescript@3.8.4(eslint-plugin-import@2.31.0)(eslint@9.22.0): 1729 | resolution: {integrity: sha512-vjTGvhr528DzCOLQnBxvoB9a2YuzegT1ogfrUwOqMXS/J6vNYQKSHDJxxDVU1gRuTiUK8N2wyp8Uik9JSPAygA==} 1730 | engines: {node: ^14.18.0 || >=16.0.0} 1731 | peerDependencies: 1732 | eslint: '*' 1733 | eslint-plugin-import: '*' 1734 | eslint-plugin-import-x: '*' 1735 | peerDependenciesMeta: 1736 | eslint-plugin-import: 1737 | optional: true 1738 | eslint-plugin-import-x: 1739 | optional: true 1740 | dependencies: 1741 | '@nolyfill/is-core-module': 1.0.39 1742 | debug: 4.4.0 1743 | enhanced-resolve: 5.18.1 1744 | eslint: 9.22.0(jiti@2.4.2) 1745 | eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.26.1)(eslint-import-resolver-typescript@3.8.4)(eslint@9.22.0) 1746 | get-tsconfig: 4.10.0 1747 | is-bun-module: 1.3.0 1748 | stable-hash: 0.0.4 1749 | tinyglobby: 0.2.12 1750 | transitivePeerDependencies: 1751 | - supports-color 1752 | dev: true 1753 | 1754 | /eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.4)(eslint@9.22.0): 1755 | resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} 1756 | engines: {node: '>=4'} 1757 | peerDependencies: 1758 | '@typescript-eslint/parser': '*' 1759 | eslint: '*' 1760 | eslint-import-resolver-node: '*' 1761 | eslint-import-resolver-typescript: '*' 1762 | eslint-import-resolver-webpack: '*' 1763 | peerDependenciesMeta: 1764 | '@typescript-eslint/parser': 1765 | optional: true 1766 | eslint: 1767 | optional: true 1768 | eslint-import-resolver-node: 1769 | optional: true 1770 | eslint-import-resolver-typescript: 1771 | optional: true 1772 | eslint-import-resolver-webpack: 1773 | optional: true 1774 | dependencies: 1775 | '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 1776 | debug: 3.2.7 1777 | eslint: 9.22.0(jiti@2.4.2) 1778 | eslint-import-resolver-node: 0.3.9 1779 | eslint-import-resolver-typescript: 3.8.4(eslint-plugin-import@2.31.0)(eslint@9.22.0) 1780 | transitivePeerDependencies: 1781 | - supports-color 1782 | dev: true 1783 | 1784 | /eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.1)(eslint-import-resolver-typescript@3.8.4)(eslint@9.22.0): 1785 | resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} 1786 | engines: {node: '>=4'} 1787 | peerDependencies: 1788 | '@typescript-eslint/parser': '*' 1789 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 1790 | peerDependenciesMeta: 1791 | '@typescript-eslint/parser': 1792 | optional: true 1793 | dependencies: 1794 | '@rtsao/scc': 1.1.0 1795 | '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 1796 | array-includes: 3.1.8 1797 | array.prototype.findlastindex: 1.2.5 1798 | array.prototype.flat: 1.3.3 1799 | array.prototype.flatmap: 1.3.3 1800 | debug: 3.2.7 1801 | doctrine: 2.1.0 1802 | eslint: 9.22.0(jiti@2.4.2) 1803 | eslint-import-resolver-node: 0.3.9 1804 | eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.8.4)(eslint@9.22.0) 1805 | hasown: 2.0.2 1806 | is-core-module: 2.16.1 1807 | is-glob: 4.0.3 1808 | minimatch: 3.1.2 1809 | object.fromentries: 2.0.8 1810 | object.groupby: 1.0.3 1811 | object.values: 1.2.1 1812 | semver: 6.3.1 1813 | string.prototype.trimend: 1.0.9 1814 | tsconfig-paths: 3.15.0 1815 | transitivePeerDependencies: 1816 | - eslint-import-resolver-typescript 1817 | - eslint-import-resolver-webpack 1818 | - supports-color 1819 | dev: true 1820 | 1821 | /eslint-plugin-prettier@5.2.3(eslint-config-prettier@9.1.0)(eslint@9.22.0)(prettier@3.5.3): 1822 | resolution: {integrity: sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==} 1823 | engines: {node: ^14.18.0 || >=16.0.0} 1824 | peerDependencies: 1825 | '@types/eslint': '>=8.0.0' 1826 | eslint: '>=8.0.0' 1827 | eslint-config-prettier: '*' 1828 | prettier: '>=3.0.0' 1829 | peerDependenciesMeta: 1830 | '@types/eslint': 1831 | optional: true 1832 | eslint-config-prettier: 1833 | optional: true 1834 | dependencies: 1835 | eslint: 9.22.0(jiti@2.4.2) 1836 | eslint-config-prettier: 9.1.0(eslint@9.22.0) 1837 | prettier: 3.5.3 1838 | prettier-linter-helpers: 1.0.0 1839 | synckit: 0.9.2 1840 | dev: true 1841 | 1842 | /eslint-scope@8.3.0: 1843 | resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 1844 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1845 | dependencies: 1846 | esrecurse: 4.3.0 1847 | estraverse: 5.3.0 1848 | dev: true 1849 | 1850 | /eslint-visitor-keys@3.4.3: 1851 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1852 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1853 | dev: true 1854 | 1855 | /eslint-visitor-keys@4.2.0: 1856 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1857 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1858 | dev: true 1859 | 1860 | /eslint@9.22.0(jiti@2.4.2): 1861 | resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} 1862 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1863 | hasBin: true 1864 | peerDependencies: 1865 | jiti: '*' 1866 | peerDependenciesMeta: 1867 | jiti: 1868 | optional: true 1869 | dependencies: 1870 | '@eslint-community/eslint-utils': 4.5.0(eslint@9.22.0) 1871 | '@eslint-community/regexpp': 4.12.1 1872 | '@eslint/config-array': 0.19.2 1873 | '@eslint/config-helpers': 0.1.0 1874 | '@eslint/core': 0.12.0 1875 | '@eslint/eslintrc': 3.3.0 1876 | '@eslint/js': 9.22.0 1877 | '@eslint/plugin-kit': 0.2.7 1878 | '@humanfs/node': 0.16.6 1879 | '@humanwhocodes/module-importer': 1.0.1 1880 | '@humanwhocodes/retry': 0.4.2 1881 | '@types/estree': 1.0.6 1882 | '@types/json-schema': 7.0.15 1883 | ajv: 6.12.6 1884 | chalk: 4.1.2 1885 | cross-spawn: 7.0.6 1886 | debug: 4.4.0 1887 | escape-string-regexp: 4.0.0 1888 | eslint-scope: 8.3.0 1889 | eslint-visitor-keys: 4.2.0 1890 | espree: 10.3.0 1891 | esquery: 1.6.0 1892 | esutils: 2.0.3 1893 | fast-deep-equal: 3.1.3 1894 | file-entry-cache: 8.0.0 1895 | find-up: 5.0.0 1896 | glob-parent: 6.0.2 1897 | ignore: 5.3.2 1898 | imurmurhash: 0.1.4 1899 | is-glob: 4.0.3 1900 | jiti: 2.4.2 1901 | json-stable-stringify-without-jsonify: 1.0.1 1902 | lodash.merge: 4.6.2 1903 | minimatch: 3.1.2 1904 | natural-compare: 1.4.0 1905 | optionator: 0.9.4 1906 | transitivePeerDependencies: 1907 | - supports-color 1908 | dev: true 1909 | 1910 | /espree@10.3.0: 1911 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1912 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1913 | dependencies: 1914 | acorn: 8.14.1 1915 | acorn-jsx: 5.3.2(acorn@8.14.1) 1916 | eslint-visitor-keys: 4.2.0 1917 | dev: true 1918 | 1919 | /esquery@1.6.0: 1920 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1921 | engines: {node: '>=0.10'} 1922 | dependencies: 1923 | estraverse: 5.3.0 1924 | dev: true 1925 | 1926 | /esrecurse@4.3.0: 1927 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1928 | engines: {node: '>=4.0'} 1929 | dependencies: 1930 | estraverse: 5.3.0 1931 | dev: true 1932 | 1933 | /estraverse@5.3.0: 1934 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1935 | engines: {node: '>=4.0'} 1936 | dev: true 1937 | 1938 | /estree-walker@3.0.3: 1939 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1940 | dependencies: 1941 | '@types/estree': 1.0.6 1942 | dev: true 1943 | 1944 | /esutils@2.0.3: 1945 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1946 | engines: {node: '>=0.10.0'} 1947 | dev: true 1948 | 1949 | /expect-type@1.2.0: 1950 | resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==} 1951 | engines: {node: '>=12.0.0'} 1952 | dev: true 1953 | 1954 | /fast-deep-equal@3.1.3: 1955 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1956 | dev: true 1957 | 1958 | /fast-diff@1.3.0: 1959 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1960 | dev: true 1961 | 1962 | /fast-glob@3.3.3: 1963 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1964 | engines: {node: '>=8.6.0'} 1965 | dependencies: 1966 | '@nodelib/fs.stat': 2.0.5 1967 | '@nodelib/fs.walk': 1.2.8 1968 | glob-parent: 5.1.2 1969 | merge2: 1.4.1 1970 | micromatch: 4.0.8 1971 | dev: true 1972 | 1973 | /fast-json-stable-stringify@2.1.0: 1974 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1975 | dev: true 1976 | 1977 | /fast-levenshtein@2.0.6: 1978 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1979 | dev: true 1980 | 1981 | /fastq@1.19.1: 1982 | resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1983 | dependencies: 1984 | reusify: 1.1.0 1985 | dev: true 1986 | 1987 | /fdir@6.4.3(picomatch@4.0.2): 1988 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 1989 | peerDependencies: 1990 | picomatch: ^3 || ^4 1991 | peerDependenciesMeta: 1992 | picomatch: 1993 | optional: true 1994 | dependencies: 1995 | picomatch: 4.0.2 1996 | dev: true 1997 | 1998 | /file-entry-cache@8.0.0: 1999 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 2000 | engines: {node: '>=16.0.0'} 2001 | dependencies: 2002 | flat-cache: 4.0.1 2003 | dev: true 2004 | 2005 | /fill-range@7.1.1: 2006 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 2007 | engines: {node: '>=8'} 2008 | dependencies: 2009 | to-regex-range: 5.0.1 2010 | dev: true 2011 | 2012 | /find-up@5.0.0: 2013 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 2014 | engines: {node: '>=10'} 2015 | dependencies: 2016 | locate-path: 6.0.0 2017 | path-exists: 4.0.0 2018 | dev: true 2019 | 2020 | /flat-cache@4.0.1: 2021 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 2022 | engines: {node: '>=16'} 2023 | dependencies: 2024 | flatted: 3.3.3 2025 | keyv: 4.5.4 2026 | dev: true 2027 | 2028 | /flatted@3.3.3: 2029 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 2030 | dev: true 2031 | 2032 | /for-each@0.3.5: 2033 | resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 2034 | engines: {node: '>= 0.4'} 2035 | dependencies: 2036 | is-callable: 1.2.7 2037 | dev: true 2038 | 2039 | /fsevents@2.3.3: 2040 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 2041 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 2042 | os: [darwin] 2043 | requiresBuild: true 2044 | dev: true 2045 | optional: true 2046 | 2047 | /function-bind@1.1.2: 2048 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 2049 | dev: true 2050 | 2051 | /function.prototype.name@1.1.8: 2052 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 2053 | engines: {node: '>= 0.4'} 2054 | dependencies: 2055 | call-bind: 1.0.8 2056 | call-bound: 1.0.4 2057 | define-properties: 1.2.1 2058 | functions-have-names: 1.2.3 2059 | hasown: 2.0.2 2060 | is-callable: 1.2.7 2061 | dev: true 2062 | 2063 | /functions-have-names@1.2.3: 2064 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 2065 | dev: true 2066 | 2067 | /gensync@1.0.0-beta.2: 2068 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 2069 | engines: {node: '>=6.9.0'} 2070 | dev: true 2071 | 2072 | /get-intrinsic@1.3.0: 2073 | resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 2074 | engines: {node: '>= 0.4'} 2075 | dependencies: 2076 | call-bind-apply-helpers: 1.0.2 2077 | es-define-property: 1.0.1 2078 | es-errors: 1.3.0 2079 | es-object-atoms: 1.1.1 2080 | function-bind: 1.1.2 2081 | get-proto: 1.0.1 2082 | gopd: 1.2.0 2083 | has-symbols: 1.1.0 2084 | hasown: 2.0.2 2085 | math-intrinsics: 1.1.0 2086 | dev: true 2087 | 2088 | /get-proto@1.0.1: 2089 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 2090 | engines: {node: '>= 0.4'} 2091 | dependencies: 2092 | dunder-proto: 1.0.1 2093 | es-object-atoms: 1.1.1 2094 | dev: true 2095 | 2096 | /get-symbol-description@1.1.0: 2097 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 2098 | engines: {node: '>= 0.4'} 2099 | dependencies: 2100 | call-bound: 1.0.4 2101 | es-errors: 1.3.0 2102 | get-intrinsic: 1.3.0 2103 | dev: true 2104 | 2105 | /get-tsconfig@4.10.0: 2106 | resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} 2107 | dependencies: 2108 | resolve-pkg-maps: 1.0.0 2109 | dev: true 2110 | 2111 | /glob-parent@5.1.2: 2112 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 2113 | engines: {node: '>= 6'} 2114 | dependencies: 2115 | is-glob: 4.0.3 2116 | dev: true 2117 | 2118 | /glob-parent@6.0.2: 2119 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 2120 | engines: {node: '>=10.13.0'} 2121 | dependencies: 2122 | is-glob: 4.0.3 2123 | dev: true 2124 | 2125 | /globals@11.12.0: 2126 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 2127 | engines: {node: '>=4'} 2128 | dev: true 2129 | 2130 | /globals@14.0.0: 2131 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 2132 | engines: {node: '>=18'} 2133 | dev: true 2134 | 2135 | /globalthis@1.0.4: 2136 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 2137 | engines: {node: '>= 0.4'} 2138 | dependencies: 2139 | define-properties: 1.2.1 2140 | gopd: 1.2.0 2141 | dev: true 2142 | 2143 | /globby@11.1.0: 2144 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 2145 | engines: {node: '>=10'} 2146 | dependencies: 2147 | array-union: 2.1.0 2148 | dir-glob: 3.0.1 2149 | fast-glob: 3.3.3 2150 | ignore: 5.3.2 2151 | merge2: 1.4.1 2152 | slash: 3.0.0 2153 | dev: true 2154 | 2155 | /gopd@1.2.0: 2156 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 2157 | engines: {node: '>= 0.4'} 2158 | dev: true 2159 | 2160 | /graceful-fs@4.2.11: 2161 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 2162 | dev: true 2163 | 2164 | /graphemer@1.4.0: 2165 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 2166 | dev: true 2167 | 2168 | /happy-dom@15.11.7: 2169 | resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} 2170 | engines: {node: '>=18.0.0'} 2171 | dependencies: 2172 | entities: 4.5.0 2173 | webidl-conversions: 7.0.0 2174 | whatwg-mimetype: 3.0.0 2175 | dev: true 2176 | 2177 | /has-bigints@1.1.0: 2178 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 2179 | engines: {node: '>= 0.4'} 2180 | dev: true 2181 | 2182 | /has-flag@4.0.0: 2183 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 2184 | engines: {node: '>=8'} 2185 | dev: true 2186 | 2187 | /has-property-descriptors@1.0.2: 2188 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 2189 | dependencies: 2190 | es-define-property: 1.0.1 2191 | dev: true 2192 | 2193 | /has-proto@1.2.0: 2194 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 2195 | engines: {node: '>= 0.4'} 2196 | dependencies: 2197 | dunder-proto: 1.0.1 2198 | dev: true 2199 | 2200 | /has-symbols@1.1.0: 2201 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 2202 | engines: {node: '>= 0.4'} 2203 | dev: true 2204 | 2205 | /has-tostringtag@1.0.2: 2206 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 2207 | engines: {node: '>= 0.4'} 2208 | dependencies: 2209 | has-symbols: 1.1.0 2210 | dev: true 2211 | 2212 | /hasown@2.0.2: 2213 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 2214 | engines: {node: '>= 0.4'} 2215 | dependencies: 2216 | function-bind: 1.1.2 2217 | dev: true 2218 | 2219 | /ignore@5.3.2: 2220 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 2221 | engines: {node: '>= 4'} 2222 | dev: true 2223 | 2224 | /import-fresh@3.3.1: 2225 | resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 2226 | engines: {node: '>=6'} 2227 | dependencies: 2228 | parent-module: 1.0.1 2229 | resolve-from: 4.0.0 2230 | dev: true 2231 | 2232 | /imurmurhash@0.1.4: 2233 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 2234 | engines: {node: '>=0.8.19'} 2235 | dev: true 2236 | 2237 | /internal-slot@1.1.0: 2238 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 2239 | engines: {node: '>= 0.4'} 2240 | dependencies: 2241 | es-errors: 1.3.0 2242 | hasown: 2.0.2 2243 | side-channel: 1.1.0 2244 | dev: true 2245 | 2246 | /is-array-buffer@3.0.5: 2247 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 2248 | engines: {node: '>= 0.4'} 2249 | dependencies: 2250 | call-bind: 1.0.8 2251 | call-bound: 1.0.4 2252 | get-intrinsic: 1.3.0 2253 | dev: true 2254 | 2255 | /is-async-function@2.1.1: 2256 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 2257 | engines: {node: '>= 0.4'} 2258 | dependencies: 2259 | async-function: 1.0.0 2260 | call-bound: 1.0.4 2261 | get-proto: 1.0.1 2262 | has-tostringtag: 1.0.2 2263 | safe-regex-test: 1.1.0 2264 | dev: true 2265 | 2266 | /is-bigint@1.1.0: 2267 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 2268 | engines: {node: '>= 0.4'} 2269 | dependencies: 2270 | has-bigints: 1.1.0 2271 | dev: true 2272 | 2273 | /is-binary-path@2.1.0: 2274 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 2275 | engines: {node: '>=8'} 2276 | dependencies: 2277 | binary-extensions: 2.3.0 2278 | dev: true 2279 | 2280 | /is-boolean-object@1.2.2: 2281 | resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} 2282 | engines: {node: '>= 0.4'} 2283 | dependencies: 2284 | call-bound: 1.0.4 2285 | has-tostringtag: 1.0.2 2286 | dev: true 2287 | 2288 | /is-bun-module@1.3.0: 2289 | resolution: {integrity: sha512-DgXeu5UWI0IsMQundYb5UAOzm6G2eVnarJ0byP6Tm55iZNKceD59LNPA2L4VvsScTtHcw0yEkVwSf7PC+QoLSA==} 2290 | dependencies: 2291 | semver: 7.7.1 2292 | dev: true 2293 | 2294 | /is-callable@1.2.7: 2295 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 2296 | engines: {node: '>= 0.4'} 2297 | dev: true 2298 | 2299 | /is-core-module@2.16.1: 2300 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 2301 | engines: {node: '>= 0.4'} 2302 | dependencies: 2303 | hasown: 2.0.2 2304 | dev: true 2305 | 2306 | /is-data-view@1.0.2: 2307 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 2308 | engines: {node: '>= 0.4'} 2309 | dependencies: 2310 | call-bound: 1.0.4 2311 | get-intrinsic: 1.3.0 2312 | is-typed-array: 1.1.15 2313 | dev: true 2314 | 2315 | /is-date-object@1.1.0: 2316 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 2317 | engines: {node: '>= 0.4'} 2318 | dependencies: 2319 | call-bound: 1.0.4 2320 | has-tostringtag: 1.0.2 2321 | dev: true 2322 | 2323 | /is-extglob@2.1.1: 2324 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2325 | engines: {node: '>=0.10.0'} 2326 | dev: true 2327 | 2328 | /is-finalizationregistry@1.1.1: 2329 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 2330 | engines: {node: '>= 0.4'} 2331 | dependencies: 2332 | call-bound: 1.0.4 2333 | dev: true 2334 | 2335 | /is-generator-function@1.1.0: 2336 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} 2337 | engines: {node: '>= 0.4'} 2338 | dependencies: 2339 | call-bound: 1.0.4 2340 | get-proto: 1.0.1 2341 | has-tostringtag: 1.0.2 2342 | safe-regex-test: 1.1.0 2343 | dev: true 2344 | 2345 | /is-glob@4.0.3: 2346 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2347 | engines: {node: '>=0.10.0'} 2348 | dependencies: 2349 | is-extglob: 2.1.1 2350 | dev: true 2351 | 2352 | /is-map@2.0.3: 2353 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 2354 | engines: {node: '>= 0.4'} 2355 | dev: true 2356 | 2357 | /is-number-object@1.1.1: 2358 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 2359 | engines: {node: '>= 0.4'} 2360 | dependencies: 2361 | call-bound: 1.0.4 2362 | has-tostringtag: 1.0.2 2363 | dev: true 2364 | 2365 | /is-number@7.0.0: 2366 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2367 | engines: {node: '>=0.12.0'} 2368 | dev: true 2369 | 2370 | /is-regex@1.2.1: 2371 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 2372 | engines: {node: '>= 0.4'} 2373 | dependencies: 2374 | call-bound: 1.0.4 2375 | gopd: 1.2.0 2376 | has-tostringtag: 1.0.2 2377 | hasown: 2.0.2 2378 | dev: true 2379 | 2380 | /is-set@2.0.3: 2381 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 2382 | engines: {node: '>= 0.4'} 2383 | dev: true 2384 | 2385 | /is-shared-array-buffer@1.0.4: 2386 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 2387 | engines: {node: '>= 0.4'} 2388 | dependencies: 2389 | call-bound: 1.0.4 2390 | dev: true 2391 | 2392 | /is-string@1.1.1: 2393 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 2394 | engines: {node: '>= 0.4'} 2395 | dependencies: 2396 | call-bound: 1.0.4 2397 | has-tostringtag: 1.0.2 2398 | dev: true 2399 | 2400 | /is-symbol@1.1.1: 2401 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 2402 | engines: {node: '>= 0.4'} 2403 | dependencies: 2404 | call-bound: 1.0.4 2405 | has-symbols: 1.1.0 2406 | safe-regex-test: 1.1.0 2407 | dev: true 2408 | 2409 | /is-typed-array@1.1.15: 2410 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 2411 | engines: {node: '>= 0.4'} 2412 | dependencies: 2413 | which-typed-array: 1.1.19 2414 | dev: true 2415 | 2416 | /is-weakmap@2.0.2: 2417 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 2418 | engines: {node: '>= 0.4'} 2419 | dev: true 2420 | 2421 | /is-weakref@1.1.1: 2422 | resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} 2423 | engines: {node: '>= 0.4'} 2424 | dependencies: 2425 | call-bound: 1.0.4 2426 | dev: true 2427 | 2428 | /is-weakset@2.0.4: 2429 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 2430 | engines: {node: '>= 0.4'} 2431 | dependencies: 2432 | call-bound: 1.0.4 2433 | get-intrinsic: 1.3.0 2434 | dev: true 2435 | 2436 | /isarray@2.0.5: 2437 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2438 | dev: true 2439 | 2440 | /isexe@2.0.0: 2441 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2442 | dev: true 2443 | 2444 | /jiti@2.4.2: 2445 | resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} 2446 | hasBin: true 2447 | dev: true 2448 | 2449 | /jotai@2.16.0(@babel/core@7.26.9)(@types/react@19.0.10)(react@19.0.0): 2450 | resolution: {integrity: sha512-NmkwPBet0SHQ28GBfEb10sqnbVOYyn6DL4iazZgGRDUKxSWL0iqcm+IK4TqTSFC2ixGk+XX2e46Wbv364a3cKg==} 2451 | engines: {node: '>=12.20.0'} 2452 | peerDependencies: 2453 | '@babel/core': '>=7.0.0' 2454 | '@babel/template': '>=7.0.0' 2455 | '@types/react': '>=17.0.0' 2456 | react: '>=17.0.0' 2457 | peerDependenciesMeta: 2458 | '@babel/core': 2459 | optional: true 2460 | '@babel/template': 2461 | optional: true 2462 | '@types/react': 2463 | optional: true 2464 | react: 2465 | optional: true 2466 | dependencies: 2467 | '@babel/core': 7.26.9 2468 | '@types/react': 19.0.10 2469 | react: 19.0.0 2470 | dev: true 2471 | 2472 | /js-tokens@4.0.0: 2473 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2474 | dev: true 2475 | 2476 | /js-yaml@4.1.0: 2477 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2478 | hasBin: true 2479 | dependencies: 2480 | argparse: 2.0.1 2481 | dev: true 2482 | 2483 | /jsesc@3.1.0: 2484 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 2485 | engines: {node: '>=6'} 2486 | hasBin: true 2487 | dev: true 2488 | 2489 | /json-buffer@3.0.1: 2490 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2491 | dev: true 2492 | 2493 | /json-schema-traverse@0.4.1: 2494 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2495 | dev: true 2496 | 2497 | /json-stable-stringify-without-jsonify@1.0.1: 2498 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2499 | dev: true 2500 | 2501 | /json5@1.0.2: 2502 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2503 | hasBin: true 2504 | dependencies: 2505 | minimist: 1.2.8 2506 | dev: true 2507 | 2508 | /json5@2.2.3: 2509 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 2510 | engines: {node: '>=6'} 2511 | hasBin: true 2512 | dev: true 2513 | 2514 | /keyv@4.5.4: 2515 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2516 | dependencies: 2517 | json-buffer: 3.0.1 2518 | dev: true 2519 | 2520 | /levn@0.4.1: 2521 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2522 | engines: {node: '>= 0.8.0'} 2523 | dependencies: 2524 | prelude-ls: 1.2.1 2525 | type-check: 0.4.0 2526 | dev: true 2527 | 2528 | /locate-path@6.0.0: 2529 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2530 | engines: {node: '>=10'} 2531 | dependencies: 2532 | p-locate: 5.0.0 2533 | dev: true 2534 | 2535 | /lodash.merge@4.6.2: 2536 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2537 | dev: true 2538 | 2539 | /loupe@3.1.3: 2540 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 2541 | dev: true 2542 | 2543 | /lru-cache@5.1.1: 2544 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 2545 | dependencies: 2546 | yallist: 3.1.1 2547 | dev: true 2548 | 2549 | /lz-string@1.5.0: 2550 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 2551 | hasBin: true 2552 | dev: true 2553 | 2554 | /magic-string@0.30.17: 2555 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 2556 | dependencies: 2557 | '@jridgewell/sourcemap-codec': 1.5.0 2558 | dev: true 2559 | 2560 | /math-intrinsics@1.1.0: 2561 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 2562 | engines: {node: '>= 0.4'} 2563 | dev: true 2564 | 2565 | /merge2@1.4.1: 2566 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2567 | engines: {node: '>= 8'} 2568 | dev: true 2569 | 2570 | /micromatch@4.0.8: 2571 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 2572 | engines: {node: '>=8.6'} 2573 | dependencies: 2574 | braces: 3.0.3 2575 | picomatch: 2.3.1 2576 | dev: true 2577 | 2578 | /minimatch@3.1.2: 2579 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2580 | dependencies: 2581 | brace-expansion: 1.1.11 2582 | dev: true 2583 | 2584 | /minimatch@9.0.5: 2585 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 2586 | engines: {node: '>=16 || 14 >=14.17'} 2587 | dependencies: 2588 | brace-expansion: 2.0.1 2589 | dev: true 2590 | 2591 | /minimist@1.2.8: 2592 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2593 | dev: true 2594 | 2595 | /ms@2.1.3: 2596 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2597 | dev: true 2598 | 2599 | /mylas@2.1.13: 2600 | resolution: {integrity: sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==} 2601 | engines: {node: '>=12.0.0'} 2602 | dev: true 2603 | 2604 | /nanoid@3.3.9: 2605 | resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} 2606 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2607 | hasBin: true 2608 | dev: true 2609 | 2610 | /natural-compare@1.4.0: 2611 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2612 | dev: true 2613 | 2614 | /node-releases@2.0.19: 2615 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 2616 | dev: true 2617 | 2618 | /normalize-path@3.0.0: 2619 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2620 | engines: {node: '>=0.10.0'} 2621 | dev: true 2622 | 2623 | /object-inspect@1.13.4: 2624 | resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 2625 | engines: {node: '>= 0.4'} 2626 | dev: true 2627 | 2628 | /object-keys@1.1.1: 2629 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2630 | engines: {node: '>= 0.4'} 2631 | dev: true 2632 | 2633 | /object.assign@4.1.7: 2634 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 2635 | engines: {node: '>= 0.4'} 2636 | dependencies: 2637 | call-bind: 1.0.8 2638 | call-bound: 1.0.4 2639 | define-properties: 1.2.1 2640 | es-object-atoms: 1.1.1 2641 | has-symbols: 1.1.0 2642 | object-keys: 1.1.1 2643 | dev: true 2644 | 2645 | /object.fromentries@2.0.8: 2646 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 2647 | engines: {node: '>= 0.4'} 2648 | dependencies: 2649 | call-bind: 1.0.8 2650 | define-properties: 1.2.1 2651 | es-abstract: 1.23.9 2652 | es-object-atoms: 1.1.1 2653 | dev: true 2654 | 2655 | /object.groupby@1.0.3: 2656 | resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} 2657 | engines: {node: '>= 0.4'} 2658 | dependencies: 2659 | call-bind: 1.0.8 2660 | define-properties: 1.2.1 2661 | es-abstract: 1.23.9 2662 | dev: true 2663 | 2664 | /object.values@1.2.1: 2665 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} 2666 | engines: {node: '>= 0.4'} 2667 | dependencies: 2668 | call-bind: 1.0.8 2669 | call-bound: 1.0.4 2670 | define-properties: 1.2.1 2671 | es-object-atoms: 1.1.1 2672 | dev: true 2673 | 2674 | /optionator@0.9.4: 2675 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 2676 | engines: {node: '>= 0.8.0'} 2677 | dependencies: 2678 | deep-is: 0.1.4 2679 | fast-levenshtein: 2.0.6 2680 | levn: 0.4.1 2681 | prelude-ls: 1.2.1 2682 | type-check: 0.4.0 2683 | word-wrap: 1.2.5 2684 | dev: true 2685 | 2686 | /own-keys@1.0.1: 2687 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 2688 | engines: {node: '>= 0.4'} 2689 | dependencies: 2690 | get-intrinsic: 1.3.0 2691 | object-keys: 1.1.1 2692 | safe-push-apply: 1.0.0 2693 | dev: true 2694 | 2695 | /p-limit@3.1.0: 2696 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2697 | engines: {node: '>=10'} 2698 | dependencies: 2699 | yocto-queue: 0.1.0 2700 | dev: true 2701 | 2702 | /p-locate@5.0.0: 2703 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2704 | engines: {node: '>=10'} 2705 | dependencies: 2706 | p-limit: 3.1.0 2707 | dev: true 2708 | 2709 | /parent-module@1.0.1: 2710 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2711 | engines: {node: '>=6'} 2712 | dependencies: 2713 | callsites: 3.1.0 2714 | dev: true 2715 | 2716 | /path-exists@4.0.0: 2717 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2718 | engines: {node: '>=8'} 2719 | dev: true 2720 | 2721 | /path-key@3.1.1: 2722 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2723 | engines: {node: '>=8'} 2724 | dev: true 2725 | 2726 | /path-parse@1.0.7: 2727 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2728 | dev: true 2729 | 2730 | /path-type@4.0.0: 2731 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2732 | engines: {node: '>=8'} 2733 | dev: true 2734 | 2735 | /pathe@2.0.3: 2736 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 2737 | dev: true 2738 | 2739 | /pathval@2.0.0: 2740 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 2741 | engines: {node: '>= 14.16'} 2742 | dev: true 2743 | 2744 | /picocolors@1.1.1: 2745 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2746 | dev: true 2747 | 2748 | /picomatch@2.3.1: 2749 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2750 | engines: {node: '>=8.6'} 2751 | dev: true 2752 | 2753 | /picomatch@4.0.2: 2754 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 2755 | engines: {node: '>=12'} 2756 | dev: true 2757 | 2758 | /plimit-lit@1.6.1: 2759 | resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} 2760 | engines: {node: '>=12'} 2761 | dependencies: 2762 | queue-lit: 1.5.2 2763 | dev: true 2764 | 2765 | /possible-typed-array-names@1.1.0: 2766 | resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} 2767 | engines: {node: '>= 0.4'} 2768 | dev: true 2769 | 2770 | /postcss@8.5.3: 2771 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 2772 | engines: {node: ^10 || ^12 || >=14} 2773 | dependencies: 2774 | nanoid: 3.3.9 2775 | picocolors: 1.1.1 2776 | source-map-js: 1.2.1 2777 | dev: true 2778 | 2779 | /prelude-ls@1.2.1: 2780 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2781 | engines: {node: '>= 0.8.0'} 2782 | dev: true 2783 | 2784 | /prettier-linter-helpers@1.0.0: 2785 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2786 | engines: {node: '>=6.0.0'} 2787 | dependencies: 2788 | fast-diff: 1.3.0 2789 | dev: true 2790 | 2791 | /prettier@3.5.3: 2792 | resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 2793 | engines: {node: '>=14'} 2794 | hasBin: true 2795 | dev: true 2796 | 2797 | /pretty-format@27.5.1: 2798 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 2799 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 2800 | dependencies: 2801 | ansi-regex: 5.0.1 2802 | ansi-styles: 5.2.0 2803 | react-is: 17.0.2 2804 | dev: true 2805 | 2806 | /punycode@2.3.1: 2807 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2808 | engines: {node: '>=6'} 2809 | dev: true 2810 | 2811 | /queue-lit@1.5.2: 2812 | resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} 2813 | engines: {node: '>=12'} 2814 | dev: true 2815 | 2816 | /queue-microtask@1.2.3: 2817 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2818 | dev: true 2819 | 2820 | /react-dom@19.0.0(react@19.0.0): 2821 | resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} 2822 | peerDependencies: 2823 | react: ^19.0.0 2824 | dependencies: 2825 | react: 19.0.0 2826 | scheduler: 0.25.0 2827 | dev: true 2828 | 2829 | /react-error-boundary@4.1.2(react@19.0.0): 2830 | resolution: {integrity: sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag==} 2831 | peerDependencies: 2832 | react: '>=16.13.1' 2833 | dependencies: 2834 | '@babel/runtime': 7.26.9 2835 | react: 19.0.0 2836 | dev: true 2837 | 2838 | /react-is@17.0.2: 2839 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 2840 | dev: true 2841 | 2842 | /react-refresh@0.14.2: 2843 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 2844 | engines: {node: '>=0.10.0'} 2845 | dev: true 2846 | 2847 | /react@19.0.0: 2848 | resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} 2849 | engines: {node: '>=0.10.0'} 2850 | dev: true 2851 | 2852 | /readdirp@3.6.0: 2853 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2854 | engines: {node: '>=8.10.0'} 2855 | dependencies: 2856 | picomatch: 2.3.1 2857 | dev: true 2858 | 2859 | /reflect.getprototypeof@1.0.10: 2860 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 2861 | engines: {node: '>= 0.4'} 2862 | dependencies: 2863 | call-bind: 1.0.8 2864 | define-properties: 1.2.1 2865 | es-abstract: 1.23.9 2866 | es-errors: 1.3.0 2867 | es-object-atoms: 1.1.1 2868 | get-intrinsic: 1.3.0 2869 | get-proto: 1.0.1 2870 | which-builtin-type: 1.2.1 2871 | dev: true 2872 | 2873 | /regenerator-runtime@0.14.1: 2874 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2875 | dev: true 2876 | 2877 | /regexp.prototype.flags@1.5.4: 2878 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 2879 | engines: {node: '>= 0.4'} 2880 | dependencies: 2881 | call-bind: 1.0.8 2882 | define-properties: 1.2.1 2883 | es-errors: 1.3.0 2884 | get-proto: 1.0.1 2885 | gopd: 1.2.0 2886 | set-function-name: 2.0.2 2887 | dev: true 2888 | 2889 | /resolve-from@4.0.0: 2890 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2891 | engines: {node: '>=4'} 2892 | dev: true 2893 | 2894 | /resolve-pkg-maps@1.0.0: 2895 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2896 | dev: true 2897 | 2898 | /resolve@1.22.10: 2899 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 2900 | engines: {node: '>= 0.4'} 2901 | hasBin: true 2902 | dependencies: 2903 | is-core-module: 2.16.1 2904 | path-parse: 1.0.7 2905 | supports-preserve-symlinks-flag: 1.0.0 2906 | dev: true 2907 | 2908 | /reusify@1.1.0: 2909 | resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 2910 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2911 | dev: true 2912 | 2913 | /rollup@4.35.0: 2914 | resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} 2915 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2916 | hasBin: true 2917 | dependencies: 2918 | '@types/estree': 1.0.6 2919 | optionalDependencies: 2920 | '@rollup/rollup-android-arm-eabi': 4.35.0 2921 | '@rollup/rollup-android-arm64': 4.35.0 2922 | '@rollup/rollup-darwin-arm64': 4.35.0 2923 | '@rollup/rollup-darwin-x64': 4.35.0 2924 | '@rollup/rollup-freebsd-arm64': 4.35.0 2925 | '@rollup/rollup-freebsd-x64': 4.35.0 2926 | '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 2927 | '@rollup/rollup-linux-arm-musleabihf': 4.35.0 2928 | '@rollup/rollup-linux-arm64-gnu': 4.35.0 2929 | '@rollup/rollup-linux-arm64-musl': 4.35.0 2930 | '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 2931 | '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 2932 | '@rollup/rollup-linux-riscv64-gnu': 4.35.0 2933 | '@rollup/rollup-linux-s390x-gnu': 4.35.0 2934 | '@rollup/rollup-linux-x64-gnu': 4.35.0 2935 | '@rollup/rollup-linux-x64-musl': 4.35.0 2936 | '@rollup/rollup-win32-arm64-msvc': 4.35.0 2937 | '@rollup/rollup-win32-ia32-msvc': 4.35.0 2938 | '@rollup/rollup-win32-x64-msvc': 4.35.0 2939 | fsevents: 2.3.3 2940 | dev: true 2941 | 2942 | /run-parallel@1.2.0: 2943 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2944 | dependencies: 2945 | queue-microtask: 1.2.3 2946 | dev: true 2947 | 2948 | /safe-array-concat@1.1.3: 2949 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 2950 | engines: {node: '>=0.4'} 2951 | dependencies: 2952 | call-bind: 1.0.8 2953 | call-bound: 1.0.4 2954 | get-intrinsic: 1.3.0 2955 | has-symbols: 1.1.0 2956 | isarray: 2.0.5 2957 | dev: true 2958 | 2959 | /safe-push-apply@1.0.0: 2960 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 2961 | engines: {node: '>= 0.4'} 2962 | dependencies: 2963 | es-errors: 1.3.0 2964 | isarray: 2.0.5 2965 | dev: true 2966 | 2967 | /safe-regex-test@1.1.0: 2968 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 2969 | engines: {node: '>= 0.4'} 2970 | dependencies: 2971 | call-bound: 1.0.4 2972 | es-errors: 1.3.0 2973 | is-regex: 1.2.1 2974 | dev: true 2975 | 2976 | /scheduler@0.25.0: 2977 | resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} 2978 | dev: true 2979 | 2980 | /semver@6.3.1: 2981 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2982 | hasBin: true 2983 | dev: true 2984 | 2985 | /semver@7.7.1: 2986 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 2987 | engines: {node: '>=10'} 2988 | hasBin: true 2989 | dev: true 2990 | 2991 | /set-function-length@1.2.2: 2992 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 2993 | engines: {node: '>= 0.4'} 2994 | dependencies: 2995 | define-data-property: 1.1.4 2996 | es-errors: 1.3.0 2997 | function-bind: 1.1.2 2998 | get-intrinsic: 1.3.0 2999 | gopd: 1.2.0 3000 | has-property-descriptors: 1.0.2 3001 | dev: true 3002 | 3003 | /set-function-name@2.0.2: 3004 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 3005 | engines: {node: '>= 0.4'} 3006 | dependencies: 3007 | define-data-property: 1.1.4 3008 | es-errors: 1.3.0 3009 | functions-have-names: 1.2.3 3010 | has-property-descriptors: 1.0.2 3011 | dev: true 3012 | 3013 | /set-proto@1.0.0: 3014 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 3015 | engines: {node: '>= 0.4'} 3016 | dependencies: 3017 | dunder-proto: 1.0.1 3018 | es-errors: 1.3.0 3019 | es-object-atoms: 1.1.1 3020 | dev: true 3021 | 3022 | /shebang-command@2.0.0: 3023 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3024 | engines: {node: '>=8'} 3025 | dependencies: 3026 | shebang-regex: 3.0.0 3027 | dev: true 3028 | 3029 | /shebang-regex@3.0.0: 3030 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3031 | engines: {node: '>=8'} 3032 | dev: true 3033 | 3034 | /side-channel-list@1.0.0: 3035 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 3036 | engines: {node: '>= 0.4'} 3037 | dependencies: 3038 | es-errors: 1.3.0 3039 | object-inspect: 1.13.4 3040 | dev: true 3041 | 3042 | /side-channel-map@1.0.1: 3043 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 3044 | engines: {node: '>= 0.4'} 3045 | dependencies: 3046 | call-bound: 1.0.4 3047 | es-errors: 1.3.0 3048 | get-intrinsic: 1.3.0 3049 | object-inspect: 1.13.4 3050 | dev: true 3051 | 3052 | /side-channel-weakmap@1.0.2: 3053 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 3054 | engines: {node: '>= 0.4'} 3055 | dependencies: 3056 | call-bound: 1.0.4 3057 | es-errors: 1.3.0 3058 | get-intrinsic: 1.3.0 3059 | object-inspect: 1.13.4 3060 | side-channel-map: 1.0.1 3061 | dev: true 3062 | 3063 | /side-channel@1.1.0: 3064 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 3065 | engines: {node: '>= 0.4'} 3066 | dependencies: 3067 | es-errors: 1.3.0 3068 | object-inspect: 1.13.4 3069 | side-channel-list: 1.0.0 3070 | side-channel-map: 1.0.1 3071 | side-channel-weakmap: 1.0.2 3072 | dev: true 3073 | 3074 | /siginfo@2.0.0: 3075 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 3076 | dev: true 3077 | 3078 | /slash@3.0.0: 3079 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3080 | engines: {node: '>=8'} 3081 | dev: true 3082 | 3083 | /source-map-js@1.2.1: 3084 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 3085 | engines: {node: '>=0.10.0'} 3086 | dev: true 3087 | 3088 | /stable-hash@0.0.4: 3089 | resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} 3090 | dev: true 3091 | 3092 | /stackback@0.0.2: 3093 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 3094 | dev: true 3095 | 3096 | /std-env@3.8.1: 3097 | resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} 3098 | dev: true 3099 | 3100 | /string.prototype.trim@1.2.10: 3101 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 3102 | engines: {node: '>= 0.4'} 3103 | dependencies: 3104 | call-bind: 1.0.8 3105 | call-bound: 1.0.4 3106 | define-data-property: 1.1.4 3107 | define-properties: 1.2.1 3108 | es-abstract: 1.23.9 3109 | es-object-atoms: 1.1.1 3110 | has-property-descriptors: 1.0.2 3111 | dev: true 3112 | 3113 | /string.prototype.trimend@1.0.9: 3114 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 3115 | engines: {node: '>= 0.4'} 3116 | dependencies: 3117 | call-bind: 1.0.8 3118 | call-bound: 1.0.4 3119 | define-properties: 1.2.1 3120 | es-object-atoms: 1.1.1 3121 | dev: true 3122 | 3123 | /string.prototype.trimstart@1.0.8: 3124 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 3125 | engines: {node: '>= 0.4'} 3126 | dependencies: 3127 | call-bind: 1.0.8 3128 | define-properties: 1.2.1 3129 | es-object-atoms: 1.1.1 3130 | dev: true 3131 | 3132 | /strip-bom@3.0.0: 3133 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3134 | engines: {node: '>=4'} 3135 | dev: true 3136 | 3137 | /strip-json-comments@3.1.1: 3138 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3139 | engines: {node: '>=8'} 3140 | dev: true 3141 | 3142 | /supports-color@7.2.0: 3143 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3144 | engines: {node: '>=8'} 3145 | dependencies: 3146 | has-flag: 4.0.0 3147 | dev: true 3148 | 3149 | /supports-preserve-symlinks-flag@1.0.0: 3150 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3151 | engines: {node: '>= 0.4'} 3152 | dev: true 3153 | 3154 | /synckit@0.9.2: 3155 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 3156 | engines: {node: ^14.18.0 || >=16.0.0} 3157 | dependencies: 3158 | '@pkgr/core': 0.1.1 3159 | tslib: 2.8.1 3160 | dev: true 3161 | 3162 | /tapable@2.2.1: 3163 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3164 | engines: {node: '>=6'} 3165 | dev: true 3166 | 3167 | /tinybench@2.9.0: 3168 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 3169 | dev: true 3170 | 3171 | /tinyexec@0.3.2: 3172 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 3173 | dev: true 3174 | 3175 | /tinyglobby@0.2.12: 3176 | resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} 3177 | engines: {node: '>=12.0.0'} 3178 | dependencies: 3179 | fdir: 6.4.3(picomatch@4.0.2) 3180 | picomatch: 4.0.2 3181 | dev: true 3182 | 3183 | /tinypool@1.0.2: 3184 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 3185 | engines: {node: ^18.0.0 || >=20.0.0} 3186 | dev: true 3187 | 3188 | /tinyrainbow@2.0.0: 3189 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 3190 | engines: {node: '>=14.0.0'} 3191 | dev: true 3192 | 3193 | /tinyspy@3.0.2: 3194 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 3195 | engines: {node: '>=14.0.0'} 3196 | dev: true 3197 | 3198 | /to-regex-range@5.0.1: 3199 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3200 | engines: {node: '>=8.0'} 3201 | dependencies: 3202 | is-number: 7.0.0 3203 | dev: true 3204 | 3205 | /ts-api-utils@2.0.1(typescript@5.8.2): 3206 | resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} 3207 | engines: {node: '>=18.12'} 3208 | peerDependencies: 3209 | typescript: '>=4.8.4' 3210 | dependencies: 3211 | typescript: 5.8.2 3212 | dev: true 3213 | 3214 | /tsc-alias@1.8.16: 3215 | resolution: {integrity: sha512-QjCyu55NFyRSBAl6+MTFwplpFcnm2Pq01rR/uxfqJoLMm6X3O14KEGtaSDZpJYaE1bJBGDjD0eSuiIWPe2T58g==} 3216 | engines: {node: '>=16.20.2'} 3217 | hasBin: true 3218 | dependencies: 3219 | chokidar: 3.6.0 3220 | commander: 9.5.0 3221 | get-tsconfig: 4.10.0 3222 | globby: 11.1.0 3223 | mylas: 2.1.13 3224 | normalize-path: 3.0.0 3225 | plimit-lit: 1.6.1 3226 | dev: true 3227 | 3228 | /tsconfig-paths@3.15.0: 3229 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 3230 | dependencies: 3231 | '@types/json5': 0.0.29 3232 | json5: 1.0.2 3233 | minimist: 1.2.8 3234 | strip-bom: 3.0.0 3235 | dev: true 3236 | 3237 | /tslib@2.8.1: 3238 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 3239 | dev: true 3240 | 3241 | /type-check@0.4.0: 3242 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3243 | engines: {node: '>= 0.8.0'} 3244 | dependencies: 3245 | prelude-ls: 1.2.1 3246 | dev: true 3247 | 3248 | /typed-array-buffer@1.0.3: 3249 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 3250 | engines: {node: '>= 0.4'} 3251 | dependencies: 3252 | call-bound: 1.0.4 3253 | es-errors: 1.3.0 3254 | is-typed-array: 1.1.15 3255 | dev: true 3256 | 3257 | /typed-array-byte-length@1.0.3: 3258 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 3259 | engines: {node: '>= 0.4'} 3260 | dependencies: 3261 | call-bind: 1.0.8 3262 | for-each: 0.3.5 3263 | gopd: 1.2.0 3264 | has-proto: 1.2.0 3265 | is-typed-array: 1.1.15 3266 | dev: true 3267 | 3268 | /typed-array-byte-offset@1.0.4: 3269 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 3270 | engines: {node: '>= 0.4'} 3271 | dependencies: 3272 | available-typed-arrays: 1.0.7 3273 | call-bind: 1.0.8 3274 | for-each: 0.3.5 3275 | gopd: 1.2.0 3276 | has-proto: 1.2.0 3277 | is-typed-array: 1.1.15 3278 | reflect.getprototypeof: 1.0.10 3279 | dev: true 3280 | 3281 | /typed-array-length@1.0.7: 3282 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 3283 | engines: {node: '>= 0.4'} 3284 | dependencies: 3285 | call-bind: 1.0.8 3286 | for-each: 0.3.5 3287 | gopd: 1.2.0 3288 | is-typed-array: 1.1.15 3289 | possible-typed-array-names: 1.1.0 3290 | reflect.getprototypeof: 1.0.10 3291 | dev: true 3292 | 3293 | /typescript-eslint@8.26.1(eslint@9.22.0)(typescript@5.8.2): 3294 | resolution: {integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==} 3295 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 3296 | peerDependencies: 3297 | eslint: ^8.57.0 || ^9.0.0 3298 | typescript: '>=4.8.4 <5.9.0' 3299 | dependencies: 3300 | '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1)(eslint@9.22.0)(typescript@5.8.2) 3301 | '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 3302 | '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) 3303 | eslint: 9.22.0(jiti@2.4.2) 3304 | typescript: 5.8.2 3305 | transitivePeerDependencies: 3306 | - supports-color 3307 | dev: true 3308 | 3309 | /typescript@5.8.2: 3310 | resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} 3311 | engines: {node: '>=14.17'} 3312 | hasBin: true 3313 | dev: true 3314 | 3315 | /unbox-primitive@1.1.0: 3316 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 3317 | engines: {node: '>= 0.4'} 3318 | dependencies: 3319 | call-bound: 1.0.4 3320 | has-bigints: 1.1.0 3321 | has-symbols: 1.1.0 3322 | which-boxed-primitive: 1.1.1 3323 | dev: true 3324 | 3325 | /undici-types@6.20.0: 3326 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 3327 | dev: true 3328 | 3329 | /update-browserslist-db@1.1.3(browserslist@4.24.4): 3330 | resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 3331 | hasBin: true 3332 | peerDependencies: 3333 | browserslist: '>= 4.21.0' 3334 | dependencies: 3335 | browserslist: 4.24.4 3336 | escalade: 3.2.0 3337 | picocolors: 1.1.1 3338 | dev: true 3339 | 3340 | /uri-js@4.4.1: 3341 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3342 | dependencies: 3343 | punycode: 2.3.1 3344 | dev: true 3345 | 3346 | /vite-node@3.0.8(@types/node@22.13.10)(jiti@2.4.2): 3347 | resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} 3348 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 3349 | hasBin: true 3350 | dependencies: 3351 | cac: 6.7.14 3352 | debug: 4.4.0 3353 | es-module-lexer: 1.6.0 3354 | pathe: 2.0.3 3355 | vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2) 3356 | transitivePeerDependencies: 3357 | - '@types/node' 3358 | - jiti 3359 | - less 3360 | - lightningcss 3361 | - sass 3362 | - sass-embedded 3363 | - stylus 3364 | - sugarss 3365 | - supports-color 3366 | - terser 3367 | - tsx 3368 | - yaml 3369 | dev: true 3370 | 3371 | /vite@6.2.1(@types/node@22.13.10)(jiti@2.4.2): 3372 | resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==} 3373 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 3374 | hasBin: true 3375 | peerDependencies: 3376 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 3377 | jiti: '>=1.21.0' 3378 | less: '*' 3379 | lightningcss: ^1.21.0 3380 | sass: '*' 3381 | sass-embedded: '*' 3382 | stylus: '*' 3383 | sugarss: '*' 3384 | terser: ^5.16.0 3385 | tsx: ^4.8.1 3386 | yaml: ^2.4.2 3387 | peerDependenciesMeta: 3388 | '@types/node': 3389 | optional: true 3390 | jiti: 3391 | optional: true 3392 | less: 3393 | optional: true 3394 | lightningcss: 3395 | optional: true 3396 | sass: 3397 | optional: true 3398 | sass-embedded: 3399 | optional: true 3400 | stylus: 3401 | optional: true 3402 | sugarss: 3403 | optional: true 3404 | terser: 3405 | optional: true 3406 | tsx: 3407 | optional: true 3408 | yaml: 3409 | optional: true 3410 | dependencies: 3411 | '@types/node': 22.13.10 3412 | esbuild: 0.25.1 3413 | jiti: 2.4.2 3414 | postcss: 8.5.3 3415 | rollup: 4.35.0 3416 | optionalDependencies: 3417 | fsevents: 2.3.3 3418 | dev: true 3419 | 3420 | /vitest@3.0.8(@types/node@22.13.10)(happy-dom@15.11.7)(jiti@2.4.2): 3421 | resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} 3422 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 3423 | hasBin: true 3424 | peerDependencies: 3425 | '@edge-runtime/vm': '*' 3426 | '@types/debug': ^4.1.12 3427 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 3428 | '@vitest/browser': 3.0.8 3429 | '@vitest/ui': 3.0.8 3430 | happy-dom: '*' 3431 | jsdom: '*' 3432 | peerDependenciesMeta: 3433 | '@edge-runtime/vm': 3434 | optional: true 3435 | '@types/debug': 3436 | optional: true 3437 | '@types/node': 3438 | optional: true 3439 | '@vitest/browser': 3440 | optional: true 3441 | '@vitest/ui': 3442 | optional: true 3443 | happy-dom: 3444 | optional: true 3445 | jsdom: 3446 | optional: true 3447 | dependencies: 3448 | '@types/node': 22.13.10 3449 | '@vitest/expect': 3.0.8 3450 | '@vitest/mocker': 3.0.8(vite@6.2.1) 3451 | '@vitest/pretty-format': 3.0.8 3452 | '@vitest/runner': 3.0.8 3453 | '@vitest/snapshot': 3.0.8 3454 | '@vitest/spy': 3.0.8 3455 | '@vitest/utils': 3.0.8 3456 | chai: 5.2.0 3457 | debug: 4.4.0 3458 | expect-type: 1.2.0 3459 | happy-dom: 15.11.7 3460 | magic-string: 0.30.17 3461 | pathe: 2.0.3 3462 | std-env: 3.8.1 3463 | tinybench: 2.9.0 3464 | tinyexec: 0.3.2 3465 | tinypool: 1.0.2 3466 | tinyrainbow: 2.0.0 3467 | vite: 6.2.1(@types/node@22.13.10)(jiti@2.4.2) 3468 | vite-node: 3.0.8(@types/node@22.13.10)(jiti@2.4.2) 3469 | why-is-node-running: 2.3.0 3470 | transitivePeerDependencies: 3471 | - jiti 3472 | - less 3473 | - lightningcss 3474 | - msw 3475 | - sass 3476 | - sass-embedded 3477 | - stylus 3478 | - sugarss 3479 | - supports-color 3480 | - terser 3481 | - tsx 3482 | - yaml 3483 | dev: true 3484 | 3485 | /webidl-conversions@7.0.0: 3486 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 3487 | engines: {node: '>=12'} 3488 | dev: true 3489 | 3490 | /whatwg-mimetype@3.0.0: 3491 | resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} 3492 | engines: {node: '>=12'} 3493 | dev: true 3494 | 3495 | /which-boxed-primitive@1.1.1: 3496 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 3497 | engines: {node: '>= 0.4'} 3498 | dependencies: 3499 | is-bigint: 1.1.0 3500 | is-boolean-object: 1.2.2 3501 | is-number-object: 1.1.1 3502 | is-string: 1.1.1 3503 | is-symbol: 1.1.1 3504 | dev: true 3505 | 3506 | /which-builtin-type@1.2.1: 3507 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 3508 | engines: {node: '>= 0.4'} 3509 | dependencies: 3510 | call-bound: 1.0.4 3511 | function.prototype.name: 1.1.8 3512 | has-tostringtag: 1.0.2 3513 | is-async-function: 2.1.1 3514 | is-date-object: 1.1.0 3515 | is-finalizationregistry: 1.1.1 3516 | is-generator-function: 1.1.0 3517 | is-regex: 1.2.1 3518 | is-weakref: 1.1.1 3519 | isarray: 2.0.5 3520 | which-boxed-primitive: 1.1.1 3521 | which-collection: 1.0.2 3522 | which-typed-array: 1.1.19 3523 | dev: true 3524 | 3525 | /which-collection@1.0.2: 3526 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 3527 | engines: {node: '>= 0.4'} 3528 | dependencies: 3529 | is-map: 2.0.3 3530 | is-set: 2.0.3 3531 | is-weakmap: 2.0.2 3532 | is-weakset: 2.0.4 3533 | dev: true 3534 | 3535 | /which-typed-array@1.1.19: 3536 | resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} 3537 | engines: {node: '>= 0.4'} 3538 | dependencies: 3539 | available-typed-arrays: 1.0.7 3540 | call-bind: 1.0.8 3541 | call-bound: 1.0.4 3542 | for-each: 0.3.5 3543 | get-proto: 1.0.1 3544 | gopd: 1.2.0 3545 | has-tostringtag: 1.0.2 3546 | dev: true 3547 | 3548 | /which@2.0.2: 3549 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3550 | engines: {node: '>= 8'} 3551 | hasBin: true 3552 | dependencies: 3553 | isexe: 2.0.0 3554 | dev: true 3555 | 3556 | /why-is-node-running@2.3.0: 3557 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 3558 | engines: {node: '>=8'} 3559 | hasBin: true 3560 | dependencies: 3561 | siginfo: 2.0.0 3562 | stackback: 0.0.2 3563 | dev: true 3564 | 3565 | /word-wrap@1.2.5: 3566 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 3567 | engines: {node: '>=0.10.0'} 3568 | dev: true 3569 | 3570 | /yallist@3.1.1: 3571 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 3572 | dev: true 3573 | 3574 | /yocto-queue@0.1.0: 3575 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3576 | engines: {node: '>=10'} 3577 | dev: true 3578 | --------------------------------------------------------------------------------