├── .gitignore ├── .prettierrc ├── README.md ├── eslint.config.js ├── package.json ├── pnpm-lock.yaml ├── src ├── __tests__ │ └── context.test.tsx ├── create-context.tsx ├── hooks.ts ├── index.ts ├── test │ ├── setup.ts │ └── vitest.d.ts ├── types.ts └── utils.ts ├── tsconfig.json ├── tsup.config.ts └── vitest.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | .DS_Store -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "bracketSpacing": true, 4 | "embeddedLanguageFormatting": "auto", 5 | "htmlWhitespaceSensitivity": "css", 6 | "insertPragma": false, 7 | "jsxBracketSameLine": false, 8 | "jsxSingleQuote": false, 9 | "printWidth": 80, 10 | "proseWrap": "preserve", 11 | "quoteProps": "as-needed", 12 | "requirePragma": false, 13 | "semi": false, 14 | "singleQuote": true, 15 | "tabWidth": 2, 16 | "trailingComma": "es5", 17 | "useTabs": false, 18 | "vueIndentScriptAndStyle": false 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React Context Selector 2 | 3 | A lightweight (< 1kb gzipped) library for efficient React Context updates using selectors. Only re-render components when the data they actually use changes. 4 | 5 | ## Installation 6 | 7 | ```bash 8 | npm install @tigerabrodioss/react-context-selector 9 | # or 10 | pnpm add @tigerabrodioss/react-context-selector 11 | # or 12 | yarn add @tigerabrodioss/react-context-selector 13 | ``` 14 | 15 | ## Quick start 16 | 17 | ```js 18 | // 1. Create a context 19 | const [CounterContext, Provider] = createSelectContext({ 20 | count: 0, 21 | name: 'Tiger', 22 | }) 23 | 24 | // 2. Set up the provider 25 | function App() { 26 | return ( 27 | 28 | 29 | 30 | ) 31 | } 32 | 33 | // 3. Use the context with a selector inside a component 34 | const count = useContextSelector(CounterContext, (state) => state.count) 35 | 36 | // 4. Update the state inside a component 37 | const setState = useContextSetState(CounterContext) 38 | setState((state) => ({ ...state, count: state.count + 1 })) 39 | ``` 40 | 41 | ## Usage 42 | 43 | ```tsx 44 | type Todo = { 45 | id: string 46 | text: string 47 | completed: boolean 48 | } 49 | 50 | type Filters = { 51 | status: 'all' | 'active' | 'completed' 52 | } 53 | 54 | type State = { 55 | todos: Array 56 | filters: Filters 57 | } 58 | 59 | // 1. Create a context with your state type 60 | const [TodoContext, TodoProvider] = createSelectContext({ 61 | todos: [], 62 | filters: { status: 'all' }, 63 | }) 64 | 65 | // 2. Set up the provider 66 | function App() { 67 | return ( 68 | 69 | 70 | 71 | 72 | ) 73 | } 74 | 75 | // 3. Use selectors in your components 76 | function TodoList() { 77 | // Only re-renders when todos change! 78 | const todos = useContextSelector(TodoContext, (state) => state.todos) 79 | const setState = useContextSetState(TodoContext) 80 | 81 | return ( 82 | 101 | ) 102 | } 103 | 104 | function FilterPanel() { 105 | // Only re-renders when filters change! 106 | const filters = useContextSelector(TodoContext, (state) => state.filters) 107 | const setState = useContextSetState(TodoContext) 108 | 109 | return ( 110 | 125 | ) 126 | } 127 | ``` 128 | 129 | ## Key Features 130 | 131 | - 🎯 Selective Re-rendering: Components only re-render when their selected data changes 132 | - 💡 Type-safe: Full TypeScript support 133 | - 🪶 Lightweight: < 1kb gzipped (no dependencies!) 134 | - 🔍 Debug Mode: Optional debugging to track state updates 135 | 136 | ## Debug Mode 137 | 138 | This enables logging to the console when the state changes. You enable debug option per selector. Debugging is only enabled in development mode. 139 | 140 | ```tsx 141 | const filters = useContextSelector(TodoContext, (state) => state.filters, { 142 | debug: { 143 | enabled: true, 144 | name: 'Filters', 145 | }, 146 | }) 147 | ``` 148 | 149 | If enabled, `name` is required. This is used to identify the selector in the console. 150 | 151 | ## Custom compare function 152 | 153 | You can pass a custom compare function to control when re-renders happen. This is useful for complex comparisons or performance optimization. The default compare function is [Object.is](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). 154 | 155 | ```tsx 156 | // Only re-render if the number of completed todos changes 157 | const completedCount = useContextSelector( 158 | TodoContext, 159 | (state) => state.todos.filter((t) => t.completed).length, 160 | { 161 | compare: (prev, next) => prev === next, 162 | } 163 | ) 164 | 165 | // Or for array comparison 166 | const todos = useContextSelector(TodoContext, (state) => state.todos, { 167 | compare: (prev, next) => prev.length === next.length, // Only re-render on length changes 168 | }) 169 | ``` 170 | 171 | Returning true from the compare function will not cause a re-render. It's like saying "this is the same data, so don't re-render". 172 | 173 | Usually, you don't need this. But it's useful when working with complex shapes of data. 174 | 175 | ## Requirements 176 | 177 | - React 18 or later 178 | 179 | ## License 180 | 181 | MIT © [Tiger Abrodi](https://github.com/tigerabrodi) 182 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import react from 'eslint-plugin-react' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import globals from 'globals' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | settings: { 11 | react: { 12 | version: '18.0', 13 | }, 14 | }, 15 | extends: [ 16 | js.configs.recommended, 17 | ...tseslint.configs.recommendedTypeChecked, 18 | ], 19 | files: ['**/*.{ts,tsx}'], 20 | languageOptions: { 21 | ecmaVersion: 2020, 22 | globals: globals.browser, 23 | parserOptions: { 24 | project: ['./tsconfig.json'], 25 | tsconfigRootDir: import.meta.dirname, 26 | }, 27 | }, 28 | plugins: { 29 | 'react-hooks': reactHooks, 30 | react, 31 | }, 32 | rules: { 33 | ...reactHooks.configs.recommended.rules, 34 | 'no-await-in-loop': 'error', 35 | '@typescript-eslint/array-type': ['error', { default: 'generic' }], 36 | '@typescript-eslint/naming-convention': [ 37 | 'error', 38 | { 39 | selector: 'variable', 40 | types: ['boolean'], 41 | format: ['PascalCase'], 42 | prefix: ['is', 'should', 'has', 'are', 'can', 'was'], 43 | }, 44 | ], 45 | ...react.configs.recommended.rules, 46 | ...react.configs['jsx-runtime'].rules, 47 | }, 48 | } 49 | ) 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@tigerabrodioss/react-context-selector", 3 | "version": "1.0.4", 4 | "description": "A React library for efficient context updates with selectors", 5 | "author": "Tiger Abrodi", 6 | "license": "MIT", 7 | "type": "module", 8 | "main": "./dist/index.cjs", 9 | "module": "./dist/index.js", 10 | "types": "./dist/index.d.ts", 11 | "files": [ 12 | "dist" 13 | ], 14 | "sideEffects": false, 15 | "repository": { 16 | "type": "git", 17 | "url": "https://github.com/tigerabrodi/react-context-selector" 18 | }, 19 | "exports": { 20 | ".": { 21 | "types": "./dist/index.d.ts", 22 | "import": "./dist/index.js", 23 | "require": "./dist/index.cjs" 24 | } 25 | }, 26 | "scripts": { 27 | "test": "vitest", 28 | "build": "tsup", 29 | "lint": "eslint .", 30 | "format": "prettier --write ." 31 | }, 32 | "keywords": [ 33 | "react", 34 | "context", 35 | "selector", 36 | "hooks" 37 | ], 38 | "packageManager": "pnpm@9.1.4", 39 | "peerDependencies": { 40 | "react": "^18.0.0 || ^19.0.0" 41 | }, 42 | "devDependencies": { 43 | "@eslint/js": "^9.18.0", 44 | "@testing-library/jest-dom": "^6.6.3", 45 | "@testing-library/react": "^16.2.0", 46 | "@types/node": "^22.10.10", 47 | "@types/react": "^18.3.1", 48 | "@typescript-eslint/eslint-plugin": "^8.21.0", 49 | "@typescript-eslint/parser": "^8.21.0", 50 | "eslint-plugin-react": "^7.37.4", 51 | "eslint-plugin-react-hooks": "^5.1.0", 52 | "globals": "^15.14.0", 53 | "gzip-size-cli": "^5.1.0", 54 | "jsdom": "^26.0.0", 55 | "prettier": "^3.4.2", 56 | "react": "^18.3.1", 57 | "react-dom": "^18.3.1", 58 | "tslib": "^2.8.1", 59 | "tsup": "^8.3.5", 60 | "typescript": "^5.7.3", 61 | "typescript-eslint": "^8.21.0", 62 | "vitest": "^3.0.4" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | devDependencies: 11 | '@eslint/js': 12 | specifier: ^9.18.0 13 | version: 9.18.0 14 | '@testing-library/jest-dom': 15 | specifier: ^6.6.3 16 | version: 6.6.3 17 | '@testing-library/react': 18 | specifier: ^16.2.0 19 | version: 16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 20 | '@types/node': 21 | specifier: ^22.10.10 22 | version: 22.10.10 23 | '@types/react': 24 | specifier: ^18.3.1 25 | version: 18.3.18 26 | '@typescript-eslint/eslint-plugin': 27 | specifier: ^8.21.0 28 | version: 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) 29 | '@typescript-eslint/parser': 30 | specifier: ^8.21.0 31 | version: 8.21.0(eslint@9.18.0)(typescript@5.7.3) 32 | eslint-plugin-react: 33 | specifier: ^7.37.4 34 | version: 7.37.4(eslint@9.18.0) 35 | eslint-plugin-react-hooks: 36 | specifier: ^5.1.0 37 | version: 5.1.0(eslint@9.18.0) 38 | globals: 39 | specifier: ^15.14.0 40 | version: 15.14.0 41 | gzip-size-cli: 42 | specifier: ^5.1.0 43 | version: 5.1.0 44 | jsdom: 45 | specifier: ^26.0.0 46 | version: 26.0.0 47 | prettier: 48 | specifier: ^3.4.2 49 | version: 3.4.2 50 | react: 51 | specifier: ^18.3.1 52 | version: 18.3.1 53 | react-dom: 54 | specifier: ^18.3.1 55 | version: 18.3.1(react@18.3.1) 56 | tslib: 57 | specifier: ^2.8.1 58 | version: 2.8.1 59 | tsup: 60 | specifier: ^8.3.5 61 | version: 8.3.5(postcss@8.5.1)(typescript@5.7.3) 62 | typescript: 63 | specifier: ^5.7.3 64 | version: 5.7.3 65 | typescript-eslint: 66 | specifier: ^8.21.0 67 | version: 8.21.0(eslint@9.18.0)(typescript@5.7.3) 68 | vitest: 69 | specifier: ^3.0.4 70 | version: 3.0.4(@types/node@22.10.10)(jsdom@26.0.0) 71 | 72 | packages: 73 | 74 | '@adobe/css-tools@4.4.1': 75 | resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} 76 | 77 | '@asamuzakjp/css-color@2.8.3': 78 | resolution: {integrity: sha512-GIc76d9UI1hCvOATjZPyHFmE5qhRccp3/zGfMPapK3jBi+yocEzp6BBB0UnfRYP9NP4FANqUZYb0hnfs3TM3hw==} 79 | 80 | '@babel/code-frame@7.26.2': 81 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 82 | engines: {node: '>=6.9.0'} 83 | 84 | '@babel/helper-validator-identifier@7.25.9': 85 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 86 | engines: {node: '>=6.9.0'} 87 | 88 | '@babel/runtime@7.26.0': 89 | resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} 90 | engines: {node: '>=6.9.0'} 91 | 92 | '@csstools/color-helpers@5.0.1': 93 | resolution: {integrity: sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==} 94 | engines: {node: '>=18'} 95 | 96 | '@csstools/css-calc@2.1.1': 97 | resolution: {integrity: sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==} 98 | engines: {node: '>=18'} 99 | peerDependencies: 100 | '@csstools/css-parser-algorithms': ^3.0.4 101 | '@csstools/css-tokenizer': ^3.0.3 102 | 103 | '@csstools/css-color-parser@3.0.7': 104 | resolution: {integrity: sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==} 105 | engines: {node: '>=18'} 106 | peerDependencies: 107 | '@csstools/css-parser-algorithms': ^3.0.4 108 | '@csstools/css-tokenizer': ^3.0.3 109 | 110 | '@csstools/css-parser-algorithms@3.0.4': 111 | resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} 112 | engines: {node: '>=18'} 113 | peerDependencies: 114 | '@csstools/css-tokenizer': ^3.0.3 115 | 116 | '@csstools/css-tokenizer@3.0.3': 117 | resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} 118 | engines: {node: '>=18'} 119 | 120 | '@esbuild/aix-ppc64@0.24.2': 121 | resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} 122 | engines: {node: '>=18'} 123 | cpu: [ppc64] 124 | os: [aix] 125 | 126 | '@esbuild/android-arm64@0.24.2': 127 | resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} 128 | engines: {node: '>=18'} 129 | cpu: [arm64] 130 | os: [android] 131 | 132 | '@esbuild/android-arm@0.24.2': 133 | resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} 134 | engines: {node: '>=18'} 135 | cpu: [arm] 136 | os: [android] 137 | 138 | '@esbuild/android-x64@0.24.2': 139 | resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} 140 | engines: {node: '>=18'} 141 | cpu: [x64] 142 | os: [android] 143 | 144 | '@esbuild/darwin-arm64@0.24.2': 145 | resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} 146 | engines: {node: '>=18'} 147 | cpu: [arm64] 148 | os: [darwin] 149 | 150 | '@esbuild/darwin-x64@0.24.2': 151 | resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} 152 | engines: {node: '>=18'} 153 | cpu: [x64] 154 | os: [darwin] 155 | 156 | '@esbuild/freebsd-arm64@0.24.2': 157 | resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} 158 | engines: {node: '>=18'} 159 | cpu: [arm64] 160 | os: [freebsd] 161 | 162 | '@esbuild/freebsd-x64@0.24.2': 163 | resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} 164 | engines: {node: '>=18'} 165 | cpu: [x64] 166 | os: [freebsd] 167 | 168 | '@esbuild/linux-arm64@0.24.2': 169 | resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} 170 | engines: {node: '>=18'} 171 | cpu: [arm64] 172 | os: [linux] 173 | 174 | '@esbuild/linux-arm@0.24.2': 175 | resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} 176 | engines: {node: '>=18'} 177 | cpu: [arm] 178 | os: [linux] 179 | 180 | '@esbuild/linux-ia32@0.24.2': 181 | resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} 182 | engines: {node: '>=18'} 183 | cpu: [ia32] 184 | os: [linux] 185 | 186 | '@esbuild/linux-loong64@0.24.2': 187 | resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} 188 | engines: {node: '>=18'} 189 | cpu: [loong64] 190 | os: [linux] 191 | 192 | '@esbuild/linux-mips64el@0.24.2': 193 | resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} 194 | engines: {node: '>=18'} 195 | cpu: [mips64el] 196 | os: [linux] 197 | 198 | '@esbuild/linux-ppc64@0.24.2': 199 | resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} 200 | engines: {node: '>=18'} 201 | cpu: [ppc64] 202 | os: [linux] 203 | 204 | '@esbuild/linux-riscv64@0.24.2': 205 | resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} 206 | engines: {node: '>=18'} 207 | cpu: [riscv64] 208 | os: [linux] 209 | 210 | '@esbuild/linux-s390x@0.24.2': 211 | resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} 212 | engines: {node: '>=18'} 213 | cpu: [s390x] 214 | os: [linux] 215 | 216 | '@esbuild/linux-x64@0.24.2': 217 | resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} 218 | engines: {node: '>=18'} 219 | cpu: [x64] 220 | os: [linux] 221 | 222 | '@esbuild/netbsd-arm64@0.24.2': 223 | resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} 224 | engines: {node: '>=18'} 225 | cpu: [arm64] 226 | os: [netbsd] 227 | 228 | '@esbuild/netbsd-x64@0.24.2': 229 | resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} 230 | engines: {node: '>=18'} 231 | cpu: [x64] 232 | os: [netbsd] 233 | 234 | '@esbuild/openbsd-arm64@0.24.2': 235 | resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} 236 | engines: {node: '>=18'} 237 | cpu: [arm64] 238 | os: [openbsd] 239 | 240 | '@esbuild/openbsd-x64@0.24.2': 241 | resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} 242 | engines: {node: '>=18'} 243 | cpu: [x64] 244 | os: [openbsd] 245 | 246 | '@esbuild/sunos-x64@0.24.2': 247 | resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} 248 | engines: {node: '>=18'} 249 | cpu: [x64] 250 | os: [sunos] 251 | 252 | '@esbuild/win32-arm64@0.24.2': 253 | resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} 254 | engines: {node: '>=18'} 255 | cpu: [arm64] 256 | os: [win32] 257 | 258 | '@esbuild/win32-ia32@0.24.2': 259 | resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} 260 | engines: {node: '>=18'} 261 | cpu: [ia32] 262 | os: [win32] 263 | 264 | '@esbuild/win32-x64@0.24.2': 265 | resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} 266 | engines: {node: '>=18'} 267 | cpu: [x64] 268 | os: [win32] 269 | 270 | '@eslint-community/eslint-utils@4.4.1': 271 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 272 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 273 | peerDependencies: 274 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 275 | 276 | '@eslint-community/regexpp@4.12.1': 277 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 278 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 279 | 280 | '@eslint/config-array@0.19.1': 281 | resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} 282 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 283 | 284 | '@eslint/core@0.10.0': 285 | resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} 286 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 287 | 288 | '@eslint/eslintrc@3.2.0': 289 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} 290 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 291 | 292 | '@eslint/js@9.18.0': 293 | resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} 294 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 295 | 296 | '@eslint/object-schema@2.1.5': 297 | resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} 298 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 299 | 300 | '@eslint/plugin-kit@0.2.5': 301 | resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} 302 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 303 | 304 | '@humanfs/core@0.19.1': 305 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 306 | engines: {node: '>=18.18.0'} 307 | 308 | '@humanfs/node@0.16.6': 309 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 310 | engines: {node: '>=18.18.0'} 311 | 312 | '@humanwhocodes/module-importer@1.0.1': 313 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 314 | engines: {node: '>=12.22'} 315 | 316 | '@humanwhocodes/retry@0.3.1': 317 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 318 | engines: {node: '>=18.18'} 319 | 320 | '@humanwhocodes/retry@0.4.1': 321 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 322 | engines: {node: '>=18.18'} 323 | 324 | '@isaacs/cliui@8.0.2': 325 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 326 | engines: {node: '>=12'} 327 | 328 | '@jridgewell/gen-mapping@0.3.8': 329 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 330 | engines: {node: '>=6.0.0'} 331 | 332 | '@jridgewell/resolve-uri@3.1.2': 333 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 334 | engines: {node: '>=6.0.0'} 335 | 336 | '@jridgewell/set-array@1.2.1': 337 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 338 | engines: {node: '>=6.0.0'} 339 | 340 | '@jridgewell/sourcemap-codec@1.5.0': 341 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 342 | 343 | '@jridgewell/trace-mapping@0.3.25': 344 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 345 | 346 | '@nodelib/fs.scandir@2.1.5': 347 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 348 | engines: {node: '>= 8'} 349 | 350 | '@nodelib/fs.stat@2.0.5': 351 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 352 | engines: {node: '>= 8'} 353 | 354 | '@nodelib/fs.walk@1.2.8': 355 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 356 | engines: {node: '>= 8'} 357 | 358 | '@pkgjs/parseargs@0.11.0': 359 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 360 | engines: {node: '>=14'} 361 | 362 | '@rollup/rollup-android-arm-eabi@4.32.0': 363 | resolution: {integrity: sha512-G2fUQQANtBPsNwiVFg4zKiPQyjVKZCUdQUol53R8E71J7AsheRMV/Yv/nB8giOcOVqP7//eB5xPqieBYZe9bGg==} 364 | cpu: [arm] 365 | os: [android] 366 | 367 | '@rollup/rollup-android-arm64@4.32.0': 368 | resolution: {integrity: sha512-qhFwQ+ljoymC+j5lXRv8DlaJYY/+8vyvYmVx074zrLsu5ZGWYsJNLjPPVJJjhZQpyAKUGPydOq9hRLLNvh1s3A==} 369 | cpu: [arm64] 370 | os: [android] 371 | 372 | '@rollup/rollup-darwin-arm64@4.32.0': 373 | resolution: {integrity: sha512-44n/X3lAlWsEY6vF8CzgCx+LQaoqWGN7TzUfbJDiTIOjJm4+L2Yq+r5a8ytQRGyPqgJDs3Rgyo8eVL7n9iW6AQ==} 374 | cpu: [arm64] 375 | os: [darwin] 376 | 377 | '@rollup/rollup-darwin-x64@4.32.0': 378 | resolution: {integrity: sha512-F9ct0+ZX5Np6+ZDztxiGCIvlCaW87HBdHcozUfsHnj1WCUTBUubAoanhHUfnUHZABlElyRikI0mgcw/qdEm2VQ==} 379 | cpu: [x64] 380 | os: [darwin] 381 | 382 | '@rollup/rollup-freebsd-arm64@4.32.0': 383 | resolution: {integrity: sha512-JpsGxLBB2EFXBsTLHfkZDsXSpSmKD3VxXCgBQtlPcuAqB8TlqtLcbeMhxXQkCDv1avgwNjF8uEIbq5p+Cee0PA==} 384 | cpu: [arm64] 385 | os: [freebsd] 386 | 387 | '@rollup/rollup-freebsd-x64@4.32.0': 388 | resolution: {integrity: sha512-wegiyBT6rawdpvnD9lmbOpx5Sph+yVZKHbhnSP9MqUEDX08G4UzMU+D87jrazGE7lRSyTRs6NEYHtzfkJ3FjjQ==} 389 | cpu: [x64] 390 | os: [freebsd] 391 | 392 | '@rollup/rollup-linux-arm-gnueabihf@4.32.0': 393 | resolution: {integrity: sha512-3pA7xecItbgOs1A5H58dDvOUEboG5UfpTq3WzAdF54acBbUM+olDJAPkgj1GRJ4ZqE12DZ9/hNS2QZk166v92A==} 394 | cpu: [arm] 395 | os: [linux] 396 | 397 | '@rollup/rollup-linux-arm-musleabihf@4.32.0': 398 | resolution: {integrity: sha512-Y7XUZEVISGyge51QbYyYAEHwpGgmRrAxQXO3siyYo2kmaj72USSG8LtlQQgAtlGfxYiOwu+2BdbPjzEpcOpRmQ==} 399 | cpu: [arm] 400 | os: [linux] 401 | 402 | '@rollup/rollup-linux-arm64-gnu@4.32.0': 403 | resolution: {integrity: sha512-r7/OTF5MqeBrZo5omPXcTnjvv1GsrdH8a8RerARvDFiDwFpDVDnJyByYM/nX+mvks8XXsgPUxkwe/ltaX2VH7w==} 404 | cpu: [arm64] 405 | os: [linux] 406 | 407 | '@rollup/rollup-linux-arm64-musl@4.32.0': 408 | resolution: {integrity: sha512-HJbifC9vex9NqnlodV2BHVFNuzKL5OnsV2dvTw6e1dpZKkNjPG6WUq+nhEYV6Hv2Bv++BXkwcyoGlXnPrjAKXw==} 409 | cpu: [arm64] 410 | os: [linux] 411 | 412 | '@rollup/rollup-linux-loongarch64-gnu@4.32.0': 413 | resolution: {integrity: sha512-VAEzZTD63YglFlWwRj3taofmkV1V3xhebDXffon7msNz4b14xKsz7utO6F8F4cqt8K/ktTl9rm88yryvDpsfOw==} 414 | cpu: [loong64] 415 | os: [linux] 416 | 417 | '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': 418 | resolution: {integrity: sha512-Sts5DST1jXAc9YH/iik1C9QRsLcCoOScf3dfbY5i4kH9RJpKxiTBXqm7qU5O6zTXBTEZry69bGszr3SMgYmMcQ==} 419 | cpu: [ppc64] 420 | os: [linux] 421 | 422 | '@rollup/rollup-linux-riscv64-gnu@4.32.0': 423 | resolution: {integrity: sha512-qhlXeV9AqxIyY9/R1h1hBD6eMvQCO34ZmdYvry/K+/MBs6d1nRFLm6BOiITLVI+nFAAB9kUB6sdJRKyVHXnqZw==} 424 | cpu: [riscv64] 425 | os: [linux] 426 | 427 | '@rollup/rollup-linux-s390x-gnu@4.32.0': 428 | resolution: {integrity: sha512-8ZGN7ExnV0qjXa155Rsfi6H8M4iBBwNLBM9lcVS+4NcSzOFaNqmt7djlox8pN1lWrRPMRRQ8NeDlozIGx3Omsw==} 429 | cpu: [s390x] 430 | os: [linux] 431 | 432 | '@rollup/rollup-linux-x64-gnu@4.32.0': 433 | resolution: {integrity: sha512-VDzNHtLLI5s7xd/VubyS10mq6TxvZBp+4NRWoW+Hi3tgV05RtVm4qK99+dClwTN1McA6PHwob6DEJ6PlXbY83A==} 434 | cpu: [x64] 435 | os: [linux] 436 | 437 | '@rollup/rollup-linux-x64-musl@4.32.0': 438 | resolution: {integrity: sha512-qcb9qYDlkxz9DxJo7SDhWxTWV1gFuwznjbTiov289pASxlfGbaOD54mgbs9+z94VwrXtKTu+2RqwlSTbiOqxGg==} 439 | cpu: [x64] 440 | os: [linux] 441 | 442 | '@rollup/rollup-win32-arm64-msvc@4.32.0': 443 | resolution: {integrity: sha512-pFDdotFDMXW2AXVbfdUEfidPAk/OtwE/Hd4eYMTNVVaCQ6Yl8et0meDaKNL63L44Haxv4UExpv9ydSf3aSayDg==} 444 | cpu: [arm64] 445 | os: [win32] 446 | 447 | '@rollup/rollup-win32-ia32-msvc@4.32.0': 448 | resolution: {integrity: sha512-/TG7WfrCAjeRNDvI4+0AAMoHxea/USWhAzf9PVDFHbcqrQ7hMMKp4jZIy4VEjk72AAfN5k4TiSMRXRKf/0akSw==} 449 | cpu: [ia32] 450 | os: [win32] 451 | 452 | '@rollup/rollup-win32-x64-msvc@4.32.0': 453 | resolution: {integrity: sha512-5hqO5S3PTEO2E5VjCePxv40gIgyS2KvO7E7/vvC/NbIW4SIRamkMr1hqj+5Y67fbBWv/bQLB6KelBQmXlyCjWA==} 454 | cpu: [x64] 455 | os: [win32] 456 | 457 | '@testing-library/dom@10.4.0': 458 | resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} 459 | engines: {node: '>=18'} 460 | 461 | '@testing-library/jest-dom@6.6.3': 462 | resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} 463 | engines: {node: '>=14', npm: '>=6', yarn: '>=1'} 464 | 465 | '@testing-library/react@16.2.0': 466 | resolution: {integrity: sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==} 467 | engines: {node: '>=18'} 468 | peerDependencies: 469 | '@testing-library/dom': ^10.0.0 470 | '@types/react': ^18.0.0 || ^19.0.0 471 | '@types/react-dom': ^18.0.0 || ^19.0.0 472 | react: ^18.0.0 || ^19.0.0 473 | react-dom: ^18.0.0 || ^19.0.0 474 | peerDependenciesMeta: 475 | '@types/react': 476 | optional: true 477 | '@types/react-dom': 478 | optional: true 479 | 480 | '@types/aria-query@5.0.4': 481 | resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} 482 | 483 | '@types/estree@1.0.6': 484 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 485 | 486 | '@types/json-schema@7.0.15': 487 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 488 | 489 | '@types/minimist@1.2.5': 490 | resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} 491 | 492 | '@types/node@22.10.10': 493 | resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==} 494 | 495 | '@types/normalize-package-data@2.4.4': 496 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} 497 | 498 | '@types/prop-types@15.7.14': 499 | resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} 500 | 501 | '@types/react@18.3.18': 502 | resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} 503 | 504 | '@typescript-eslint/eslint-plugin@8.21.0': 505 | resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} 506 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 507 | peerDependencies: 508 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 509 | eslint: ^8.57.0 || ^9.0.0 510 | typescript: '>=4.8.4 <5.8.0' 511 | 512 | '@typescript-eslint/parser@8.21.0': 513 | resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} 514 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 515 | peerDependencies: 516 | eslint: ^8.57.0 || ^9.0.0 517 | typescript: '>=4.8.4 <5.8.0' 518 | 519 | '@typescript-eslint/scope-manager@8.21.0': 520 | resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} 521 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 522 | 523 | '@typescript-eslint/type-utils@8.21.0': 524 | resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} 525 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 526 | peerDependencies: 527 | eslint: ^8.57.0 || ^9.0.0 528 | typescript: '>=4.8.4 <5.8.0' 529 | 530 | '@typescript-eslint/types@8.21.0': 531 | resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} 532 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 533 | 534 | '@typescript-eslint/typescript-estree@8.21.0': 535 | resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} 536 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 537 | peerDependencies: 538 | typescript: '>=4.8.4 <5.8.0' 539 | 540 | '@typescript-eslint/utils@8.21.0': 541 | resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} 542 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 543 | peerDependencies: 544 | eslint: ^8.57.0 || ^9.0.0 545 | typescript: '>=4.8.4 <5.8.0' 546 | 547 | '@typescript-eslint/visitor-keys@8.21.0': 548 | resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} 549 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 550 | 551 | '@vitest/expect@3.0.4': 552 | resolution: {integrity: sha512-Nm5kJmYw6P2BxhJPkO3eKKhGYKRsnqJqf+r0yOGRKpEP+bSCBDsjXgiu1/5QFrnPMEgzfC38ZEjvCFgaNBC0Eg==} 553 | 554 | '@vitest/mocker@3.0.4': 555 | resolution: {integrity: sha512-gEef35vKafJlfQbnyOXZ0Gcr9IBUsMTyTLXsEQwuyYAerpHqvXhzdBnDFuHLpFqth3F7b6BaFr4qV/Cs1ULx5A==} 556 | peerDependencies: 557 | msw: ^2.4.9 558 | vite: ^5.0.0 || ^6.0.0 559 | peerDependenciesMeta: 560 | msw: 561 | optional: true 562 | vite: 563 | optional: true 564 | 565 | '@vitest/pretty-format@3.0.4': 566 | resolution: {integrity: sha512-ts0fba+dEhK2aC9PFuZ9LTpULHpY/nd6jhAQ5IMU7Gaj7crPCTdCFfgvXxruRBLFS+MLraicCuFXxISEq8C93g==} 567 | 568 | '@vitest/runner@3.0.4': 569 | resolution: {integrity: sha512-dKHzTQ7n9sExAcWH/0sh1elVgwc7OJ2lMOBrAm73J7AH6Pf9T12Zh3lNE1TETZaqrWFXtLlx3NVrLRb5hCK+iw==} 570 | 571 | '@vitest/snapshot@3.0.4': 572 | resolution: {integrity: sha512-+p5knMLwIk7lTQkM3NonZ9zBewzVp9EVkVpvNta0/PlFWpiqLaRcF4+33L1it3uRUCh0BGLOaXPPGEjNKfWb4w==} 573 | 574 | '@vitest/spy@3.0.4': 575 | resolution: {integrity: sha512-sXIMF0oauYyUy2hN49VFTYodzEAu744MmGcPR3ZBsPM20G+1/cSW/n1U+3Yu/zHxX2bIDe1oJASOkml+osTU6Q==} 576 | 577 | '@vitest/utils@3.0.4': 578 | resolution: {integrity: sha512-8BqC1ksYsHtbWH+DfpOAKrFw3jl3Uf9J7yeFh85Pz52IWuh1hBBtyfEbRNNZNjl8H8A5yMLH9/t+k7HIKzQcZQ==} 579 | 580 | acorn-jsx@5.3.2: 581 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 582 | peerDependencies: 583 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 584 | 585 | acorn@8.14.0: 586 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 587 | engines: {node: '>=0.4.0'} 588 | hasBin: true 589 | 590 | agent-base@7.1.3: 591 | resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} 592 | engines: {node: '>= 14'} 593 | 594 | ajv@6.12.6: 595 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 596 | 597 | ansi-regex@5.0.1: 598 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 599 | engines: {node: '>=8'} 600 | 601 | ansi-regex@6.1.0: 602 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 603 | engines: {node: '>=12'} 604 | 605 | ansi-styles@4.3.0: 606 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 607 | engines: {node: '>=8'} 608 | 609 | ansi-styles@5.2.0: 610 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 611 | engines: {node: '>=10'} 612 | 613 | ansi-styles@6.2.1: 614 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 615 | engines: {node: '>=12'} 616 | 617 | any-promise@1.3.0: 618 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 619 | 620 | argparse@2.0.1: 621 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 622 | 623 | aria-query@5.3.0: 624 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 625 | 626 | array-buffer-byte-length@1.0.2: 627 | resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 628 | engines: {node: '>= 0.4'} 629 | 630 | array-includes@3.1.8: 631 | resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} 632 | engines: {node: '>= 0.4'} 633 | 634 | array.prototype.findlast@1.2.5: 635 | resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} 636 | engines: {node: '>= 0.4'} 637 | 638 | array.prototype.flat@1.3.3: 639 | resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} 640 | engines: {node: '>= 0.4'} 641 | 642 | array.prototype.flatmap@1.3.3: 643 | resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} 644 | engines: {node: '>= 0.4'} 645 | 646 | array.prototype.tosorted@1.1.4: 647 | resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} 648 | engines: {node: '>= 0.4'} 649 | 650 | arraybuffer.prototype.slice@1.0.4: 651 | resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 652 | engines: {node: '>= 0.4'} 653 | 654 | arrify@1.0.1: 655 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} 656 | engines: {node: '>=0.10.0'} 657 | 658 | assertion-error@2.0.1: 659 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 660 | engines: {node: '>=12'} 661 | 662 | async-function@1.0.0: 663 | resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 664 | engines: {node: '>= 0.4'} 665 | 666 | asynckit@0.4.0: 667 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 668 | 669 | available-typed-arrays@1.0.7: 670 | resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 671 | engines: {node: '>= 0.4'} 672 | 673 | balanced-match@1.0.2: 674 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 675 | 676 | brace-expansion@1.1.11: 677 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 678 | 679 | brace-expansion@2.0.1: 680 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 681 | 682 | braces@3.0.3: 683 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 684 | engines: {node: '>=8'} 685 | 686 | bundle-require@5.1.0: 687 | resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} 688 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 689 | peerDependencies: 690 | esbuild: '>=0.18' 691 | 692 | cac@6.7.14: 693 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 694 | engines: {node: '>=8'} 695 | 696 | call-bind-apply-helpers@1.0.1: 697 | resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} 698 | engines: {node: '>= 0.4'} 699 | 700 | call-bind@1.0.8: 701 | resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 702 | engines: {node: '>= 0.4'} 703 | 704 | call-bound@1.0.3: 705 | resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} 706 | engines: {node: '>= 0.4'} 707 | 708 | callsites@3.1.0: 709 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 710 | engines: {node: '>=6'} 711 | 712 | camelcase-keys@7.0.2: 713 | resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} 714 | engines: {node: '>=12'} 715 | 716 | camelcase@6.3.0: 717 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 718 | engines: {node: '>=10'} 719 | 720 | chai@5.1.2: 721 | resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} 722 | engines: {node: '>=12'} 723 | 724 | chalk@3.0.0: 725 | resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} 726 | engines: {node: '>=8'} 727 | 728 | chalk@4.1.2: 729 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 730 | engines: {node: '>=10'} 731 | 732 | check-error@2.1.1: 733 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 734 | engines: {node: '>= 16'} 735 | 736 | chokidar@4.0.3: 737 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 738 | engines: {node: '>= 14.16.0'} 739 | 740 | color-convert@2.0.1: 741 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 742 | engines: {node: '>=7.0.0'} 743 | 744 | color-name@1.1.4: 745 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 746 | 747 | combined-stream@1.0.8: 748 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 749 | engines: {node: '>= 0.8'} 750 | 751 | commander@4.1.1: 752 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 753 | engines: {node: '>= 6'} 754 | 755 | concat-map@0.0.1: 756 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 757 | 758 | consola@3.4.0: 759 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} 760 | engines: {node: ^14.18.0 || >=16.10.0} 761 | 762 | cross-spawn@7.0.6: 763 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 764 | engines: {node: '>= 8'} 765 | 766 | css.escape@1.5.1: 767 | resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} 768 | 769 | cssstyle@4.2.1: 770 | resolution: {integrity: sha512-9+vem03dMXG7gDmZ62uqmRiMRNtinIZ9ZyuF6BdxzfOD+FdN5hretzynkn0ReS2DO2GSw76RWHs0UmJPI2zUjw==} 771 | engines: {node: '>=18'} 772 | 773 | csstype@3.1.3: 774 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 775 | 776 | data-urls@5.0.0: 777 | resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} 778 | engines: {node: '>=18'} 779 | 780 | data-view-buffer@1.0.2: 781 | resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 782 | engines: {node: '>= 0.4'} 783 | 784 | data-view-byte-length@1.0.2: 785 | resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 786 | engines: {node: '>= 0.4'} 787 | 788 | data-view-byte-offset@1.0.1: 789 | resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 790 | engines: {node: '>= 0.4'} 791 | 792 | debug@4.4.0: 793 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 794 | engines: {node: '>=6.0'} 795 | peerDependencies: 796 | supports-color: '*' 797 | peerDependenciesMeta: 798 | supports-color: 799 | optional: true 800 | 801 | decamelize-keys@1.1.1: 802 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} 803 | engines: {node: '>=0.10.0'} 804 | 805 | decamelize@1.2.0: 806 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} 807 | engines: {node: '>=0.10.0'} 808 | 809 | decamelize@5.0.1: 810 | resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==} 811 | engines: {node: '>=10'} 812 | 813 | decimal.js@10.5.0: 814 | resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==} 815 | 816 | deep-eql@5.0.2: 817 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 818 | engines: {node: '>=6'} 819 | 820 | deep-is@0.1.4: 821 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 822 | 823 | define-data-property@1.1.4: 824 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 825 | engines: {node: '>= 0.4'} 826 | 827 | define-properties@1.2.1: 828 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 829 | engines: {node: '>= 0.4'} 830 | 831 | delayed-stream@1.0.0: 832 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 833 | engines: {node: '>=0.4.0'} 834 | 835 | dequal@2.0.3: 836 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 837 | engines: {node: '>=6'} 838 | 839 | doctrine@2.1.0: 840 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 841 | engines: {node: '>=0.10.0'} 842 | 843 | dom-accessibility-api@0.5.16: 844 | resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 845 | 846 | dom-accessibility-api@0.6.3: 847 | resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} 848 | 849 | dunder-proto@1.0.1: 850 | resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 851 | engines: {node: '>= 0.4'} 852 | 853 | duplexer@0.1.2: 854 | resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} 855 | 856 | eastasianwidth@0.2.0: 857 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 858 | 859 | emoji-regex@8.0.0: 860 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 861 | 862 | emoji-regex@9.2.2: 863 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 864 | 865 | entities@4.5.0: 866 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 867 | engines: {node: '>=0.12'} 868 | 869 | error-ex@1.3.2: 870 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 871 | 872 | es-abstract@1.23.9: 873 | resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} 874 | engines: {node: '>= 0.4'} 875 | 876 | es-define-property@1.0.1: 877 | resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 878 | engines: {node: '>= 0.4'} 879 | 880 | es-errors@1.3.0: 881 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 882 | engines: {node: '>= 0.4'} 883 | 884 | es-iterator-helpers@1.2.1: 885 | resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} 886 | engines: {node: '>= 0.4'} 887 | 888 | es-module-lexer@1.6.0: 889 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 890 | 891 | es-object-atoms@1.1.1: 892 | resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 893 | engines: {node: '>= 0.4'} 894 | 895 | es-set-tostringtag@2.1.0: 896 | resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 897 | engines: {node: '>= 0.4'} 898 | 899 | es-shim-unscopables@1.0.2: 900 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 901 | 902 | es-to-primitive@1.3.0: 903 | resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 904 | engines: {node: '>= 0.4'} 905 | 906 | esbuild@0.24.2: 907 | resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} 908 | engines: {node: '>=18'} 909 | hasBin: true 910 | 911 | escape-string-regexp@4.0.0: 912 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 913 | engines: {node: '>=10'} 914 | 915 | eslint-plugin-react-hooks@5.1.0: 916 | resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} 917 | engines: {node: '>=10'} 918 | peerDependencies: 919 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 920 | 921 | eslint-plugin-react@7.37.4: 922 | resolution: {integrity: sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==} 923 | engines: {node: '>=4'} 924 | peerDependencies: 925 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 926 | 927 | eslint-scope@8.2.0: 928 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 929 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 930 | 931 | eslint-visitor-keys@3.4.3: 932 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 933 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 934 | 935 | eslint-visitor-keys@4.2.0: 936 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 937 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 938 | 939 | eslint@9.18.0: 940 | resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} 941 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 942 | hasBin: true 943 | peerDependencies: 944 | jiti: '*' 945 | peerDependenciesMeta: 946 | jiti: 947 | optional: true 948 | 949 | espree@10.3.0: 950 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 951 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 952 | 953 | esquery@1.6.0: 954 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 955 | engines: {node: '>=0.10'} 956 | 957 | esrecurse@4.3.0: 958 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 959 | engines: {node: '>=4.0'} 960 | 961 | estraverse@5.3.0: 962 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 963 | engines: {node: '>=4.0'} 964 | 965 | estree-walker@3.0.3: 966 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 967 | 968 | esutils@2.0.3: 969 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 970 | engines: {node: '>=0.10.0'} 971 | 972 | expect-type@1.1.0: 973 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 974 | engines: {node: '>=12.0.0'} 975 | 976 | fast-deep-equal@3.1.3: 977 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 978 | 979 | fast-glob@3.3.3: 980 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 981 | engines: {node: '>=8.6.0'} 982 | 983 | fast-json-stable-stringify@2.1.0: 984 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 985 | 986 | fast-levenshtein@2.0.6: 987 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 988 | 989 | fastq@1.18.0: 990 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} 991 | 992 | fdir@6.4.3: 993 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 994 | peerDependencies: 995 | picomatch: ^3 || ^4 996 | peerDependenciesMeta: 997 | picomatch: 998 | optional: true 999 | 1000 | file-entry-cache@8.0.0: 1001 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1002 | engines: {node: '>=16.0.0'} 1003 | 1004 | fill-range@7.1.1: 1005 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1006 | engines: {node: '>=8'} 1007 | 1008 | find-up@5.0.0: 1009 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1010 | engines: {node: '>=10'} 1011 | 1012 | flat-cache@4.0.1: 1013 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1014 | engines: {node: '>=16'} 1015 | 1016 | flatted@3.3.2: 1017 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 1018 | 1019 | for-each@0.3.3: 1020 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1021 | 1022 | foreground-child@3.3.0: 1023 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1024 | engines: {node: '>=14'} 1025 | 1026 | form-data@4.0.1: 1027 | resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} 1028 | engines: {node: '>= 6'} 1029 | 1030 | fsevents@2.3.3: 1031 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1032 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1033 | os: [darwin] 1034 | 1035 | function-bind@1.1.2: 1036 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1037 | 1038 | function.prototype.name@1.1.8: 1039 | resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 1040 | engines: {node: '>= 0.4'} 1041 | 1042 | functions-have-names@1.2.3: 1043 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1044 | 1045 | get-intrinsic@1.2.7: 1046 | resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} 1047 | engines: {node: '>= 0.4'} 1048 | 1049 | get-proto@1.0.1: 1050 | resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1051 | engines: {node: '>= 0.4'} 1052 | 1053 | get-stdin@9.0.0: 1054 | resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} 1055 | engines: {node: '>=12'} 1056 | 1057 | get-symbol-description@1.1.0: 1058 | resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 1059 | engines: {node: '>= 0.4'} 1060 | 1061 | glob-parent@5.1.2: 1062 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1063 | engines: {node: '>= 6'} 1064 | 1065 | glob-parent@6.0.2: 1066 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1067 | engines: {node: '>=10.13.0'} 1068 | 1069 | glob@10.4.5: 1070 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1071 | hasBin: true 1072 | 1073 | globals@14.0.0: 1074 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1075 | engines: {node: '>=18'} 1076 | 1077 | globals@15.14.0: 1078 | resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} 1079 | engines: {node: '>=18'} 1080 | 1081 | globalthis@1.0.4: 1082 | resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 1083 | engines: {node: '>= 0.4'} 1084 | 1085 | gopd@1.2.0: 1086 | resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 1087 | engines: {node: '>= 0.4'} 1088 | 1089 | graphemer@1.4.0: 1090 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1091 | 1092 | gzip-size-cli@5.1.0: 1093 | resolution: {integrity: sha512-XBC1Ia0IWm0/cbiU33fPfNL6uFCq7IjngRkFCelullMBcEna9Re4DNPfpsRgREDpOR5FGNupBfdb377uI5o7iQ==} 1094 | engines: {node: '>=12'} 1095 | hasBin: true 1096 | 1097 | gzip-size@7.0.0: 1098 | resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} 1099 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1100 | 1101 | hard-rejection@2.1.0: 1102 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} 1103 | engines: {node: '>=6'} 1104 | 1105 | has-bigints@1.1.0: 1106 | resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 1107 | engines: {node: '>= 0.4'} 1108 | 1109 | has-flag@4.0.0: 1110 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1111 | engines: {node: '>=8'} 1112 | 1113 | has-property-descriptors@1.0.2: 1114 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1115 | 1116 | has-proto@1.2.0: 1117 | resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 1118 | engines: {node: '>= 0.4'} 1119 | 1120 | has-symbols@1.1.0: 1121 | resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1122 | engines: {node: '>= 0.4'} 1123 | 1124 | has-tostringtag@1.0.2: 1125 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 1126 | engines: {node: '>= 0.4'} 1127 | 1128 | hasown@2.0.2: 1129 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1130 | engines: {node: '>= 0.4'} 1131 | 1132 | hosted-git-info@4.1.0: 1133 | resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} 1134 | engines: {node: '>=10'} 1135 | 1136 | html-encoding-sniffer@4.0.0: 1137 | resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} 1138 | engines: {node: '>=18'} 1139 | 1140 | http-proxy-agent@7.0.2: 1141 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} 1142 | engines: {node: '>= 14'} 1143 | 1144 | https-proxy-agent@7.0.6: 1145 | resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 1146 | engines: {node: '>= 14'} 1147 | 1148 | iconv-lite@0.6.3: 1149 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1150 | engines: {node: '>=0.10.0'} 1151 | 1152 | ignore@5.3.2: 1153 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1154 | engines: {node: '>= 4'} 1155 | 1156 | import-fresh@3.3.0: 1157 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1158 | engines: {node: '>=6'} 1159 | 1160 | imurmurhash@0.1.4: 1161 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1162 | engines: {node: '>=0.8.19'} 1163 | 1164 | indent-string@4.0.0: 1165 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1166 | engines: {node: '>=8'} 1167 | 1168 | indent-string@5.0.0: 1169 | resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} 1170 | engines: {node: '>=12'} 1171 | 1172 | internal-slot@1.1.0: 1173 | resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 1174 | engines: {node: '>= 0.4'} 1175 | 1176 | is-array-buffer@3.0.5: 1177 | resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 1178 | engines: {node: '>= 0.4'} 1179 | 1180 | is-arrayish@0.2.1: 1181 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1182 | 1183 | is-async-function@2.1.1: 1184 | resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 1185 | engines: {node: '>= 0.4'} 1186 | 1187 | is-bigint@1.1.0: 1188 | resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 1189 | engines: {node: '>= 0.4'} 1190 | 1191 | is-boolean-object@1.2.1: 1192 | resolution: {integrity: sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==} 1193 | engines: {node: '>= 0.4'} 1194 | 1195 | is-callable@1.2.7: 1196 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1197 | engines: {node: '>= 0.4'} 1198 | 1199 | is-core-module@2.16.1: 1200 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1201 | engines: {node: '>= 0.4'} 1202 | 1203 | is-data-view@1.0.2: 1204 | resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 1205 | engines: {node: '>= 0.4'} 1206 | 1207 | is-date-object@1.1.0: 1208 | resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 1209 | engines: {node: '>= 0.4'} 1210 | 1211 | is-extglob@2.1.1: 1212 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1213 | engines: {node: '>=0.10.0'} 1214 | 1215 | is-finalizationregistry@1.1.1: 1216 | resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 1217 | engines: {node: '>= 0.4'} 1218 | 1219 | is-fullwidth-code-point@3.0.0: 1220 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1221 | engines: {node: '>=8'} 1222 | 1223 | is-generator-function@1.1.0: 1224 | resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} 1225 | engines: {node: '>= 0.4'} 1226 | 1227 | is-glob@4.0.3: 1228 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1229 | engines: {node: '>=0.10.0'} 1230 | 1231 | is-map@2.0.3: 1232 | resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 1233 | engines: {node: '>= 0.4'} 1234 | 1235 | is-number-object@1.1.1: 1236 | resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 1237 | engines: {node: '>= 0.4'} 1238 | 1239 | is-number@7.0.0: 1240 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1241 | engines: {node: '>=0.12.0'} 1242 | 1243 | is-plain-obj@1.1.0: 1244 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} 1245 | engines: {node: '>=0.10.0'} 1246 | 1247 | is-potential-custom-element-name@1.0.1: 1248 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1249 | 1250 | is-regex@1.2.1: 1251 | resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 1252 | engines: {node: '>= 0.4'} 1253 | 1254 | is-set@2.0.3: 1255 | resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 1256 | engines: {node: '>= 0.4'} 1257 | 1258 | is-shared-array-buffer@1.0.4: 1259 | resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 1260 | engines: {node: '>= 0.4'} 1261 | 1262 | is-string@1.1.1: 1263 | resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 1264 | engines: {node: '>= 0.4'} 1265 | 1266 | is-symbol@1.1.1: 1267 | resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 1268 | engines: {node: '>= 0.4'} 1269 | 1270 | is-typed-array@1.1.15: 1271 | resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 1272 | engines: {node: '>= 0.4'} 1273 | 1274 | is-weakmap@2.0.2: 1275 | resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 1276 | engines: {node: '>= 0.4'} 1277 | 1278 | is-weakref@1.1.0: 1279 | resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} 1280 | engines: {node: '>= 0.4'} 1281 | 1282 | is-weakset@2.0.4: 1283 | resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 1284 | engines: {node: '>= 0.4'} 1285 | 1286 | isarray@2.0.5: 1287 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1288 | 1289 | isexe@2.0.0: 1290 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1291 | 1292 | iterator.prototype@1.1.5: 1293 | resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} 1294 | engines: {node: '>= 0.4'} 1295 | 1296 | jackspeak@3.4.3: 1297 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1298 | 1299 | joycon@3.1.1: 1300 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1301 | engines: {node: '>=10'} 1302 | 1303 | js-tokens@4.0.0: 1304 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1305 | 1306 | js-yaml@4.1.0: 1307 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1308 | hasBin: true 1309 | 1310 | jsdom@26.0.0: 1311 | resolution: {integrity: sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==} 1312 | engines: {node: '>=18'} 1313 | peerDependencies: 1314 | canvas: ^3.0.0 1315 | peerDependenciesMeta: 1316 | canvas: 1317 | optional: true 1318 | 1319 | json-buffer@3.0.1: 1320 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1321 | 1322 | json-parse-even-better-errors@2.3.1: 1323 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1324 | 1325 | json-schema-traverse@0.4.1: 1326 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1327 | 1328 | json-stable-stringify-without-jsonify@1.0.1: 1329 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1330 | 1331 | jsx-ast-utils@3.3.5: 1332 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1333 | engines: {node: '>=4.0'} 1334 | 1335 | keyv@4.5.4: 1336 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1337 | 1338 | kind-of@6.0.3: 1339 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} 1340 | engines: {node: '>=0.10.0'} 1341 | 1342 | levn@0.4.1: 1343 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1344 | engines: {node: '>= 0.8.0'} 1345 | 1346 | lilconfig@3.1.3: 1347 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1348 | engines: {node: '>=14'} 1349 | 1350 | lines-and-columns@1.2.4: 1351 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1352 | 1353 | load-tsconfig@0.2.5: 1354 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1355 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1356 | 1357 | locate-path@6.0.0: 1358 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1359 | engines: {node: '>=10'} 1360 | 1361 | lodash.merge@4.6.2: 1362 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1363 | 1364 | lodash.sortby@4.7.0: 1365 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1366 | 1367 | lodash@4.17.21: 1368 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1369 | 1370 | loose-envify@1.4.0: 1371 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1372 | hasBin: true 1373 | 1374 | loupe@3.1.2: 1375 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 1376 | 1377 | lru-cache@10.4.3: 1378 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1379 | 1380 | lru-cache@6.0.0: 1381 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1382 | engines: {node: '>=10'} 1383 | 1384 | lz-string@1.5.0: 1385 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 1386 | hasBin: true 1387 | 1388 | magic-string@0.30.17: 1389 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1390 | 1391 | map-obj@1.0.1: 1392 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} 1393 | engines: {node: '>=0.10.0'} 1394 | 1395 | map-obj@4.3.0: 1396 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} 1397 | engines: {node: '>=8'} 1398 | 1399 | math-intrinsics@1.1.0: 1400 | resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1401 | engines: {node: '>= 0.4'} 1402 | 1403 | meow@10.1.5: 1404 | resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} 1405 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1406 | 1407 | merge2@1.4.1: 1408 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1409 | engines: {node: '>= 8'} 1410 | 1411 | micromatch@4.0.8: 1412 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1413 | engines: {node: '>=8.6'} 1414 | 1415 | mime-db@1.52.0: 1416 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1417 | engines: {node: '>= 0.6'} 1418 | 1419 | mime-types@2.1.35: 1420 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1421 | engines: {node: '>= 0.6'} 1422 | 1423 | min-indent@1.0.1: 1424 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1425 | engines: {node: '>=4'} 1426 | 1427 | minimatch@3.1.2: 1428 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1429 | 1430 | minimatch@9.0.5: 1431 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1432 | engines: {node: '>=16 || 14 >=14.17'} 1433 | 1434 | minimist-options@4.1.0: 1435 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} 1436 | engines: {node: '>= 6'} 1437 | 1438 | minipass@7.1.2: 1439 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1440 | engines: {node: '>=16 || 14 >=14.17'} 1441 | 1442 | ms@2.1.3: 1443 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1444 | 1445 | mz@2.7.0: 1446 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1447 | 1448 | nanoid@3.3.8: 1449 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1450 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1451 | hasBin: true 1452 | 1453 | natural-compare@1.4.0: 1454 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1455 | 1456 | normalize-package-data@3.0.3: 1457 | resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} 1458 | engines: {node: '>=10'} 1459 | 1460 | nwsapi@2.2.16: 1461 | resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} 1462 | 1463 | object-assign@4.1.1: 1464 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1465 | engines: {node: '>=0.10.0'} 1466 | 1467 | object-inspect@1.13.3: 1468 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} 1469 | engines: {node: '>= 0.4'} 1470 | 1471 | object-keys@1.1.1: 1472 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1473 | engines: {node: '>= 0.4'} 1474 | 1475 | object.assign@4.1.7: 1476 | resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 1477 | engines: {node: '>= 0.4'} 1478 | 1479 | object.entries@1.1.8: 1480 | resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} 1481 | engines: {node: '>= 0.4'} 1482 | 1483 | object.fromentries@2.0.8: 1484 | resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} 1485 | engines: {node: '>= 0.4'} 1486 | 1487 | object.values@1.2.1: 1488 | resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} 1489 | engines: {node: '>= 0.4'} 1490 | 1491 | optionator@0.9.4: 1492 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1493 | engines: {node: '>= 0.8.0'} 1494 | 1495 | own-keys@1.0.1: 1496 | resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 1497 | engines: {node: '>= 0.4'} 1498 | 1499 | p-limit@3.1.0: 1500 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1501 | engines: {node: '>=10'} 1502 | 1503 | p-locate@5.0.0: 1504 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1505 | engines: {node: '>=10'} 1506 | 1507 | package-json-from-dist@1.0.1: 1508 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1509 | 1510 | parent-module@1.0.1: 1511 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1512 | engines: {node: '>=6'} 1513 | 1514 | parse-json@5.2.0: 1515 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1516 | engines: {node: '>=8'} 1517 | 1518 | parse5@7.2.1: 1519 | resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} 1520 | 1521 | path-exists@4.0.0: 1522 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1523 | engines: {node: '>=8'} 1524 | 1525 | path-key@3.1.1: 1526 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1527 | engines: {node: '>=8'} 1528 | 1529 | path-parse@1.0.7: 1530 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1531 | 1532 | path-scurry@1.11.1: 1533 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1534 | engines: {node: '>=16 || 14 >=14.18'} 1535 | 1536 | pathe@2.0.2: 1537 | resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} 1538 | 1539 | pathval@2.0.0: 1540 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1541 | engines: {node: '>= 14.16'} 1542 | 1543 | picocolors@1.1.1: 1544 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1545 | 1546 | picomatch@2.3.1: 1547 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1548 | engines: {node: '>=8.6'} 1549 | 1550 | picomatch@4.0.2: 1551 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1552 | engines: {node: '>=12'} 1553 | 1554 | pirates@4.0.6: 1555 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1556 | engines: {node: '>= 6'} 1557 | 1558 | possible-typed-array-names@1.0.0: 1559 | resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} 1560 | engines: {node: '>= 0.4'} 1561 | 1562 | postcss-load-config@6.0.1: 1563 | resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 1564 | engines: {node: '>= 18'} 1565 | peerDependencies: 1566 | jiti: '>=1.21.0' 1567 | postcss: '>=8.0.9' 1568 | tsx: ^4.8.1 1569 | yaml: ^2.4.2 1570 | peerDependenciesMeta: 1571 | jiti: 1572 | optional: true 1573 | postcss: 1574 | optional: true 1575 | tsx: 1576 | optional: true 1577 | yaml: 1578 | optional: true 1579 | 1580 | postcss@8.5.1: 1581 | resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} 1582 | engines: {node: ^10 || ^12 || >=14} 1583 | 1584 | prelude-ls@1.2.1: 1585 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1586 | engines: {node: '>= 0.8.0'} 1587 | 1588 | prettier@3.4.2: 1589 | resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} 1590 | engines: {node: '>=14'} 1591 | hasBin: true 1592 | 1593 | pretty-bytes@5.6.0: 1594 | resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} 1595 | engines: {node: '>=6'} 1596 | 1597 | pretty-format@27.5.1: 1598 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 1599 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1600 | 1601 | prop-types@15.8.1: 1602 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 1603 | 1604 | punycode@2.3.1: 1605 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1606 | engines: {node: '>=6'} 1607 | 1608 | queue-microtask@1.2.3: 1609 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1610 | 1611 | quick-lru@5.1.1: 1612 | resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} 1613 | engines: {node: '>=10'} 1614 | 1615 | react-dom@18.3.1: 1616 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1617 | peerDependencies: 1618 | react: ^18.3.1 1619 | 1620 | react-is@16.13.1: 1621 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1622 | 1623 | react-is@17.0.2: 1624 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 1625 | 1626 | react@18.3.1: 1627 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1628 | engines: {node: '>=0.10.0'} 1629 | 1630 | read-pkg-up@8.0.0: 1631 | resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==} 1632 | engines: {node: '>=12'} 1633 | 1634 | read-pkg@6.0.0: 1635 | resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} 1636 | engines: {node: '>=12'} 1637 | 1638 | readdirp@4.1.1: 1639 | resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} 1640 | engines: {node: '>= 14.18.0'} 1641 | 1642 | redent@3.0.0: 1643 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 1644 | engines: {node: '>=8'} 1645 | 1646 | redent@4.0.0: 1647 | resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} 1648 | engines: {node: '>=12'} 1649 | 1650 | reflect.getprototypeof@1.0.10: 1651 | resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 1652 | engines: {node: '>= 0.4'} 1653 | 1654 | regenerator-runtime@0.14.1: 1655 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1656 | 1657 | regexp.prototype.flags@1.5.4: 1658 | resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 1659 | engines: {node: '>= 0.4'} 1660 | 1661 | resolve-from@4.0.0: 1662 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1663 | engines: {node: '>=4'} 1664 | 1665 | resolve-from@5.0.0: 1666 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1667 | engines: {node: '>=8'} 1668 | 1669 | resolve@2.0.0-next.5: 1670 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 1671 | hasBin: true 1672 | 1673 | reusify@1.0.4: 1674 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1675 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1676 | 1677 | rollup@4.32.0: 1678 | resolution: {integrity: sha512-JmrhfQR31Q4AuNBjjAX4s+a/Pu/Q8Q9iwjWBsjRH1q52SPFE2NqRMK6fUZKKnvKO6id+h7JIRf0oYsph53eATg==} 1679 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1680 | hasBin: true 1681 | 1682 | rrweb-cssom@0.8.0: 1683 | resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} 1684 | 1685 | run-parallel@1.2.0: 1686 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1687 | 1688 | safe-array-concat@1.1.3: 1689 | resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1690 | engines: {node: '>=0.4'} 1691 | 1692 | safe-push-apply@1.0.0: 1693 | resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 1694 | engines: {node: '>= 0.4'} 1695 | 1696 | safe-regex-test@1.1.0: 1697 | resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1698 | engines: {node: '>= 0.4'} 1699 | 1700 | safer-buffer@2.1.2: 1701 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1702 | 1703 | saxes@6.0.0: 1704 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 1705 | engines: {node: '>=v12.22.7'} 1706 | 1707 | scheduler@0.23.2: 1708 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1709 | 1710 | semver@6.3.1: 1711 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1712 | hasBin: true 1713 | 1714 | semver@7.6.3: 1715 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1716 | engines: {node: '>=10'} 1717 | hasBin: true 1718 | 1719 | set-function-length@1.2.2: 1720 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1721 | engines: {node: '>= 0.4'} 1722 | 1723 | set-function-name@2.0.2: 1724 | resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1725 | engines: {node: '>= 0.4'} 1726 | 1727 | set-proto@1.0.0: 1728 | resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 1729 | engines: {node: '>= 0.4'} 1730 | 1731 | shebang-command@2.0.0: 1732 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1733 | engines: {node: '>=8'} 1734 | 1735 | shebang-regex@3.0.0: 1736 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1737 | engines: {node: '>=8'} 1738 | 1739 | side-channel-list@1.0.0: 1740 | resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1741 | engines: {node: '>= 0.4'} 1742 | 1743 | side-channel-map@1.0.1: 1744 | resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1745 | engines: {node: '>= 0.4'} 1746 | 1747 | side-channel-weakmap@1.0.2: 1748 | resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1749 | engines: {node: '>= 0.4'} 1750 | 1751 | side-channel@1.1.0: 1752 | resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1753 | engines: {node: '>= 0.4'} 1754 | 1755 | siginfo@2.0.0: 1756 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1757 | 1758 | signal-exit@4.1.0: 1759 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1760 | engines: {node: '>=14'} 1761 | 1762 | source-map-js@1.2.1: 1763 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1764 | engines: {node: '>=0.10.0'} 1765 | 1766 | source-map@0.8.0-beta.0: 1767 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1768 | engines: {node: '>= 8'} 1769 | 1770 | spdx-correct@3.2.0: 1771 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1772 | 1773 | spdx-exceptions@2.5.0: 1774 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1775 | 1776 | spdx-expression-parse@3.0.1: 1777 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1778 | 1779 | spdx-license-ids@3.0.21: 1780 | resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} 1781 | 1782 | stackback@0.0.2: 1783 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1784 | 1785 | std-env@3.8.0: 1786 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1787 | 1788 | string-width@4.2.3: 1789 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1790 | engines: {node: '>=8'} 1791 | 1792 | string-width@5.1.2: 1793 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1794 | engines: {node: '>=12'} 1795 | 1796 | string.prototype.matchall@4.0.12: 1797 | resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} 1798 | engines: {node: '>= 0.4'} 1799 | 1800 | string.prototype.repeat@1.0.0: 1801 | resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} 1802 | 1803 | string.prototype.trim@1.2.10: 1804 | resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1805 | engines: {node: '>= 0.4'} 1806 | 1807 | string.prototype.trimend@1.0.9: 1808 | resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1809 | engines: {node: '>= 0.4'} 1810 | 1811 | string.prototype.trimstart@1.0.8: 1812 | resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1813 | engines: {node: '>= 0.4'} 1814 | 1815 | strip-ansi@6.0.1: 1816 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1817 | engines: {node: '>=8'} 1818 | 1819 | strip-ansi@7.1.0: 1820 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1821 | engines: {node: '>=12'} 1822 | 1823 | strip-indent@3.0.0: 1824 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1825 | engines: {node: '>=8'} 1826 | 1827 | strip-indent@4.0.0: 1828 | resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} 1829 | engines: {node: '>=12'} 1830 | 1831 | strip-json-comments@3.1.1: 1832 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1833 | engines: {node: '>=8'} 1834 | 1835 | sucrase@3.35.0: 1836 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1837 | engines: {node: '>=16 || 14 >=14.17'} 1838 | hasBin: true 1839 | 1840 | supports-color@7.2.0: 1841 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1842 | engines: {node: '>=8'} 1843 | 1844 | supports-preserve-symlinks-flag@1.0.0: 1845 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1846 | engines: {node: '>= 0.4'} 1847 | 1848 | symbol-tree@3.2.4: 1849 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 1850 | 1851 | thenify-all@1.6.0: 1852 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1853 | engines: {node: '>=0.8'} 1854 | 1855 | thenify@3.3.1: 1856 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1857 | 1858 | tinybench@2.9.0: 1859 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1860 | 1861 | tinyexec@0.3.2: 1862 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1863 | 1864 | tinyglobby@0.2.10: 1865 | resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 1866 | engines: {node: '>=12.0.0'} 1867 | 1868 | tinypool@1.0.2: 1869 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1870 | engines: {node: ^18.0.0 || >=20.0.0} 1871 | 1872 | tinyrainbow@2.0.0: 1873 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1874 | engines: {node: '>=14.0.0'} 1875 | 1876 | tinyspy@3.0.2: 1877 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1878 | engines: {node: '>=14.0.0'} 1879 | 1880 | tldts-core@6.1.74: 1881 | resolution: {integrity: sha512-gTwtY6L2GfuxiL4CWpLknv9JDYYqBvKCk/BT5uAaAvCA0s6pzX7lr2IrkQZSUlnSjRHIjTl8ZwKCVXJ7XNRWYw==} 1882 | 1883 | tldts@6.1.74: 1884 | resolution: {integrity: sha512-O5vTZ1UmmEmrLl/59U9igitnSMlprALLaLgbv//dEvjobPT9vyURhHXKMCDLEhn3qxZFIkb9PwAfNYV0Ol7RPQ==} 1885 | hasBin: true 1886 | 1887 | to-regex-range@5.0.1: 1888 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1889 | engines: {node: '>=8.0'} 1890 | 1891 | tough-cookie@5.1.0: 1892 | resolution: {integrity: sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==} 1893 | engines: {node: '>=16'} 1894 | 1895 | tr46@1.0.1: 1896 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1897 | 1898 | tr46@5.0.0: 1899 | resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} 1900 | engines: {node: '>=18'} 1901 | 1902 | tree-kill@1.2.2: 1903 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1904 | hasBin: true 1905 | 1906 | trim-newlines@4.1.1: 1907 | resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} 1908 | engines: {node: '>=12'} 1909 | 1910 | ts-api-utils@2.0.0: 1911 | resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} 1912 | engines: {node: '>=18.12'} 1913 | peerDependencies: 1914 | typescript: '>=4.8.4' 1915 | 1916 | ts-interface-checker@0.1.13: 1917 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1918 | 1919 | tslib@2.8.1: 1920 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1921 | 1922 | tsup@8.3.5: 1923 | resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} 1924 | engines: {node: '>=18'} 1925 | hasBin: true 1926 | peerDependencies: 1927 | '@microsoft/api-extractor': ^7.36.0 1928 | '@swc/core': ^1 1929 | postcss: ^8.4.12 1930 | typescript: '>=4.5.0' 1931 | peerDependenciesMeta: 1932 | '@microsoft/api-extractor': 1933 | optional: true 1934 | '@swc/core': 1935 | optional: true 1936 | postcss: 1937 | optional: true 1938 | typescript: 1939 | optional: true 1940 | 1941 | type-check@0.4.0: 1942 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1943 | engines: {node: '>= 0.8.0'} 1944 | 1945 | type-fest@1.4.0: 1946 | resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} 1947 | engines: {node: '>=10'} 1948 | 1949 | typed-array-buffer@1.0.3: 1950 | resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 1951 | engines: {node: '>= 0.4'} 1952 | 1953 | typed-array-byte-length@1.0.3: 1954 | resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 1955 | engines: {node: '>= 0.4'} 1956 | 1957 | typed-array-byte-offset@1.0.4: 1958 | resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 1959 | engines: {node: '>= 0.4'} 1960 | 1961 | typed-array-length@1.0.7: 1962 | resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1963 | engines: {node: '>= 0.4'} 1964 | 1965 | typescript-eslint@8.21.0: 1966 | resolution: {integrity: sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==} 1967 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1968 | peerDependencies: 1969 | eslint: ^8.57.0 || ^9.0.0 1970 | typescript: '>=4.8.4 <5.8.0' 1971 | 1972 | typescript@5.7.3: 1973 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1974 | engines: {node: '>=14.17'} 1975 | hasBin: true 1976 | 1977 | unbox-primitive@1.1.0: 1978 | resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 1979 | engines: {node: '>= 0.4'} 1980 | 1981 | undici-types@6.20.0: 1982 | resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 1983 | 1984 | uri-js@4.4.1: 1985 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1986 | 1987 | validate-npm-package-license@3.0.4: 1988 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1989 | 1990 | vite-node@3.0.4: 1991 | resolution: {integrity: sha512-7JZKEzcYV2Nx3u6rlvN8qdo3QV7Fxyt6hx+CCKz9fbWxdX5IvUOmTWEAxMrWxaiSf7CKGLJQ5rFu8prb/jBjOA==} 1992 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1993 | hasBin: true 1994 | 1995 | vite@6.0.11: 1996 | resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} 1997 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1998 | hasBin: true 1999 | peerDependencies: 2000 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 2001 | jiti: '>=1.21.0' 2002 | less: '*' 2003 | lightningcss: ^1.21.0 2004 | sass: '*' 2005 | sass-embedded: '*' 2006 | stylus: '*' 2007 | sugarss: '*' 2008 | terser: ^5.16.0 2009 | tsx: ^4.8.1 2010 | yaml: ^2.4.2 2011 | peerDependenciesMeta: 2012 | '@types/node': 2013 | optional: true 2014 | jiti: 2015 | optional: true 2016 | less: 2017 | optional: true 2018 | lightningcss: 2019 | optional: true 2020 | sass: 2021 | optional: true 2022 | sass-embedded: 2023 | optional: true 2024 | stylus: 2025 | optional: true 2026 | sugarss: 2027 | optional: true 2028 | terser: 2029 | optional: true 2030 | tsx: 2031 | optional: true 2032 | yaml: 2033 | optional: true 2034 | 2035 | vitest@3.0.4: 2036 | resolution: {integrity: sha512-6XG8oTKy2gnJIFTHP6LD7ExFeNLxiTkK3CfMvT7IfR8IN+BYICCf0lXUQmX7i7JoxUP8QmeP4mTnWXgflu4yjw==} 2037 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 2038 | hasBin: true 2039 | peerDependencies: 2040 | '@edge-runtime/vm': '*' 2041 | '@types/debug': ^4.1.12 2042 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 2043 | '@vitest/browser': 3.0.4 2044 | '@vitest/ui': 3.0.4 2045 | happy-dom: '*' 2046 | jsdom: '*' 2047 | peerDependenciesMeta: 2048 | '@edge-runtime/vm': 2049 | optional: true 2050 | '@types/debug': 2051 | optional: true 2052 | '@types/node': 2053 | optional: true 2054 | '@vitest/browser': 2055 | optional: true 2056 | '@vitest/ui': 2057 | optional: true 2058 | happy-dom: 2059 | optional: true 2060 | jsdom: 2061 | optional: true 2062 | 2063 | w3c-xmlserializer@5.0.0: 2064 | resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} 2065 | engines: {node: '>=18'} 2066 | 2067 | webidl-conversions@4.0.2: 2068 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 2069 | 2070 | webidl-conversions@7.0.0: 2071 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 2072 | engines: {node: '>=12'} 2073 | 2074 | whatwg-encoding@3.1.1: 2075 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} 2076 | engines: {node: '>=18'} 2077 | 2078 | whatwg-mimetype@4.0.0: 2079 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 2080 | engines: {node: '>=18'} 2081 | 2082 | whatwg-url@14.1.0: 2083 | resolution: {integrity: sha512-jlf/foYIKywAt3x/XWKZ/3rz8OSJPiWktjmk891alJUEjiVxKX9LEO92qH3hv4aJ0mN3MWPvGMCy8jQi95xK4w==} 2084 | engines: {node: '>=18'} 2085 | 2086 | whatwg-url@7.1.0: 2087 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 2088 | 2089 | which-boxed-primitive@1.1.1: 2090 | resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 2091 | engines: {node: '>= 0.4'} 2092 | 2093 | which-builtin-type@1.2.1: 2094 | resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 2095 | engines: {node: '>= 0.4'} 2096 | 2097 | which-collection@1.0.2: 2098 | resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 2099 | engines: {node: '>= 0.4'} 2100 | 2101 | which-typed-array@1.1.18: 2102 | resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} 2103 | engines: {node: '>= 0.4'} 2104 | 2105 | which@2.0.2: 2106 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2107 | engines: {node: '>= 8'} 2108 | hasBin: true 2109 | 2110 | why-is-node-running@2.3.0: 2111 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 2112 | engines: {node: '>=8'} 2113 | hasBin: true 2114 | 2115 | word-wrap@1.2.5: 2116 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2117 | engines: {node: '>=0.10.0'} 2118 | 2119 | wrap-ansi@7.0.0: 2120 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2121 | engines: {node: '>=10'} 2122 | 2123 | wrap-ansi@8.1.0: 2124 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2125 | engines: {node: '>=12'} 2126 | 2127 | ws@8.18.0: 2128 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 2129 | engines: {node: '>=10.0.0'} 2130 | peerDependencies: 2131 | bufferutil: ^4.0.1 2132 | utf-8-validate: '>=5.0.2' 2133 | peerDependenciesMeta: 2134 | bufferutil: 2135 | optional: true 2136 | utf-8-validate: 2137 | optional: true 2138 | 2139 | xml-name-validator@5.0.0: 2140 | resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} 2141 | engines: {node: '>=18'} 2142 | 2143 | xmlchars@2.2.0: 2144 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2145 | 2146 | yallist@4.0.0: 2147 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2148 | 2149 | yargs-parser@20.2.9: 2150 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 2151 | engines: {node: '>=10'} 2152 | 2153 | yocto-queue@0.1.0: 2154 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2155 | engines: {node: '>=10'} 2156 | 2157 | snapshots: 2158 | 2159 | '@adobe/css-tools@4.4.1': {} 2160 | 2161 | '@asamuzakjp/css-color@2.8.3': 2162 | dependencies: 2163 | '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) 2164 | '@csstools/css-color-parser': 3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) 2165 | '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) 2166 | '@csstools/css-tokenizer': 3.0.3 2167 | lru-cache: 10.4.3 2168 | 2169 | '@babel/code-frame@7.26.2': 2170 | dependencies: 2171 | '@babel/helper-validator-identifier': 7.25.9 2172 | js-tokens: 4.0.0 2173 | picocolors: 1.1.1 2174 | 2175 | '@babel/helper-validator-identifier@7.25.9': {} 2176 | 2177 | '@babel/runtime@7.26.0': 2178 | dependencies: 2179 | regenerator-runtime: 0.14.1 2180 | 2181 | '@csstools/color-helpers@5.0.1': {} 2182 | 2183 | '@csstools/css-calc@2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': 2184 | dependencies: 2185 | '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) 2186 | '@csstools/css-tokenizer': 3.0.3 2187 | 2188 | '@csstools/css-color-parser@3.0.7(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': 2189 | dependencies: 2190 | '@csstools/color-helpers': 5.0.1 2191 | '@csstools/css-calc': 2.1.1(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) 2192 | '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) 2193 | '@csstools/css-tokenizer': 3.0.3 2194 | 2195 | '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': 2196 | dependencies: 2197 | '@csstools/css-tokenizer': 3.0.3 2198 | 2199 | '@csstools/css-tokenizer@3.0.3': {} 2200 | 2201 | '@esbuild/aix-ppc64@0.24.2': 2202 | optional: true 2203 | 2204 | '@esbuild/android-arm64@0.24.2': 2205 | optional: true 2206 | 2207 | '@esbuild/android-arm@0.24.2': 2208 | optional: true 2209 | 2210 | '@esbuild/android-x64@0.24.2': 2211 | optional: true 2212 | 2213 | '@esbuild/darwin-arm64@0.24.2': 2214 | optional: true 2215 | 2216 | '@esbuild/darwin-x64@0.24.2': 2217 | optional: true 2218 | 2219 | '@esbuild/freebsd-arm64@0.24.2': 2220 | optional: true 2221 | 2222 | '@esbuild/freebsd-x64@0.24.2': 2223 | optional: true 2224 | 2225 | '@esbuild/linux-arm64@0.24.2': 2226 | optional: true 2227 | 2228 | '@esbuild/linux-arm@0.24.2': 2229 | optional: true 2230 | 2231 | '@esbuild/linux-ia32@0.24.2': 2232 | optional: true 2233 | 2234 | '@esbuild/linux-loong64@0.24.2': 2235 | optional: true 2236 | 2237 | '@esbuild/linux-mips64el@0.24.2': 2238 | optional: true 2239 | 2240 | '@esbuild/linux-ppc64@0.24.2': 2241 | optional: true 2242 | 2243 | '@esbuild/linux-riscv64@0.24.2': 2244 | optional: true 2245 | 2246 | '@esbuild/linux-s390x@0.24.2': 2247 | optional: true 2248 | 2249 | '@esbuild/linux-x64@0.24.2': 2250 | optional: true 2251 | 2252 | '@esbuild/netbsd-arm64@0.24.2': 2253 | optional: true 2254 | 2255 | '@esbuild/netbsd-x64@0.24.2': 2256 | optional: true 2257 | 2258 | '@esbuild/openbsd-arm64@0.24.2': 2259 | optional: true 2260 | 2261 | '@esbuild/openbsd-x64@0.24.2': 2262 | optional: true 2263 | 2264 | '@esbuild/sunos-x64@0.24.2': 2265 | optional: true 2266 | 2267 | '@esbuild/win32-arm64@0.24.2': 2268 | optional: true 2269 | 2270 | '@esbuild/win32-ia32@0.24.2': 2271 | optional: true 2272 | 2273 | '@esbuild/win32-x64@0.24.2': 2274 | optional: true 2275 | 2276 | '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0)': 2277 | dependencies: 2278 | eslint: 9.18.0 2279 | eslint-visitor-keys: 3.4.3 2280 | 2281 | '@eslint-community/regexpp@4.12.1': {} 2282 | 2283 | '@eslint/config-array@0.19.1': 2284 | dependencies: 2285 | '@eslint/object-schema': 2.1.5 2286 | debug: 4.4.0 2287 | minimatch: 3.1.2 2288 | transitivePeerDependencies: 2289 | - supports-color 2290 | 2291 | '@eslint/core@0.10.0': 2292 | dependencies: 2293 | '@types/json-schema': 7.0.15 2294 | 2295 | '@eslint/eslintrc@3.2.0': 2296 | dependencies: 2297 | ajv: 6.12.6 2298 | debug: 4.4.0 2299 | espree: 10.3.0 2300 | globals: 14.0.0 2301 | ignore: 5.3.2 2302 | import-fresh: 3.3.0 2303 | js-yaml: 4.1.0 2304 | minimatch: 3.1.2 2305 | strip-json-comments: 3.1.1 2306 | transitivePeerDependencies: 2307 | - supports-color 2308 | 2309 | '@eslint/js@9.18.0': {} 2310 | 2311 | '@eslint/object-schema@2.1.5': {} 2312 | 2313 | '@eslint/plugin-kit@0.2.5': 2314 | dependencies: 2315 | '@eslint/core': 0.10.0 2316 | levn: 0.4.1 2317 | 2318 | '@humanfs/core@0.19.1': {} 2319 | 2320 | '@humanfs/node@0.16.6': 2321 | dependencies: 2322 | '@humanfs/core': 0.19.1 2323 | '@humanwhocodes/retry': 0.3.1 2324 | 2325 | '@humanwhocodes/module-importer@1.0.1': {} 2326 | 2327 | '@humanwhocodes/retry@0.3.1': {} 2328 | 2329 | '@humanwhocodes/retry@0.4.1': {} 2330 | 2331 | '@isaacs/cliui@8.0.2': 2332 | dependencies: 2333 | string-width: 5.1.2 2334 | string-width-cjs: string-width@4.2.3 2335 | strip-ansi: 7.1.0 2336 | strip-ansi-cjs: strip-ansi@6.0.1 2337 | wrap-ansi: 8.1.0 2338 | wrap-ansi-cjs: wrap-ansi@7.0.0 2339 | 2340 | '@jridgewell/gen-mapping@0.3.8': 2341 | dependencies: 2342 | '@jridgewell/set-array': 1.2.1 2343 | '@jridgewell/sourcemap-codec': 1.5.0 2344 | '@jridgewell/trace-mapping': 0.3.25 2345 | 2346 | '@jridgewell/resolve-uri@3.1.2': {} 2347 | 2348 | '@jridgewell/set-array@1.2.1': {} 2349 | 2350 | '@jridgewell/sourcemap-codec@1.5.0': {} 2351 | 2352 | '@jridgewell/trace-mapping@0.3.25': 2353 | dependencies: 2354 | '@jridgewell/resolve-uri': 3.1.2 2355 | '@jridgewell/sourcemap-codec': 1.5.0 2356 | 2357 | '@nodelib/fs.scandir@2.1.5': 2358 | dependencies: 2359 | '@nodelib/fs.stat': 2.0.5 2360 | run-parallel: 1.2.0 2361 | 2362 | '@nodelib/fs.stat@2.0.5': {} 2363 | 2364 | '@nodelib/fs.walk@1.2.8': 2365 | dependencies: 2366 | '@nodelib/fs.scandir': 2.1.5 2367 | fastq: 1.18.0 2368 | 2369 | '@pkgjs/parseargs@0.11.0': 2370 | optional: true 2371 | 2372 | '@rollup/rollup-android-arm-eabi@4.32.0': 2373 | optional: true 2374 | 2375 | '@rollup/rollup-android-arm64@4.32.0': 2376 | optional: true 2377 | 2378 | '@rollup/rollup-darwin-arm64@4.32.0': 2379 | optional: true 2380 | 2381 | '@rollup/rollup-darwin-x64@4.32.0': 2382 | optional: true 2383 | 2384 | '@rollup/rollup-freebsd-arm64@4.32.0': 2385 | optional: true 2386 | 2387 | '@rollup/rollup-freebsd-x64@4.32.0': 2388 | optional: true 2389 | 2390 | '@rollup/rollup-linux-arm-gnueabihf@4.32.0': 2391 | optional: true 2392 | 2393 | '@rollup/rollup-linux-arm-musleabihf@4.32.0': 2394 | optional: true 2395 | 2396 | '@rollup/rollup-linux-arm64-gnu@4.32.0': 2397 | optional: true 2398 | 2399 | '@rollup/rollup-linux-arm64-musl@4.32.0': 2400 | optional: true 2401 | 2402 | '@rollup/rollup-linux-loongarch64-gnu@4.32.0': 2403 | optional: true 2404 | 2405 | '@rollup/rollup-linux-powerpc64le-gnu@4.32.0': 2406 | optional: true 2407 | 2408 | '@rollup/rollup-linux-riscv64-gnu@4.32.0': 2409 | optional: true 2410 | 2411 | '@rollup/rollup-linux-s390x-gnu@4.32.0': 2412 | optional: true 2413 | 2414 | '@rollup/rollup-linux-x64-gnu@4.32.0': 2415 | optional: true 2416 | 2417 | '@rollup/rollup-linux-x64-musl@4.32.0': 2418 | optional: true 2419 | 2420 | '@rollup/rollup-win32-arm64-msvc@4.32.0': 2421 | optional: true 2422 | 2423 | '@rollup/rollup-win32-ia32-msvc@4.32.0': 2424 | optional: true 2425 | 2426 | '@rollup/rollup-win32-x64-msvc@4.32.0': 2427 | optional: true 2428 | 2429 | '@testing-library/dom@10.4.0': 2430 | dependencies: 2431 | '@babel/code-frame': 7.26.2 2432 | '@babel/runtime': 7.26.0 2433 | '@types/aria-query': 5.0.4 2434 | aria-query: 5.3.0 2435 | chalk: 4.1.2 2436 | dom-accessibility-api: 0.5.16 2437 | lz-string: 1.5.0 2438 | pretty-format: 27.5.1 2439 | 2440 | '@testing-library/jest-dom@6.6.3': 2441 | dependencies: 2442 | '@adobe/css-tools': 4.4.1 2443 | aria-query: 5.3.0 2444 | chalk: 3.0.0 2445 | css.escape: 1.5.1 2446 | dom-accessibility-api: 0.6.3 2447 | lodash: 4.17.21 2448 | redent: 3.0.0 2449 | 2450 | '@testing-library/react@16.2.0(@testing-library/dom@10.4.0)(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2451 | dependencies: 2452 | '@babel/runtime': 7.26.0 2453 | '@testing-library/dom': 10.4.0 2454 | react: 18.3.1 2455 | react-dom: 18.3.1(react@18.3.1) 2456 | optionalDependencies: 2457 | '@types/react': 18.3.18 2458 | 2459 | '@types/aria-query@5.0.4': {} 2460 | 2461 | '@types/estree@1.0.6': {} 2462 | 2463 | '@types/json-schema@7.0.15': {} 2464 | 2465 | '@types/minimist@1.2.5': {} 2466 | 2467 | '@types/node@22.10.10': 2468 | dependencies: 2469 | undici-types: 6.20.0 2470 | 2471 | '@types/normalize-package-data@2.4.4': {} 2472 | 2473 | '@types/prop-types@15.7.14': {} 2474 | 2475 | '@types/react@18.3.18': 2476 | dependencies: 2477 | '@types/prop-types': 15.7.14 2478 | csstype: 3.1.3 2479 | 2480 | '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': 2481 | dependencies: 2482 | '@eslint-community/regexpp': 4.12.1 2483 | '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 2484 | '@typescript-eslint/scope-manager': 8.21.0 2485 | '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 2486 | '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 2487 | '@typescript-eslint/visitor-keys': 8.21.0 2488 | eslint: 9.18.0 2489 | graphemer: 1.4.0 2490 | ignore: 5.3.2 2491 | natural-compare: 1.4.0 2492 | ts-api-utils: 2.0.0(typescript@5.7.3) 2493 | typescript: 5.7.3 2494 | transitivePeerDependencies: 2495 | - supports-color 2496 | 2497 | '@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3)': 2498 | dependencies: 2499 | '@typescript-eslint/scope-manager': 8.21.0 2500 | '@typescript-eslint/types': 8.21.0 2501 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2502 | '@typescript-eslint/visitor-keys': 8.21.0 2503 | debug: 4.4.0 2504 | eslint: 9.18.0 2505 | typescript: 5.7.3 2506 | transitivePeerDependencies: 2507 | - supports-color 2508 | 2509 | '@typescript-eslint/scope-manager@8.21.0': 2510 | dependencies: 2511 | '@typescript-eslint/types': 8.21.0 2512 | '@typescript-eslint/visitor-keys': 8.21.0 2513 | 2514 | '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0)(typescript@5.7.3)': 2515 | dependencies: 2516 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2517 | '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 2518 | debug: 4.4.0 2519 | eslint: 9.18.0 2520 | ts-api-utils: 2.0.0(typescript@5.7.3) 2521 | typescript: 5.7.3 2522 | transitivePeerDependencies: 2523 | - supports-color 2524 | 2525 | '@typescript-eslint/types@8.21.0': {} 2526 | 2527 | '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': 2528 | dependencies: 2529 | '@typescript-eslint/types': 8.21.0 2530 | '@typescript-eslint/visitor-keys': 8.21.0 2531 | debug: 4.4.0 2532 | fast-glob: 3.3.3 2533 | is-glob: 4.0.3 2534 | minimatch: 9.0.5 2535 | semver: 7.6.3 2536 | ts-api-utils: 2.0.0(typescript@5.7.3) 2537 | typescript: 5.7.3 2538 | transitivePeerDependencies: 2539 | - supports-color 2540 | 2541 | '@typescript-eslint/utils@8.21.0(eslint@9.18.0)(typescript@5.7.3)': 2542 | dependencies: 2543 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0) 2544 | '@typescript-eslint/scope-manager': 8.21.0 2545 | '@typescript-eslint/types': 8.21.0 2546 | '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) 2547 | eslint: 9.18.0 2548 | typescript: 5.7.3 2549 | transitivePeerDependencies: 2550 | - supports-color 2551 | 2552 | '@typescript-eslint/visitor-keys@8.21.0': 2553 | dependencies: 2554 | '@typescript-eslint/types': 8.21.0 2555 | eslint-visitor-keys: 4.2.0 2556 | 2557 | '@vitest/expect@3.0.4': 2558 | dependencies: 2559 | '@vitest/spy': 3.0.4 2560 | '@vitest/utils': 3.0.4 2561 | chai: 5.1.2 2562 | tinyrainbow: 2.0.0 2563 | 2564 | '@vitest/mocker@3.0.4(vite@6.0.11(@types/node@22.10.10))': 2565 | dependencies: 2566 | '@vitest/spy': 3.0.4 2567 | estree-walker: 3.0.3 2568 | magic-string: 0.30.17 2569 | optionalDependencies: 2570 | vite: 6.0.11(@types/node@22.10.10) 2571 | 2572 | '@vitest/pretty-format@3.0.4': 2573 | dependencies: 2574 | tinyrainbow: 2.0.0 2575 | 2576 | '@vitest/runner@3.0.4': 2577 | dependencies: 2578 | '@vitest/utils': 3.0.4 2579 | pathe: 2.0.2 2580 | 2581 | '@vitest/snapshot@3.0.4': 2582 | dependencies: 2583 | '@vitest/pretty-format': 3.0.4 2584 | magic-string: 0.30.17 2585 | pathe: 2.0.2 2586 | 2587 | '@vitest/spy@3.0.4': 2588 | dependencies: 2589 | tinyspy: 3.0.2 2590 | 2591 | '@vitest/utils@3.0.4': 2592 | dependencies: 2593 | '@vitest/pretty-format': 3.0.4 2594 | loupe: 3.1.2 2595 | tinyrainbow: 2.0.0 2596 | 2597 | acorn-jsx@5.3.2(acorn@8.14.0): 2598 | dependencies: 2599 | acorn: 8.14.0 2600 | 2601 | acorn@8.14.0: {} 2602 | 2603 | agent-base@7.1.3: {} 2604 | 2605 | ajv@6.12.6: 2606 | dependencies: 2607 | fast-deep-equal: 3.1.3 2608 | fast-json-stable-stringify: 2.1.0 2609 | json-schema-traverse: 0.4.1 2610 | uri-js: 4.4.1 2611 | 2612 | ansi-regex@5.0.1: {} 2613 | 2614 | ansi-regex@6.1.0: {} 2615 | 2616 | ansi-styles@4.3.0: 2617 | dependencies: 2618 | color-convert: 2.0.1 2619 | 2620 | ansi-styles@5.2.0: {} 2621 | 2622 | ansi-styles@6.2.1: {} 2623 | 2624 | any-promise@1.3.0: {} 2625 | 2626 | argparse@2.0.1: {} 2627 | 2628 | aria-query@5.3.0: 2629 | dependencies: 2630 | dequal: 2.0.3 2631 | 2632 | array-buffer-byte-length@1.0.2: 2633 | dependencies: 2634 | call-bound: 1.0.3 2635 | is-array-buffer: 3.0.5 2636 | 2637 | array-includes@3.1.8: 2638 | dependencies: 2639 | call-bind: 1.0.8 2640 | define-properties: 1.2.1 2641 | es-abstract: 1.23.9 2642 | es-object-atoms: 1.1.1 2643 | get-intrinsic: 1.2.7 2644 | is-string: 1.1.1 2645 | 2646 | array.prototype.findlast@1.2.5: 2647 | dependencies: 2648 | call-bind: 1.0.8 2649 | define-properties: 1.2.1 2650 | es-abstract: 1.23.9 2651 | es-errors: 1.3.0 2652 | es-object-atoms: 1.1.1 2653 | es-shim-unscopables: 1.0.2 2654 | 2655 | array.prototype.flat@1.3.3: 2656 | dependencies: 2657 | call-bind: 1.0.8 2658 | define-properties: 1.2.1 2659 | es-abstract: 1.23.9 2660 | es-shim-unscopables: 1.0.2 2661 | 2662 | array.prototype.flatmap@1.3.3: 2663 | dependencies: 2664 | call-bind: 1.0.8 2665 | define-properties: 1.2.1 2666 | es-abstract: 1.23.9 2667 | es-shim-unscopables: 1.0.2 2668 | 2669 | array.prototype.tosorted@1.1.4: 2670 | dependencies: 2671 | call-bind: 1.0.8 2672 | define-properties: 1.2.1 2673 | es-abstract: 1.23.9 2674 | es-errors: 1.3.0 2675 | es-shim-unscopables: 1.0.2 2676 | 2677 | arraybuffer.prototype.slice@1.0.4: 2678 | dependencies: 2679 | array-buffer-byte-length: 1.0.2 2680 | call-bind: 1.0.8 2681 | define-properties: 1.2.1 2682 | es-abstract: 1.23.9 2683 | es-errors: 1.3.0 2684 | get-intrinsic: 1.2.7 2685 | is-array-buffer: 3.0.5 2686 | 2687 | arrify@1.0.1: {} 2688 | 2689 | assertion-error@2.0.1: {} 2690 | 2691 | async-function@1.0.0: {} 2692 | 2693 | asynckit@0.4.0: {} 2694 | 2695 | available-typed-arrays@1.0.7: 2696 | dependencies: 2697 | possible-typed-array-names: 1.0.0 2698 | 2699 | balanced-match@1.0.2: {} 2700 | 2701 | brace-expansion@1.1.11: 2702 | dependencies: 2703 | balanced-match: 1.0.2 2704 | concat-map: 0.0.1 2705 | 2706 | brace-expansion@2.0.1: 2707 | dependencies: 2708 | balanced-match: 1.0.2 2709 | 2710 | braces@3.0.3: 2711 | dependencies: 2712 | fill-range: 7.1.1 2713 | 2714 | bundle-require@5.1.0(esbuild@0.24.2): 2715 | dependencies: 2716 | esbuild: 0.24.2 2717 | load-tsconfig: 0.2.5 2718 | 2719 | cac@6.7.14: {} 2720 | 2721 | call-bind-apply-helpers@1.0.1: 2722 | dependencies: 2723 | es-errors: 1.3.0 2724 | function-bind: 1.1.2 2725 | 2726 | call-bind@1.0.8: 2727 | dependencies: 2728 | call-bind-apply-helpers: 1.0.1 2729 | es-define-property: 1.0.1 2730 | get-intrinsic: 1.2.7 2731 | set-function-length: 1.2.2 2732 | 2733 | call-bound@1.0.3: 2734 | dependencies: 2735 | call-bind-apply-helpers: 1.0.1 2736 | get-intrinsic: 1.2.7 2737 | 2738 | callsites@3.1.0: {} 2739 | 2740 | camelcase-keys@7.0.2: 2741 | dependencies: 2742 | camelcase: 6.3.0 2743 | map-obj: 4.3.0 2744 | quick-lru: 5.1.1 2745 | type-fest: 1.4.0 2746 | 2747 | camelcase@6.3.0: {} 2748 | 2749 | chai@5.1.2: 2750 | dependencies: 2751 | assertion-error: 2.0.1 2752 | check-error: 2.1.1 2753 | deep-eql: 5.0.2 2754 | loupe: 3.1.2 2755 | pathval: 2.0.0 2756 | 2757 | chalk@3.0.0: 2758 | dependencies: 2759 | ansi-styles: 4.3.0 2760 | supports-color: 7.2.0 2761 | 2762 | chalk@4.1.2: 2763 | dependencies: 2764 | ansi-styles: 4.3.0 2765 | supports-color: 7.2.0 2766 | 2767 | check-error@2.1.1: {} 2768 | 2769 | chokidar@4.0.3: 2770 | dependencies: 2771 | readdirp: 4.1.1 2772 | 2773 | color-convert@2.0.1: 2774 | dependencies: 2775 | color-name: 1.1.4 2776 | 2777 | color-name@1.1.4: {} 2778 | 2779 | combined-stream@1.0.8: 2780 | dependencies: 2781 | delayed-stream: 1.0.0 2782 | 2783 | commander@4.1.1: {} 2784 | 2785 | concat-map@0.0.1: {} 2786 | 2787 | consola@3.4.0: {} 2788 | 2789 | cross-spawn@7.0.6: 2790 | dependencies: 2791 | path-key: 3.1.1 2792 | shebang-command: 2.0.0 2793 | which: 2.0.2 2794 | 2795 | css.escape@1.5.1: {} 2796 | 2797 | cssstyle@4.2.1: 2798 | dependencies: 2799 | '@asamuzakjp/css-color': 2.8.3 2800 | rrweb-cssom: 0.8.0 2801 | 2802 | csstype@3.1.3: {} 2803 | 2804 | data-urls@5.0.0: 2805 | dependencies: 2806 | whatwg-mimetype: 4.0.0 2807 | whatwg-url: 14.1.0 2808 | 2809 | data-view-buffer@1.0.2: 2810 | dependencies: 2811 | call-bound: 1.0.3 2812 | es-errors: 1.3.0 2813 | is-data-view: 1.0.2 2814 | 2815 | data-view-byte-length@1.0.2: 2816 | dependencies: 2817 | call-bound: 1.0.3 2818 | es-errors: 1.3.0 2819 | is-data-view: 1.0.2 2820 | 2821 | data-view-byte-offset@1.0.1: 2822 | dependencies: 2823 | call-bound: 1.0.3 2824 | es-errors: 1.3.0 2825 | is-data-view: 1.0.2 2826 | 2827 | debug@4.4.0: 2828 | dependencies: 2829 | ms: 2.1.3 2830 | 2831 | decamelize-keys@1.1.1: 2832 | dependencies: 2833 | decamelize: 1.2.0 2834 | map-obj: 1.0.1 2835 | 2836 | decamelize@1.2.0: {} 2837 | 2838 | decamelize@5.0.1: {} 2839 | 2840 | decimal.js@10.5.0: {} 2841 | 2842 | deep-eql@5.0.2: {} 2843 | 2844 | deep-is@0.1.4: {} 2845 | 2846 | define-data-property@1.1.4: 2847 | dependencies: 2848 | es-define-property: 1.0.1 2849 | es-errors: 1.3.0 2850 | gopd: 1.2.0 2851 | 2852 | define-properties@1.2.1: 2853 | dependencies: 2854 | define-data-property: 1.1.4 2855 | has-property-descriptors: 1.0.2 2856 | object-keys: 1.1.1 2857 | 2858 | delayed-stream@1.0.0: {} 2859 | 2860 | dequal@2.0.3: {} 2861 | 2862 | doctrine@2.1.0: 2863 | dependencies: 2864 | esutils: 2.0.3 2865 | 2866 | dom-accessibility-api@0.5.16: {} 2867 | 2868 | dom-accessibility-api@0.6.3: {} 2869 | 2870 | dunder-proto@1.0.1: 2871 | dependencies: 2872 | call-bind-apply-helpers: 1.0.1 2873 | es-errors: 1.3.0 2874 | gopd: 1.2.0 2875 | 2876 | duplexer@0.1.2: {} 2877 | 2878 | eastasianwidth@0.2.0: {} 2879 | 2880 | emoji-regex@8.0.0: {} 2881 | 2882 | emoji-regex@9.2.2: {} 2883 | 2884 | entities@4.5.0: {} 2885 | 2886 | error-ex@1.3.2: 2887 | dependencies: 2888 | is-arrayish: 0.2.1 2889 | 2890 | es-abstract@1.23.9: 2891 | dependencies: 2892 | array-buffer-byte-length: 1.0.2 2893 | arraybuffer.prototype.slice: 1.0.4 2894 | available-typed-arrays: 1.0.7 2895 | call-bind: 1.0.8 2896 | call-bound: 1.0.3 2897 | data-view-buffer: 1.0.2 2898 | data-view-byte-length: 1.0.2 2899 | data-view-byte-offset: 1.0.1 2900 | es-define-property: 1.0.1 2901 | es-errors: 1.3.0 2902 | es-object-atoms: 1.1.1 2903 | es-set-tostringtag: 2.1.0 2904 | es-to-primitive: 1.3.0 2905 | function.prototype.name: 1.1.8 2906 | get-intrinsic: 1.2.7 2907 | get-proto: 1.0.1 2908 | get-symbol-description: 1.1.0 2909 | globalthis: 1.0.4 2910 | gopd: 1.2.0 2911 | has-property-descriptors: 1.0.2 2912 | has-proto: 1.2.0 2913 | has-symbols: 1.1.0 2914 | hasown: 2.0.2 2915 | internal-slot: 1.1.0 2916 | is-array-buffer: 3.0.5 2917 | is-callable: 1.2.7 2918 | is-data-view: 1.0.2 2919 | is-regex: 1.2.1 2920 | is-shared-array-buffer: 1.0.4 2921 | is-string: 1.1.1 2922 | is-typed-array: 1.1.15 2923 | is-weakref: 1.1.0 2924 | math-intrinsics: 1.1.0 2925 | object-inspect: 1.13.3 2926 | object-keys: 1.1.1 2927 | object.assign: 4.1.7 2928 | own-keys: 1.0.1 2929 | regexp.prototype.flags: 1.5.4 2930 | safe-array-concat: 1.1.3 2931 | safe-push-apply: 1.0.0 2932 | safe-regex-test: 1.1.0 2933 | set-proto: 1.0.0 2934 | string.prototype.trim: 1.2.10 2935 | string.prototype.trimend: 1.0.9 2936 | string.prototype.trimstart: 1.0.8 2937 | typed-array-buffer: 1.0.3 2938 | typed-array-byte-length: 1.0.3 2939 | typed-array-byte-offset: 1.0.4 2940 | typed-array-length: 1.0.7 2941 | unbox-primitive: 1.1.0 2942 | which-typed-array: 1.1.18 2943 | 2944 | es-define-property@1.0.1: {} 2945 | 2946 | es-errors@1.3.0: {} 2947 | 2948 | es-iterator-helpers@1.2.1: 2949 | dependencies: 2950 | call-bind: 1.0.8 2951 | call-bound: 1.0.3 2952 | define-properties: 1.2.1 2953 | es-abstract: 1.23.9 2954 | es-errors: 1.3.0 2955 | es-set-tostringtag: 2.1.0 2956 | function-bind: 1.1.2 2957 | get-intrinsic: 1.2.7 2958 | globalthis: 1.0.4 2959 | gopd: 1.2.0 2960 | has-property-descriptors: 1.0.2 2961 | has-proto: 1.2.0 2962 | has-symbols: 1.1.0 2963 | internal-slot: 1.1.0 2964 | iterator.prototype: 1.1.5 2965 | safe-array-concat: 1.1.3 2966 | 2967 | es-module-lexer@1.6.0: {} 2968 | 2969 | es-object-atoms@1.1.1: 2970 | dependencies: 2971 | es-errors: 1.3.0 2972 | 2973 | es-set-tostringtag@2.1.0: 2974 | dependencies: 2975 | es-errors: 1.3.0 2976 | get-intrinsic: 1.2.7 2977 | has-tostringtag: 1.0.2 2978 | hasown: 2.0.2 2979 | 2980 | es-shim-unscopables@1.0.2: 2981 | dependencies: 2982 | hasown: 2.0.2 2983 | 2984 | es-to-primitive@1.3.0: 2985 | dependencies: 2986 | is-callable: 1.2.7 2987 | is-date-object: 1.1.0 2988 | is-symbol: 1.1.1 2989 | 2990 | esbuild@0.24.2: 2991 | optionalDependencies: 2992 | '@esbuild/aix-ppc64': 0.24.2 2993 | '@esbuild/android-arm': 0.24.2 2994 | '@esbuild/android-arm64': 0.24.2 2995 | '@esbuild/android-x64': 0.24.2 2996 | '@esbuild/darwin-arm64': 0.24.2 2997 | '@esbuild/darwin-x64': 0.24.2 2998 | '@esbuild/freebsd-arm64': 0.24.2 2999 | '@esbuild/freebsd-x64': 0.24.2 3000 | '@esbuild/linux-arm': 0.24.2 3001 | '@esbuild/linux-arm64': 0.24.2 3002 | '@esbuild/linux-ia32': 0.24.2 3003 | '@esbuild/linux-loong64': 0.24.2 3004 | '@esbuild/linux-mips64el': 0.24.2 3005 | '@esbuild/linux-ppc64': 0.24.2 3006 | '@esbuild/linux-riscv64': 0.24.2 3007 | '@esbuild/linux-s390x': 0.24.2 3008 | '@esbuild/linux-x64': 0.24.2 3009 | '@esbuild/netbsd-arm64': 0.24.2 3010 | '@esbuild/netbsd-x64': 0.24.2 3011 | '@esbuild/openbsd-arm64': 0.24.2 3012 | '@esbuild/openbsd-x64': 0.24.2 3013 | '@esbuild/sunos-x64': 0.24.2 3014 | '@esbuild/win32-arm64': 0.24.2 3015 | '@esbuild/win32-ia32': 0.24.2 3016 | '@esbuild/win32-x64': 0.24.2 3017 | 3018 | escape-string-regexp@4.0.0: {} 3019 | 3020 | eslint-plugin-react-hooks@5.1.0(eslint@9.18.0): 3021 | dependencies: 3022 | eslint: 9.18.0 3023 | 3024 | eslint-plugin-react@7.37.4(eslint@9.18.0): 3025 | dependencies: 3026 | array-includes: 3.1.8 3027 | array.prototype.findlast: 1.2.5 3028 | array.prototype.flatmap: 1.3.3 3029 | array.prototype.tosorted: 1.1.4 3030 | doctrine: 2.1.0 3031 | es-iterator-helpers: 1.2.1 3032 | eslint: 9.18.0 3033 | estraverse: 5.3.0 3034 | hasown: 2.0.2 3035 | jsx-ast-utils: 3.3.5 3036 | minimatch: 3.1.2 3037 | object.entries: 1.1.8 3038 | object.fromentries: 2.0.8 3039 | object.values: 1.2.1 3040 | prop-types: 15.8.1 3041 | resolve: 2.0.0-next.5 3042 | semver: 6.3.1 3043 | string.prototype.matchall: 4.0.12 3044 | string.prototype.repeat: 1.0.0 3045 | 3046 | eslint-scope@8.2.0: 3047 | dependencies: 3048 | esrecurse: 4.3.0 3049 | estraverse: 5.3.0 3050 | 3051 | eslint-visitor-keys@3.4.3: {} 3052 | 3053 | eslint-visitor-keys@4.2.0: {} 3054 | 3055 | eslint@9.18.0: 3056 | dependencies: 3057 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0) 3058 | '@eslint-community/regexpp': 4.12.1 3059 | '@eslint/config-array': 0.19.1 3060 | '@eslint/core': 0.10.0 3061 | '@eslint/eslintrc': 3.2.0 3062 | '@eslint/js': 9.18.0 3063 | '@eslint/plugin-kit': 0.2.5 3064 | '@humanfs/node': 0.16.6 3065 | '@humanwhocodes/module-importer': 1.0.1 3066 | '@humanwhocodes/retry': 0.4.1 3067 | '@types/estree': 1.0.6 3068 | '@types/json-schema': 7.0.15 3069 | ajv: 6.12.6 3070 | chalk: 4.1.2 3071 | cross-spawn: 7.0.6 3072 | debug: 4.4.0 3073 | escape-string-regexp: 4.0.0 3074 | eslint-scope: 8.2.0 3075 | eslint-visitor-keys: 4.2.0 3076 | espree: 10.3.0 3077 | esquery: 1.6.0 3078 | esutils: 2.0.3 3079 | fast-deep-equal: 3.1.3 3080 | file-entry-cache: 8.0.0 3081 | find-up: 5.0.0 3082 | glob-parent: 6.0.2 3083 | ignore: 5.3.2 3084 | imurmurhash: 0.1.4 3085 | is-glob: 4.0.3 3086 | json-stable-stringify-without-jsonify: 1.0.1 3087 | lodash.merge: 4.6.2 3088 | minimatch: 3.1.2 3089 | natural-compare: 1.4.0 3090 | optionator: 0.9.4 3091 | transitivePeerDependencies: 3092 | - supports-color 3093 | 3094 | espree@10.3.0: 3095 | dependencies: 3096 | acorn: 8.14.0 3097 | acorn-jsx: 5.3.2(acorn@8.14.0) 3098 | eslint-visitor-keys: 4.2.0 3099 | 3100 | esquery@1.6.0: 3101 | dependencies: 3102 | estraverse: 5.3.0 3103 | 3104 | esrecurse@4.3.0: 3105 | dependencies: 3106 | estraverse: 5.3.0 3107 | 3108 | estraverse@5.3.0: {} 3109 | 3110 | estree-walker@3.0.3: 3111 | dependencies: 3112 | '@types/estree': 1.0.6 3113 | 3114 | esutils@2.0.3: {} 3115 | 3116 | expect-type@1.1.0: {} 3117 | 3118 | fast-deep-equal@3.1.3: {} 3119 | 3120 | fast-glob@3.3.3: 3121 | dependencies: 3122 | '@nodelib/fs.stat': 2.0.5 3123 | '@nodelib/fs.walk': 1.2.8 3124 | glob-parent: 5.1.2 3125 | merge2: 1.4.1 3126 | micromatch: 4.0.8 3127 | 3128 | fast-json-stable-stringify@2.1.0: {} 3129 | 3130 | fast-levenshtein@2.0.6: {} 3131 | 3132 | fastq@1.18.0: 3133 | dependencies: 3134 | reusify: 1.0.4 3135 | 3136 | fdir@6.4.3(picomatch@4.0.2): 3137 | optionalDependencies: 3138 | picomatch: 4.0.2 3139 | 3140 | file-entry-cache@8.0.0: 3141 | dependencies: 3142 | flat-cache: 4.0.1 3143 | 3144 | fill-range@7.1.1: 3145 | dependencies: 3146 | to-regex-range: 5.0.1 3147 | 3148 | find-up@5.0.0: 3149 | dependencies: 3150 | locate-path: 6.0.0 3151 | path-exists: 4.0.0 3152 | 3153 | flat-cache@4.0.1: 3154 | dependencies: 3155 | flatted: 3.3.2 3156 | keyv: 4.5.4 3157 | 3158 | flatted@3.3.2: {} 3159 | 3160 | for-each@0.3.3: 3161 | dependencies: 3162 | is-callable: 1.2.7 3163 | 3164 | foreground-child@3.3.0: 3165 | dependencies: 3166 | cross-spawn: 7.0.6 3167 | signal-exit: 4.1.0 3168 | 3169 | form-data@4.0.1: 3170 | dependencies: 3171 | asynckit: 0.4.0 3172 | combined-stream: 1.0.8 3173 | mime-types: 2.1.35 3174 | 3175 | fsevents@2.3.3: 3176 | optional: true 3177 | 3178 | function-bind@1.1.2: {} 3179 | 3180 | function.prototype.name@1.1.8: 3181 | dependencies: 3182 | call-bind: 1.0.8 3183 | call-bound: 1.0.3 3184 | define-properties: 1.2.1 3185 | functions-have-names: 1.2.3 3186 | hasown: 2.0.2 3187 | is-callable: 1.2.7 3188 | 3189 | functions-have-names@1.2.3: {} 3190 | 3191 | get-intrinsic@1.2.7: 3192 | dependencies: 3193 | call-bind-apply-helpers: 1.0.1 3194 | es-define-property: 1.0.1 3195 | es-errors: 1.3.0 3196 | es-object-atoms: 1.1.1 3197 | function-bind: 1.1.2 3198 | get-proto: 1.0.1 3199 | gopd: 1.2.0 3200 | has-symbols: 1.1.0 3201 | hasown: 2.0.2 3202 | math-intrinsics: 1.1.0 3203 | 3204 | get-proto@1.0.1: 3205 | dependencies: 3206 | dunder-proto: 1.0.1 3207 | es-object-atoms: 1.1.1 3208 | 3209 | get-stdin@9.0.0: {} 3210 | 3211 | get-symbol-description@1.1.0: 3212 | dependencies: 3213 | call-bound: 1.0.3 3214 | es-errors: 1.3.0 3215 | get-intrinsic: 1.2.7 3216 | 3217 | glob-parent@5.1.2: 3218 | dependencies: 3219 | is-glob: 4.0.3 3220 | 3221 | glob-parent@6.0.2: 3222 | dependencies: 3223 | is-glob: 4.0.3 3224 | 3225 | glob@10.4.5: 3226 | dependencies: 3227 | foreground-child: 3.3.0 3228 | jackspeak: 3.4.3 3229 | minimatch: 9.0.5 3230 | minipass: 7.1.2 3231 | package-json-from-dist: 1.0.1 3232 | path-scurry: 1.11.1 3233 | 3234 | globals@14.0.0: {} 3235 | 3236 | globals@15.14.0: {} 3237 | 3238 | globalthis@1.0.4: 3239 | dependencies: 3240 | define-properties: 1.2.1 3241 | gopd: 1.2.0 3242 | 3243 | gopd@1.2.0: {} 3244 | 3245 | graphemer@1.4.0: {} 3246 | 3247 | gzip-size-cli@5.1.0: 3248 | dependencies: 3249 | chalk: 4.1.2 3250 | get-stdin: 9.0.0 3251 | gzip-size: 7.0.0 3252 | meow: 10.1.5 3253 | pretty-bytes: 5.6.0 3254 | 3255 | gzip-size@7.0.0: 3256 | dependencies: 3257 | duplexer: 0.1.2 3258 | 3259 | hard-rejection@2.1.0: {} 3260 | 3261 | has-bigints@1.1.0: {} 3262 | 3263 | has-flag@4.0.0: {} 3264 | 3265 | has-property-descriptors@1.0.2: 3266 | dependencies: 3267 | es-define-property: 1.0.1 3268 | 3269 | has-proto@1.2.0: 3270 | dependencies: 3271 | dunder-proto: 1.0.1 3272 | 3273 | has-symbols@1.1.0: {} 3274 | 3275 | has-tostringtag@1.0.2: 3276 | dependencies: 3277 | has-symbols: 1.1.0 3278 | 3279 | hasown@2.0.2: 3280 | dependencies: 3281 | function-bind: 1.1.2 3282 | 3283 | hosted-git-info@4.1.0: 3284 | dependencies: 3285 | lru-cache: 6.0.0 3286 | 3287 | html-encoding-sniffer@4.0.0: 3288 | dependencies: 3289 | whatwg-encoding: 3.1.1 3290 | 3291 | http-proxy-agent@7.0.2: 3292 | dependencies: 3293 | agent-base: 7.1.3 3294 | debug: 4.4.0 3295 | transitivePeerDependencies: 3296 | - supports-color 3297 | 3298 | https-proxy-agent@7.0.6: 3299 | dependencies: 3300 | agent-base: 7.1.3 3301 | debug: 4.4.0 3302 | transitivePeerDependencies: 3303 | - supports-color 3304 | 3305 | iconv-lite@0.6.3: 3306 | dependencies: 3307 | safer-buffer: 2.1.2 3308 | 3309 | ignore@5.3.2: {} 3310 | 3311 | import-fresh@3.3.0: 3312 | dependencies: 3313 | parent-module: 1.0.1 3314 | resolve-from: 4.0.0 3315 | 3316 | imurmurhash@0.1.4: {} 3317 | 3318 | indent-string@4.0.0: {} 3319 | 3320 | indent-string@5.0.0: {} 3321 | 3322 | internal-slot@1.1.0: 3323 | dependencies: 3324 | es-errors: 1.3.0 3325 | hasown: 2.0.2 3326 | side-channel: 1.1.0 3327 | 3328 | is-array-buffer@3.0.5: 3329 | dependencies: 3330 | call-bind: 1.0.8 3331 | call-bound: 1.0.3 3332 | get-intrinsic: 1.2.7 3333 | 3334 | is-arrayish@0.2.1: {} 3335 | 3336 | is-async-function@2.1.1: 3337 | dependencies: 3338 | async-function: 1.0.0 3339 | call-bound: 1.0.3 3340 | get-proto: 1.0.1 3341 | has-tostringtag: 1.0.2 3342 | safe-regex-test: 1.1.0 3343 | 3344 | is-bigint@1.1.0: 3345 | dependencies: 3346 | has-bigints: 1.1.0 3347 | 3348 | is-boolean-object@1.2.1: 3349 | dependencies: 3350 | call-bound: 1.0.3 3351 | has-tostringtag: 1.0.2 3352 | 3353 | is-callable@1.2.7: {} 3354 | 3355 | is-core-module@2.16.1: 3356 | dependencies: 3357 | hasown: 2.0.2 3358 | 3359 | is-data-view@1.0.2: 3360 | dependencies: 3361 | call-bound: 1.0.3 3362 | get-intrinsic: 1.2.7 3363 | is-typed-array: 1.1.15 3364 | 3365 | is-date-object@1.1.0: 3366 | dependencies: 3367 | call-bound: 1.0.3 3368 | has-tostringtag: 1.0.2 3369 | 3370 | is-extglob@2.1.1: {} 3371 | 3372 | is-finalizationregistry@1.1.1: 3373 | dependencies: 3374 | call-bound: 1.0.3 3375 | 3376 | is-fullwidth-code-point@3.0.0: {} 3377 | 3378 | is-generator-function@1.1.0: 3379 | dependencies: 3380 | call-bound: 1.0.3 3381 | get-proto: 1.0.1 3382 | has-tostringtag: 1.0.2 3383 | safe-regex-test: 1.1.0 3384 | 3385 | is-glob@4.0.3: 3386 | dependencies: 3387 | is-extglob: 2.1.1 3388 | 3389 | is-map@2.0.3: {} 3390 | 3391 | is-number-object@1.1.1: 3392 | dependencies: 3393 | call-bound: 1.0.3 3394 | has-tostringtag: 1.0.2 3395 | 3396 | is-number@7.0.0: {} 3397 | 3398 | is-plain-obj@1.1.0: {} 3399 | 3400 | is-potential-custom-element-name@1.0.1: {} 3401 | 3402 | is-regex@1.2.1: 3403 | dependencies: 3404 | call-bound: 1.0.3 3405 | gopd: 1.2.0 3406 | has-tostringtag: 1.0.2 3407 | hasown: 2.0.2 3408 | 3409 | is-set@2.0.3: {} 3410 | 3411 | is-shared-array-buffer@1.0.4: 3412 | dependencies: 3413 | call-bound: 1.0.3 3414 | 3415 | is-string@1.1.1: 3416 | dependencies: 3417 | call-bound: 1.0.3 3418 | has-tostringtag: 1.0.2 3419 | 3420 | is-symbol@1.1.1: 3421 | dependencies: 3422 | call-bound: 1.0.3 3423 | has-symbols: 1.1.0 3424 | safe-regex-test: 1.1.0 3425 | 3426 | is-typed-array@1.1.15: 3427 | dependencies: 3428 | which-typed-array: 1.1.18 3429 | 3430 | is-weakmap@2.0.2: {} 3431 | 3432 | is-weakref@1.1.0: 3433 | dependencies: 3434 | call-bound: 1.0.3 3435 | 3436 | is-weakset@2.0.4: 3437 | dependencies: 3438 | call-bound: 1.0.3 3439 | get-intrinsic: 1.2.7 3440 | 3441 | isarray@2.0.5: {} 3442 | 3443 | isexe@2.0.0: {} 3444 | 3445 | iterator.prototype@1.1.5: 3446 | dependencies: 3447 | define-data-property: 1.1.4 3448 | es-object-atoms: 1.1.1 3449 | get-intrinsic: 1.2.7 3450 | get-proto: 1.0.1 3451 | has-symbols: 1.1.0 3452 | set-function-name: 2.0.2 3453 | 3454 | jackspeak@3.4.3: 3455 | dependencies: 3456 | '@isaacs/cliui': 8.0.2 3457 | optionalDependencies: 3458 | '@pkgjs/parseargs': 0.11.0 3459 | 3460 | joycon@3.1.1: {} 3461 | 3462 | js-tokens@4.0.0: {} 3463 | 3464 | js-yaml@4.1.0: 3465 | dependencies: 3466 | argparse: 2.0.1 3467 | 3468 | jsdom@26.0.0: 3469 | dependencies: 3470 | cssstyle: 4.2.1 3471 | data-urls: 5.0.0 3472 | decimal.js: 10.5.0 3473 | form-data: 4.0.1 3474 | html-encoding-sniffer: 4.0.0 3475 | http-proxy-agent: 7.0.2 3476 | https-proxy-agent: 7.0.6 3477 | is-potential-custom-element-name: 1.0.1 3478 | nwsapi: 2.2.16 3479 | parse5: 7.2.1 3480 | rrweb-cssom: 0.8.0 3481 | saxes: 6.0.0 3482 | symbol-tree: 3.2.4 3483 | tough-cookie: 5.1.0 3484 | w3c-xmlserializer: 5.0.0 3485 | webidl-conversions: 7.0.0 3486 | whatwg-encoding: 3.1.1 3487 | whatwg-mimetype: 4.0.0 3488 | whatwg-url: 14.1.0 3489 | ws: 8.18.0 3490 | xml-name-validator: 5.0.0 3491 | transitivePeerDependencies: 3492 | - bufferutil 3493 | - supports-color 3494 | - utf-8-validate 3495 | 3496 | json-buffer@3.0.1: {} 3497 | 3498 | json-parse-even-better-errors@2.3.1: {} 3499 | 3500 | json-schema-traverse@0.4.1: {} 3501 | 3502 | json-stable-stringify-without-jsonify@1.0.1: {} 3503 | 3504 | jsx-ast-utils@3.3.5: 3505 | dependencies: 3506 | array-includes: 3.1.8 3507 | array.prototype.flat: 1.3.3 3508 | object.assign: 4.1.7 3509 | object.values: 1.2.1 3510 | 3511 | keyv@4.5.4: 3512 | dependencies: 3513 | json-buffer: 3.0.1 3514 | 3515 | kind-of@6.0.3: {} 3516 | 3517 | levn@0.4.1: 3518 | dependencies: 3519 | prelude-ls: 1.2.1 3520 | type-check: 0.4.0 3521 | 3522 | lilconfig@3.1.3: {} 3523 | 3524 | lines-and-columns@1.2.4: {} 3525 | 3526 | load-tsconfig@0.2.5: {} 3527 | 3528 | locate-path@6.0.0: 3529 | dependencies: 3530 | p-locate: 5.0.0 3531 | 3532 | lodash.merge@4.6.2: {} 3533 | 3534 | lodash.sortby@4.7.0: {} 3535 | 3536 | lodash@4.17.21: {} 3537 | 3538 | loose-envify@1.4.0: 3539 | dependencies: 3540 | js-tokens: 4.0.0 3541 | 3542 | loupe@3.1.2: {} 3543 | 3544 | lru-cache@10.4.3: {} 3545 | 3546 | lru-cache@6.0.0: 3547 | dependencies: 3548 | yallist: 4.0.0 3549 | 3550 | lz-string@1.5.0: {} 3551 | 3552 | magic-string@0.30.17: 3553 | dependencies: 3554 | '@jridgewell/sourcemap-codec': 1.5.0 3555 | 3556 | map-obj@1.0.1: {} 3557 | 3558 | map-obj@4.3.0: {} 3559 | 3560 | math-intrinsics@1.1.0: {} 3561 | 3562 | meow@10.1.5: 3563 | dependencies: 3564 | '@types/minimist': 1.2.5 3565 | camelcase-keys: 7.0.2 3566 | decamelize: 5.0.1 3567 | decamelize-keys: 1.1.1 3568 | hard-rejection: 2.1.0 3569 | minimist-options: 4.1.0 3570 | normalize-package-data: 3.0.3 3571 | read-pkg-up: 8.0.0 3572 | redent: 4.0.0 3573 | trim-newlines: 4.1.1 3574 | type-fest: 1.4.0 3575 | yargs-parser: 20.2.9 3576 | 3577 | merge2@1.4.1: {} 3578 | 3579 | micromatch@4.0.8: 3580 | dependencies: 3581 | braces: 3.0.3 3582 | picomatch: 2.3.1 3583 | 3584 | mime-db@1.52.0: {} 3585 | 3586 | mime-types@2.1.35: 3587 | dependencies: 3588 | mime-db: 1.52.0 3589 | 3590 | min-indent@1.0.1: {} 3591 | 3592 | minimatch@3.1.2: 3593 | dependencies: 3594 | brace-expansion: 1.1.11 3595 | 3596 | minimatch@9.0.5: 3597 | dependencies: 3598 | brace-expansion: 2.0.1 3599 | 3600 | minimist-options@4.1.0: 3601 | dependencies: 3602 | arrify: 1.0.1 3603 | is-plain-obj: 1.1.0 3604 | kind-of: 6.0.3 3605 | 3606 | minipass@7.1.2: {} 3607 | 3608 | ms@2.1.3: {} 3609 | 3610 | mz@2.7.0: 3611 | dependencies: 3612 | any-promise: 1.3.0 3613 | object-assign: 4.1.1 3614 | thenify-all: 1.6.0 3615 | 3616 | nanoid@3.3.8: {} 3617 | 3618 | natural-compare@1.4.0: {} 3619 | 3620 | normalize-package-data@3.0.3: 3621 | dependencies: 3622 | hosted-git-info: 4.1.0 3623 | is-core-module: 2.16.1 3624 | semver: 7.6.3 3625 | validate-npm-package-license: 3.0.4 3626 | 3627 | nwsapi@2.2.16: {} 3628 | 3629 | object-assign@4.1.1: {} 3630 | 3631 | object-inspect@1.13.3: {} 3632 | 3633 | object-keys@1.1.1: {} 3634 | 3635 | object.assign@4.1.7: 3636 | dependencies: 3637 | call-bind: 1.0.8 3638 | call-bound: 1.0.3 3639 | define-properties: 1.2.1 3640 | es-object-atoms: 1.1.1 3641 | has-symbols: 1.1.0 3642 | object-keys: 1.1.1 3643 | 3644 | object.entries@1.1.8: 3645 | dependencies: 3646 | call-bind: 1.0.8 3647 | define-properties: 1.2.1 3648 | es-object-atoms: 1.1.1 3649 | 3650 | object.fromentries@2.0.8: 3651 | dependencies: 3652 | call-bind: 1.0.8 3653 | define-properties: 1.2.1 3654 | es-abstract: 1.23.9 3655 | es-object-atoms: 1.1.1 3656 | 3657 | object.values@1.2.1: 3658 | dependencies: 3659 | call-bind: 1.0.8 3660 | call-bound: 1.0.3 3661 | define-properties: 1.2.1 3662 | es-object-atoms: 1.1.1 3663 | 3664 | optionator@0.9.4: 3665 | dependencies: 3666 | deep-is: 0.1.4 3667 | fast-levenshtein: 2.0.6 3668 | levn: 0.4.1 3669 | prelude-ls: 1.2.1 3670 | type-check: 0.4.0 3671 | word-wrap: 1.2.5 3672 | 3673 | own-keys@1.0.1: 3674 | dependencies: 3675 | get-intrinsic: 1.2.7 3676 | object-keys: 1.1.1 3677 | safe-push-apply: 1.0.0 3678 | 3679 | p-limit@3.1.0: 3680 | dependencies: 3681 | yocto-queue: 0.1.0 3682 | 3683 | p-locate@5.0.0: 3684 | dependencies: 3685 | p-limit: 3.1.0 3686 | 3687 | package-json-from-dist@1.0.1: {} 3688 | 3689 | parent-module@1.0.1: 3690 | dependencies: 3691 | callsites: 3.1.0 3692 | 3693 | parse-json@5.2.0: 3694 | dependencies: 3695 | '@babel/code-frame': 7.26.2 3696 | error-ex: 1.3.2 3697 | json-parse-even-better-errors: 2.3.1 3698 | lines-and-columns: 1.2.4 3699 | 3700 | parse5@7.2.1: 3701 | dependencies: 3702 | entities: 4.5.0 3703 | 3704 | path-exists@4.0.0: {} 3705 | 3706 | path-key@3.1.1: {} 3707 | 3708 | path-parse@1.0.7: {} 3709 | 3710 | path-scurry@1.11.1: 3711 | dependencies: 3712 | lru-cache: 10.4.3 3713 | minipass: 7.1.2 3714 | 3715 | pathe@2.0.2: {} 3716 | 3717 | pathval@2.0.0: {} 3718 | 3719 | picocolors@1.1.1: {} 3720 | 3721 | picomatch@2.3.1: {} 3722 | 3723 | picomatch@4.0.2: {} 3724 | 3725 | pirates@4.0.6: {} 3726 | 3727 | possible-typed-array-names@1.0.0: {} 3728 | 3729 | postcss-load-config@6.0.1(postcss@8.5.1): 3730 | dependencies: 3731 | lilconfig: 3.1.3 3732 | optionalDependencies: 3733 | postcss: 8.5.1 3734 | 3735 | postcss@8.5.1: 3736 | dependencies: 3737 | nanoid: 3.3.8 3738 | picocolors: 1.1.1 3739 | source-map-js: 1.2.1 3740 | 3741 | prelude-ls@1.2.1: {} 3742 | 3743 | prettier@3.4.2: {} 3744 | 3745 | pretty-bytes@5.6.0: {} 3746 | 3747 | pretty-format@27.5.1: 3748 | dependencies: 3749 | ansi-regex: 5.0.1 3750 | ansi-styles: 5.2.0 3751 | react-is: 17.0.2 3752 | 3753 | prop-types@15.8.1: 3754 | dependencies: 3755 | loose-envify: 1.4.0 3756 | object-assign: 4.1.1 3757 | react-is: 16.13.1 3758 | 3759 | punycode@2.3.1: {} 3760 | 3761 | queue-microtask@1.2.3: {} 3762 | 3763 | quick-lru@5.1.1: {} 3764 | 3765 | react-dom@18.3.1(react@18.3.1): 3766 | dependencies: 3767 | loose-envify: 1.4.0 3768 | react: 18.3.1 3769 | scheduler: 0.23.2 3770 | 3771 | react-is@16.13.1: {} 3772 | 3773 | react-is@17.0.2: {} 3774 | 3775 | react@18.3.1: 3776 | dependencies: 3777 | loose-envify: 1.4.0 3778 | 3779 | read-pkg-up@8.0.0: 3780 | dependencies: 3781 | find-up: 5.0.0 3782 | read-pkg: 6.0.0 3783 | type-fest: 1.4.0 3784 | 3785 | read-pkg@6.0.0: 3786 | dependencies: 3787 | '@types/normalize-package-data': 2.4.4 3788 | normalize-package-data: 3.0.3 3789 | parse-json: 5.2.0 3790 | type-fest: 1.4.0 3791 | 3792 | readdirp@4.1.1: {} 3793 | 3794 | redent@3.0.0: 3795 | dependencies: 3796 | indent-string: 4.0.0 3797 | strip-indent: 3.0.0 3798 | 3799 | redent@4.0.0: 3800 | dependencies: 3801 | indent-string: 5.0.0 3802 | strip-indent: 4.0.0 3803 | 3804 | reflect.getprototypeof@1.0.10: 3805 | dependencies: 3806 | call-bind: 1.0.8 3807 | define-properties: 1.2.1 3808 | es-abstract: 1.23.9 3809 | es-errors: 1.3.0 3810 | es-object-atoms: 1.1.1 3811 | get-intrinsic: 1.2.7 3812 | get-proto: 1.0.1 3813 | which-builtin-type: 1.2.1 3814 | 3815 | regenerator-runtime@0.14.1: {} 3816 | 3817 | regexp.prototype.flags@1.5.4: 3818 | dependencies: 3819 | call-bind: 1.0.8 3820 | define-properties: 1.2.1 3821 | es-errors: 1.3.0 3822 | get-proto: 1.0.1 3823 | gopd: 1.2.0 3824 | set-function-name: 2.0.2 3825 | 3826 | resolve-from@4.0.0: {} 3827 | 3828 | resolve-from@5.0.0: {} 3829 | 3830 | resolve@2.0.0-next.5: 3831 | dependencies: 3832 | is-core-module: 2.16.1 3833 | path-parse: 1.0.7 3834 | supports-preserve-symlinks-flag: 1.0.0 3835 | 3836 | reusify@1.0.4: {} 3837 | 3838 | rollup@4.32.0: 3839 | dependencies: 3840 | '@types/estree': 1.0.6 3841 | optionalDependencies: 3842 | '@rollup/rollup-android-arm-eabi': 4.32.0 3843 | '@rollup/rollup-android-arm64': 4.32.0 3844 | '@rollup/rollup-darwin-arm64': 4.32.0 3845 | '@rollup/rollup-darwin-x64': 4.32.0 3846 | '@rollup/rollup-freebsd-arm64': 4.32.0 3847 | '@rollup/rollup-freebsd-x64': 4.32.0 3848 | '@rollup/rollup-linux-arm-gnueabihf': 4.32.0 3849 | '@rollup/rollup-linux-arm-musleabihf': 4.32.0 3850 | '@rollup/rollup-linux-arm64-gnu': 4.32.0 3851 | '@rollup/rollup-linux-arm64-musl': 4.32.0 3852 | '@rollup/rollup-linux-loongarch64-gnu': 4.32.0 3853 | '@rollup/rollup-linux-powerpc64le-gnu': 4.32.0 3854 | '@rollup/rollup-linux-riscv64-gnu': 4.32.0 3855 | '@rollup/rollup-linux-s390x-gnu': 4.32.0 3856 | '@rollup/rollup-linux-x64-gnu': 4.32.0 3857 | '@rollup/rollup-linux-x64-musl': 4.32.0 3858 | '@rollup/rollup-win32-arm64-msvc': 4.32.0 3859 | '@rollup/rollup-win32-ia32-msvc': 4.32.0 3860 | '@rollup/rollup-win32-x64-msvc': 4.32.0 3861 | fsevents: 2.3.3 3862 | 3863 | rrweb-cssom@0.8.0: {} 3864 | 3865 | run-parallel@1.2.0: 3866 | dependencies: 3867 | queue-microtask: 1.2.3 3868 | 3869 | safe-array-concat@1.1.3: 3870 | dependencies: 3871 | call-bind: 1.0.8 3872 | call-bound: 1.0.3 3873 | get-intrinsic: 1.2.7 3874 | has-symbols: 1.1.0 3875 | isarray: 2.0.5 3876 | 3877 | safe-push-apply@1.0.0: 3878 | dependencies: 3879 | es-errors: 1.3.0 3880 | isarray: 2.0.5 3881 | 3882 | safe-regex-test@1.1.0: 3883 | dependencies: 3884 | call-bound: 1.0.3 3885 | es-errors: 1.3.0 3886 | is-regex: 1.2.1 3887 | 3888 | safer-buffer@2.1.2: {} 3889 | 3890 | saxes@6.0.0: 3891 | dependencies: 3892 | xmlchars: 2.2.0 3893 | 3894 | scheduler@0.23.2: 3895 | dependencies: 3896 | loose-envify: 1.4.0 3897 | 3898 | semver@6.3.1: {} 3899 | 3900 | semver@7.6.3: {} 3901 | 3902 | set-function-length@1.2.2: 3903 | dependencies: 3904 | define-data-property: 1.1.4 3905 | es-errors: 1.3.0 3906 | function-bind: 1.1.2 3907 | get-intrinsic: 1.2.7 3908 | gopd: 1.2.0 3909 | has-property-descriptors: 1.0.2 3910 | 3911 | set-function-name@2.0.2: 3912 | dependencies: 3913 | define-data-property: 1.1.4 3914 | es-errors: 1.3.0 3915 | functions-have-names: 1.2.3 3916 | has-property-descriptors: 1.0.2 3917 | 3918 | set-proto@1.0.0: 3919 | dependencies: 3920 | dunder-proto: 1.0.1 3921 | es-errors: 1.3.0 3922 | es-object-atoms: 1.1.1 3923 | 3924 | shebang-command@2.0.0: 3925 | dependencies: 3926 | shebang-regex: 3.0.0 3927 | 3928 | shebang-regex@3.0.0: {} 3929 | 3930 | side-channel-list@1.0.0: 3931 | dependencies: 3932 | es-errors: 1.3.0 3933 | object-inspect: 1.13.3 3934 | 3935 | side-channel-map@1.0.1: 3936 | dependencies: 3937 | call-bound: 1.0.3 3938 | es-errors: 1.3.0 3939 | get-intrinsic: 1.2.7 3940 | object-inspect: 1.13.3 3941 | 3942 | side-channel-weakmap@1.0.2: 3943 | dependencies: 3944 | call-bound: 1.0.3 3945 | es-errors: 1.3.0 3946 | get-intrinsic: 1.2.7 3947 | object-inspect: 1.13.3 3948 | side-channel-map: 1.0.1 3949 | 3950 | side-channel@1.1.0: 3951 | dependencies: 3952 | es-errors: 1.3.0 3953 | object-inspect: 1.13.3 3954 | side-channel-list: 1.0.0 3955 | side-channel-map: 1.0.1 3956 | side-channel-weakmap: 1.0.2 3957 | 3958 | siginfo@2.0.0: {} 3959 | 3960 | signal-exit@4.1.0: {} 3961 | 3962 | source-map-js@1.2.1: {} 3963 | 3964 | source-map@0.8.0-beta.0: 3965 | dependencies: 3966 | whatwg-url: 7.1.0 3967 | 3968 | spdx-correct@3.2.0: 3969 | dependencies: 3970 | spdx-expression-parse: 3.0.1 3971 | spdx-license-ids: 3.0.21 3972 | 3973 | spdx-exceptions@2.5.0: {} 3974 | 3975 | spdx-expression-parse@3.0.1: 3976 | dependencies: 3977 | spdx-exceptions: 2.5.0 3978 | spdx-license-ids: 3.0.21 3979 | 3980 | spdx-license-ids@3.0.21: {} 3981 | 3982 | stackback@0.0.2: {} 3983 | 3984 | std-env@3.8.0: {} 3985 | 3986 | string-width@4.2.3: 3987 | dependencies: 3988 | emoji-regex: 8.0.0 3989 | is-fullwidth-code-point: 3.0.0 3990 | strip-ansi: 6.0.1 3991 | 3992 | string-width@5.1.2: 3993 | dependencies: 3994 | eastasianwidth: 0.2.0 3995 | emoji-regex: 9.2.2 3996 | strip-ansi: 7.1.0 3997 | 3998 | string.prototype.matchall@4.0.12: 3999 | dependencies: 4000 | call-bind: 1.0.8 4001 | call-bound: 1.0.3 4002 | define-properties: 1.2.1 4003 | es-abstract: 1.23.9 4004 | es-errors: 1.3.0 4005 | es-object-atoms: 1.1.1 4006 | get-intrinsic: 1.2.7 4007 | gopd: 1.2.0 4008 | has-symbols: 1.1.0 4009 | internal-slot: 1.1.0 4010 | regexp.prototype.flags: 1.5.4 4011 | set-function-name: 2.0.2 4012 | side-channel: 1.1.0 4013 | 4014 | string.prototype.repeat@1.0.0: 4015 | dependencies: 4016 | define-properties: 1.2.1 4017 | es-abstract: 1.23.9 4018 | 4019 | string.prototype.trim@1.2.10: 4020 | dependencies: 4021 | call-bind: 1.0.8 4022 | call-bound: 1.0.3 4023 | define-data-property: 1.1.4 4024 | define-properties: 1.2.1 4025 | es-abstract: 1.23.9 4026 | es-object-atoms: 1.1.1 4027 | has-property-descriptors: 1.0.2 4028 | 4029 | string.prototype.trimend@1.0.9: 4030 | dependencies: 4031 | call-bind: 1.0.8 4032 | call-bound: 1.0.3 4033 | define-properties: 1.2.1 4034 | es-object-atoms: 1.1.1 4035 | 4036 | string.prototype.trimstart@1.0.8: 4037 | dependencies: 4038 | call-bind: 1.0.8 4039 | define-properties: 1.2.1 4040 | es-object-atoms: 1.1.1 4041 | 4042 | strip-ansi@6.0.1: 4043 | dependencies: 4044 | ansi-regex: 5.0.1 4045 | 4046 | strip-ansi@7.1.0: 4047 | dependencies: 4048 | ansi-regex: 6.1.0 4049 | 4050 | strip-indent@3.0.0: 4051 | dependencies: 4052 | min-indent: 1.0.1 4053 | 4054 | strip-indent@4.0.0: 4055 | dependencies: 4056 | min-indent: 1.0.1 4057 | 4058 | strip-json-comments@3.1.1: {} 4059 | 4060 | sucrase@3.35.0: 4061 | dependencies: 4062 | '@jridgewell/gen-mapping': 0.3.8 4063 | commander: 4.1.1 4064 | glob: 10.4.5 4065 | lines-and-columns: 1.2.4 4066 | mz: 2.7.0 4067 | pirates: 4.0.6 4068 | ts-interface-checker: 0.1.13 4069 | 4070 | supports-color@7.2.0: 4071 | dependencies: 4072 | has-flag: 4.0.0 4073 | 4074 | supports-preserve-symlinks-flag@1.0.0: {} 4075 | 4076 | symbol-tree@3.2.4: {} 4077 | 4078 | thenify-all@1.6.0: 4079 | dependencies: 4080 | thenify: 3.3.1 4081 | 4082 | thenify@3.3.1: 4083 | dependencies: 4084 | any-promise: 1.3.0 4085 | 4086 | tinybench@2.9.0: {} 4087 | 4088 | tinyexec@0.3.2: {} 4089 | 4090 | tinyglobby@0.2.10: 4091 | dependencies: 4092 | fdir: 6.4.3(picomatch@4.0.2) 4093 | picomatch: 4.0.2 4094 | 4095 | tinypool@1.0.2: {} 4096 | 4097 | tinyrainbow@2.0.0: {} 4098 | 4099 | tinyspy@3.0.2: {} 4100 | 4101 | tldts-core@6.1.74: {} 4102 | 4103 | tldts@6.1.74: 4104 | dependencies: 4105 | tldts-core: 6.1.74 4106 | 4107 | to-regex-range@5.0.1: 4108 | dependencies: 4109 | is-number: 7.0.0 4110 | 4111 | tough-cookie@5.1.0: 4112 | dependencies: 4113 | tldts: 6.1.74 4114 | 4115 | tr46@1.0.1: 4116 | dependencies: 4117 | punycode: 2.3.1 4118 | 4119 | tr46@5.0.0: 4120 | dependencies: 4121 | punycode: 2.3.1 4122 | 4123 | tree-kill@1.2.2: {} 4124 | 4125 | trim-newlines@4.1.1: {} 4126 | 4127 | ts-api-utils@2.0.0(typescript@5.7.3): 4128 | dependencies: 4129 | typescript: 5.7.3 4130 | 4131 | ts-interface-checker@0.1.13: {} 4132 | 4133 | tslib@2.8.1: {} 4134 | 4135 | tsup@8.3.5(postcss@8.5.1)(typescript@5.7.3): 4136 | dependencies: 4137 | bundle-require: 5.1.0(esbuild@0.24.2) 4138 | cac: 6.7.14 4139 | chokidar: 4.0.3 4140 | consola: 3.4.0 4141 | debug: 4.4.0 4142 | esbuild: 0.24.2 4143 | joycon: 3.1.1 4144 | picocolors: 1.1.1 4145 | postcss-load-config: 6.0.1(postcss@8.5.1) 4146 | resolve-from: 5.0.0 4147 | rollup: 4.32.0 4148 | source-map: 0.8.0-beta.0 4149 | sucrase: 3.35.0 4150 | tinyexec: 0.3.2 4151 | tinyglobby: 0.2.10 4152 | tree-kill: 1.2.2 4153 | optionalDependencies: 4154 | postcss: 8.5.1 4155 | typescript: 5.7.3 4156 | transitivePeerDependencies: 4157 | - jiti 4158 | - supports-color 4159 | - tsx 4160 | - yaml 4161 | 4162 | type-check@0.4.0: 4163 | dependencies: 4164 | prelude-ls: 1.2.1 4165 | 4166 | type-fest@1.4.0: {} 4167 | 4168 | typed-array-buffer@1.0.3: 4169 | dependencies: 4170 | call-bound: 1.0.3 4171 | es-errors: 1.3.0 4172 | is-typed-array: 1.1.15 4173 | 4174 | typed-array-byte-length@1.0.3: 4175 | dependencies: 4176 | call-bind: 1.0.8 4177 | for-each: 0.3.3 4178 | gopd: 1.2.0 4179 | has-proto: 1.2.0 4180 | is-typed-array: 1.1.15 4181 | 4182 | typed-array-byte-offset@1.0.4: 4183 | dependencies: 4184 | available-typed-arrays: 1.0.7 4185 | call-bind: 1.0.8 4186 | for-each: 0.3.3 4187 | gopd: 1.2.0 4188 | has-proto: 1.2.0 4189 | is-typed-array: 1.1.15 4190 | reflect.getprototypeof: 1.0.10 4191 | 4192 | typed-array-length@1.0.7: 4193 | dependencies: 4194 | call-bind: 1.0.8 4195 | for-each: 0.3.3 4196 | gopd: 1.2.0 4197 | is-typed-array: 1.1.15 4198 | possible-typed-array-names: 1.0.0 4199 | reflect.getprototypeof: 1.0.10 4200 | 4201 | typescript-eslint@8.21.0(eslint@9.18.0)(typescript@5.7.3): 4202 | dependencies: 4203 | '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) 4204 | '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 4205 | '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) 4206 | eslint: 9.18.0 4207 | typescript: 5.7.3 4208 | transitivePeerDependencies: 4209 | - supports-color 4210 | 4211 | typescript@5.7.3: {} 4212 | 4213 | unbox-primitive@1.1.0: 4214 | dependencies: 4215 | call-bound: 1.0.3 4216 | has-bigints: 1.1.0 4217 | has-symbols: 1.1.0 4218 | which-boxed-primitive: 1.1.1 4219 | 4220 | undici-types@6.20.0: {} 4221 | 4222 | uri-js@4.4.1: 4223 | dependencies: 4224 | punycode: 2.3.1 4225 | 4226 | validate-npm-package-license@3.0.4: 4227 | dependencies: 4228 | spdx-correct: 3.2.0 4229 | spdx-expression-parse: 3.0.1 4230 | 4231 | vite-node@3.0.4(@types/node@22.10.10): 4232 | dependencies: 4233 | cac: 6.7.14 4234 | debug: 4.4.0 4235 | es-module-lexer: 1.6.0 4236 | pathe: 2.0.2 4237 | vite: 6.0.11(@types/node@22.10.10) 4238 | transitivePeerDependencies: 4239 | - '@types/node' 4240 | - jiti 4241 | - less 4242 | - lightningcss 4243 | - sass 4244 | - sass-embedded 4245 | - stylus 4246 | - sugarss 4247 | - supports-color 4248 | - terser 4249 | - tsx 4250 | - yaml 4251 | 4252 | vite@6.0.11(@types/node@22.10.10): 4253 | dependencies: 4254 | esbuild: 0.24.2 4255 | postcss: 8.5.1 4256 | rollup: 4.32.0 4257 | optionalDependencies: 4258 | '@types/node': 22.10.10 4259 | fsevents: 2.3.3 4260 | 4261 | vitest@3.0.4(@types/node@22.10.10)(jsdom@26.0.0): 4262 | dependencies: 4263 | '@vitest/expect': 3.0.4 4264 | '@vitest/mocker': 3.0.4(vite@6.0.11(@types/node@22.10.10)) 4265 | '@vitest/pretty-format': 3.0.4 4266 | '@vitest/runner': 3.0.4 4267 | '@vitest/snapshot': 3.0.4 4268 | '@vitest/spy': 3.0.4 4269 | '@vitest/utils': 3.0.4 4270 | chai: 5.1.2 4271 | debug: 4.4.0 4272 | expect-type: 1.1.0 4273 | magic-string: 0.30.17 4274 | pathe: 2.0.2 4275 | std-env: 3.8.0 4276 | tinybench: 2.9.0 4277 | tinyexec: 0.3.2 4278 | tinypool: 1.0.2 4279 | tinyrainbow: 2.0.0 4280 | vite: 6.0.11(@types/node@22.10.10) 4281 | vite-node: 3.0.4(@types/node@22.10.10) 4282 | why-is-node-running: 2.3.0 4283 | optionalDependencies: 4284 | '@types/node': 22.10.10 4285 | jsdom: 26.0.0 4286 | transitivePeerDependencies: 4287 | - jiti 4288 | - less 4289 | - lightningcss 4290 | - msw 4291 | - sass 4292 | - sass-embedded 4293 | - stylus 4294 | - sugarss 4295 | - supports-color 4296 | - terser 4297 | - tsx 4298 | - yaml 4299 | 4300 | w3c-xmlserializer@5.0.0: 4301 | dependencies: 4302 | xml-name-validator: 5.0.0 4303 | 4304 | webidl-conversions@4.0.2: {} 4305 | 4306 | webidl-conversions@7.0.0: {} 4307 | 4308 | whatwg-encoding@3.1.1: 4309 | dependencies: 4310 | iconv-lite: 0.6.3 4311 | 4312 | whatwg-mimetype@4.0.0: {} 4313 | 4314 | whatwg-url@14.1.0: 4315 | dependencies: 4316 | tr46: 5.0.0 4317 | webidl-conversions: 7.0.0 4318 | 4319 | whatwg-url@7.1.0: 4320 | dependencies: 4321 | lodash.sortby: 4.7.0 4322 | tr46: 1.0.1 4323 | webidl-conversions: 4.0.2 4324 | 4325 | which-boxed-primitive@1.1.1: 4326 | dependencies: 4327 | is-bigint: 1.1.0 4328 | is-boolean-object: 1.2.1 4329 | is-number-object: 1.1.1 4330 | is-string: 1.1.1 4331 | is-symbol: 1.1.1 4332 | 4333 | which-builtin-type@1.2.1: 4334 | dependencies: 4335 | call-bound: 1.0.3 4336 | function.prototype.name: 1.1.8 4337 | has-tostringtag: 1.0.2 4338 | is-async-function: 2.1.1 4339 | is-date-object: 1.1.0 4340 | is-finalizationregistry: 1.1.1 4341 | is-generator-function: 1.1.0 4342 | is-regex: 1.2.1 4343 | is-weakref: 1.1.0 4344 | isarray: 2.0.5 4345 | which-boxed-primitive: 1.1.1 4346 | which-collection: 1.0.2 4347 | which-typed-array: 1.1.18 4348 | 4349 | which-collection@1.0.2: 4350 | dependencies: 4351 | is-map: 2.0.3 4352 | is-set: 2.0.3 4353 | is-weakmap: 2.0.2 4354 | is-weakset: 2.0.4 4355 | 4356 | which-typed-array@1.1.18: 4357 | dependencies: 4358 | available-typed-arrays: 1.0.7 4359 | call-bind: 1.0.8 4360 | call-bound: 1.0.3 4361 | for-each: 0.3.3 4362 | gopd: 1.2.0 4363 | has-tostringtag: 1.0.2 4364 | 4365 | which@2.0.2: 4366 | dependencies: 4367 | isexe: 2.0.0 4368 | 4369 | why-is-node-running@2.3.0: 4370 | dependencies: 4371 | siginfo: 2.0.0 4372 | stackback: 0.0.2 4373 | 4374 | word-wrap@1.2.5: {} 4375 | 4376 | wrap-ansi@7.0.0: 4377 | dependencies: 4378 | ansi-styles: 4.3.0 4379 | string-width: 4.2.3 4380 | strip-ansi: 6.0.1 4381 | 4382 | wrap-ansi@8.1.0: 4383 | dependencies: 4384 | ansi-styles: 6.2.1 4385 | string-width: 5.1.2 4386 | strip-ansi: 7.1.0 4387 | 4388 | ws@8.18.0: {} 4389 | 4390 | xml-name-validator@5.0.0: {} 4391 | 4392 | xmlchars@2.2.0: {} 4393 | 4394 | yallist@4.0.0: {} 4395 | 4396 | yargs-parser@20.2.9: {} 4397 | 4398 | yocto-queue@0.1.0: {} 4399 | -------------------------------------------------------------------------------- /src/__tests__/context.test.tsx: -------------------------------------------------------------------------------- 1 | import { act, render, screen } from '@testing-library/react' 2 | import { createSelectContext } from '../create-context' 3 | import { useContextSelector, useContextSetState } from '../hooks' 4 | 5 | it('should only rerender when selected value changes', () => { 6 | let renderCount = 0 7 | const [Context, Provider] = createSelectContext({ count: 0, name: 'test' }) 8 | 9 | function Counter() { 10 | const count = useContextSelector(Context, (state) => state.count) 11 | const setState = useContextSetState(Context) 12 | 13 | renderCount++ 14 | 15 | return ( 16 |
17 | {count} 18 | 25 | 30 |
31 | ) 32 | } 33 | 34 | render( 35 | 36 | 37 | 38 | ) 39 | 40 | // Initial render! 41 | expect(renderCount).toBe(1) 42 | 43 | // Update unrelated state 44 | act(() => { 45 | screen.getByRole('button', { name: 'Change Name' }).click() 46 | }) 47 | 48 | // Shouldn't rerender 49 | // renderCount should be 1 still 50 | expect(renderCount).toBe(1) 51 | 52 | // Update counted state 53 | act(() => { 54 | screen.getByRole('button', { name: 'Increment' }).click() 55 | }) 56 | 57 | // Should rerender because count changed 58 | expect(renderCount).toBe(2) 59 | }) 60 | 61 | it('should respect custom compare function', () => { 62 | let renderCount = 0 63 | const [Context, Provider] = createSelectContext({ 64 | items: [1, 2, 3], 65 | }) 66 | 67 | function Items() { 68 | const items = useContextSelector(Context, (state) => state.items, { 69 | compare: (prev, next) => prev.length === next.length, 70 | }) 71 | const setState = useContextSetState(Context) 72 | 73 | renderCount++ 74 | 75 | return ( 76 |
77 | {items.join(',')} 78 | 87 | 96 |
97 | ) 98 | } 99 | 100 | render( 101 | 102 | 103 | 104 | ) 105 | 106 | // Initial render 107 | expect(renderCount).toBe(1) 108 | 109 | // Update array values but keep same length 110 | act(() => { 111 | screen.getByRole('button', { name: 'Increment All' }).click() 112 | }) 113 | 114 | // Shouldn't rerender because length is same 115 | expect(renderCount).toBe(1) 116 | 117 | // Add new item which changes length 118 | act(() => { 119 | screen.getByRole('button', { name: 'Add Item' }).click() 120 | }) 121 | 122 | // Should rerender because length changed 123 | expect(renderCount).toBe(2) 124 | }) 125 | 126 | it('should only log debug messages in development when state changes', () => { 127 | const consoleSpy = vi.spyOn(console, 'group') 128 | const originalNodeEnv = process.env.NODE_ENV 129 | process.env.NODE_ENV = 'development' 130 | 131 | const [Context, Provider] = createSelectContext({ count: 0, name: 'test' }) 132 | 133 | function Component() { 134 | const count = useContextSelector(Context, (state) => state.count, { 135 | debug: { 136 | enabled: true, 137 | name: 'CountSelector', 138 | }, 139 | }) 140 | const setState = useContextSetState(Context) 141 | 142 | return ( 143 |
144 | {count} 145 | 152 | 157 |
158 | ) 159 | } 160 | 161 | render( 162 | 163 | 164 | 165 | ) 166 | 167 | // Clear initial render log 168 | consoleSpy.mockClear() 169 | 170 | // Update unrelated state 171 | // not being consumed by the selector 172 | act(() => { 173 | screen.getByRole('button', { name: 'Change Name' }).click() 174 | }) 175 | 176 | // Should not log because selected state (count) didn't change 177 | expect(consoleSpy).not.toHaveBeenCalled() 178 | 179 | // Update counted state 180 | act(() => { 181 | screen.getByRole('button', { name: 'Increment' }).click() 182 | }) 183 | 184 | // Should log once because count changed 185 | expect(consoleSpy).toHaveBeenCalledTimes(1) 186 | 187 | // Cleanup 188 | process.env.NODE_ENV = originalNodeEnv 189 | consoleSpy.mockRestore() 190 | }) 191 | -------------------------------------------------------------------------------- /src/create-context.tsx: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react' 2 | import { Store } from './types' 3 | 4 | /** 5 | * Creates a context with selector functionality for efficient updates. 6 | * Only re-renders components when their selected state changes. 7 | * 8 | * @template State - The type of state stored in the context 9 | * @param initialState - The initial state value for the context 10 | * @returns A tuple containing [Context, Provider] 11 | * - Context: React Context object to be used with useContextSelector 12 | * - Provider: React component to wrap your app/component tree 13 | * 14 | * @example 15 | * ```tsx 16 | * type State = { 17 | * count: number 18 | * text: string 19 | * } 20 | * 21 | * const [CountContext, Provider] = createSelectContext({ 22 | * count: 0, 23 | * text: '' 24 | * }) 25 | * 26 | * function App() { 27 | * return ( 28 | * 29 | * 30 | * 31 | * 32 | * ) 33 | * } 34 | * ``` 35 | */ 36 | export function createSelectContext(initialState: State) { 37 | const store: Store = { 38 | state: initialState, 39 | listeners: new Set(), 40 | setState(fn) { 41 | const nextState = fn(store.state) 42 | store.state = nextState 43 | 44 | store.listeners.forEach((listener) => listener()) 45 | }, 46 | 47 | subscribe(listener) { 48 | store.listeners.add(listener) 49 | // Return cleanup function 50 | return () => store.listeners.delete(listener) 51 | }, 52 | 53 | getSnapshot() { 54 | return store.state 55 | }, 56 | } 57 | 58 | const Context = createContext | null>(null) 59 | 60 | function Provider({ children }: { children: React.ReactNode }) { 61 | return {children} 62 | } 63 | 64 | return [Context, Provider] as const 65 | } 66 | -------------------------------------------------------------------------------- /src/hooks.ts: -------------------------------------------------------------------------------- 1 | import { useContext, useRef, useSyncExternalStore } from 'react' 2 | import { SetStateFn, Store } from './types' 3 | import { debugLogger, isDevelopment } from './utils' 4 | 5 | type Options = { 6 | compare?: (prev: Selected, next: Selected) => boolean 7 | debug?: { 8 | name: string 9 | enabled: boolean 10 | } 11 | } 12 | 13 | /** 14 | * A hook that subscribes to context updates with selector optimization. 15 | * Re-renders will only occur if the selected state changes based on the compare function. 16 | * 17 | * @param Context - The React Context created by createSelectContext 18 | * @param selector - A function that selects a portion of the state 19 | * @param options - Optional configuration 20 | * @param options.compare - Optional function to determine if selected state has changed (defaults to Object.is) 21 | * @param options.debug - Optional debug options for development only 22 | * @param options.debug.name - Name to identify this selector in debug logs 23 | * @param options.debug.enabled - Whether to enable debug logging 24 | * @returns The selected portion of state 25 | * 26 | * @example 27 | * ```tsx 28 | * // Basic usage 29 | * const count = useContextSelector(CountContext, state => state.count) 30 | * 31 | * // With debug option 32 | * const name = useContextSelector(CountContext, 33 | * state => state.count, 34 | * { 35 | * debug: { name: 'NameSelector', enabled: true } 36 | * } 37 | * ) 38 | * 39 | * // With custom compare 40 | * const items = useContextSelector(CountContext, 41 | * state => state.items, 42 | * { 43 | * compare: (prev, next) => prev.length === next.length 44 | * } 45 | * ) 46 | * 47 | * // With both compare and debug 48 | * const name = useContextSelector(CountContext, 49 | * state => state.name, 50 | * { 51 | * compare: (prev, next) => prev === next, 52 | * debug: { name: 'NameSelector', enabled: true } 53 | * } 54 | * ) 55 | * ``` 56 | */ 57 | export function useContextSelector( 58 | Context: React.Context | null>, 59 | selector: (state: State) => Selected, 60 | options: Options = {} 61 | ): Selected { 62 | const store = useContext(Context) 63 | 64 | const compare = options.compare ?? Object.is 65 | 66 | if (!store) { 67 | throw new Error('Context Provider is missing') 68 | } 69 | 70 | const previousSelectedStateRef = useRef(null) 71 | 72 | const selectedState = useSyncExternalStore( 73 | store.subscribe, 74 | () => { 75 | const nextSelectedState = selector(store.getSnapshot()) 76 | 77 | if (previousSelectedStateRef.current !== null) { 78 | const shouldUpdateState = !compare( 79 | previousSelectedStateRef.current, 80 | nextSelectedState 81 | ) 82 | 83 | if (shouldUpdateState) { 84 | previousSelectedStateRef.current = nextSelectedState 85 | 86 | if (options.debug?.enabled && isDevelopment()) { 87 | debugLogger({ 88 | name: options.debug.name, 89 | prevState: previousSelectedStateRef.current, 90 | nextState: nextSelectedState, 91 | listeners: store.listeners.size, 92 | status: 'New Selected State', 93 | }) 94 | } 95 | 96 | return nextSelectedState 97 | } 98 | 99 | return previousSelectedStateRef.current 100 | } 101 | 102 | if (options.debug?.enabled && isDevelopment()) { 103 | debugLogger({ 104 | name: options.debug.name, 105 | prevState: null, 106 | nextState: nextSelectedState, 107 | listeners: store.listeners.size, 108 | status: 'Initial Render', 109 | }) 110 | } 111 | 112 | // First time render 113 | previousSelectedStateRef.current = nextSelectedState 114 | return nextSelectedState 115 | }, 116 | // Server snapshot 117 | // No need to compare here 118 | () => selector(store.getSnapshot()) 119 | ) 120 | 121 | return selectedState 122 | } 123 | 124 | /** 125 | * A hook that returns the setState function from the context. 126 | * Use this to update the context state. 127 | * 128 | * @param Context - The React Context created by createSelectContext 129 | * @returns A function to update the context state 130 | * @throws {Error} If used outside of a Provider 131 | * 132 | * @example 133 | * ```tsx 134 | * const setState = useContextSetState(CountContext) 135 | * // Update state 136 | * setState(state => ({ ...state, count: state.count + 1 })) 137 | * ``` 138 | */ 139 | export function useContextSetState( 140 | Context: React.Context | null> 141 | ): SetStateFn { 142 | const store = useContext(Context) 143 | 144 | if (!store) { 145 | throw new Error('Context Provider is missing') 146 | } 147 | 148 | return store.setState 149 | } 150 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { createSelectContext } from './create-context' 2 | import { useContextSelector, useContextSetState } from './hooks' 3 | 4 | export { createSelectContext, useContextSelector, useContextSetState } 5 | -------------------------------------------------------------------------------- /src/test/setup.ts: -------------------------------------------------------------------------------- 1 | import '@testing-library/jest-dom' 2 | -------------------------------------------------------------------------------- /src/test/vitest.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type SetStateFn = (fn: (state: State) => State) => void 2 | 3 | export type Store = { 4 | state: State 5 | setState: SetStateFn 6 | listeners: Set<() => void> 7 | subscribe: (listener: () => void) => () => void 8 | getSnapshot: () => State 9 | } 10 | 11 | export type DebugOptions = { 12 | name: string 13 | enabled: boolean 14 | } 15 | -------------------------------------------------------------------------------- /src/utils.ts: -------------------------------------------------------------------------------- 1 | type LogStatus = 2 | | 'New Selected State' 3 | | 'No New Selected State' 4 | | 'Initial Render' 5 | 6 | export const debugLogger = ({ 7 | name, 8 | prevState, 9 | nextState, 10 | listeners, 11 | status, 12 | }: { 13 | name: string 14 | prevState: State 15 | nextState: State 16 | listeners: number 17 | status: LogStatus 18 | }): void => { 19 | console.group(`[Selector: ${name}] ${status}`) 20 | console.log('Prev:', prevState) 21 | console.log('Next:', nextState) 22 | console.log('Listeners:', listeners) 23 | console.groupEnd() 24 | } 25 | 26 | export const isDevelopment = () => process.env.NODE_ENV === 'development' 27 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "module": "ESNext", 5 | "lib": ["ESNext", "DOM"], 6 | "jsx": "react-jsx", 7 | "moduleResolution": "bundler", 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "skipLibCheck": true 11 | }, 12 | "include": [ 13 | "src", 14 | "tsup.config.ts", 15 | "vitest.config.ts", 16 | "src/test/vitest.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['./src/index.ts'], 5 | format: ['cjs', 'esm'], 6 | dts: true, 7 | clean: true, 8 | external: ['react'], 9 | treeshake: true, 10 | }) 11 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | 3 | export default defineConfig({ 4 | test: { 5 | environment: 'jsdom', 6 | globals: true, 7 | setupFiles: ['./src/test/setup.ts'], // Optional for additional setup 8 | }, 9 | }) 10 | --------------------------------------------------------------------------------