├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── eslint.config.js ├── index.html ├── package.json ├── pnpm-lock.yaml ├── src ├── app.tsx ├── main.css ├── main.tsx └── use-fetch │ ├── README.md │ ├── use-fetch.example.tsx │ ├── use-fetch.solution.ts │ ├── use-fetch.test.ts │ └── use-fetch.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts └── vitest.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | // Disable the default formatter, use eslint instead 3 | "prettier.enable": false, 4 | "editor.formatOnSave": false, 5 | 6 | // Auto fix 7 | "editor.codeActionsOnSave": { 8 | "source.fixAll.eslint": "explicit", 9 | "source.organizeImports": "never" 10 | }, 11 | 12 | // Silent the stylistic rules in you IDE, but still auto fix them 13 | "eslint.rules.customizations": [ 14 | { "rule": "style/*", "severity": "off", "fixable": true }, 15 | { "rule": "format/*", "severity": "off", "fixable": true }, 16 | { "rule": "*-indent", "severity": "off", "fixable": true }, 17 | { "rule": "*-spacing", "severity": "off", "fixable": true }, 18 | { "rule": "*-spaces", "severity": "off", "fixable": true }, 19 | { "rule": "*-order", "severity": "off", "fixable": true }, 20 | { "rule": "*-dangle", "severity": "off", "fixable": true }, 21 | { "rule": "*-newline", "severity": "off", "fixable": true }, 22 | { "rule": "*quotes", "severity": "off", "fixable": true }, 23 | { "rule": "*semi", "severity": "off", "fixable": true } 24 | ], 25 | 26 | // Enable eslint for all supported languages 27 | "eslint.validate": [ 28 | "javascript", 29 | "javascriptreact", 30 | "typescript", 31 | "typescriptreact", 32 | "vue", 33 | "html", 34 | "markdown", 35 | "json", 36 | "jsonc", 37 | "yaml", 38 | "toml", 39 | "xml", 40 | "gql", 41 | "graphql", 42 | "astro", 43 | "css", 44 | "less", 45 | "scss", 46 | "pcss", 47 | "postcss" 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License Copyright (c) 2024 w3cj 2 | 3 | Permission is hereby granted, free of 4 | charge, to any person obtaining a copy of this software and associated 5 | documentation files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, copy, modify, merge, 7 | publish, distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to the 9 | following conditions: 10 | 11 | The above copyright notice and this permission notice 12 | (including the next paragraph) shall be included in all copies or substantial 13 | portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF 16 | ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO 18 | EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # use-x 2 | 3 | Practice implementing custom react hooks with full test suites and examples. 4 | 5 | ## Hooks 6 | 7 | - [useFetch](./src/use-fetch) 8 | - Manage the error, loading and data state of `fetch` 9 | 10 | ## Setup 11 | 12 | Install dependencies 13 | 14 | ```sh 15 | pnpm i 16 | ``` 17 | 18 | ## Enable tests 19 | 20 | All tests are skipped by default. To enable a test, remove `.skip` 21 | 22 | ```diff 23 | - it.skip("should test the hook", async () => { 24 | + it("should test the hook", async () => { 25 | // codes here 26 | }); 27 | ``` 28 | 29 | Run all tests 30 | 31 | ```sh 32 | pnpm test 33 | ``` 34 | 35 | Run a specific test suite 36 | 37 | ```sh 38 | pnpm test ./src/path/to/test/file/use-hook.test.ts 39 | ``` 40 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import antfu from "@antfu/eslint-config"; 2 | 3 | export default antfu({ 4 | type: "app", 5 | react: true, 6 | typescript: true, 7 | formatters: true, 8 | stylistic: { 9 | indent: 2, 10 | semi: true, 11 | quotes: "double", 12 | }, 13 | }, { 14 | rules: { 15 | "ts/consistent-type-definitions": ["error", "type"], 16 | "no-console": ["warn"], 17 | "antfu/no-top-level-await": ["off"], 18 | "perfectionist/sort-imports": ["error"], 19 | "unicorn/filename-case": ["error", { 20 | case: "kebabCase", 21 | ignore: ["README.md"], 22 | }], 23 | }, 24 | }); 25 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | use-x 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "use-x", 3 | "type": "module", 4 | "version": "0.1.0", 5 | "license": "MIT", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "lint:fix": "eslint . --fix", 11 | "preview": "vite preview", 12 | "test": "vitest" 13 | }, 14 | "dependencies": { 15 | "@picocss/pico": "^2.0.6", 16 | "react": "^18.3.1", 17 | "react-dom": "^18.3.1", 18 | "react-router-dom": "^6.27.0", 19 | "vitest": "^2.1.2" 20 | }, 21 | "devDependencies": { 22 | "@antfu/eslint-config": "^3.7.3", 23 | "@eslint-react/eslint-plugin": "^1.14.2", 24 | "@eslint/js": "^9.11.1", 25 | "@testing-library/react": "^16.0.1", 26 | "@types/jsdom": "^21.1.7", 27 | "@types/react": "^18.3.10", 28 | "@types/react-dom": "^18.3.0", 29 | "@vitejs/plugin-react": "^4.3.2", 30 | "eslint": "^9.11.1", 31 | "eslint-plugin-format": "^0.1.2", 32 | "eslint-plugin-react-hooks": "^5.0.0", 33 | "eslint-plugin-react-refresh": "^0.4.12", 34 | "globals": "^15.9.0", 35 | "jsdom": "^25.0.1", 36 | "typescript": "^5.5.3", 37 | "typescript-eslint": "^8.7.0", 38 | "vite": "^5.4.8" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@picocss/pico': 12 | specifier: ^2.0.6 13 | version: 2.0.6 14 | react: 15 | specifier: ^18.3.1 16 | version: 18.3.1 17 | react-dom: 18 | specifier: ^18.3.1 19 | version: 18.3.1(react@18.3.1) 20 | react-router-dom: 21 | specifier: ^6.27.0 22 | version: 6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 23 | vitest: 24 | specifier: ^2.1.2 25 | version: 2.1.3(@types/node@22.7.5)(jsdom@25.0.1) 26 | devDependencies: 27 | '@antfu/eslint-config': 28 | specifier: ^3.7.3 29 | version: 3.7.3(@eslint-react/eslint-plugin@1.15.0(eslint@9.12.0)(typescript@5.6.3))(@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3))(@vue/compiler-sfc@3.5.12)(eslint-plugin-format@0.1.2(eslint@9.12.0))(eslint-plugin-react-hooks@5.0.0(eslint@9.12.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.12.0))(eslint@9.12.0)(typescript@5.6.3)(vitest@2.1.3(@types/node@22.7.5)(jsdom@25.0.1)) 30 | '@eslint-react/eslint-plugin': 31 | specifier: ^1.14.2 32 | version: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 33 | '@eslint/js': 34 | specifier: ^9.11.1 35 | version: 9.12.0 36 | '@testing-library/react': 37 | specifier: ^16.0.1 38 | version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 39 | '@types/jsdom': 40 | specifier: ^21.1.7 41 | version: 21.1.7 42 | '@types/react': 43 | specifier: ^18.3.10 44 | version: 18.3.11 45 | '@types/react-dom': 46 | specifier: ^18.3.0 47 | version: 18.3.1 48 | '@vitejs/plugin-react': 49 | specifier: ^4.3.2 50 | version: 4.3.2(vite@5.4.9(@types/node@22.7.5)) 51 | eslint: 52 | specifier: ^9.11.1 53 | version: 9.12.0 54 | eslint-plugin-format: 55 | specifier: ^0.1.2 56 | version: 0.1.2(eslint@9.12.0) 57 | eslint-plugin-react-hooks: 58 | specifier: ^5.0.0 59 | version: 5.0.0(eslint@9.12.0) 60 | eslint-plugin-react-refresh: 61 | specifier: ^0.4.12 62 | version: 0.4.12(eslint@9.12.0) 63 | globals: 64 | specifier: ^15.9.0 65 | version: 15.11.0 66 | jsdom: 67 | specifier: ^25.0.1 68 | version: 25.0.1 69 | typescript: 70 | specifier: ^5.5.3 71 | version: 5.6.3 72 | typescript-eslint: 73 | specifier: ^8.7.0 74 | version: 8.9.0(eslint@9.12.0)(typescript@5.6.3) 75 | vite: 76 | specifier: ^5.4.8 77 | version: 5.4.9(@types/node@22.7.5) 78 | 79 | packages: 80 | 81 | '@ampproject/remapping@2.3.0': 82 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 83 | engines: {node: '>=6.0.0'} 84 | 85 | '@antfu/eslint-config@3.7.3': 86 | resolution: {integrity: sha512-vzhKtzQT+f/xBV8T5U8SFy3D7uAqL2CEcjsJVqtA7F8tdKvGuC/96uWeEKMHk5lRfijgj+xRvb+c4qQn60YlIA==} 87 | hasBin: true 88 | peerDependencies: 89 | '@eslint-react/eslint-plugin': ^1.5.8 90 | '@prettier/plugin-xml': ^3.4.1 91 | '@unocss/eslint-plugin': '>=0.50.0' 92 | astro-eslint-parser: ^1.0.2 93 | eslint: ^9.10.0 94 | eslint-plugin-astro: ^1.2.0 95 | eslint-plugin-format: '>=0.1.0' 96 | eslint-plugin-react-hooks: ^4.6.0 97 | eslint-plugin-react-refresh: ^0.4.4 98 | eslint-plugin-solid: ^0.14.3 99 | eslint-plugin-svelte: '>=2.35.1' 100 | prettier-plugin-astro: ^0.13.0 101 | prettier-plugin-slidev: ^1.0.5 102 | svelte-eslint-parser: '>=0.37.0' 103 | peerDependenciesMeta: 104 | '@eslint-react/eslint-plugin': 105 | optional: true 106 | '@prettier/plugin-xml': 107 | optional: true 108 | '@unocss/eslint-plugin': 109 | optional: true 110 | astro-eslint-parser: 111 | optional: true 112 | eslint-plugin-astro: 113 | optional: true 114 | eslint-plugin-format: 115 | optional: true 116 | eslint-plugin-react-hooks: 117 | optional: true 118 | eslint-plugin-react-refresh: 119 | optional: true 120 | eslint-plugin-solid: 121 | optional: true 122 | eslint-plugin-svelte: 123 | optional: true 124 | prettier-plugin-astro: 125 | optional: true 126 | prettier-plugin-slidev: 127 | optional: true 128 | svelte-eslint-parser: 129 | optional: true 130 | 131 | '@antfu/install-pkg@0.4.1': 132 | resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} 133 | 134 | '@antfu/utils@0.7.10': 135 | resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} 136 | 137 | '@babel/code-frame@7.25.7': 138 | resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} 139 | engines: {node: '>=6.9.0'} 140 | 141 | '@babel/compat-data@7.25.8': 142 | resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} 143 | engines: {node: '>=6.9.0'} 144 | 145 | '@babel/core@7.25.8': 146 | resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} 147 | engines: {node: '>=6.9.0'} 148 | 149 | '@babel/generator@7.25.7': 150 | resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} 151 | engines: {node: '>=6.9.0'} 152 | 153 | '@babel/helper-compilation-targets@7.25.7': 154 | resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} 155 | engines: {node: '>=6.9.0'} 156 | 157 | '@babel/helper-module-imports@7.25.7': 158 | resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} 159 | engines: {node: '>=6.9.0'} 160 | 161 | '@babel/helper-module-transforms@7.25.7': 162 | resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} 163 | engines: {node: '>=6.9.0'} 164 | peerDependencies: 165 | '@babel/core': ^7.0.0 166 | 167 | '@babel/helper-plugin-utils@7.25.7': 168 | resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} 169 | engines: {node: '>=6.9.0'} 170 | 171 | '@babel/helper-simple-access@7.25.7': 172 | resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} 173 | engines: {node: '>=6.9.0'} 174 | 175 | '@babel/helper-string-parser@7.25.7': 176 | resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} 177 | engines: {node: '>=6.9.0'} 178 | 179 | '@babel/helper-validator-identifier@7.25.7': 180 | resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} 181 | engines: {node: '>=6.9.0'} 182 | 183 | '@babel/helper-validator-option@7.25.7': 184 | resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} 185 | engines: {node: '>=6.9.0'} 186 | 187 | '@babel/helpers@7.25.7': 188 | resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} 189 | engines: {node: '>=6.9.0'} 190 | 191 | '@babel/highlight@7.25.7': 192 | resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} 193 | engines: {node: '>=6.9.0'} 194 | 195 | '@babel/parser@7.25.8': 196 | resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} 197 | engines: {node: '>=6.0.0'} 198 | hasBin: true 199 | 200 | '@babel/plugin-transform-react-jsx-self@7.25.7': 201 | resolution: {integrity: sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg==} 202 | engines: {node: '>=6.9.0'} 203 | peerDependencies: 204 | '@babel/core': ^7.0.0-0 205 | 206 | '@babel/plugin-transform-react-jsx-source@7.25.7': 207 | resolution: {integrity: sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==} 208 | engines: {node: '>=6.9.0'} 209 | peerDependencies: 210 | '@babel/core': ^7.0.0-0 211 | 212 | '@babel/runtime@7.25.7': 213 | resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} 214 | engines: {node: '>=6.9.0'} 215 | 216 | '@babel/template@7.25.7': 217 | resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} 218 | engines: {node: '>=6.9.0'} 219 | 220 | '@babel/traverse@7.25.7': 221 | resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} 222 | engines: {node: '>=6.9.0'} 223 | 224 | '@babel/types@7.25.8': 225 | resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} 226 | engines: {node: '>=6.9.0'} 227 | 228 | '@clack/core@0.3.4': 229 | resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} 230 | 231 | '@clack/prompts@0.7.0': 232 | resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} 233 | bundledDependencies: 234 | - is-unicode-supported 235 | 236 | '@dprint/formatter@0.3.0': 237 | resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} 238 | 239 | '@dprint/markdown@0.17.8': 240 | resolution: {integrity: sha512-ukHFOg+RpG284aPdIg7iPrCYmMs3Dqy43S1ejybnwlJoFiW02b+6Bbr5cfZKFRYNP3dKGM86BqHEnMzBOyLvvA==} 241 | 242 | '@dprint/toml@0.6.3': 243 | resolution: {integrity: sha512-zQ42I53sb4WVHA+5yoY1t59Zk++Ot02AvUgtNKLzTT8mPyVqVChFcePa3on/xIoKEgH+RoepgPHzqfk9837YFw==} 244 | 245 | '@es-joy/jsdoccomment@0.48.0': 246 | resolution: {integrity: sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==} 247 | engines: {node: '>=16'} 248 | 249 | '@es-joy/jsdoccomment@0.49.0': 250 | resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} 251 | engines: {node: '>=16'} 252 | 253 | '@esbuild/aix-ppc64@0.21.5': 254 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 255 | engines: {node: '>=12'} 256 | cpu: [ppc64] 257 | os: [aix] 258 | 259 | '@esbuild/android-arm64@0.21.5': 260 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 261 | engines: {node: '>=12'} 262 | cpu: [arm64] 263 | os: [android] 264 | 265 | '@esbuild/android-arm@0.21.5': 266 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 267 | engines: {node: '>=12'} 268 | cpu: [arm] 269 | os: [android] 270 | 271 | '@esbuild/android-x64@0.21.5': 272 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 273 | engines: {node: '>=12'} 274 | cpu: [x64] 275 | os: [android] 276 | 277 | '@esbuild/darwin-arm64@0.21.5': 278 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 279 | engines: {node: '>=12'} 280 | cpu: [arm64] 281 | os: [darwin] 282 | 283 | '@esbuild/darwin-x64@0.21.5': 284 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 285 | engines: {node: '>=12'} 286 | cpu: [x64] 287 | os: [darwin] 288 | 289 | '@esbuild/freebsd-arm64@0.21.5': 290 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 291 | engines: {node: '>=12'} 292 | cpu: [arm64] 293 | os: [freebsd] 294 | 295 | '@esbuild/freebsd-x64@0.21.5': 296 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 297 | engines: {node: '>=12'} 298 | cpu: [x64] 299 | os: [freebsd] 300 | 301 | '@esbuild/linux-arm64@0.21.5': 302 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 303 | engines: {node: '>=12'} 304 | cpu: [arm64] 305 | os: [linux] 306 | 307 | '@esbuild/linux-arm@0.21.5': 308 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 309 | engines: {node: '>=12'} 310 | cpu: [arm] 311 | os: [linux] 312 | 313 | '@esbuild/linux-ia32@0.21.5': 314 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 315 | engines: {node: '>=12'} 316 | cpu: [ia32] 317 | os: [linux] 318 | 319 | '@esbuild/linux-loong64@0.21.5': 320 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 321 | engines: {node: '>=12'} 322 | cpu: [loong64] 323 | os: [linux] 324 | 325 | '@esbuild/linux-mips64el@0.21.5': 326 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 327 | engines: {node: '>=12'} 328 | cpu: [mips64el] 329 | os: [linux] 330 | 331 | '@esbuild/linux-ppc64@0.21.5': 332 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 333 | engines: {node: '>=12'} 334 | cpu: [ppc64] 335 | os: [linux] 336 | 337 | '@esbuild/linux-riscv64@0.21.5': 338 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 339 | engines: {node: '>=12'} 340 | cpu: [riscv64] 341 | os: [linux] 342 | 343 | '@esbuild/linux-s390x@0.21.5': 344 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 345 | engines: {node: '>=12'} 346 | cpu: [s390x] 347 | os: [linux] 348 | 349 | '@esbuild/linux-x64@0.21.5': 350 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 351 | engines: {node: '>=12'} 352 | cpu: [x64] 353 | os: [linux] 354 | 355 | '@esbuild/netbsd-x64@0.21.5': 356 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 357 | engines: {node: '>=12'} 358 | cpu: [x64] 359 | os: [netbsd] 360 | 361 | '@esbuild/openbsd-x64@0.21.5': 362 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 363 | engines: {node: '>=12'} 364 | cpu: [x64] 365 | os: [openbsd] 366 | 367 | '@esbuild/sunos-x64@0.21.5': 368 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 369 | engines: {node: '>=12'} 370 | cpu: [x64] 371 | os: [sunos] 372 | 373 | '@esbuild/win32-arm64@0.21.5': 374 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 375 | engines: {node: '>=12'} 376 | cpu: [arm64] 377 | os: [win32] 378 | 379 | '@esbuild/win32-ia32@0.21.5': 380 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 381 | engines: {node: '>=12'} 382 | cpu: [ia32] 383 | os: [win32] 384 | 385 | '@esbuild/win32-x64@0.21.5': 386 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 387 | engines: {node: '>=12'} 388 | cpu: [x64] 389 | os: [win32] 390 | 391 | '@eslint-community/eslint-plugin-eslint-comments@4.4.0': 392 | resolution: {integrity: sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw==} 393 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 394 | peerDependencies: 395 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 396 | 397 | '@eslint-community/eslint-utils@4.4.0': 398 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 399 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 400 | peerDependencies: 401 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 402 | 403 | '@eslint-community/regexpp@4.11.1': 404 | resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} 405 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 406 | 407 | '@eslint-react/ast@1.15.0': 408 | resolution: {integrity: sha512-7rOLLfGER82FQJy7pCFNs4j/47RYTEiPDfMFGAu4W7yerJrvU2rRNqjSwwm1Iq0DrrasBV8a3IVtPYQoDOqycg==} 409 | 410 | '@eslint-react/core@1.15.0': 411 | resolution: {integrity: sha512-T7KirkdempegOxQznW1xclZtv5hQRChgbeYqisPRENkNg90w3uY7ia5iPf6FEZntkja/NF00VUnUetIw4rO0og==} 412 | 413 | '@eslint-react/eslint-plugin@1.15.0': 414 | resolution: {integrity: sha512-5cuu7gNBgwQwgDX1YJugL7ujay0NT27g3UN0qtJAON9WLBv/ESq+qLMxddGwPSljV/XGxhwbbys09Jgww/fy8A==} 415 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 416 | peerDependencies: 417 | eslint: ^8.57.0 || ^9.0.0 418 | typescript: ^4.9.5 || ^5.3.3 419 | peerDependenciesMeta: 420 | typescript: 421 | optional: true 422 | 423 | '@eslint-react/jsx@1.15.0': 424 | resolution: {integrity: sha512-VZy8RWPx+2PUuBKaXPtu2qWnWN9SpkdgY3ohkZoGdoqkEYkYaXjvABNByQLwvk2+Ewqt0K+1f8r7QoQi47pQmw==} 425 | 426 | '@eslint-react/shared@1.15.0': 427 | resolution: {integrity: sha512-LRgcKKhNePEJzuwICe3rgUC5KVd4ZhlKys91gMxmUob3RCiUj4BjfAURJMqzwsPGF32WQeHkipw1hWNGpQNdlw==} 428 | 429 | '@eslint-react/tools@1.15.0': 430 | resolution: {integrity: sha512-zdd2K3EV2tWaCzNH60wD159HuX904kWzv+X87yqzZ0Nf2OBUDJ4a561NoDX3Pn8A3E6hFdu666zpIGdeaej9eg==} 431 | 432 | '@eslint-react/types@1.15.0': 433 | resolution: {integrity: sha512-bajL6xIUxZp36fezn5HEhQpL0eJM923hwfRj6cym2Xl0Jn2YgahSztHorsOpId71MYBgn9ERy9yXItcnrz0rsQ==} 434 | 435 | '@eslint-react/var@1.15.0': 436 | resolution: {integrity: sha512-/QycKnbgZRygM/lhHtUFQrvvrswdOyaXfVxwtIFVEYoPHP9q7NaUn0mrBu4VWkXQC9zPk1nWQeC3rZMUxzretg==} 437 | 438 | '@eslint/compat@1.2.0': 439 | resolution: {integrity: sha512-CkPWddN7J9JPrQedEr2X7AjK9y1jaMJtxZ4A/+jTMFA2+n5BWhcKHW/EbJyARqg2zzQfgtWUtVmG3hrG6+nGpg==} 440 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 441 | peerDependencies: 442 | eslint: ^9.10.0 443 | peerDependenciesMeta: 444 | eslint: 445 | optional: true 446 | 447 | '@eslint/config-array@0.18.0': 448 | resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} 449 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 450 | 451 | '@eslint/core@0.6.0': 452 | resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} 453 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 454 | 455 | '@eslint/eslintrc@3.1.0': 456 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 457 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 458 | 459 | '@eslint/js@9.12.0': 460 | resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} 461 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 462 | 463 | '@eslint/markdown@6.2.0': 464 | resolution: {integrity: sha512-ZLWZ6RNy5flf1Nk2DBt0V77MQpQEo8snkjVT75P5J0SJkE/QNoqgy7+dBvNjlyZuj664pU43uDXWg3J8AfF0IQ==} 465 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 466 | 467 | '@eslint/object-schema@2.1.4': 468 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 469 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 470 | 471 | '@eslint/plugin-kit@0.2.0': 472 | resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} 473 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 474 | 475 | '@humanfs/core@0.19.0': 476 | resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} 477 | engines: {node: '>=18.18.0'} 478 | 479 | '@humanfs/node@0.16.5': 480 | resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} 481 | engines: {node: '>=18.18.0'} 482 | 483 | '@humanwhocodes/module-importer@1.0.1': 484 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 485 | engines: {node: '>=12.22'} 486 | 487 | '@humanwhocodes/retry@0.3.1': 488 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 489 | engines: {node: '>=18.18'} 490 | 491 | '@jridgewell/gen-mapping@0.3.5': 492 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 493 | engines: {node: '>=6.0.0'} 494 | 495 | '@jridgewell/resolve-uri@3.1.2': 496 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 497 | engines: {node: '>=6.0.0'} 498 | 499 | '@jridgewell/set-array@1.2.1': 500 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 501 | engines: {node: '>=6.0.0'} 502 | 503 | '@jridgewell/sourcemap-codec@1.5.0': 504 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 505 | 506 | '@jridgewell/trace-mapping@0.3.25': 507 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 508 | 509 | '@nodelib/fs.scandir@2.1.5': 510 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 511 | engines: {node: '>= 8'} 512 | 513 | '@nodelib/fs.stat@2.0.5': 514 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 515 | engines: {node: '>= 8'} 516 | 517 | '@nodelib/fs.walk@1.2.8': 518 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 519 | engines: {node: '>= 8'} 520 | 521 | '@picocss/pico@2.0.6': 522 | resolution: {integrity: sha512-/d8qsykowelD6g8k8JYgmCagOIulCPHMEc2NC4u7OjmpQLmtSetLhEbt0j1n3fPNJVcrT84dRp0RfJBn3wJROA==} 523 | engines: {node: '>=18.19.0'} 524 | 525 | '@pkgr/core@0.1.1': 526 | resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} 527 | engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} 528 | 529 | '@remix-run/router@1.20.0': 530 | resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} 531 | engines: {node: '>=14.0.0'} 532 | 533 | '@rollup/rollup-android-arm-eabi@4.24.0': 534 | resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} 535 | cpu: [arm] 536 | os: [android] 537 | 538 | '@rollup/rollup-android-arm64@4.24.0': 539 | resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} 540 | cpu: [arm64] 541 | os: [android] 542 | 543 | '@rollup/rollup-darwin-arm64@4.24.0': 544 | resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} 545 | cpu: [arm64] 546 | os: [darwin] 547 | 548 | '@rollup/rollup-darwin-x64@4.24.0': 549 | resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} 550 | cpu: [x64] 551 | os: [darwin] 552 | 553 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 554 | resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} 555 | cpu: [arm] 556 | os: [linux] 557 | 558 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 559 | resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} 560 | cpu: [arm] 561 | os: [linux] 562 | 563 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 564 | resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} 565 | cpu: [arm64] 566 | os: [linux] 567 | 568 | '@rollup/rollup-linux-arm64-musl@4.24.0': 569 | resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} 570 | cpu: [arm64] 571 | os: [linux] 572 | 573 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 574 | resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} 575 | cpu: [ppc64] 576 | os: [linux] 577 | 578 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 579 | resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} 580 | cpu: [riscv64] 581 | os: [linux] 582 | 583 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 584 | resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} 585 | cpu: [s390x] 586 | os: [linux] 587 | 588 | '@rollup/rollup-linux-x64-gnu@4.24.0': 589 | resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} 590 | cpu: [x64] 591 | os: [linux] 592 | 593 | '@rollup/rollup-linux-x64-musl@4.24.0': 594 | resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} 595 | cpu: [x64] 596 | os: [linux] 597 | 598 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 599 | resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} 600 | cpu: [arm64] 601 | os: [win32] 602 | 603 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 604 | resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} 605 | cpu: [ia32] 606 | os: [win32] 607 | 608 | '@rollup/rollup-win32-x64-msvc@4.24.0': 609 | resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} 610 | cpu: [x64] 611 | os: [win32] 612 | 613 | '@stylistic/eslint-plugin@2.9.0': 614 | resolution: {integrity: sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==} 615 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 616 | peerDependencies: 617 | eslint: '>=8.40.0' 618 | 619 | '@testing-library/dom@10.4.0': 620 | resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} 621 | engines: {node: '>=18'} 622 | 623 | '@testing-library/react@16.0.1': 624 | resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==} 625 | engines: {node: '>=18'} 626 | peerDependencies: 627 | '@testing-library/dom': ^10.0.0 628 | '@types/react': ^18.0.0 629 | '@types/react-dom': ^18.0.0 630 | react: ^18.0.0 631 | react-dom: ^18.0.0 632 | peerDependenciesMeta: 633 | '@types/react': 634 | optional: true 635 | '@types/react-dom': 636 | optional: true 637 | 638 | '@types/aria-query@5.0.4': 639 | resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} 640 | 641 | '@types/babel__core@7.20.5': 642 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 643 | 644 | '@types/babel__generator@7.6.8': 645 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 646 | 647 | '@types/babel__template@7.4.4': 648 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 649 | 650 | '@types/babel__traverse@7.20.6': 651 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 652 | 653 | '@types/debug@4.1.12': 654 | resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 655 | 656 | '@types/estree@1.0.6': 657 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 658 | 659 | '@types/jsdom@21.1.7': 660 | resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} 661 | 662 | '@types/json-schema@7.0.15': 663 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 664 | 665 | '@types/mdast@4.0.4': 666 | resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} 667 | 668 | '@types/ms@0.7.34': 669 | resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} 670 | 671 | '@types/node@22.7.5': 672 | resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} 673 | 674 | '@types/normalize-package-data@2.4.4': 675 | resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} 676 | 677 | '@types/prop-types@15.7.13': 678 | resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} 679 | 680 | '@types/react-dom@18.3.1': 681 | resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} 682 | 683 | '@types/react@18.3.11': 684 | resolution: {integrity: sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==} 685 | 686 | '@types/tough-cookie@4.0.5': 687 | resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} 688 | 689 | '@types/unist@3.0.3': 690 | resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} 691 | 692 | '@typescript-eslint/eslint-plugin@8.9.0': 693 | resolution: {integrity: sha512-Y1n621OCy4m7/vTXNlCbMVp87zSd7NH0L9cXD8aIpOaNlzeWxIK4+Q19A68gSmTNRZn92UjocVUWDthGxtqHFg==} 694 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 695 | peerDependencies: 696 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 697 | eslint: ^8.57.0 || ^9.0.0 698 | typescript: '*' 699 | peerDependenciesMeta: 700 | typescript: 701 | optional: true 702 | 703 | '@typescript-eslint/parser@8.9.0': 704 | resolution: {integrity: sha512-U+BLn2rqTTHnc4FL3FJjxaXptTxmf9sNftJK62XLz4+GxG3hLHm/SUNaaXP5Y4uTiuYoL5YLy4JBCJe3+t8awQ==} 705 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 706 | peerDependencies: 707 | eslint: ^8.57.0 || ^9.0.0 708 | typescript: '*' 709 | peerDependenciesMeta: 710 | typescript: 711 | optional: true 712 | 713 | '@typescript-eslint/scope-manager@8.9.0': 714 | resolution: {integrity: sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==} 715 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 716 | 717 | '@typescript-eslint/type-utils@8.9.0': 718 | resolution: {integrity: sha512-JD+/pCqlKqAk5961vxCluK+clkppHY07IbV3vett97KOV+8C6l+CPEPwpUuiMwgbOz/qrN3Ke4zzjqbT+ls+1Q==} 719 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 720 | peerDependencies: 721 | typescript: '*' 722 | peerDependenciesMeta: 723 | typescript: 724 | optional: true 725 | 726 | '@typescript-eslint/types@8.9.0': 727 | resolution: {integrity: sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==} 728 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 729 | 730 | '@typescript-eslint/typescript-estree@8.9.0': 731 | resolution: {integrity: sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==} 732 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 733 | peerDependencies: 734 | typescript: '*' 735 | peerDependenciesMeta: 736 | typescript: 737 | optional: true 738 | 739 | '@typescript-eslint/utils@8.9.0': 740 | resolution: {integrity: sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==} 741 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 742 | peerDependencies: 743 | eslint: ^8.57.0 || ^9.0.0 744 | 745 | '@typescript-eslint/visitor-keys@8.9.0': 746 | resolution: {integrity: sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==} 747 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 748 | 749 | '@vitejs/plugin-react@4.3.2': 750 | resolution: {integrity: sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==} 751 | engines: {node: ^14.18.0 || >=16.0.0} 752 | peerDependencies: 753 | vite: ^4.2.0 || ^5.0.0 754 | 755 | '@vitest/eslint-plugin@1.1.7': 756 | resolution: {integrity: sha512-pTWGW3y6lH2ukCuuffpan6kFxG6nIuoesbhMiQxskyQMRcCN5t9SXsKrNHvEw3p8wcCsgJoRqFZVkOTn6TjclA==} 757 | peerDependencies: 758 | '@typescript-eslint/utils': '>= 8.0' 759 | eslint: '>= 8.57.0' 760 | typescript: '>= 5.0.0' 761 | vitest: '*' 762 | peerDependenciesMeta: 763 | typescript: 764 | optional: true 765 | vitest: 766 | optional: true 767 | 768 | '@vitest/expect@2.1.3': 769 | resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} 770 | 771 | '@vitest/mocker@2.1.3': 772 | resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} 773 | peerDependencies: 774 | '@vitest/spy': 2.1.3 775 | msw: ^2.3.5 776 | vite: ^5.0.0 777 | peerDependenciesMeta: 778 | msw: 779 | optional: true 780 | vite: 781 | optional: true 782 | 783 | '@vitest/pretty-format@2.1.3': 784 | resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} 785 | 786 | '@vitest/runner@2.1.3': 787 | resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} 788 | 789 | '@vitest/snapshot@2.1.3': 790 | resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} 791 | 792 | '@vitest/spy@2.1.3': 793 | resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} 794 | 795 | '@vitest/utils@2.1.3': 796 | resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} 797 | 798 | '@vue/compiler-core@3.5.12': 799 | resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} 800 | 801 | '@vue/compiler-dom@3.5.12': 802 | resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} 803 | 804 | '@vue/compiler-sfc@3.5.12': 805 | resolution: {integrity: sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==} 806 | 807 | '@vue/compiler-ssr@3.5.12': 808 | resolution: {integrity: sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==} 809 | 810 | '@vue/shared@3.5.12': 811 | resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} 812 | 813 | acorn-jsx@5.3.2: 814 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 815 | peerDependencies: 816 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 817 | 818 | acorn@8.12.1: 819 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 820 | engines: {node: '>=0.4.0'} 821 | hasBin: true 822 | 823 | agent-base@7.1.1: 824 | resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} 825 | engines: {node: '>= 14'} 826 | 827 | ajv@6.12.6: 828 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 829 | 830 | ansi-regex@5.0.1: 831 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 832 | engines: {node: '>=8'} 833 | 834 | ansi-styles@3.2.1: 835 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 836 | engines: {node: '>=4'} 837 | 838 | ansi-styles@4.3.0: 839 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 840 | engines: {node: '>=8'} 841 | 842 | ansi-styles@5.2.0: 843 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 844 | engines: {node: '>=10'} 845 | 846 | are-docs-informative@0.0.2: 847 | resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} 848 | engines: {node: '>=14'} 849 | 850 | argparse@2.0.1: 851 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 852 | 853 | aria-query@5.3.0: 854 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 855 | 856 | assertion-error@2.0.1: 857 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 858 | engines: {node: '>=12'} 859 | 860 | asynckit@0.4.0: 861 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 862 | 863 | balanced-match@1.0.2: 864 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 865 | 866 | birecord@0.1.1: 867 | resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} 868 | 869 | boolbase@1.0.0: 870 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 871 | 872 | brace-expansion@1.1.11: 873 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 874 | 875 | brace-expansion@2.0.1: 876 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 877 | 878 | braces@3.0.3: 879 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 880 | engines: {node: '>=8'} 881 | 882 | browserslist@4.24.0: 883 | resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} 884 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 885 | hasBin: true 886 | 887 | builtin-modules@3.3.0: 888 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 889 | engines: {node: '>=6'} 890 | 891 | cac@6.7.14: 892 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 893 | engines: {node: '>=8'} 894 | 895 | callsites@3.1.0: 896 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 897 | engines: {node: '>=6'} 898 | 899 | caniuse-lite@1.0.30001668: 900 | resolution: {integrity: sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==} 901 | 902 | ccount@2.0.1: 903 | resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 904 | 905 | chai@5.1.1: 906 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} 907 | engines: {node: '>=12'} 908 | 909 | chalk@2.4.2: 910 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 911 | engines: {node: '>=4'} 912 | 913 | chalk@4.1.2: 914 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 915 | engines: {node: '>=10'} 916 | 917 | character-entities@2.0.2: 918 | resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 919 | 920 | check-error@2.1.1: 921 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 922 | engines: {node: '>= 16'} 923 | 924 | ci-info@4.0.0: 925 | resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} 926 | engines: {node: '>=8'} 927 | 928 | clean-regexp@1.0.0: 929 | resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} 930 | engines: {node: '>=4'} 931 | 932 | cliui@8.0.1: 933 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 934 | engines: {node: '>=12'} 935 | 936 | color-convert@1.9.3: 937 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 938 | 939 | color-convert@2.0.1: 940 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 941 | engines: {node: '>=7.0.0'} 942 | 943 | color-name@1.1.3: 944 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 945 | 946 | color-name@1.1.4: 947 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 948 | 949 | combined-stream@1.0.8: 950 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 951 | engines: {node: '>= 0.8'} 952 | 953 | comment-parser@1.4.1: 954 | resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} 955 | engines: {node: '>= 12.0.0'} 956 | 957 | concat-map@0.0.1: 958 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 959 | 960 | confbox@0.1.8: 961 | resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} 962 | 963 | convert-source-map@2.0.0: 964 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 965 | 966 | core-js-compat@3.38.1: 967 | resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} 968 | 969 | cross-spawn@7.0.3: 970 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 971 | engines: {node: '>= 8'} 972 | 973 | cssesc@3.0.0: 974 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 975 | engines: {node: '>=4'} 976 | hasBin: true 977 | 978 | cssstyle@4.1.0: 979 | resolution: {integrity: sha512-h66W1URKpBS5YMI/V8PyXvTMFT8SupJ1IzoIV8IeBC/ji8WVmrO8dGlTi+2dh6whmdk6BiKJLD/ZBkhWbcg6nA==} 980 | engines: {node: '>=18'} 981 | 982 | csstype@3.1.3: 983 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 984 | 985 | data-urls@5.0.0: 986 | resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} 987 | engines: {node: '>=18'} 988 | 989 | debug@3.2.7: 990 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 991 | peerDependencies: 992 | supports-color: '*' 993 | peerDependenciesMeta: 994 | supports-color: 995 | optional: true 996 | 997 | debug@4.3.7: 998 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 999 | engines: {node: '>=6.0'} 1000 | peerDependencies: 1001 | supports-color: '*' 1002 | peerDependenciesMeta: 1003 | supports-color: 1004 | optional: true 1005 | 1006 | decimal.js@10.4.3: 1007 | resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} 1008 | 1009 | decode-named-character-reference@1.0.2: 1010 | resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 1011 | 1012 | deep-eql@5.0.2: 1013 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 1014 | engines: {node: '>=6'} 1015 | 1016 | deep-is@0.1.4: 1017 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1018 | 1019 | delayed-stream@1.0.0: 1020 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1021 | engines: {node: '>=0.4.0'} 1022 | 1023 | dequal@2.0.3: 1024 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1025 | engines: {node: '>=6'} 1026 | 1027 | devlop@1.1.0: 1028 | resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} 1029 | 1030 | doctrine@3.0.0: 1031 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1032 | engines: {node: '>=6.0.0'} 1033 | 1034 | dom-accessibility-api@0.5.16: 1035 | resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 1036 | 1037 | electron-to-chromium@1.5.38: 1038 | resolution: {integrity: sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==} 1039 | 1040 | emoji-regex@8.0.0: 1041 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1042 | 1043 | enhanced-resolve@5.17.1: 1044 | resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} 1045 | engines: {node: '>=10.13.0'} 1046 | 1047 | entities@4.5.0: 1048 | resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 1049 | engines: {node: '>=0.12'} 1050 | 1051 | error-ex@1.3.2: 1052 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1053 | 1054 | es-module-lexer@1.5.4: 1055 | resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} 1056 | 1057 | esbuild@0.21.5: 1058 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 1059 | engines: {node: '>=12'} 1060 | hasBin: true 1061 | 1062 | escalade@3.2.0: 1063 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1064 | engines: {node: '>=6'} 1065 | 1066 | escape-string-regexp@1.0.5: 1067 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1068 | engines: {node: '>=0.8.0'} 1069 | 1070 | escape-string-regexp@4.0.0: 1071 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1072 | engines: {node: '>=10'} 1073 | 1074 | escape-string-regexp@5.0.0: 1075 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1076 | engines: {node: '>=12'} 1077 | 1078 | eslint-compat-utils@0.5.1: 1079 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 1080 | engines: {node: '>=12'} 1081 | peerDependencies: 1082 | eslint: '>=6.0.0' 1083 | 1084 | eslint-config-flat-gitignore@0.3.0: 1085 | resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} 1086 | peerDependencies: 1087 | eslint: ^9.5.0 1088 | 1089 | eslint-flat-config-utils@0.4.0: 1090 | resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} 1091 | 1092 | eslint-formatting-reporter@0.0.0: 1093 | resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} 1094 | peerDependencies: 1095 | eslint: '>=8.40.0' 1096 | 1097 | eslint-import-resolver-node@0.3.9: 1098 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1099 | 1100 | eslint-merge-processors@0.1.0: 1101 | resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==} 1102 | peerDependencies: 1103 | eslint: '*' 1104 | 1105 | eslint-parser-plain@0.1.0: 1106 | resolution: {integrity: sha512-oOeA6FWU0UJT/Rxc3XF5Cq0nbIZbylm7j8+plqq0CZoE6m4u32OXJrR+9iy4srGMmF6v6pmgvP1zPxSRIGh3sg==} 1107 | 1108 | eslint-plugin-antfu@2.7.0: 1109 | resolution: {integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==} 1110 | peerDependencies: 1111 | eslint: '*' 1112 | 1113 | eslint-plugin-command@0.2.6: 1114 | resolution: {integrity: sha512-T0bHZ1oblW1xUHUVoBKZJR2osSNNGkfZuK4iqboNwuNS/M7tdp3pmURaJtTi/XDzitxaQ02lvOdFH0mUd5QLvQ==} 1115 | peerDependencies: 1116 | eslint: '*' 1117 | 1118 | eslint-plugin-es-x@7.8.0: 1119 | resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} 1120 | engines: {node: ^14.18.0 || >=16.0.0} 1121 | peerDependencies: 1122 | eslint: '>=8' 1123 | 1124 | eslint-plugin-format@0.1.2: 1125 | resolution: {integrity: sha512-ZrcO3aiumgJ6ENAv65IWkPjtW77ML/5mp0YrRK0jdvvaZJb+4kKWbaQTMr/XbJo6CtELRmCApAziEKh7L2NbdQ==} 1126 | peerDependencies: 1127 | eslint: ^8.40.0 || ^9.0.0 1128 | 1129 | eslint-plugin-import-x@4.3.1: 1130 | resolution: {integrity: sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==} 1131 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1132 | peerDependencies: 1133 | eslint: ^8.57.0 || ^9.0.0 1134 | 1135 | eslint-plugin-jsdoc@50.4.1: 1136 | resolution: {integrity: sha512-OXIq+JJQPCLAKL473/esioFOwbXyRE5MAQ4HbZjcp3e+K3zdxt2uDpGs3FR+WezUXNStzEtTfgx15T+JFrVwBA==} 1137 | engines: {node: '>=18'} 1138 | peerDependencies: 1139 | eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 1140 | 1141 | eslint-plugin-jsonc@2.16.0: 1142 | resolution: {integrity: sha512-Af/ZL5mgfb8FFNleH6KlO4/VdmDuTqmM+SPnWcdoWywTetv7kq+vQe99UyQb9XO3b0OWLVuTH7H0d/PXYCMdSg==} 1143 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1144 | peerDependencies: 1145 | eslint: '>=6.0.0' 1146 | 1147 | eslint-plugin-n@17.11.1: 1148 | resolution: {integrity: sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==} 1149 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1150 | peerDependencies: 1151 | eslint: '>=8.23.0' 1152 | 1153 | eslint-plugin-no-only-tests@3.3.0: 1154 | resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} 1155 | engines: {node: '>=5.0.0'} 1156 | 1157 | eslint-plugin-perfectionist@3.9.0: 1158 | resolution: {integrity: sha512-qLsV6/94hokK+k77wUeLMEtB3tS/NtC9ke5OZCAaeCyK1VyVv7Ct0il16vkNNw/1IwNo8Fy60PKjQZSBcsVX5A==} 1159 | engines: {node: ^18.0.0 || >=20.0.0} 1160 | peerDependencies: 1161 | astro-eslint-parser: ^1.0.2 1162 | eslint: '>=8.0.0' 1163 | svelte: '>=3.0.0' 1164 | svelte-eslint-parser: ^0.41.1 1165 | vue-eslint-parser: '>=9.0.0' 1166 | peerDependenciesMeta: 1167 | astro-eslint-parser: 1168 | optional: true 1169 | svelte: 1170 | optional: true 1171 | svelte-eslint-parser: 1172 | optional: true 1173 | vue-eslint-parser: 1174 | optional: true 1175 | 1176 | eslint-plugin-react-debug@1.15.0: 1177 | resolution: {integrity: sha512-zD5WOVPwKNnO4897gz2yjZZcvdGIObKEi4QURDammVEc3sCU0evHcAPEknTC1WEd7T8A4Zu7Vt7sDaUz/DALnA==} 1178 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1179 | peerDependencies: 1180 | eslint: ^8.57.0 || ^9.0.0 1181 | typescript: ^4.9.5 || ^5.3.3 1182 | peerDependenciesMeta: 1183 | typescript: 1184 | optional: true 1185 | 1186 | eslint-plugin-react-dom@1.15.0: 1187 | resolution: {integrity: sha512-P8IdPfiEpDR8SHZdnYJzfdSkV++0hHzOJQhLW9eACyuGCBuzLj2gglmPR5gH2RG44R+Iq5+hsUVNv7sklThvRg==} 1188 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1189 | peerDependencies: 1190 | eslint: ^8.57.0 || ^9.0.0 1191 | typescript: ^4.9.5 || ^5.3.3 1192 | peerDependenciesMeta: 1193 | typescript: 1194 | optional: true 1195 | 1196 | eslint-plugin-react-hooks-extra@1.15.0: 1197 | resolution: {integrity: sha512-guIcax3c4Z/iWyDwZdo5b0qzqpJrhH4svYIfj+wEpfjRdIwpAvL0xM1uqJKdz8Hbgw1D+6dePSau4zmVkuaMqA==} 1198 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1199 | peerDependencies: 1200 | eslint: ^8.57.0 || ^9.0.0 1201 | typescript: ^4.9.5 || ^5.3.3 1202 | peerDependenciesMeta: 1203 | typescript: 1204 | optional: true 1205 | 1206 | eslint-plugin-react-hooks@5.0.0: 1207 | resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} 1208 | engines: {node: '>=10'} 1209 | peerDependencies: 1210 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1211 | 1212 | eslint-plugin-react-naming-convention@1.15.0: 1213 | resolution: {integrity: sha512-XjbkBFEsaGvhDUKCxDCdJ34dsr/XnQu5a7hq6h2aNpnu05VGCAW6CXf3VuyI/sKfj3Em+aX/9eHdcRi12+dmLg==} 1214 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1215 | peerDependencies: 1216 | eslint: ^8.57.0 || ^9.0.0 1217 | typescript: ^4.9.5 || ^5.3.3 1218 | peerDependenciesMeta: 1219 | typescript: 1220 | optional: true 1221 | 1222 | eslint-plugin-react-refresh@0.4.12: 1223 | resolution: {integrity: sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==} 1224 | peerDependencies: 1225 | eslint: '>=7' 1226 | 1227 | eslint-plugin-react-web-api@1.15.0: 1228 | resolution: {integrity: sha512-LUwzKumBApdKzUgl+9F5/TyJbYGQIOy450s6kr3rLPrc9tk8GQrBmSQKmWh2g7C1x7DIoMNFXeUuAD1q/1AKnw==} 1229 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1230 | peerDependencies: 1231 | eslint: ^8.57.0 || ^9.0.0 1232 | typescript: ^4.9.5 || ^5.3.3 1233 | peerDependenciesMeta: 1234 | typescript: 1235 | optional: true 1236 | 1237 | eslint-plugin-react-x@1.15.0: 1238 | resolution: {integrity: sha512-TIZVElFYVXvybmMBVzHPF2hmsaG7greytHd80efUPopxlr+JGjKba6zA3cJAURn+yzN1x2zPJzss2BkB8/48aQ==} 1239 | engines: {bun: '>=1.0.15', node: '>=18.18.0'} 1240 | peerDependencies: 1241 | eslint: ^8.57.0 || ^9.0.0 1242 | typescript: ^4.9.5 || ^5.3.3 1243 | peerDependenciesMeta: 1244 | typescript: 1245 | optional: true 1246 | 1247 | eslint-plugin-regexp@2.6.0: 1248 | resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==} 1249 | engines: {node: ^18 || >=20} 1250 | peerDependencies: 1251 | eslint: '>=8.44.0' 1252 | 1253 | eslint-plugin-toml@0.11.1: 1254 | resolution: {integrity: sha512-Y1WuMSzfZpeMIrmlP1nUh3kT8p96mThIq4NnHrYUhg10IKQgGfBZjAWnrg9fBqguiX4iFps/x/3Hb5TxBisfdw==} 1255 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1256 | peerDependencies: 1257 | eslint: '>=6.0.0' 1258 | 1259 | eslint-plugin-unicorn@55.0.0: 1260 | resolution: {integrity: sha512-n3AKiVpY2/uDcGrS3+QsYDkjPfaOrNrsfQxU9nt5nitd9KuvVXrfAvgCO9DYPSfap+Gqjw9EOrXIsBp5tlHZjA==} 1261 | engines: {node: '>=18.18'} 1262 | peerDependencies: 1263 | eslint: '>=8.56.0' 1264 | 1265 | eslint-plugin-unused-imports@4.1.4: 1266 | resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} 1267 | peerDependencies: 1268 | '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 1269 | eslint: ^9.0.0 || ^8.0.0 1270 | peerDependenciesMeta: 1271 | '@typescript-eslint/eslint-plugin': 1272 | optional: true 1273 | 1274 | eslint-plugin-vue@9.29.0: 1275 | resolution: {integrity: sha512-hamyjrBhNH6Li6R1h1VF9KHfshJlKgKEg3ARbGTn72CMNDSMhWbgC7NdkRDEh25AFW+4SDATzyNM+3gWuZii8g==} 1276 | engines: {node: ^14.17.0 || >=16.0.0} 1277 | peerDependencies: 1278 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 1279 | 1280 | eslint-plugin-yml@1.14.0: 1281 | resolution: {integrity: sha512-ESUpgYPOcAYQO9czugcX5OqRvn/ydDVwGCPXY4YjPqc09rHaUVUA6IE6HLQys4rXk/S+qx3EwTd1wHCwam/OWQ==} 1282 | engines: {node: ^14.17.0 || >=16.0.0} 1283 | peerDependencies: 1284 | eslint: '>=6.0.0' 1285 | 1286 | eslint-processor-vue-blocks@0.1.2: 1287 | resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==} 1288 | peerDependencies: 1289 | '@vue/compiler-sfc': ^3.3.0 1290 | eslint: ^8.50.0 || ^9.0.0 1291 | 1292 | eslint-scope@7.2.2: 1293 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1294 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1295 | 1296 | eslint-scope@8.1.0: 1297 | resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} 1298 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1299 | 1300 | eslint-visitor-keys@3.4.3: 1301 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1302 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1303 | 1304 | eslint-visitor-keys@4.1.0: 1305 | resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} 1306 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1307 | 1308 | eslint@9.12.0: 1309 | resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} 1310 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1311 | hasBin: true 1312 | peerDependencies: 1313 | jiti: '*' 1314 | peerDependenciesMeta: 1315 | jiti: 1316 | optional: true 1317 | 1318 | espree@10.2.0: 1319 | resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} 1320 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1321 | 1322 | espree@9.6.1: 1323 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1324 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1325 | 1326 | esquery@1.6.0: 1327 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1328 | engines: {node: '>=0.10'} 1329 | 1330 | esrecurse@4.3.0: 1331 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1332 | engines: {node: '>=4.0'} 1333 | 1334 | estraverse@5.3.0: 1335 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1336 | engines: {node: '>=4.0'} 1337 | 1338 | estree-walker@2.0.2: 1339 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1340 | 1341 | estree-walker@3.0.3: 1342 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1343 | 1344 | esutils@2.0.3: 1345 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1346 | engines: {node: '>=0.10.0'} 1347 | 1348 | fast-deep-equal@3.1.3: 1349 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1350 | 1351 | fast-diff@1.3.0: 1352 | resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} 1353 | 1354 | fast-glob@3.3.2: 1355 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1356 | engines: {node: '>=8.6.0'} 1357 | 1358 | fast-json-stable-stringify@2.1.0: 1359 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1360 | 1361 | fast-levenshtein@2.0.6: 1362 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1363 | 1364 | fastq@1.17.1: 1365 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1366 | 1367 | file-entry-cache@8.0.0: 1368 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1369 | engines: {node: '>=16.0.0'} 1370 | 1371 | fill-range@7.1.1: 1372 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1373 | engines: {node: '>=8'} 1374 | 1375 | find-up-simple@1.0.0: 1376 | resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} 1377 | engines: {node: '>=18'} 1378 | 1379 | find-up@4.1.0: 1380 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1381 | engines: {node: '>=8'} 1382 | 1383 | find-up@5.0.0: 1384 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1385 | engines: {node: '>=10'} 1386 | 1387 | flat-cache@4.0.1: 1388 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1389 | engines: {node: '>=16'} 1390 | 1391 | flatted@3.3.1: 1392 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 1393 | 1394 | form-data@4.0.1: 1395 | resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} 1396 | engines: {node: '>= 6'} 1397 | 1398 | fsevents@2.3.3: 1399 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1400 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1401 | os: [darwin] 1402 | 1403 | function-bind@1.1.2: 1404 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1405 | 1406 | gensync@1.0.0-beta.2: 1407 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1408 | engines: {node: '>=6.9.0'} 1409 | 1410 | get-caller-file@2.0.5: 1411 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1412 | engines: {node: 6.* || 8.* || >= 10.*} 1413 | 1414 | get-tsconfig@4.8.1: 1415 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} 1416 | 1417 | glob-parent@5.1.2: 1418 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1419 | engines: {node: '>= 6'} 1420 | 1421 | glob-parent@6.0.2: 1422 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1423 | engines: {node: '>=10.13.0'} 1424 | 1425 | globals@11.12.0: 1426 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1427 | engines: {node: '>=4'} 1428 | 1429 | globals@13.24.0: 1430 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1431 | engines: {node: '>=8'} 1432 | 1433 | globals@14.0.0: 1434 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1435 | engines: {node: '>=18'} 1436 | 1437 | globals@15.11.0: 1438 | resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} 1439 | engines: {node: '>=18'} 1440 | 1441 | graceful-fs@4.2.11: 1442 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1443 | 1444 | graphemer@1.4.0: 1445 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1446 | 1447 | has-flag@3.0.0: 1448 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1449 | engines: {node: '>=4'} 1450 | 1451 | has-flag@4.0.0: 1452 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1453 | engines: {node: '>=8'} 1454 | 1455 | hasown@2.0.2: 1456 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1457 | engines: {node: '>= 0.4'} 1458 | 1459 | hosted-git-info@2.8.9: 1460 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 1461 | 1462 | html-encoding-sniffer@4.0.0: 1463 | resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} 1464 | engines: {node: '>=18'} 1465 | 1466 | http-proxy-agent@7.0.2: 1467 | resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} 1468 | engines: {node: '>= 14'} 1469 | 1470 | https-proxy-agent@7.0.5: 1471 | resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} 1472 | engines: {node: '>= 14'} 1473 | 1474 | iconv-lite@0.6.3: 1475 | resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1476 | engines: {node: '>=0.10.0'} 1477 | 1478 | ignore@5.3.2: 1479 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1480 | engines: {node: '>= 4'} 1481 | 1482 | import-fresh@3.3.0: 1483 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1484 | engines: {node: '>=6'} 1485 | 1486 | imurmurhash@0.1.4: 1487 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1488 | engines: {node: '>=0.8.19'} 1489 | 1490 | indent-string@4.0.0: 1491 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 1492 | engines: {node: '>=8'} 1493 | 1494 | is-arrayish@0.2.1: 1495 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1496 | 1497 | is-builtin-module@3.2.1: 1498 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} 1499 | engines: {node: '>=6'} 1500 | 1501 | is-core-module@2.15.1: 1502 | resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 1503 | engines: {node: '>= 0.4'} 1504 | 1505 | is-extglob@2.1.1: 1506 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1507 | engines: {node: '>=0.10.0'} 1508 | 1509 | is-fullwidth-code-point@3.0.0: 1510 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1511 | engines: {node: '>=8'} 1512 | 1513 | is-glob@4.0.3: 1514 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1515 | engines: {node: '>=0.10.0'} 1516 | 1517 | is-immutable-type@5.0.0: 1518 | resolution: {integrity: sha512-mcvHasqbRBWJznuPqqHRKiJgYAz60sZ0mvO3bN70JbkuK7ksfmgc489aKZYxMEjIbRvyOseaTjaRZLRF/xFeRA==} 1519 | peerDependencies: 1520 | eslint: '*' 1521 | typescript: '>=4.7.4' 1522 | 1523 | is-number@7.0.0: 1524 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1525 | engines: {node: '>=0.12.0'} 1526 | 1527 | is-potential-custom-element-name@1.0.1: 1528 | resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 1529 | 1530 | isexe@2.0.0: 1531 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1532 | 1533 | js-tokens@4.0.0: 1534 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1535 | 1536 | js-yaml@4.1.0: 1537 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1538 | hasBin: true 1539 | 1540 | jsdoc-type-pratt-parser@4.1.0: 1541 | resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} 1542 | engines: {node: '>=12.0.0'} 1543 | 1544 | jsdom@25.0.1: 1545 | resolution: {integrity: sha512-8i7LzZj7BF8uplX+ZyOlIz86V6TAsSs+np6m1kpW9u0JWi4z/1t+FzcK1aek+ybTnAC4KhBL4uXCNT0wcUIeCw==} 1546 | engines: {node: '>=18'} 1547 | peerDependencies: 1548 | canvas: ^2.11.2 1549 | peerDependenciesMeta: 1550 | canvas: 1551 | optional: true 1552 | 1553 | jsesc@0.5.0: 1554 | resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} 1555 | hasBin: true 1556 | 1557 | jsesc@3.0.2: 1558 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1559 | engines: {node: '>=6'} 1560 | hasBin: true 1561 | 1562 | json-buffer@3.0.1: 1563 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1564 | 1565 | json-parse-even-better-errors@2.3.1: 1566 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1567 | 1568 | json-schema-traverse@0.4.1: 1569 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1570 | 1571 | json-stable-stringify-without-jsonify@1.0.1: 1572 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1573 | 1574 | json5@2.2.3: 1575 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1576 | engines: {node: '>=6'} 1577 | hasBin: true 1578 | 1579 | jsonc-eslint-parser@2.4.0: 1580 | resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} 1581 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1582 | 1583 | keyv@4.5.4: 1584 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1585 | 1586 | levn@0.4.1: 1587 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1588 | engines: {node: '>= 0.8.0'} 1589 | 1590 | lines-and-columns@1.2.4: 1591 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1592 | 1593 | local-pkg@0.5.0: 1594 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 1595 | engines: {node: '>=14'} 1596 | 1597 | locate-path@5.0.0: 1598 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1599 | engines: {node: '>=8'} 1600 | 1601 | locate-path@6.0.0: 1602 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1603 | engines: {node: '>=10'} 1604 | 1605 | lodash.merge@4.6.2: 1606 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1607 | 1608 | lodash@4.17.21: 1609 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1610 | 1611 | longest-streak@3.1.0: 1612 | resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 1613 | 1614 | loose-envify@1.4.0: 1615 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1616 | hasBin: true 1617 | 1618 | loupe@3.1.2: 1619 | resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} 1620 | 1621 | lru-cache@5.1.1: 1622 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1623 | 1624 | lz-string@1.5.0: 1625 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 1626 | hasBin: true 1627 | 1628 | magic-string@0.30.12: 1629 | resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} 1630 | 1631 | markdown-table@3.0.3: 1632 | resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} 1633 | 1634 | mdast-util-find-and-replace@3.0.1: 1635 | resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} 1636 | 1637 | mdast-util-from-markdown@2.0.1: 1638 | resolution: {integrity: sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==} 1639 | 1640 | mdast-util-gfm-autolink-literal@2.0.1: 1641 | resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} 1642 | 1643 | mdast-util-gfm-footnote@2.0.0: 1644 | resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} 1645 | 1646 | mdast-util-gfm-strikethrough@2.0.0: 1647 | resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} 1648 | 1649 | mdast-util-gfm-table@2.0.0: 1650 | resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} 1651 | 1652 | mdast-util-gfm-task-list-item@2.0.0: 1653 | resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} 1654 | 1655 | mdast-util-gfm@3.0.0: 1656 | resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} 1657 | 1658 | mdast-util-phrasing@4.1.0: 1659 | resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} 1660 | 1661 | mdast-util-to-markdown@2.1.0: 1662 | resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} 1663 | 1664 | mdast-util-to-string@4.0.0: 1665 | resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} 1666 | 1667 | merge2@1.4.1: 1668 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1669 | engines: {node: '>= 8'} 1670 | 1671 | micromark-core-commonmark@2.0.1: 1672 | resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} 1673 | 1674 | micromark-extension-gfm-autolink-literal@2.1.0: 1675 | resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} 1676 | 1677 | micromark-extension-gfm-footnote@2.1.0: 1678 | resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} 1679 | 1680 | micromark-extension-gfm-strikethrough@2.1.0: 1681 | resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} 1682 | 1683 | micromark-extension-gfm-table@2.1.0: 1684 | resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} 1685 | 1686 | micromark-extension-gfm-tagfilter@2.0.0: 1687 | resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} 1688 | 1689 | micromark-extension-gfm-task-list-item@2.1.0: 1690 | resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} 1691 | 1692 | micromark-extension-gfm@3.0.0: 1693 | resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} 1694 | 1695 | micromark-factory-destination@2.0.0: 1696 | resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} 1697 | 1698 | micromark-factory-label@2.0.0: 1699 | resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} 1700 | 1701 | micromark-factory-space@2.0.0: 1702 | resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} 1703 | 1704 | micromark-factory-title@2.0.0: 1705 | resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} 1706 | 1707 | micromark-factory-whitespace@2.0.0: 1708 | resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} 1709 | 1710 | micromark-util-character@2.1.0: 1711 | resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} 1712 | 1713 | micromark-util-chunked@2.0.0: 1714 | resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} 1715 | 1716 | micromark-util-classify-character@2.0.0: 1717 | resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} 1718 | 1719 | micromark-util-combine-extensions@2.0.0: 1720 | resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} 1721 | 1722 | micromark-util-decode-numeric-character-reference@2.0.1: 1723 | resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} 1724 | 1725 | micromark-util-decode-string@2.0.0: 1726 | resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} 1727 | 1728 | micromark-util-encode@2.0.0: 1729 | resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} 1730 | 1731 | micromark-util-html-tag-name@2.0.0: 1732 | resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} 1733 | 1734 | micromark-util-normalize-identifier@2.0.0: 1735 | resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} 1736 | 1737 | micromark-util-resolve-all@2.0.0: 1738 | resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} 1739 | 1740 | micromark-util-sanitize-uri@2.0.0: 1741 | resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} 1742 | 1743 | micromark-util-subtokenize@2.0.1: 1744 | resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} 1745 | 1746 | micromark-util-symbol@2.0.0: 1747 | resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} 1748 | 1749 | micromark-util-types@2.0.0: 1750 | resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} 1751 | 1752 | micromark@4.0.0: 1753 | resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} 1754 | 1755 | micromatch@4.0.8: 1756 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1757 | engines: {node: '>=8.6'} 1758 | 1759 | mime-db@1.52.0: 1760 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1761 | engines: {node: '>= 0.6'} 1762 | 1763 | mime-types@2.1.35: 1764 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1765 | engines: {node: '>= 0.6'} 1766 | 1767 | min-indent@1.0.1: 1768 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1769 | engines: {node: '>=4'} 1770 | 1771 | minimatch@10.0.1: 1772 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 1773 | engines: {node: 20 || >=22} 1774 | 1775 | minimatch@3.1.2: 1776 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1777 | 1778 | minimatch@9.0.5: 1779 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1780 | engines: {node: '>=16 || 14 >=14.17'} 1781 | 1782 | mlly@1.7.2: 1783 | resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} 1784 | 1785 | ms@2.1.3: 1786 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1787 | 1788 | nanoid@3.3.7: 1789 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1790 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1791 | hasBin: true 1792 | 1793 | natural-compare-lite@1.4.0: 1794 | resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} 1795 | 1796 | natural-compare@1.4.0: 1797 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1798 | 1799 | node-releases@2.0.18: 1800 | resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 1801 | 1802 | normalize-package-data@2.5.0: 1803 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1804 | 1805 | nth-check@2.1.1: 1806 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1807 | 1808 | nwsapi@2.2.13: 1809 | resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} 1810 | 1811 | optionator@0.9.4: 1812 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1813 | engines: {node: '>= 0.8.0'} 1814 | 1815 | p-limit@2.3.0: 1816 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1817 | engines: {node: '>=6'} 1818 | 1819 | p-limit@3.1.0: 1820 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1821 | engines: {node: '>=10'} 1822 | 1823 | p-locate@4.1.0: 1824 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1825 | engines: {node: '>=8'} 1826 | 1827 | p-locate@5.0.0: 1828 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1829 | engines: {node: '>=10'} 1830 | 1831 | p-try@2.2.0: 1832 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1833 | engines: {node: '>=6'} 1834 | 1835 | package-manager-detector@0.2.2: 1836 | resolution: {integrity: sha512-VgXbyrSNsml4eHWIvxxG/nTL4wgybMTXCV2Un/+yEc3aDKKU6nQBZjbeP3Pl3qm9Qg92X/1ng4ffvCeD/zwHgg==} 1837 | 1838 | parent-module@1.0.1: 1839 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1840 | engines: {node: '>=6'} 1841 | 1842 | parse-gitignore@2.0.0: 1843 | resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} 1844 | engines: {node: '>=14'} 1845 | 1846 | parse-imports@2.2.1: 1847 | resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} 1848 | engines: {node: '>= 18'} 1849 | 1850 | parse-json@5.2.0: 1851 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1852 | engines: {node: '>=8'} 1853 | 1854 | parse5@7.2.0: 1855 | resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} 1856 | 1857 | path-exists@4.0.0: 1858 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1859 | engines: {node: '>=8'} 1860 | 1861 | path-key@3.1.1: 1862 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1863 | engines: {node: '>=8'} 1864 | 1865 | path-parse@1.0.7: 1866 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1867 | 1868 | pathe@1.1.2: 1869 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1870 | 1871 | pathval@2.0.0: 1872 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1873 | engines: {node: '>= 14.16'} 1874 | 1875 | picocolors@1.1.0: 1876 | resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} 1877 | 1878 | picomatch@2.3.1: 1879 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1880 | engines: {node: '>=8.6'} 1881 | 1882 | picomatch@4.0.2: 1883 | resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1884 | engines: {node: '>=12'} 1885 | 1886 | pkg-types@1.2.1: 1887 | resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} 1888 | 1889 | pluralize@8.0.0: 1890 | resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} 1891 | engines: {node: '>=4'} 1892 | 1893 | postcss-selector-parser@6.1.2: 1894 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1895 | engines: {node: '>=4'} 1896 | 1897 | postcss@8.4.47: 1898 | resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} 1899 | engines: {node: ^10 || ^12 || >=14} 1900 | 1901 | prelude-ls@1.2.1: 1902 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1903 | engines: {node: '>= 0.8.0'} 1904 | 1905 | prettier-linter-helpers@1.0.0: 1906 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 1907 | engines: {node: '>=6.0.0'} 1908 | 1909 | prettier@3.3.3: 1910 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1911 | engines: {node: '>=14'} 1912 | hasBin: true 1913 | 1914 | pretty-format@27.5.1: 1915 | resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 1916 | engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 1917 | 1918 | punycode@2.3.1: 1919 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1920 | engines: {node: '>=6'} 1921 | 1922 | queue-microtask@1.2.3: 1923 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1924 | 1925 | react-dom@18.3.1: 1926 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1927 | peerDependencies: 1928 | react: ^18.3.1 1929 | 1930 | react-is@17.0.2: 1931 | resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 1932 | 1933 | react-refresh@0.14.2: 1934 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 1935 | engines: {node: '>=0.10.0'} 1936 | 1937 | react-router-dom@6.27.0: 1938 | resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} 1939 | engines: {node: '>=14.0.0'} 1940 | peerDependencies: 1941 | react: '>=16.8' 1942 | react-dom: '>=16.8' 1943 | 1944 | react-router@6.27.0: 1945 | resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} 1946 | engines: {node: '>=14.0.0'} 1947 | peerDependencies: 1948 | react: '>=16.8' 1949 | 1950 | react@18.3.1: 1951 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1952 | engines: {node: '>=0.10.0'} 1953 | 1954 | read-pkg-up@7.0.1: 1955 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} 1956 | engines: {node: '>=8'} 1957 | 1958 | read-pkg@5.2.0: 1959 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} 1960 | engines: {node: '>=8'} 1961 | 1962 | refa@0.12.1: 1963 | resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} 1964 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 1965 | 1966 | regenerator-runtime@0.14.1: 1967 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1968 | 1969 | regexp-ast-analysis@0.7.1: 1970 | resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} 1971 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 1972 | 1973 | regexp-tree@0.1.27: 1974 | resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} 1975 | hasBin: true 1976 | 1977 | regjsparser@0.10.0: 1978 | resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==} 1979 | hasBin: true 1980 | 1981 | require-directory@2.1.1: 1982 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1983 | engines: {node: '>=0.10.0'} 1984 | 1985 | resolve-from@4.0.0: 1986 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1987 | engines: {node: '>=4'} 1988 | 1989 | resolve-pkg-maps@1.0.0: 1990 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 1991 | 1992 | resolve@1.22.8: 1993 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 1994 | hasBin: true 1995 | 1996 | reusify@1.0.4: 1997 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1998 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1999 | 2000 | rollup@4.24.0: 2001 | resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} 2002 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2003 | hasBin: true 2004 | 2005 | rrweb-cssom@0.7.1: 2006 | resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} 2007 | 2008 | run-parallel@1.2.0: 2009 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2010 | 2011 | safer-buffer@2.1.2: 2012 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2013 | 2014 | saxes@6.0.0: 2015 | resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 2016 | engines: {node: '>=v12.22.7'} 2017 | 2018 | scheduler@0.23.2: 2019 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 2020 | 2021 | scslre@0.3.0: 2022 | resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} 2023 | engines: {node: ^14.0.0 || >=16.0.0} 2024 | 2025 | semver@5.7.2: 2026 | resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} 2027 | hasBin: true 2028 | 2029 | semver@6.3.1: 2030 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2031 | hasBin: true 2032 | 2033 | semver@7.6.3: 2034 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 2035 | engines: {node: '>=10'} 2036 | hasBin: true 2037 | 2038 | shebang-command@2.0.0: 2039 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2040 | engines: {node: '>=8'} 2041 | 2042 | shebang-regex@3.0.0: 2043 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2044 | engines: {node: '>=8'} 2045 | 2046 | short-unique-id@5.2.0: 2047 | resolution: {integrity: sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==} 2048 | hasBin: true 2049 | 2050 | siginfo@2.0.0: 2051 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 2052 | 2053 | sisteransi@1.0.5: 2054 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2055 | 2056 | slashes@3.0.12: 2057 | resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} 2058 | 2059 | source-map-js@1.2.1: 2060 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2061 | engines: {node: '>=0.10.0'} 2062 | 2063 | spdx-correct@3.2.0: 2064 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 2065 | 2066 | spdx-exceptions@2.5.0: 2067 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 2068 | 2069 | spdx-expression-parse@3.0.1: 2070 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2071 | 2072 | spdx-expression-parse@4.0.0: 2073 | resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} 2074 | 2075 | spdx-license-ids@3.0.20: 2076 | resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} 2077 | 2078 | stable-hash@0.0.4: 2079 | resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} 2080 | 2081 | stackback@0.0.2: 2082 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 2083 | 2084 | std-env@3.7.0: 2085 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 2086 | 2087 | string-ts@2.2.0: 2088 | resolution: {integrity: sha512-VTP0LLZo4Jp9Gz5IiDVMS9WyLx/3IeYh0PXUn0NdPqusUFNgkHPWiEdbB9TU2Iv3myUskraD5WtYEdHUrQEIlQ==} 2089 | 2090 | string-width@4.2.3: 2091 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2092 | engines: {node: '>=8'} 2093 | 2094 | strip-ansi@6.0.1: 2095 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2096 | engines: {node: '>=8'} 2097 | 2098 | strip-indent@3.0.0: 2099 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2100 | engines: {node: '>=8'} 2101 | 2102 | strip-json-comments@3.1.1: 2103 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2104 | engines: {node: '>=8'} 2105 | 2106 | supports-color@5.5.0: 2107 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2108 | engines: {node: '>=4'} 2109 | 2110 | supports-color@7.2.0: 2111 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2112 | engines: {node: '>=8'} 2113 | 2114 | supports-preserve-symlinks-flag@1.0.0: 2115 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2116 | engines: {node: '>= 0.4'} 2117 | 2118 | symbol-tree@3.2.4: 2119 | resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 2120 | 2121 | synckit@0.6.2: 2122 | resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} 2123 | engines: {node: '>=12.20'} 2124 | 2125 | synckit@0.9.2: 2126 | resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} 2127 | engines: {node: ^14.18.0 || >=16.0.0} 2128 | 2129 | tapable@2.2.1: 2130 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2131 | engines: {node: '>=6'} 2132 | 2133 | text-table@0.2.0: 2134 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2135 | 2136 | tinybench@2.9.0: 2137 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 2138 | 2139 | tinyexec@0.3.0: 2140 | resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} 2141 | 2142 | tinypool@1.0.1: 2143 | resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} 2144 | engines: {node: ^18.0.0 || >=20.0.0} 2145 | 2146 | tinyrainbow@1.2.0: 2147 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 2148 | engines: {node: '>=14.0.0'} 2149 | 2150 | tinyspy@3.0.2: 2151 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 2152 | engines: {node: '>=14.0.0'} 2153 | 2154 | tldts-core@6.1.51: 2155 | resolution: {integrity: sha512-bu9oCYYWC1iRjx+3UnAjqCsfrWNZV1ghNQf49b3w5xE8J/tNShHTzp5syWJfwGH+pxUgTTLUnzHnfuydW7wmbg==} 2156 | 2157 | tldts@6.1.51: 2158 | resolution: {integrity: sha512-33lfQoL0JsDogIbZ8fgRyvv77GnRtwkNE/MOKocwUgPO1WrSfsq7+vQRKxRQZai5zd+zg97Iv9fpFQSzHyWdLA==} 2159 | hasBin: true 2160 | 2161 | to-fast-properties@2.0.0: 2162 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2163 | engines: {node: '>=4'} 2164 | 2165 | to-regex-range@5.0.1: 2166 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2167 | engines: {node: '>=8.0'} 2168 | 2169 | toml-eslint-parser@0.10.0: 2170 | resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} 2171 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2172 | 2173 | tough-cookie@5.0.0: 2174 | resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} 2175 | engines: {node: '>=16'} 2176 | 2177 | tr46@5.0.0: 2178 | resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} 2179 | engines: {node: '>=18'} 2180 | 2181 | ts-api-utils@1.3.0: 2182 | resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} 2183 | engines: {node: '>=16'} 2184 | peerDependencies: 2185 | typescript: '>=4.2.0' 2186 | 2187 | ts-declaration-location@1.0.4: 2188 | resolution: {integrity: sha512-r4JoxYhKULbZuH81Pjrp9OEG5St7XWk7zXwGkLKhmVcjiBVHTJXV5wK6dEa9JKW5QGSTW6b1lOjxAKp8R1SQhg==} 2189 | peerDependencies: 2190 | typescript: '>=4.0.0' 2191 | 2192 | ts-pattern@5.5.0: 2193 | resolution: {integrity: sha512-jqbIpTsa/KKTJYWgPNsFNbLVpwCgzXfFJ1ukNn4I8hMwyQzHMJnk/BqWzggB0xpkILuKzaO/aMYhS0SkaJyKXg==} 2194 | 2195 | tslib@2.8.0: 2196 | resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} 2197 | 2198 | type-check@0.4.0: 2199 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2200 | engines: {node: '>= 0.8.0'} 2201 | 2202 | type-fest@0.20.2: 2203 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2204 | engines: {node: '>=10'} 2205 | 2206 | type-fest@0.6.0: 2207 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} 2208 | engines: {node: '>=8'} 2209 | 2210 | type-fest@0.8.1: 2211 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} 2212 | engines: {node: '>=8'} 2213 | 2214 | typescript-eslint@8.9.0: 2215 | resolution: {integrity: sha512-AuD/FXGYRQyqyOBCpNLldMlsCGvmDNxptQ3Dp58/NXeB+FqyvTfXmMyba3PYa0Vi9ybnj7G8S/yd/4Cw8y47eA==} 2216 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2217 | peerDependencies: 2218 | typescript: '*' 2219 | peerDependenciesMeta: 2220 | typescript: 2221 | optional: true 2222 | 2223 | typescript@5.6.3: 2224 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 2225 | engines: {node: '>=14.17'} 2226 | hasBin: true 2227 | 2228 | ufo@1.5.4: 2229 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 2230 | 2231 | undici-types@6.19.8: 2232 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 2233 | 2234 | unist-util-is@6.0.0: 2235 | resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} 2236 | 2237 | unist-util-stringify-position@4.0.0: 2238 | resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} 2239 | 2240 | unist-util-visit-parents@6.0.1: 2241 | resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} 2242 | 2243 | unist-util-visit@5.0.0: 2244 | resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 2245 | 2246 | update-browserslist-db@1.1.1: 2247 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 2248 | hasBin: true 2249 | peerDependencies: 2250 | browserslist: '>= 4.21.0' 2251 | 2252 | uri-js@4.4.1: 2253 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2254 | 2255 | util-deprecate@1.0.2: 2256 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2257 | 2258 | validate-npm-package-license@3.0.4: 2259 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2260 | 2261 | vite-node@2.1.3: 2262 | resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} 2263 | engines: {node: ^18.0.0 || >=20.0.0} 2264 | hasBin: true 2265 | 2266 | vite@5.4.9: 2267 | resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} 2268 | engines: {node: ^18.0.0 || >=20.0.0} 2269 | hasBin: true 2270 | peerDependencies: 2271 | '@types/node': ^18.0.0 || >=20.0.0 2272 | less: '*' 2273 | lightningcss: ^1.21.0 2274 | sass: '*' 2275 | sass-embedded: '*' 2276 | stylus: '*' 2277 | sugarss: '*' 2278 | terser: ^5.4.0 2279 | peerDependenciesMeta: 2280 | '@types/node': 2281 | optional: true 2282 | less: 2283 | optional: true 2284 | lightningcss: 2285 | optional: true 2286 | sass: 2287 | optional: true 2288 | sass-embedded: 2289 | optional: true 2290 | stylus: 2291 | optional: true 2292 | sugarss: 2293 | optional: true 2294 | terser: 2295 | optional: true 2296 | 2297 | vitest@2.1.3: 2298 | resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} 2299 | engines: {node: ^18.0.0 || >=20.0.0} 2300 | hasBin: true 2301 | peerDependencies: 2302 | '@edge-runtime/vm': '*' 2303 | '@types/node': ^18.0.0 || >=20.0.0 2304 | '@vitest/browser': 2.1.3 2305 | '@vitest/ui': 2.1.3 2306 | happy-dom: '*' 2307 | jsdom: '*' 2308 | peerDependenciesMeta: 2309 | '@edge-runtime/vm': 2310 | optional: true 2311 | '@types/node': 2312 | optional: true 2313 | '@vitest/browser': 2314 | optional: true 2315 | '@vitest/ui': 2316 | optional: true 2317 | happy-dom: 2318 | optional: true 2319 | jsdom: 2320 | optional: true 2321 | 2322 | vue-eslint-parser@9.4.3: 2323 | resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} 2324 | engines: {node: ^14.17.0 || >=16.0.0} 2325 | peerDependencies: 2326 | eslint: '>=6.0.0' 2327 | 2328 | w3c-xmlserializer@5.0.0: 2329 | resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} 2330 | engines: {node: '>=18'} 2331 | 2332 | webidl-conversions@7.0.0: 2333 | resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} 2334 | engines: {node: '>=12'} 2335 | 2336 | whatwg-encoding@3.1.1: 2337 | resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} 2338 | engines: {node: '>=18'} 2339 | 2340 | whatwg-mimetype@4.0.0: 2341 | resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 2342 | engines: {node: '>=18'} 2343 | 2344 | whatwg-url@14.0.0: 2345 | resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} 2346 | engines: {node: '>=18'} 2347 | 2348 | which@2.0.2: 2349 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2350 | engines: {node: '>= 8'} 2351 | hasBin: true 2352 | 2353 | why-is-node-running@2.3.0: 2354 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 2355 | engines: {node: '>=8'} 2356 | hasBin: true 2357 | 2358 | word-wrap@1.2.5: 2359 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2360 | engines: {node: '>=0.10.0'} 2361 | 2362 | wrap-ansi@7.0.0: 2363 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2364 | engines: {node: '>=10'} 2365 | 2366 | ws@8.18.0: 2367 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 2368 | engines: {node: '>=10.0.0'} 2369 | peerDependencies: 2370 | bufferutil: ^4.0.1 2371 | utf-8-validate: '>=5.0.2' 2372 | peerDependenciesMeta: 2373 | bufferutil: 2374 | optional: true 2375 | utf-8-validate: 2376 | optional: true 2377 | 2378 | xml-name-validator@4.0.0: 2379 | resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} 2380 | engines: {node: '>=12'} 2381 | 2382 | xml-name-validator@5.0.0: 2383 | resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} 2384 | engines: {node: '>=18'} 2385 | 2386 | xmlchars@2.2.0: 2387 | resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 2388 | 2389 | y18n@5.0.8: 2390 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2391 | engines: {node: '>=10'} 2392 | 2393 | yallist@3.1.1: 2394 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2395 | 2396 | yaml-eslint-parser@1.2.3: 2397 | resolution: {integrity: sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==} 2398 | engines: {node: ^14.17.0 || >=16.0.0} 2399 | 2400 | yaml@2.6.0: 2401 | resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} 2402 | engines: {node: '>= 14'} 2403 | hasBin: true 2404 | 2405 | yargs-parser@21.1.1: 2406 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2407 | engines: {node: '>=12'} 2408 | 2409 | yargs@17.7.2: 2410 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 2411 | engines: {node: '>=12'} 2412 | 2413 | yocto-queue@0.1.0: 2414 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2415 | engines: {node: '>=10'} 2416 | 2417 | zwitch@2.0.4: 2418 | resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 2419 | 2420 | snapshots: 2421 | 2422 | '@ampproject/remapping@2.3.0': 2423 | dependencies: 2424 | '@jridgewell/gen-mapping': 0.3.5 2425 | '@jridgewell/trace-mapping': 0.3.25 2426 | 2427 | '@antfu/eslint-config@3.7.3(@eslint-react/eslint-plugin@1.15.0(eslint@9.12.0)(typescript@5.6.3))(@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3))(@vue/compiler-sfc@3.5.12)(eslint-plugin-format@0.1.2(eslint@9.12.0))(eslint-plugin-react-hooks@5.0.0(eslint@9.12.0))(eslint-plugin-react-refresh@0.4.12(eslint@9.12.0))(eslint@9.12.0)(typescript@5.6.3)(vitest@2.1.3(@types/node@22.7.5)(jsdom@25.0.1))': 2428 | dependencies: 2429 | '@antfu/install-pkg': 0.4.1 2430 | '@clack/prompts': 0.7.0 2431 | '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.12.0) 2432 | '@eslint/markdown': 6.2.0 2433 | '@stylistic/eslint-plugin': 2.9.0(eslint@9.12.0)(typescript@5.6.3) 2434 | '@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) 2435 | '@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2436 | '@vitest/eslint-plugin': 1.1.7(@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)(vitest@2.1.3(@types/node@22.7.5)(jsdom@25.0.1)) 2437 | eslint: 9.12.0 2438 | eslint-config-flat-gitignore: 0.3.0(eslint@9.12.0) 2439 | eslint-flat-config-utils: 0.4.0 2440 | eslint-merge-processors: 0.1.0(eslint@9.12.0) 2441 | eslint-plugin-antfu: 2.7.0(eslint@9.12.0) 2442 | eslint-plugin-command: 0.2.6(eslint@9.12.0) 2443 | eslint-plugin-import-x: 4.3.1(eslint@9.12.0)(typescript@5.6.3) 2444 | eslint-plugin-jsdoc: 50.4.1(eslint@9.12.0) 2445 | eslint-plugin-jsonc: 2.16.0(eslint@9.12.0) 2446 | eslint-plugin-n: 17.11.1(eslint@9.12.0) 2447 | eslint-plugin-no-only-tests: 3.3.0 2448 | eslint-plugin-perfectionist: 3.9.0(eslint@9.12.0)(typescript@5.6.3)(vue-eslint-parser@9.4.3(eslint@9.12.0)) 2449 | eslint-plugin-regexp: 2.6.0(eslint@9.12.0) 2450 | eslint-plugin-toml: 0.11.1(eslint@9.12.0) 2451 | eslint-plugin-unicorn: 55.0.0(eslint@9.12.0) 2452 | eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0) 2453 | eslint-plugin-vue: 9.29.0(eslint@9.12.0) 2454 | eslint-plugin-yml: 1.14.0(eslint@9.12.0) 2455 | eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.12)(eslint@9.12.0) 2456 | globals: 15.11.0 2457 | jsonc-eslint-parser: 2.4.0 2458 | local-pkg: 0.5.0 2459 | parse-gitignore: 2.0.0 2460 | picocolors: 1.1.0 2461 | toml-eslint-parser: 0.10.0 2462 | vue-eslint-parser: 9.4.3(eslint@9.12.0) 2463 | yaml-eslint-parser: 1.2.3 2464 | yargs: 17.7.2 2465 | optionalDependencies: 2466 | '@eslint-react/eslint-plugin': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2467 | eslint-plugin-format: 0.1.2(eslint@9.12.0) 2468 | eslint-plugin-react-hooks: 5.0.0(eslint@9.12.0) 2469 | eslint-plugin-react-refresh: 0.4.12(eslint@9.12.0) 2470 | transitivePeerDependencies: 2471 | - '@typescript-eslint/utils' 2472 | - '@vue/compiler-sfc' 2473 | - supports-color 2474 | - svelte 2475 | - typescript 2476 | - vitest 2477 | 2478 | '@antfu/install-pkg@0.4.1': 2479 | dependencies: 2480 | package-manager-detector: 0.2.2 2481 | tinyexec: 0.3.0 2482 | 2483 | '@antfu/utils@0.7.10': {} 2484 | 2485 | '@babel/code-frame@7.25.7': 2486 | dependencies: 2487 | '@babel/highlight': 7.25.7 2488 | picocolors: 1.1.0 2489 | 2490 | '@babel/compat-data@7.25.8': {} 2491 | 2492 | '@babel/core@7.25.8': 2493 | dependencies: 2494 | '@ampproject/remapping': 2.3.0 2495 | '@babel/code-frame': 7.25.7 2496 | '@babel/generator': 7.25.7 2497 | '@babel/helper-compilation-targets': 7.25.7 2498 | '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) 2499 | '@babel/helpers': 7.25.7 2500 | '@babel/parser': 7.25.8 2501 | '@babel/template': 7.25.7 2502 | '@babel/traverse': 7.25.7 2503 | '@babel/types': 7.25.8 2504 | convert-source-map: 2.0.0 2505 | debug: 4.3.7 2506 | gensync: 1.0.0-beta.2 2507 | json5: 2.2.3 2508 | semver: 6.3.1 2509 | transitivePeerDependencies: 2510 | - supports-color 2511 | 2512 | '@babel/generator@7.25.7': 2513 | dependencies: 2514 | '@babel/types': 7.25.8 2515 | '@jridgewell/gen-mapping': 0.3.5 2516 | '@jridgewell/trace-mapping': 0.3.25 2517 | jsesc: 3.0.2 2518 | 2519 | '@babel/helper-compilation-targets@7.25.7': 2520 | dependencies: 2521 | '@babel/compat-data': 7.25.8 2522 | '@babel/helper-validator-option': 7.25.7 2523 | browserslist: 4.24.0 2524 | lru-cache: 5.1.1 2525 | semver: 6.3.1 2526 | 2527 | '@babel/helper-module-imports@7.25.7': 2528 | dependencies: 2529 | '@babel/traverse': 7.25.7 2530 | '@babel/types': 7.25.8 2531 | transitivePeerDependencies: 2532 | - supports-color 2533 | 2534 | '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': 2535 | dependencies: 2536 | '@babel/core': 7.25.8 2537 | '@babel/helper-module-imports': 7.25.7 2538 | '@babel/helper-simple-access': 7.25.7 2539 | '@babel/helper-validator-identifier': 7.25.7 2540 | '@babel/traverse': 7.25.7 2541 | transitivePeerDependencies: 2542 | - supports-color 2543 | 2544 | '@babel/helper-plugin-utils@7.25.7': {} 2545 | 2546 | '@babel/helper-simple-access@7.25.7': 2547 | dependencies: 2548 | '@babel/traverse': 7.25.7 2549 | '@babel/types': 7.25.8 2550 | transitivePeerDependencies: 2551 | - supports-color 2552 | 2553 | '@babel/helper-string-parser@7.25.7': {} 2554 | 2555 | '@babel/helper-validator-identifier@7.25.7': {} 2556 | 2557 | '@babel/helper-validator-option@7.25.7': {} 2558 | 2559 | '@babel/helpers@7.25.7': 2560 | dependencies: 2561 | '@babel/template': 7.25.7 2562 | '@babel/types': 7.25.8 2563 | 2564 | '@babel/highlight@7.25.7': 2565 | dependencies: 2566 | '@babel/helper-validator-identifier': 7.25.7 2567 | chalk: 2.4.2 2568 | js-tokens: 4.0.0 2569 | picocolors: 1.1.0 2570 | 2571 | '@babel/parser@7.25.8': 2572 | dependencies: 2573 | '@babel/types': 7.25.8 2574 | 2575 | '@babel/plugin-transform-react-jsx-self@7.25.7(@babel/core@7.25.8)': 2576 | dependencies: 2577 | '@babel/core': 7.25.8 2578 | '@babel/helper-plugin-utils': 7.25.7 2579 | 2580 | '@babel/plugin-transform-react-jsx-source@7.25.7(@babel/core@7.25.8)': 2581 | dependencies: 2582 | '@babel/core': 7.25.8 2583 | '@babel/helper-plugin-utils': 7.25.7 2584 | 2585 | '@babel/runtime@7.25.7': 2586 | dependencies: 2587 | regenerator-runtime: 0.14.1 2588 | 2589 | '@babel/template@7.25.7': 2590 | dependencies: 2591 | '@babel/code-frame': 7.25.7 2592 | '@babel/parser': 7.25.8 2593 | '@babel/types': 7.25.8 2594 | 2595 | '@babel/traverse@7.25.7': 2596 | dependencies: 2597 | '@babel/code-frame': 7.25.7 2598 | '@babel/generator': 7.25.7 2599 | '@babel/parser': 7.25.8 2600 | '@babel/template': 7.25.7 2601 | '@babel/types': 7.25.8 2602 | debug: 4.3.7 2603 | globals: 11.12.0 2604 | transitivePeerDependencies: 2605 | - supports-color 2606 | 2607 | '@babel/types@7.25.8': 2608 | dependencies: 2609 | '@babel/helper-string-parser': 7.25.7 2610 | '@babel/helper-validator-identifier': 7.25.7 2611 | to-fast-properties: 2.0.0 2612 | 2613 | '@clack/core@0.3.4': 2614 | dependencies: 2615 | picocolors: 1.1.0 2616 | sisteransi: 1.0.5 2617 | 2618 | '@clack/prompts@0.7.0': 2619 | dependencies: 2620 | '@clack/core': 0.3.4 2621 | picocolors: 1.1.0 2622 | sisteransi: 1.0.5 2623 | 2624 | '@dprint/formatter@0.3.0': {} 2625 | 2626 | '@dprint/markdown@0.17.8': {} 2627 | 2628 | '@dprint/toml@0.6.3': {} 2629 | 2630 | '@es-joy/jsdoccomment@0.48.0': 2631 | dependencies: 2632 | comment-parser: 1.4.1 2633 | esquery: 1.6.0 2634 | jsdoc-type-pratt-parser: 4.1.0 2635 | 2636 | '@es-joy/jsdoccomment@0.49.0': 2637 | dependencies: 2638 | comment-parser: 1.4.1 2639 | esquery: 1.6.0 2640 | jsdoc-type-pratt-parser: 4.1.0 2641 | 2642 | '@esbuild/aix-ppc64@0.21.5': 2643 | optional: true 2644 | 2645 | '@esbuild/android-arm64@0.21.5': 2646 | optional: true 2647 | 2648 | '@esbuild/android-arm@0.21.5': 2649 | optional: true 2650 | 2651 | '@esbuild/android-x64@0.21.5': 2652 | optional: true 2653 | 2654 | '@esbuild/darwin-arm64@0.21.5': 2655 | optional: true 2656 | 2657 | '@esbuild/darwin-x64@0.21.5': 2658 | optional: true 2659 | 2660 | '@esbuild/freebsd-arm64@0.21.5': 2661 | optional: true 2662 | 2663 | '@esbuild/freebsd-x64@0.21.5': 2664 | optional: true 2665 | 2666 | '@esbuild/linux-arm64@0.21.5': 2667 | optional: true 2668 | 2669 | '@esbuild/linux-arm@0.21.5': 2670 | optional: true 2671 | 2672 | '@esbuild/linux-ia32@0.21.5': 2673 | optional: true 2674 | 2675 | '@esbuild/linux-loong64@0.21.5': 2676 | optional: true 2677 | 2678 | '@esbuild/linux-mips64el@0.21.5': 2679 | optional: true 2680 | 2681 | '@esbuild/linux-ppc64@0.21.5': 2682 | optional: true 2683 | 2684 | '@esbuild/linux-riscv64@0.21.5': 2685 | optional: true 2686 | 2687 | '@esbuild/linux-s390x@0.21.5': 2688 | optional: true 2689 | 2690 | '@esbuild/linux-x64@0.21.5': 2691 | optional: true 2692 | 2693 | '@esbuild/netbsd-x64@0.21.5': 2694 | optional: true 2695 | 2696 | '@esbuild/openbsd-x64@0.21.5': 2697 | optional: true 2698 | 2699 | '@esbuild/sunos-x64@0.21.5': 2700 | optional: true 2701 | 2702 | '@esbuild/win32-arm64@0.21.5': 2703 | optional: true 2704 | 2705 | '@esbuild/win32-ia32@0.21.5': 2706 | optional: true 2707 | 2708 | '@esbuild/win32-x64@0.21.5': 2709 | optional: true 2710 | 2711 | '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.12.0)': 2712 | dependencies: 2713 | escape-string-regexp: 4.0.0 2714 | eslint: 9.12.0 2715 | ignore: 5.3.2 2716 | 2717 | '@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)': 2718 | dependencies: 2719 | eslint: 9.12.0 2720 | eslint-visitor-keys: 3.4.3 2721 | 2722 | '@eslint-community/regexpp@4.11.1': {} 2723 | 2724 | '@eslint-react/ast@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2725 | dependencies: 2726 | '@eslint-react/tools': 1.15.0 2727 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2728 | '@typescript-eslint/types': 8.9.0 2729 | '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) 2730 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2731 | birecord: 0.1.1 2732 | string-ts: 2.2.0 2733 | ts-pattern: 5.5.0 2734 | transitivePeerDependencies: 2735 | - eslint 2736 | - supports-color 2737 | - typescript 2738 | 2739 | '@eslint-react/core@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2740 | dependencies: 2741 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2742 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2743 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2744 | '@eslint-react/tools': 1.15.0 2745 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2746 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2747 | '@typescript-eslint/scope-manager': 8.9.0 2748 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2749 | '@typescript-eslint/types': 8.9.0 2750 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2751 | birecord: 0.1.1 2752 | short-unique-id: 5.2.0 2753 | ts-pattern: 5.5.0 2754 | transitivePeerDependencies: 2755 | - eslint 2756 | - supports-color 2757 | - typescript 2758 | 2759 | '@eslint-react/eslint-plugin@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2760 | dependencies: 2761 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2762 | '@eslint-react/tools': 1.15.0 2763 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2764 | '@typescript-eslint/scope-manager': 8.9.0 2765 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2766 | '@typescript-eslint/types': 8.9.0 2767 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2768 | eslint: 9.12.0 2769 | eslint-plugin-react-debug: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2770 | eslint-plugin-react-dom: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2771 | eslint-plugin-react-hooks-extra: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2772 | eslint-plugin-react-naming-convention: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2773 | eslint-plugin-react-web-api: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2774 | eslint-plugin-react-x: 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2775 | optionalDependencies: 2776 | typescript: 5.6.3 2777 | transitivePeerDependencies: 2778 | - supports-color 2779 | 2780 | '@eslint-react/jsx@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2781 | dependencies: 2782 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2783 | '@eslint-react/tools': 1.15.0 2784 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2785 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2786 | '@typescript-eslint/scope-manager': 8.9.0 2787 | '@typescript-eslint/types': 8.9.0 2788 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2789 | ts-pattern: 5.5.0 2790 | transitivePeerDependencies: 2791 | - eslint 2792 | - supports-color 2793 | - typescript 2794 | 2795 | '@eslint-react/shared@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2796 | dependencies: 2797 | '@eslint-react/tools': 1.15.0 2798 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2799 | picomatch: 4.0.2 2800 | transitivePeerDependencies: 2801 | - eslint 2802 | - supports-color 2803 | - typescript 2804 | 2805 | '@eslint-react/tools@1.15.0': {} 2806 | 2807 | '@eslint-react/types@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2808 | dependencies: 2809 | '@eslint-react/tools': 1.15.0 2810 | '@typescript-eslint/types': 8.9.0 2811 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2812 | transitivePeerDependencies: 2813 | - eslint 2814 | - supports-color 2815 | - typescript 2816 | 2817 | '@eslint-react/var@1.15.0(eslint@9.12.0)(typescript@5.6.3)': 2818 | dependencies: 2819 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2820 | '@eslint-react/tools': 1.15.0 2821 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 2822 | '@typescript-eslint/scope-manager': 8.9.0 2823 | '@typescript-eslint/types': 8.9.0 2824 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2825 | ts-pattern: 5.5.0 2826 | transitivePeerDependencies: 2827 | - eslint 2828 | - supports-color 2829 | - typescript 2830 | 2831 | '@eslint/compat@1.2.0(eslint@9.12.0)': 2832 | optionalDependencies: 2833 | eslint: 9.12.0 2834 | 2835 | '@eslint/config-array@0.18.0': 2836 | dependencies: 2837 | '@eslint/object-schema': 2.1.4 2838 | debug: 4.3.7 2839 | minimatch: 3.1.2 2840 | transitivePeerDependencies: 2841 | - supports-color 2842 | 2843 | '@eslint/core@0.6.0': {} 2844 | 2845 | '@eslint/eslintrc@3.1.0': 2846 | dependencies: 2847 | ajv: 6.12.6 2848 | debug: 4.3.7 2849 | espree: 10.2.0 2850 | globals: 14.0.0 2851 | ignore: 5.3.2 2852 | import-fresh: 3.3.0 2853 | js-yaml: 4.1.0 2854 | minimatch: 3.1.2 2855 | strip-json-comments: 3.1.1 2856 | transitivePeerDependencies: 2857 | - supports-color 2858 | 2859 | '@eslint/js@9.12.0': {} 2860 | 2861 | '@eslint/markdown@6.2.0': 2862 | dependencies: 2863 | '@eslint/plugin-kit': 0.2.0 2864 | mdast-util-from-markdown: 2.0.1 2865 | mdast-util-gfm: 3.0.0 2866 | micromark-extension-gfm: 3.0.0 2867 | transitivePeerDependencies: 2868 | - supports-color 2869 | 2870 | '@eslint/object-schema@2.1.4': {} 2871 | 2872 | '@eslint/plugin-kit@0.2.0': 2873 | dependencies: 2874 | levn: 0.4.1 2875 | 2876 | '@humanfs/core@0.19.0': {} 2877 | 2878 | '@humanfs/node@0.16.5': 2879 | dependencies: 2880 | '@humanfs/core': 0.19.0 2881 | '@humanwhocodes/retry': 0.3.1 2882 | 2883 | '@humanwhocodes/module-importer@1.0.1': {} 2884 | 2885 | '@humanwhocodes/retry@0.3.1': {} 2886 | 2887 | '@jridgewell/gen-mapping@0.3.5': 2888 | dependencies: 2889 | '@jridgewell/set-array': 1.2.1 2890 | '@jridgewell/sourcemap-codec': 1.5.0 2891 | '@jridgewell/trace-mapping': 0.3.25 2892 | 2893 | '@jridgewell/resolve-uri@3.1.2': {} 2894 | 2895 | '@jridgewell/set-array@1.2.1': {} 2896 | 2897 | '@jridgewell/sourcemap-codec@1.5.0': {} 2898 | 2899 | '@jridgewell/trace-mapping@0.3.25': 2900 | dependencies: 2901 | '@jridgewell/resolve-uri': 3.1.2 2902 | '@jridgewell/sourcemap-codec': 1.5.0 2903 | 2904 | '@nodelib/fs.scandir@2.1.5': 2905 | dependencies: 2906 | '@nodelib/fs.stat': 2.0.5 2907 | run-parallel: 1.2.0 2908 | 2909 | '@nodelib/fs.stat@2.0.5': {} 2910 | 2911 | '@nodelib/fs.walk@1.2.8': 2912 | dependencies: 2913 | '@nodelib/fs.scandir': 2.1.5 2914 | fastq: 1.17.1 2915 | 2916 | '@picocss/pico@2.0.6': {} 2917 | 2918 | '@pkgr/core@0.1.1': {} 2919 | 2920 | '@remix-run/router@1.20.0': {} 2921 | 2922 | '@rollup/rollup-android-arm-eabi@4.24.0': 2923 | optional: true 2924 | 2925 | '@rollup/rollup-android-arm64@4.24.0': 2926 | optional: true 2927 | 2928 | '@rollup/rollup-darwin-arm64@4.24.0': 2929 | optional: true 2930 | 2931 | '@rollup/rollup-darwin-x64@4.24.0': 2932 | optional: true 2933 | 2934 | '@rollup/rollup-linux-arm-gnueabihf@4.24.0': 2935 | optional: true 2936 | 2937 | '@rollup/rollup-linux-arm-musleabihf@4.24.0': 2938 | optional: true 2939 | 2940 | '@rollup/rollup-linux-arm64-gnu@4.24.0': 2941 | optional: true 2942 | 2943 | '@rollup/rollup-linux-arm64-musl@4.24.0': 2944 | optional: true 2945 | 2946 | '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': 2947 | optional: true 2948 | 2949 | '@rollup/rollup-linux-riscv64-gnu@4.24.0': 2950 | optional: true 2951 | 2952 | '@rollup/rollup-linux-s390x-gnu@4.24.0': 2953 | optional: true 2954 | 2955 | '@rollup/rollup-linux-x64-gnu@4.24.0': 2956 | optional: true 2957 | 2958 | '@rollup/rollup-linux-x64-musl@4.24.0': 2959 | optional: true 2960 | 2961 | '@rollup/rollup-win32-arm64-msvc@4.24.0': 2962 | optional: true 2963 | 2964 | '@rollup/rollup-win32-ia32-msvc@4.24.0': 2965 | optional: true 2966 | 2967 | '@rollup/rollup-win32-x64-msvc@4.24.0': 2968 | optional: true 2969 | 2970 | '@stylistic/eslint-plugin@2.9.0(eslint@9.12.0)(typescript@5.6.3)': 2971 | dependencies: 2972 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 2973 | eslint: 9.12.0 2974 | eslint-visitor-keys: 4.1.0 2975 | espree: 10.2.0 2976 | estraverse: 5.3.0 2977 | picomatch: 4.0.2 2978 | transitivePeerDependencies: 2979 | - supports-color 2980 | - typescript 2981 | 2982 | '@testing-library/dom@10.4.0': 2983 | dependencies: 2984 | '@babel/code-frame': 7.25.7 2985 | '@babel/runtime': 7.25.7 2986 | '@types/aria-query': 5.0.4 2987 | aria-query: 5.3.0 2988 | chalk: 4.1.2 2989 | dom-accessibility-api: 0.5.16 2990 | lz-string: 1.5.0 2991 | pretty-format: 27.5.1 2992 | 2993 | '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 2994 | dependencies: 2995 | '@babel/runtime': 7.25.7 2996 | '@testing-library/dom': 10.4.0 2997 | react: 18.3.1 2998 | react-dom: 18.3.1(react@18.3.1) 2999 | optionalDependencies: 3000 | '@types/react': 18.3.11 3001 | '@types/react-dom': 18.3.1 3002 | 3003 | '@types/aria-query@5.0.4': {} 3004 | 3005 | '@types/babel__core@7.20.5': 3006 | dependencies: 3007 | '@babel/parser': 7.25.8 3008 | '@babel/types': 7.25.8 3009 | '@types/babel__generator': 7.6.8 3010 | '@types/babel__template': 7.4.4 3011 | '@types/babel__traverse': 7.20.6 3012 | 3013 | '@types/babel__generator@7.6.8': 3014 | dependencies: 3015 | '@babel/types': 7.25.8 3016 | 3017 | '@types/babel__template@7.4.4': 3018 | dependencies: 3019 | '@babel/parser': 7.25.8 3020 | '@babel/types': 7.25.8 3021 | 3022 | '@types/babel__traverse@7.20.6': 3023 | dependencies: 3024 | '@babel/types': 7.25.8 3025 | 3026 | '@types/debug@4.1.12': 3027 | dependencies: 3028 | '@types/ms': 0.7.34 3029 | 3030 | '@types/estree@1.0.6': {} 3031 | 3032 | '@types/jsdom@21.1.7': 3033 | dependencies: 3034 | '@types/node': 22.7.5 3035 | '@types/tough-cookie': 4.0.5 3036 | parse5: 7.2.0 3037 | 3038 | '@types/json-schema@7.0.15': {} 3039 | 3040 | '@types/mdast@4.0.4': 3041 | dependencies: 3042 | '@types/unist': 3.0.3 3043 | 3044 | '@types/ms@0.7.34': {} 3045 | 3046 | '@types/node@22.7.5': 3047 | dependencies: 3048 | undici-types: 6.19.8 3049 | 3050 | '@types/normalize-package-data@2.4.4': {} 3051 | 3052 | '@types/prop-types@15.7.13': {} 3053 | 3054 | '@types/react-dom@18.3.1': 3055 | dependencies: 3056 | '@types/react': 18.3.11 3057 | 3058 | '@types/react@18.3.11': 3059 | dependencies: 3060 | '@types/prop-types': 15.7.13 3061 | csstype: 3.1.3 3062 | 3063 | '@types/tough-cookie@4.0.5': {} 3064 | 3065 | '@types/unist@3.0.3': {} 3066 | 3067 | '@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)': 3068 | dependencies: 3069 | '@eslint-community/regexpp': 4.11.1 3070 | '@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3071 | '@typescript-eslint/scope-manager': 8.9.0 3072 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3073 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3074 | '@typescript-eslint/visitor-keys': 8.9.0 3075 | eslint: 9.12.0 3076 | graphemer: 1.4.0 3077 | ignore: 5.3.2 3078 | natural-compare: 1.4.0 3079 | ts-api-utils: 1.3.0(typescript@5.6.3) 3080 | optionalDependencies: 3081 | typescript: 5.6.3 3082 | transitivePeerDependencies: 3083 | - supports-color 3084 | 3085 | '@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3)': 3086 | dependencies: 3087 | '@typescript-eslint/scope-manager': 8.9.0 3088 | '@typescript-eslint/types': 8.9.0 3089 | '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) 3090 | '@typescript-eslint/visitor-keys': 8.9.0 3091 | debug: 4.3.7 3092 | eslint: 9.12.0 3093 | optionalDependencies: 3094 | typescript: 5.6.3 3095 | transitivePeerDependencies: 3096 | - supports-color 3097 | 3098 | '@typescript-eslint/scope-manager@8.9.0': 3099 | dependencies: 3100 | '@typescript-eslint/types': 8.9.0 3101 | '@typescript-eslint/visitor-keys': 8.9.0 3102 | 3103 | '@typescript-eslint/type-utils@8.9.0(eslint@9.12.0)(typescript@5.6.3)': 3104 | dependencies: 3105 | '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) 3106 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3107 | debug: 4.3.7 3108 | ts-api-utils: 1.3.0(typescript@5.6.3) 3109 | optionalDependencies: 3110 | typescript: 5.6.3 3111 | transitivePeerDependencies: 3112 | - eslint 3113 | - supports-color 3114 | 3115 | '@typescript-eslint/types@8.9.0': {} 3116 | 3117 | '@typescript-eslint/typescript-estree@8.9.0(typescript@5.6.3)': 3118 | dependencies: 3119 | '@typescript-eslint/types': 8.9.0 3120 | '@typescript-eslint/visitor-keys': 8.9.0 3121 | debug: 4.3.7 3122 | fast-glob: 3.3.2 3123 | is-glob: 4.0.3 3124 | minimatch: 9.0.5 3125 | semver: 7.6.3 3126 | ts-api-utils: 1.3.0(typescript@5.6.3) 3127 | optionalDependencies: 3128 | typescript: 5.6.3 3129 | transitivePeerDependencies: 3130 | - supports-color 3131 | 3132 | '@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3)': 3133 | dependencies: 3134 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3135 | '@typescript-eslint/scope-manager': 8.9.0 3136 | '@typescript-eslint/types': 8.9.0 3137 | '@typescript-eslint/typescript-estree': 8.9.0(typescript@5.6.3) 3138 | eslint: 9.12.0 3139 | transitivePeerDependencies: 3140 | - supports-color 3141 | - typescript 3142 | 3143 | '@typescript-eslint/visitor-keys@8.9.0': 3144 | dependencies: 3145 | '@typescript-eslint/types': 8.9.0 3146 | eslint-visitor-keys: 3.4.3 3147 | 3148 | '@vitejs/plugin-react@4.3.2(vite@5.4.9(@types/node@22.7.5))': 3149 | dependencies: 3150 | '@babel/core': 7.25.8 3151 | '@babel/plugin-transform-react-jsx-self': 7.25.7(@babel/core@7.25.8) 3152 | '@babel/plugin-transform-react-jsx-source': 7.25.7(@babel/core@7.25.8) 3153 | '@types/babel__core': 7.20.5 3154 | react-refresh: 0.14.2 3155 | vite: 5.4.9(@types/node@22.7.5) 3156 | transitivePeerDependencies: 3157 | - supports-color 3158 | 3159 | '@vitest/eslint-plugin@1.1.7(@typescript-eslint/utils@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)(vitest@2.1.3(@types/node@22.7.5)(jsdom@25.0.1))': 3160 | dependencies: 3161 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3162 | eslint: 9.12.0 3163 | optionalDependencies: 3164 | typescript: 5.6.3 3165 | vitest: 2.1.3(@types/node@22.7.5)(jsdom@25.0.1) 3166 | 3167 | '@vitest/expect@2.1.3': 3168 | dependencies: 3169 | '@vitest/spy': 2.1.3 3170 | '@vitest/utils': 2.1.3 3171 | chai: 5.1.1 3172 | tinyrainbow: 1.2.0 3173 | 3174 | '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.5))': 3175 | dependencies: 3176 | '@vitest/spy': 2.1.3 3177 | estree-walker: 3.0.3 3178 | magic-string: 0.30.12 3179 | optionalDependencies: 3180 | vite: 5.4.9(@types/node@22.7.5) 3181 | 3182 | '@vitest/pretty-format@2.1.3': 3183 | dependencies: 3184 | tinyrainbow: 1.2.0 3185 | 3186 | '@vitest/runner@2.1.3': 3187 | dependencies: 3188 | '@vitest/utils': 2.1.3 3189 | pathe: 1.1.2 3190 | 3191 | '@vitest/snapshot@2.1.3': 3192 | dependencies: 3193 | '@vitest/pretty-format': 2.1.3 3194 | magic-string: 0.30.12 3195 | pathe: 1.1.2 3196 | 3197 | '@vitest/spy@2.1.3': 3198 | dependencies: 3199 | tinyspy: 3.0.2 3200 | 3201 | '@vitest/utils@2.1.3': 3202 | dependencies: 3203 | '@vitest/pretty-format': 2.1.3 3204 | loupe: 3.1.2 3205 | tinyrainbow: 1.2.0 3206 | 3207 | '@vue/compiler-core@3.5.12': 3208 | dependencies: 3209 | '@babel/parser': 7.25.8 3210 | '@vue/shared': 3.5.12 3211 | entities: 4.5.0 3212 | estree-walker: 2.0.2 3213 | source-map-js: 1.2.1 3214 | 3215 | '@vue/compiler-dom@3.5.12': 3216 | dependencies: 3217 | '@vue/compiler-core': 3.5.12 3218 | '@vue/shared': 3.5.12 3219 | 3220 | '@vue/compiler-sfc@3.5.12': 3221 | dependencies: 3222 | '@babel/parser': 7.25.8 3223 | '@vue/compiler-core': 3.5.12 3224 | '@vue/compiler-dom': 3.5.12 3225 | '@vue/compiler-ssr': 3.5.12 3226 | '@vue/shared': 3.5.12 3227 | estree-walker: 2.0.2 3228 | magic-string: 0.30.12 3229 | postcss: 8.4.47 3230 | source-map-js: 1.2.1 3231 | 3232 | '@vue/compiler-ssr@3.5.12': 3233 | dependencies: 3234 | '@vue/compiler-dom': 3.5.12 3235 | '@vue/shared': 3.5.12 3236 | 3237 | '@vue/shared@3.5.12': {} 3238 | 3239 | acorn-jsx@5.3.2(acorn@8.12.1): 3240 | dependencies: 3241 | acorn: 8.12.1 3242 | 3243 | acorn@8.12.1: {} 3244 | 3245 | agent-base@7.1.1: 3246 | dependencies: 3247 | debug: 4.3.7 3248 | transitivePeerDependencies: 3249 | - supports-color 3250 | 3251 | ajv@6.12.6: 3252 | dependencies: 3253 | fast-deep-equal: 3.1.3 3254 | fast-json-stable-stringify: 2.1.0 3255 | json-schema-traverse: 0.4.1 3256 | uri-js: 4.4.1 3257 | 3258 | ansi-regex@5.0.1: {} 3259 | 3260 | ansi-styles@3.2.1: 3261 | dependencies: 3262 | color-convert: 1.9.3 3263 | 3264 | ansi-styles@4.3.0: 3265 | dependencies: 3266 | color-convert: 2.0.1 3267 | 3268 | ansi-styles@5.2.0: {} 3269 | 3270 | are-docs-informative@0.0.2: {} 3271 | 3272 | argparse@2.0.1: {} 3273 | 3274 | aria-query@5.3.0: 3275 | dependencies: 3276 | dequal: 2.0.3 3277 | 3278 | assertion-error@2.0.1: {} 3279 | 3280 | asynckit@0.4.0: {} 3281 | 3282 | balanced-match@1.0.2: {} 3283 | 3284 | birecord@0.1.1: {} 3285 | 3286 | boolbase@1.0.0: {} 3287 | 3288 | brace-expansion@1.1.11: 3289 | dependencies: 3290 | balanced-match: 1.0.2 3291 | concat-map: 0.0.1 3292 | 3293 | brace-expansion@2.0.1: 3294 | dependencies: 3295 | balanced-match: 1.0.2 3296 | 3297 | braces@3.0.3: 3298 | dependencies: 3299 | fill-range: 7.1.1 3300 | 3301 | browserslist@4.24.0: 3302 | dependencies: 3303 | caniuse-lite: 1.0.30001668 3304 | electron-to-chromium: 1.5.38 3305 | node-releases: 2.0.18 3306 | update-browserslist-db: 1.1.1(browserslist@4.24.0) 3307 | 3308 | builtin-modules@3.3.0: {} 3309 | 3310 | cac@6.7.14: {} 3311 | 3312 | callsites@3.1.0: {} 3313 | 3314 | caniuse-lite@1.0.30001668: {} 3315 | 3316 | ccount@2.0.1: {} 3317 | 3318 | chai@5.1.1: 3319 | dependencies: 3320 | assertion-error: 2.0.1 3321 | check-error: 2.1.1 3322 | deep-eql: 5.0.2 3323 | loupe: 3.1.2 3324 | pathval: 2.0.0 3325 | 3326 | chalk@2.4.2: 3327 | dependencies: 3328 | ansi-styles: 3.2.1 3329 | escape-string-regexp: 1.0.5 3330 | supports-color: 5.5.0 3331 | 3332 | chalk@4.1.2: 3333 | dependencies: 3334 | ansi-styles: 4.3.0 3335 | supports-color: 7.2.0 3336 | 3337 | character-entities@2.0.2: {} 3338 | 3339 | check-error@2.1.1: {} 3340 | 3341 | ci-info@4.0.0: {} 3342 | 3343 | clean-regexp@1.0.0: 3344 | dependencies: 3345 | escape-string-regexp: 1.0.5 3346 | 3347 | cliui@8.0.1: 3348 | dependencies: 3349 | string-width: 4.2.3 3350 | strip-ansi: 6.0.1 3351 | wrap-ansi: 7.0.0 3352 | 3353 | color-convert@1.9.3: 3354 | dependencies: 3355 | color-name: 1.1.3 3356 | 3357 | color-convert@2.0.1: 3358 | dependencies: 3359 | color-name: 1.1.4 3360 | 3361 | color-name@1.1.3: {} 3362 | 3363 | color-name@1.1.4: {} 3364 | 3365 | combined-stream@1.0.8: 3366 | dependencies: 3367 | delayed-stream: 1.0.0 3368 | 3369 | comment-parser@1.4.1: {} 3370 | 3371 | concat-map@0.0.1: {} 3372 | 3373 | confbox@0.1.8: {} 3374 | 3375 | convert-source-map@2.0.0: {} 3376 | 3377 | core-js-compat@3.38.1: 3378 | dependencies: 3379 | browserslist: 4.24.0 3380 | 3381 | cross-spawn@7.0.3: 3382 | dependencies: 3383 | path-key: 3.1.1 3384 | shebang-command: 2.0.0 3385 | which: 2.0.2 3386 | 3387 | cssesc@3.0.0: {} 3388 | 3389 | cssstyle@4.1.0: 3390 | dependencies: 3391 | rrweb-cssom: 0.7.1 3392 | 3393 | csstype@3.1.3: {} 3394 | 3395 | data-urls@5.0.0: 3396 | dependencies: 3397 | whatwg-mimetype: 4.0.0 3398 | whatwg-url: 14.0.0 3399 | 3400 | debug@3.2.7: 3401 | dependencies: 3402 | ms: 2.1.3 3403 | 3404 | debug@4.3.7: 3405 | dependencies: 3406 | ms: 2.1.3 3407 | 3408 | decimal.js@10.4.3: {} 3409 | 3410 | decode-named-character-reference@1.0.2: 3411 | dependencies: 3412 | character-entities: 2.0.2 3413 | 3414 | deep-eql@5.0.2: {} 3415 | 3416 | deep-is@0.1.4: {} 3417 | 3418 | delayed-stream@1.0.0: {} 3419 | 3420 | dequal@2.0.3: {} 3421 | 3422 | devlop@1.1.0: 3423 | dependencies: 3424 | dequal: 2.0.3 3425 | 3426 | doctrine@3.0.0: 3427 | dependencies: 3428 | esutils: 2.0.3 3429 | 3430 | dom-accessibility-api@0.5.16: {} 3431 | 3432 | electron-to-chromium@1.5.38: {} 3433 | 3434 | emoji-regex@8.0.0: {} 3435 | 3436 | enhanced-resolve@5.17.1: 3437 | dependencies: 3438 | graceful-fs: 4.2.11 3439 | tapable: 2.2.1 3440 | 3441 | entities@4.5.0: {} 3442 | 3443 | error-ex@1.3.2: 3444 | dependencies: 3445 | is-arrayish: 0.2.1 3446 | 3447 | es-module-lexer@1.5.4: {} 3448 | 3449 | esbuild@0.21.5: 3450 | optionalDependencies: 3451 | '@esbuild/aix-ppc64': 0.21.5 3452 | '@esbuild/android-arm': 0.21.5 3453 | '@esbuild/android-arm64': 0.21.5 3454 | '@esbuild/android-x64': 0.21.5 3455 | '@esbuild/darwin-arm64': 0.21.5 3456 | '@esbuild/darwin-x64': 0.21.5 3457 | '@esbuild/freebsd-arm64': 0.21.5 3458 | '@esbuild/freebsd-x64': 0.21.5 3459 | '@esbuild/linux-arm': 0.21.5 3460 | '@esbuild/linux-arm64': 0.21.5 3461 | '@esbuild/linux-ia32': 0.21.5 3462 | '@esbuild/linux-loong64': 0.21.5 3463 | '@esbuild/linux-mips64el': 0.21.5 3464 | '@esbuild/linux-ppc64': 0.21.5 3465 | '@esbuild/linux-riscv64': 0.21.5 3466 | '@esbuild/linux-s390x': 0.21.5 3467 | '@esbuild/linux-x64': 0.21.5 3468 | '@esbuild/netbsd-x64': 0.21.5 3469 | '@esbuild/openbsd-x64': 0.21.5 3470 | '@esbuild/sunos-x64': 0.21.5 3471 | '@esbuild/win32-arm64': 0.21.5 3472 | '@esbuild/win32-ia32': 0.21.5 3473 | '@esbuild/win32-x64': 0.21.5 3474 | 3475 | escalade@3.2.0: {} 3476 | 3477 | escape-string-regexp@1.0.5: {} 3478 | 3479 | escape-string-regexp@4.0.0: {} 3480 | 3481 | escape-string-regexp@5.0.0: {} 3482 | 3483 | eslint-compat-utils@0.5.1(eslint@9.12.0): 3484 | dependencies: 3485 | eslint: 9.12.0 3486 | semver: 7.6.3 3487 | 3488 | eslint-config-flat-gitignore@0.3.0(eslint@9.12.0): 3489 | dependencies: 3490 | '@eslint/compat': 1.2.0(eslint@9.12.0) 3491 | eslint: 9.12.0 3492 | find-up-simple: 1.0.0 3493 | 3494 | eslint-flat-config-utils@0.4.0: 3495 | dependencies: 3496 | pathe: 1.1.2 3497 | 3498 | eslint-formatting-reporter@0.0.0(eslint@9.12.0): 3499 | dependencies: 3500 | eslint: 9.12.0 3501 | prettier-linter-helpers: 1.0.0 3502 | 3503 | eslint-import-resolver-node@0.3.9: 3504 | dependencies: 3505 | debug: 3.2.7 3506 | is-core-module: 2.15.1 3507 | resolve: 1.22.8 3508 | transitivePeerDependencies: 3509 | - supports-color 3510 | 3511 | eslint-merge-processors@0.1.0(eslint@9.12.0): 3512 | dependencies: 3513 | eslint: 9.12.0 3514 | 3515 | eslint-parser-plain@0.1.0: {} 3516 | 3517 | eslint-plugin-antfu@2.7.0(eslint@9.12.0): 3518 | dependencies: 3519 | '@antfu/utils': 0.7.10 3520 | eslint: 9.12.0 3521 | 3522 | eslint-plugin-command@0.2.6(eslint@9.12.0): 3523 | dependencies: 3524 | '@es-joy/jsdoccomment': 0.48.0 3525 | eslint: 9.12.0 3526 | 3527 | eslint-plugin-es-x@7.8.0(eslint@9.12.0): 3528 | dependencies: 3529 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3530 | '@eslint-community/regexpp': 4.11.1 3531 | eslint: 9.12.0 3532 | eslint-compat-utils: 0.5.1(eslint@9.12.0) 3533 | 3534 | eslint-plugin-format@0.1.2(eslint@9.12.0): 3535 | dependencies: 3536 | '@dprint/formatter': 0.3.0 3537 | '@dprint/markdown': 0.17.8 3538 | '@dprint/toml': 0.6.3 3539 | eslint: 9.12.0 3540 | eslint-formatting-reporter: 0.0.0(eslint@9.12.0) 3541 | eslint-parser-plain: 0.1.0 3542 | prettier: 3.3.3 3543 | synckit: 0.9.2 3544 | 3545 | eslint-plugin-import-x@4.3.1(eslint@9.12.0)(typescript@5.6.3): 3546 | dependencies: 3547 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3548 | debug: 4.3.7 3549 | doctrine: 3.0.0 3550 | eslint: 9.12.0 3551 | eslint-import-resolver-node: 0.3.9 3552 | get-tsconfig: 4.8.1 3553 | is-glob: 4.0.3 3554 | minimatch: 9.0.5 3555 | semver: 7.6.3 3556 | stable-hash: 0.0.4 3557 | tslib: 2.8.0 3558 | transitivePeerDependencies: 3559 | - supports-color 3560 | - typescript 3561 | 3562 | eslint-plugin-jsdoc@50.4.1(eslint@9.12.0): 3563 | dependencies: 3564 | '@es-joy/jsdoccomment': 0.49.0 3565 | are-docs-informative: 0.0.2 3566 | comment-parser: 1.4.1 3567 | debug: 4.3.7 3568 | escape-string-regexp: 4.0.0 3569 | eslint: 9.12.0 3570 | espree: 10.2.0 3571 | esquery: 1.6.0 3572 | parse-imports: 2.2.1 3573 | semver: 7.6.3 3574 | spdx-expression-parse: 4.0.0 3575 | synckit: 0.9.2 3576 | transitivePeerDependencies: 3577 | - supports-color 3578 | 3579 | eslint-plugin-jsonc@2.16.0(eslint@9.12.0): 3580 | dependencies: 3581 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3582 | eslint: 9.12.0 3583 | eslint-compat-utils: 0.5.1(eslint@9.12.0) 3584 | espree: 9.6.1 3585 | graphemer: 1.4.0 3586 | jsonc-eslint-parser: 2.4.0 3587 | natural-compare: 1.4.0 3588 | synckit: 0.6.2 3589 | 3590 | eslint-plugin-n@17.11.1(eslint@9.12.0): 3591 | dependencies: 3592 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3593 | enhanced-resolve: 5.17.1 3594 | eslint: 9.12.0 3595 | eslint-plugin-es-x: 7.8.0(eslint@9.12.0) 3596 | get-tsconfig: 4.8.1 3597 | globals: 15.11.0 3598 | ignore: 5.3.2 3599 | minimatch: 9.0.5 3600 | semver: 7.6.3 3601 | 3602 | eslint-plugin-no-only-tests@3.3.0: {} 3603 | 3604 | eslint-plugin-perfectionist@3.9.0(eslint@9.12.0)(typescript@5.6.3)(vue-eslint-parser@9.4.3(eslint@9.12.0)): 3605 | dependencies: 3606 | '@typescript-eslint/types': 8.9.0 3607 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3608 | eslint: 9.12.0 3609 | minimatch: 9.0.5 3610 | natural-compare-lite: 1.4.0 3611 | optionalDependencies: 3612 | vue-eslint-parser: 9.4.3(eslint@9.12.0) 3613 | transitivePeerDependencies: 3614 | - supports-color 3615 | - typescript 3616 | 3617 | eslint-plugin-react-debug@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3618 | dependencies: 3619 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3620 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3621 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3622 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3623 | '@eslint-react/tools': 1.15.0 3624 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3625 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3626 | '@typescript-eslint/scope-manager': 8.9.0 3627 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3628 | '@typescript-eslint/types': 8.9.0 3629 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3630 | eslint: 9.12.0 3631 | string-ts: 2.2.0 3632 | ts-pattern: 5.5.0 3633 | optionalDependencies: 3634 | typescript: 5.6.3 3635 | transitivePeerDependencies: 3636 | - supports-color 3637 | 3638 | eslint-plugin-react-dom@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3639 | dependencies: 3640 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3641 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3642 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3643 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3644 | '@eslint-react/tools': 1.15.0 3645 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3646 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3647 | '@typescript-eslint/scope-manager': 8.9.0 3648 | '@typescript-eslint/types': 8.9.0 3649 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3650 | eslint: 9.12.0 3651 | ts-pattern: 5.5.0 3652 | optionalDependencies: 3653 | typescript: 5.6.3 3654 | transitivePeerDependencies: 3655 | - supports-color 3656 | 3657 | eslint-plugin-react-hooks-extra@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3658 | dependencies: 3659 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3660 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3661 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3662 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3663 | '@eslint-react/tools': 1.15.0 3664 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3665 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3666 | '@typescript-eslint/scope-manager': 8.9.0 3667 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3668 | '@typescript-eslint/types': 8.9.0 3669 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3670 | eslint: 9.12.0 3671 | ts-pattern: 5.5.0 3672 | optionalDependencies: 3673 | typescript: 5.6.3 3674 | transitivePeerDependencies: 3675 | - supports-color 3676 | 3677 | eslint-plugin-react-hooks@5.0.0(eslint@9.12.0): 3678 | dependencies: 3679 | eslint: 9.12.0 3680 | 3681 | eslint-plugin-react-naming-convention@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3682 | dependencies: 3683 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3684 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3685 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3686 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3687 | '@eslint-react/tools': 1.15.0 3688 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3689 | '@typescript-eslint/scope-manager': 8.9.0 3690 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3691 | '@typescript-eslint/types': 8.9.0 3692 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3693 | eslint: 9.12.0 3694 | ts-pattern: 5.5.0 3695 | optionalDependencies: 3696 | typescript: 5.6.3 3697 | transitivePeerDependencies: 3698 | - supports-color 3699 | 3700 | eslint-plugin-react-refresh@0.4.12(eslint@9.12.0): 3701 | dependencies: 3702 | eslint: 9.12.0 3703 | 3704 | eslint-plugin-react-web-api@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3705 | dependencies: 3706 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3707 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3708 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3709 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3710 | '@eslint-react/tools': 1.15.0 3711 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3712 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3713 | '@typescript-eslint/scope-manager': 8.9.0 3714 | '@typescript-eslint/types': 8.9.0 3715 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3716 | birecord: 0.1.1 3717 | eslint: 9.12.0 3718 | ts-pattern: 5.5.0 3719 | optionalDependencies: 3720 | typescript: 5.6.3 3721 | transitivePeerDependencies: 3722 | - supports-color 3723 | 3724 | eslint-plugin-react-x@1.15.0(eslint@9.12.0)(typescript@5.6.3): 3725 | dependencies: 3726 | '@eslint-react/ast': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3727 | '@eslint-react/core': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3728 | '@eslint-react/jsx': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3729 | '@eslint-react/shared': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3730 | '@eslint-react/tools': 1.15.0 3731 | '@eslint-react/types': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3732 | '@eslint-react/var': 1.15.0(eslint@9.12.0)(typescript@5.6.3) 3733 | '@typescript-eslint/scope-manager': 8.9.0 3734 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3735 | '@typescript-eslint/types': 8.9.0 3736 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 3737 | eslint: 9.12.0 3738 | is-immutable-type: 5.0.0(eslint@9.12.0)(typescript@5.6.3) 3739 | ts-pattern: 5.5.0 3740 | optionalDependencies: 3741 | typescript: 5.6.3 3742 | transitivePeerDependencies: 3743 | - supports-color 3744 | 3745 | eslint-plugin-regexp@2.6.0(eslint@9.12.0): 3746 | dependencies: 3747 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3748 | '@eslint-community/regexpp': 4.11.1 3749 | comment-parser: 1.4.1 3750 | eslint: 9.12.0 3751 | jsdoc-type-pratt-parser: 4.1.0 3752 | refa: 0.12.1 3753 | regexp-ast-analysis: 0.7.1 3754 | scslre: 0.3.0 3755 | 3756 | eslint-plugin-toml@0.11.1(eslint@9.12.0): 3757 | dependencies: 3758 | debug: 4.3.7 3759 | eslint: 9.12.0 3760 | eslint-compat-utils: 0.5.1(eslint@9.12.0) 3761 | lodash: 4.17.21 3762 | toml-eslint-parser: 0.10.0 3763 | transitivePeerDependencies: 3764 | - supports-color 3765 | 3766 | eslint-plugin-unicorn@55.0.0(eslint@9.12.0): 3767 | dependencies: 3768 | '@babel/helper-validator-identifier': 7.25.7 3769 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3770 | ci-info: 4.0.0 3771 | clean-regexp: 1.0.0 3772 | core-js-compat: 3.38.1 3773 | eslint: 9.12.0 3774 | esquery: 1.6.0 3775 | globals: 15.11.0 3776 | indent-string: 4.0.0 3777 | is-builtin-module: 3.2.1 3778 | jsesc: 3.0.2 3779 | pluralize: 8.0.0 3780 | read-pkg-up: 7.0.1 3781 | regexp-tree: 0.1.27 3782 | regjsparser: 0.10.0 3783 | semver: 7.6.3 3784 | strip-indent: 3.0.0 3785 | 3786 | eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0): 3787 | dependencies: 3788 | eslint: 9.12.0 3789 | optionalDependencies: 3790 | '@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) 3791 | 3792 | eslint-plugin-vue@9.29.0(eslint@9.12.0): 3793 | dependencies: 3794 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3795 | eslint: 9.12.0 3796 | globals: 13.24.0 3797 | natural-compare: 1.4.0 3798 | nth-check: 2.1.1 3799 | postcss-selector-parser: 6.1.2 3800 | semver: 7.6.3 3801 | vue-eslint-parser: 9.4.3(eslint@9.12.0) 3802 | xml-name-validator: 4.0.0 3803 | transitivePeerDependencies: 3804 | - supports-color 3805 | 3806 | eslint-plugin-yml@1.14.0(eslint@9.12.0): 3807 | dependencies: 3808 | debug: 4.3.7 3809 | eslint: 9.12.0 3810 | eslint-compat-utils: 0.5.1(eslint@9.12.0) 3811 | lodash: 4.17.21 3812 | natural-compare: 1.4.0 3813 | yaml-eslint-parser: 1.2.3 3814 | transitivePeerDependencies: 3815 | - supports-color 3816 | 3817 | eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.12)(eslint@9.12.0): 3818 | dependencies: 3819 | '@vue/compiler-sfc': 3.5.12 3820 | eslint: 9.12.0 3821 | 3822 | eslint-scope@7.2.2: 3823 | dependencies: 3824 | esrecurse: 4.3.0 3825 | estraverse: 5.3.0 3826 | 3827 | eslint-scope@8.1.0: 3828 | dependencies: 3829 | esrecurse: 4.3.0 3830 | estraverse: 5.3.0 3831 | 3832 | eslint-visitor-keys@3.4.3: {} 3833 | 3834 | eslint-visitor-keys@4.1.0: {} 3835 | 3836 | eslint@9.12.0: 3837 | dependencies: 3838 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) 3839 | '@eslint-community/regexpp': 4.11.1 3840 | '@eslint/config-array': 0.18.0 3841 | '@eslint/core': 0.6.0 3842 | '@eslint/eslintrc': 3.1.0 3843 | '@eslint/js': 9.12.0 3844 | '@eslint/plugin-kit': 0.2.0 3845 | '@humanfs/node': 0.16.5 3846 | '@humanwhocodes/module-importer': 1.0.1 3847 | '@humanwhocodes/retry': 0.3.1 3848 | '@types/estree': 1.0.6 3849 | '@types/json-schema': 7.0.15 3850 | ajv: 6.12.6 3851 | chalk: 4.1.2 3852 | cross-spawn: 7.0.3 3853 | debug: 4.3.7 3854 | escape-string-regexp: 4.0.0 3855 | eslint-scope: 8.1.0 3856 | eslint-visitor-keys: 4.1.0 3857 | espree: 10.2.0 3858 | esquery: 1.6.0 3859 | esutils: 2.0.3 3860 | fast-deep-equal: 3.1.3 3861 | file-entry-cache: 8.0.0 3862 | find-up: 5.0.0 3863 | glob-parent: 6.0.2 3864 | ignore: 5.3.2 3865 | imurmurhash: 0.1.4 3866 | is-glob: 4.0.3 3867 | json-stable-stringify-without-jsonify: 1.0.1 3868 | lodash.merge: 4.6.2 3869 | minimatch: 3.1.2 3870 | natural-compare: 1.4.0 3871 | optionator: 0.9.4 3872 | text-table: 0.2.0 3873 | transitivePeerDependencies: 3874 | - supports-color 3875 | 3876 | espree@10.2.0: 3877 | dependencies: 3878 | acorn: 8.12.1 3879 | acorn-jsx: 5.3.2(acorn@8.12.1) 3880 | eslint-visitor-keys: 4.1.0 3881 | 3882 | espree@9.6.1: 3883 | dependencies: 3884 | acorn: 8.12.1 3885 | acorn-jsx: 5.3.2(acorn@8.12.1) 3886 | eslint-visitor-keys: 3.4.3 3887 | 3888 | esquery@1.6.0: 3889 | dependencies: 3890 | estraverse: 5.3.0 3891 | 3892 | esrecurse@4.3.0: 3893 | dependencies: 3894 | estraverse: 5.3.0 3895 | 3896 | estraverse@5.3.0: {} 3897 | 3898 | estree-walker@2.0.2: {} 3899 | 3900 | estree-walker@3.0.3: 3901 | dependencies: 3902 | '@types/estree': 1.0.6 3903 | 3904 | esutils@2.0.3: {} 3905 | 3906 | fast-deep-equal@3.1.3: {} 3907 | 3908 | fast-diff@1.3.0: {} 3909 | 3910 | fast-glob@3.3.2: 3911 | dependencies: 3912 | '@nodelib/fs.stat': 2.0.5 3913 | '@nodelib/fs.walk': 1.2.8 3914 | glob-parent: 5.1.2 3915 | merge2: 1.4.1 3916 | micromatch: 4.0.8 3917 | 3918 | fast-json-stable-stringify@2.1.0: {} 3919 | 3920 | fast-levenshtein@2.0.6: {} 3921 | 3922 | fastq@1.17.1: 3923 | dependencies: 3924 | reusify: 1.0.4 3925 | 3926 | file-entry-cache@8.0.0: 3927 | dependencies: 3928 | flat-cache: 4.0.1 3929 | 3930 | fill-range@7.1.1: 3931 | dependencies: 3932 | to-regex-range: 5.0.1 3933 | 3934 | find-up-simple@1.0.0: {} 3935 | 3936 | find-up@4.1.0: 3937 | dependencies: 3938 | locate-path: 5.0.0 3939 | path-exists: 4.0.0 3940 | 3941 | find-up@5.0.0: 3942 | dependencies: 3943 | locate-path: 6.0.0 3944 | path-exists: 4.0.0 3945 | 3946 | flat-cache@4.0.1: 3947 | dependencies: 3948 | flatted: 3.3.1 3949 | keyv: 4.5.4 3950 | 3951 | flatted@3.3.1: {} 3952 | 3953 | form-data@4.0.1: 3954 | dependencies: 3955 | asynckit: 0.4.0 3956 | combined-stream: 1.0.8 3957 | mime-types: 2.1.35 3958 | 3959 | fsevents@2.3.3: 3960 | optional: true 3961 | 3962 | function-bind@1.1.2: {} 3963 | 3964 | gensync@1.0.0-beta.2: {} 3965 | 3966 | get-caller-file@2.0.5: {} 3967 | 3968 | get-tsconfig@4.8.1: 3969 | dependencies: 3970 | resolve-pkg-maps: 1.0.0 3971 | 3972 | glob-parent@5.1.2: 3973 | dependencies: 3974 | is-glob: 4.0.3 3975 | 3976 | glob-parent@6.0.2: 3977 | dependencies: 3978 | is-glob: 4.0.3 3979 | 3980 | globals@11.12.0: {} 3981 | 3982 | globals@13.24.0: 3983 | dependencies: 3984 | type-fest: 0.20.2 3985 | 3986 | globals@14.0.0: {} 3987 | 3988 | globals@15.11.0: {} 3989 | 3990 | graceful-fs@4.2.11: {} 3991 | 3992 | graphemer@1.4.0: {} 3993 | 3994 | has-flag@3.0.0: {} 3995 | 3996 | has-flag@4.0.0: {} 3997 | 3998 | hasown@2.0.2: 3999 | dependencies: 4000 | function-bind: 1.1.2 4001 | 4002 | hosted-git-info@2.8.9: {} 4003 | 4004 | html-encoding-sniffer@4.0.0: 4005 | dependencies: 4006 | whatwg-encoding: 3.1.1 4007 | 4008 | http-proxy-agent@7.0.2: 4009 | dependencies: 4010 | agent-base: 7.1.1 4011 | debug: 4.3.7 4012 | transitivePeerDependencies: 4013 | - supports-color 4014 | 4015 | https-proxy-agent@7.0.5: 4016 | dependencies: 4017 | agent-base: 7.1.1 4018 | debug: 4.3.7 4019 | transitivePeerDependencies: 4020 | - supports-color 4021 | 4022 | iconv-lite@0.6.3: 4023 | dependencies: 4024 | safer-buffer: 2.1.2 4025 | 4026 | ignore@5.3.2: {} 4027 | 4028 | import-fresh@3.3.0: 4029 | dependencies: 4030 | parent-module: 1.0.1 4031 | resolve-from: 4.0.0 4032 | 4033 | imurmurhash@0.1.4: {} 4034 | 4035 | indent-string@4.0.0: {} 4036 | 4037 | is-arrayish@0.2.1: {} 4038 | 4039 | is-builtin-module@3.2.1: 4040 | dependencies: 4041 | builtin-modules: 3.3.0 4042 | 4043 | is-core-module@2.15.1: 4044 | dependencies: 4045 | hasown: 2.0.2 4046 | 4047 | is-extglob@2.1.1: {} 4048 | 4049 | is-fullwidth-code-point@3.0.0: {} 4050 | 4051 | is-glob@4.0.3: 4052 | dependencies: 4053 | is-extglob: 2.1.1 4054 | 4055 | is-immutable-type@5.0.0(eslint@9.12.0)(typescript@5.6.3): 4056 | dependencies: 4057 | '@typescript-eslint/type-utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 4058 | eslint: 9.12.0 4059 | ts-api-utils: 1.3.0(typescript@5.6.3) 4060 | ts-declaration-location: 1.0.4(typescript@5.6.3) 4061 | typescript: 5.6.3 4062 | transitivePeerDependencies: 4063 | - supports-color 4064 | 4065 | is-number@7.0.0: {} 4066 | 4067 | is-potential-custom-element-name@1.0.1: {} 4068 | 4069 | isexe@2.0.0: {} 4070 | 4071 | js-tokens@4.0.0: {} 4072 | 4073 | js-yaml@4.1.0: 4074 | dependencies: 4075 | argparse: 2.0.1 4076 | 4077 | jsdoc-type-pratt-parser@4.1.0: {} 4078 | 4079 | jsdom@25.0.1: 4080 | dependencies: 4081 | cssstyle: 4.1.0 4082 | data-urls: 5.0.0 4083 | decimal.js: 10.4.3 4084 | form-data: 4.0.1 4085 | html-encoding-sniffer: 4.0.0 4086 | http-proxy-agent: 7.0.2 4087 | https-proxy-agent: 7.0.5 4088 | is-potential-custom-element-name: 1.0.1 4089 | nwsapi: 2.2.13 4090 | parse5: 7.2.0 4091 | rrweb-cssom: 0.7.1 4092 | saxes: 6.0.0 4093 | symbol-tree: 3.2.4 4094 | tough-cookie: 5.0.0 4095 | w3c-xmlserializer: 5.0.0 4096 | webidl-conversions: 7.0.0 4097 | whatwg-encoding: 3.1.1 4098 | whatwg-mimetype: 4.0.0 4099 | whatwg-url: 14.0.0 4100 | ws: 8.18.0 4101 | xml-name-validator: 5.0.0 4102 | transitivePeerDependencies: 4103 | - bufferutil 4104 | - supports-color 4105 | - utf-8-validate 4106 | 4107 | jsesc@0.5.0: {} 4108 | 4109 | jsesc@3.0.2: {} 4110 | 4111 | json-buffer@3.0.1: {} 4112 | 4113 | json-parse-even-better-errors@2.3.1: {} 4114 | 4115 | json-schema-traverse@0.4.1: {} 4116 | 4117 | json-stable-stringify-without-jsonify@1.0.1: {} 4118 | 4119 | json5@2.2.3: {} 4120 | 4121 | jsonc-eslint-parser@2.4.0: 4122 | dependencies: 4123 | acorn: 8.12.1 4124 | eslint-visitor-keys: 3.4.3 4125 | espree: 9.6.1 4126 | semver: 7.6.3 4127 | 4128 | keyv@4.5.4: 4129 | dependencies: 4130 | json-buffer: 3.0.1 4131 | 4132 | levn@0.4.1: 4133 | dependencies: 4134 | prelude-ls: 1.2.1 4135 | type-check: 0.4.0 4136 | 4137 | lines-and-columns@1.2.4: {} 4138 | 4139 | local-pkg@0.5.0: 4140 | dependencies: 4141 | mlly: 1.7.2 4142 | pkg-types: 1.2.1 4143 | 4144 | locate-path@5.0.0: 4145 | dependencies: 4146 | p-locate: 4.1.0 4147 | 4148 | locate-path@6.0.0: 4149 | dependencies: 4150 | p-locate: 5.0.0 4151 | 4152 | lodash.merge@4.6.2: {} 4153 | 4154 | lodash@4.17.21: {} 4155 | 4156 | longest-streak@3.1.0: {} 4157 | 4158 | loose-envify@1.4.0: 4159 | dependencies: 4160 | js-tokens: 4.0.0 4161 | 4162 | loupe@3.1.2: {} 4163 | 4164 | lru-cache@5.1.1: 4165 | dependencies: 4166 | yallist: 3.1.1 4167 | 4168 | lz-string@1.5.0: {} 4169 | 4170 | magic-string@0.30.12: 4171 | dependencies: 4172 | '@jridgewell/sourcemap-codec': 1.5.0 4173 | 4174 | markdown-table@3.0.3: {} 4175 | 4176 | mdast-util-find-and-replace@3.0.1: 4177 | dependencies: 4178 | '@types/mdast': 4.0.4 4179 | escape-string-regexp: 5.0.0 4180 | unist-util-is: 6.0.0 4181 | unist-util-visit-parents: 6.0.1 4182 | 4183 | mdast-util-from-markdown@2.0.1: 4184 | dependencies: 4185 | '@types/mdast': 4.0.4 4186 | '@types/unist': 3.0.3 4187 | decode-named-character-reference: 1.0.2 4188 | devlop: 1.1.0 4189 | mdast-util-to-string: 4.0.0 4190 | micromark: 4.0.0 4191 | micromark-util-decode-numeric-character-reference: 2.0.1 4192 | micromark-util-decode-string: 2.0.0 4193 | micromark-util-normalize-identifier: 2.0.0 4194 | micromark-util-symbol: 2.0.0 4195 | micromark-util-types: 2.0.0 4196 | unist-util-stringify-position: 4.0.0 4197 | transitivePeerDependencies: 4198 | - supports-color 4199 | 4200 | mdast-util-gfm-autolink-literal@2.0.1: 4201 | dependencies: 4202 | '@types/mdast': 4.0.4 4203 | ccount: 2.0.1 4204 | devlop: 1.1.0 4205 | mdast-util-find-and-replace: 3.0.1 4206 | micromark-util-character: 2.1.0 4207 | 4208 | mdast-util-gfm-footnote@2.0.0: 4209 | dependencies: 4210 | '@types/mdast': 4.0.4 4211 | devlop: 1.1.0 4212 | mdast-util-from-markdown: 2.0.1 4213 | mdast-util-to-markdown: 2.1.0 4214 | micromark-util-normalize-identifier: 2.0.0 4215 | transitivePeerDependencies: 4216 | - supports-color 4217 | 4218 | mdast-util-gfm-strikethrough@2.0.0: 4219 | dependencies: 4220 | '@types/mdast': 4.0.4 4221 | mdast-util-from-markdown: 2.0.1 4222 | mdast-util-to-markdown: 2.1.0 4223 | transitivePeerDependencies: 4224 | - supports-color 4225 | 4226 | mdast-util-gfm-table@2.0.0: 4227 | dependencies: 4228 | '@types/mdast': 4.0.4 4229 | devlop: 1.1.0 4230 | markdown-table: 3.0.3 4231 | mdast-util-from-markdown: 2.0.1 4232 | mdast-util-to-markdown: 2.1.0 4233 | transitivePeerDependencies: 4234 | - supports-color 4235 | 4236 | mdast-util-gfm-task-list-item@2.0.0: 4237 | dependencies: 4238 | '@types/mdast': 4.0.4 4239 | devlop: 1.1.0 4240 | mdast-util-from-markdown: 2.0.1 4241 | mdast-util-to-markdown: 2.1.0 4242 | transitivePeerDependencies: 4243 | - supports-color 4244 | 4245 | mdast-util-gfm@3.0.0: 4246 | dependencies: 4247 | mdast-util-from-markdown: 2.0.1 4248 | mdast-util-gfm-autolink-literal: 2.0.1 4249 | mdast-util-gfm-footnote: 2.0.0 4250 | mdast-util-gfm-strikethrough: 2.0.0 4251 | mdast-util-gfm-table: 2.0.0 4252 | mdast-util-gfm-task-list-item: 2.0.0 4253 | mdast-util-to-markdown: 2.1.0 4254 | transitivePeerDependencies: 4255 | - supports-color 4256 | 4257 | mdast-util-phrasing@4.1.0: 4258 | dependencies: 4259 | '@types/mdast': 4.0.4 4260 | unist-util-is: 6.0.0 4261 | 4262 | mdast-util-to-markdown@2.1.0: 4263 | dependencies: 4264 | '@types/mdast': 4.0.4 4265 | '@types/unist': 3.0.3 4266 | longest-streak: 3.1.0 4267 | mdast-util-phrasing: 4.1.0 4268 | mdast-util-to-string: 4.0.0 4269 | micromark-util-decode-string: 2.0.0 4270 | unist-util-visit: 5.0.0 4271 | zwitch: 2.0.4 4272 | 4273 | mdast-util-to-string@4.0.0: 4274 | dependencies: 4275 | '@types/mdast': 4.0.4 4276 | 4277 | merge2@1.4.1: {} 4278 | 4279 | micromark-core-commonmark@2.0.1: 4280 | dependencies: 4281 | decode-named-character-reference: 1.0.2 4282 | devlop: 1.1.0 4283 | micromark-factory-destination: 2.0.0 4284 | micromark-factory-label: 2.0.0 4285 | micromark-factory-space: 2.0.0 4286 | micromark-factory-title: 2.0.0 4287 | micromark-factory-whitespace: 2.0.0 4288 | micromark-util-character: 2.1.0 4289 | micromark-util-chunked: 2.0.0 4290 | micromark-util-classify-character: 2.0.0 4291 | micromark-util-html-tag-name: 2.0.0 4292 | micromark-util-normalize-identifier: 2.0.0 4293 | micromark-util-resolve-all: 2.0.0 4294 | micromark-util-subtokenize: 2.0.1 4295 | micromark-util-symbol: 2.0.0 4296 | micromark-util-types: 2.0.0 4297 | 4298 | micromark-extension-gfm-autolink-literal@2.1.0: 4299 | dependencies: 4300 | micromark-util-character: 2.1.0 4301 | micromark-util-sanitize-uri: 2.0.0 4302 | micromark-util-symbol: 2.0.0 4303 | micromark-util-types: 2.0.0 4304 | 4305 | micromark-extension-gfm-footnote@2.1.0: 4306 | dependencies: 4307 | devlop: 1.1.0 4308 | micromark-core-commonmark: 2.0.1 4309 | micromark-factory-space: 2.0.0 4310 | micromark-util-character: 2.1.0 4311 | micromark-util-normalize-identifier: 2.0.0 4312 | micromark-util-sanitize-uri: 2.0.0 4313 | micromark-util-symbol: 2.0.0 4314 | micromark-util-types: 2.0.0 4315 | 4316 | micromark-extension-gfm-strikethrough@2.1.0: 4317 | dependencies: 4318 | devlop: 1.1.0 4319 | micromark-util-chunked: 2.0.0 4320 | micromark-util-classify-character: 2.0.0 4321 | micromark-util-resolve-all: 2.0.0 4322 | micromark-util-symbol: 2.0.0 4323 | micromark-util-types: 2.0.0 4324 | 4325 | micromark-extension-gfm-table@2.1.0: 4326 | dependencies: 4327 | devlop: 1.1.0 4328 | micromark-factory-space: 2.0.0 4329 | micromark-util-character: 2.1.0 4330 | micromark-util-symbol: 2.0.0 4331 | micromark-util-types: 2.0.0 4332 | 4333 | micromark-extension-gfm-tagfilter@2.0.0: 4334 | dependencies: 4335 | micromark-util-types: 2.0.0 4336 | 4337 | micromark-extension-gfm-task-list-item@2.1.0: 4338 | dependencies: 4339 | devlop: 1.1.0 4340 | micromark-factory-space: 2.0.0 4341 | micromark-util-character: 2.1.0 4342 | micromark-util-symbol: 2.0.0 4343 | micromark-util-types: 2.0.0 4344 | 4345 | micromark-extension-gfm@3.0.0: 4346 | dependencies: 4347 | micromark-extension-gfm-autolink-literal: 2.1.0 4348 | micromark-extension-gfm-footnote: 2.1.0 4349 | micromark-extension-gfm-strikethrough: 2.1.0 4350 | micromark-extension-gfm-table: 2.1.0 4351 | micromark-extension-gfm-tagfilter: 2.0.0 4352 | micromark-extension-gfm-task-list-item: 2.1.0 4353 | micromark-util-combine-extensions: 2.0.0 4354 | micromark-util-types: 2.0.0 4355 | 4356 | micromark-factory-destination@2.0.0: 4357 | dependencies: 4358 | micromark-util-character: 2.1.0 4359 | micromark-util-symbol: 2.0.0 4360 | micromark-util-types: 2.0.0 4361 | 4362 | micromark-factory-label@2.0.0: 4363 | dependencies: 4364 | devlop: 1.1.0 4365 | micromark-util-character: 2.1.0 4366 | micromark-util-symbol: 2.0.0 4367 | micromark-util-types: 2.0.0 4368 | 4369 | micromark-factory-space@2.0.0: 4370 | dependencies: 4371 | micromark-util-character: 2.1.0 4372 | micromark-util-types: 2.0.0 4373 | 4374 | micromark-factory-title@2.0.0: 4375 | dependencies: 4376 | micromark-factory-space: 2.0.0 4377 | micromark-util-character: 2.1.0 4378 | micromark-util-symbol: 2.0.0 4379 | micromark-util-types: 2.0.0 4380 | 4381 | micromark-factory-whitespace@2.0.0: 4382 | dependencies: 4383 | micromark-factory-space: 2.0.0 4384 | micromark-util-character: 2.1.0 4385 | micromark-util-symbol: 2.0.0 4386 | micromark-util-types: 2.0.0 4387 | 4388 | micromark-util-character@2.1.0: 4389 | dependencies: 4390 | micromark-util-symbol: 2.0.0 4391 | micromark-util-types: 2.0.0 4392 | 4393 | micromark-util-chunked@2.0.0: 4394 | dependencies: 4395 | micromark-util-symbol: 2.0.0 4396 | 4397 | micromark-util-classify-character@2.0.0: 4398 | dependencies: 4399 | micromark-util-character: 2.1.0 4400 | micromark-util-symbol: 2.0.0 4401 | micromark-util-types: 2.0.0 4402 | 4403 | micromark-util-combine-extensions@2.0.0: 4404 | dependencies: 4405 | micromark-util-chunked: 2.0.0 4406 | micromark-util-types: 2.0.0 4407 | 4408 | micromark-util-decode-numeric-character-reference@2.0.1: 4409 | dependencies: 4410 | micromark-util-symbol: 2.0.0 4411 | 4412 | micromark-util-decode-string@2.0.0: 4413 | dependencies: 4414 | decode-named-character-reference: 1.0.2 4415 | micromark-util-character: 2.1.0 4416 | micromark-util-decode-numeric-character-reference: 2.0.1 4417 | micromark-util-symbol: 2.0.0 4418 | 4419 | micromark-util-encode@2.0.0: {} 4420 | 4421 | micromark-util-html-tag-name@2.0.0: {} 4422 | 4423 | micromark-util-normalize-identifier@2.0.0: 4424 | dependencies: 4425 | micromark-util-symbol: 2.0.0 4426 | 4427 | micromark-util-resolve-all@2.0.0: 4428 | dependencies: 4429 | micromark-util-types: 2.0.0 4430 | 4431 | micromark-util-sanitize-uri@2.0.0: 4432 | dependencies: 4433 | micromark-util-character: 2.1.0 4434 | micromark-util-encode: 2.0.0 4435 | micromark-util-symbol: 2.0.0 4436 | 4437 | micromark-util-subtokenize@2.0.1: 4438 | dependencies: 4439 | devlop: 1.1.0 4440 | micromark-util-chunked: 2.0.0 4441 | micromark-util-symbol: 2.0.0 4442 | micromark-util-types: 2.0.0 4443 | 4444 | micromark-util-symbol@2.0.0: {} 4445 | 4446 | micromark-util-types@2.0.0: {} 4447 | 4448 | micromark@4.0.0: 4449 | dependencies: 4450 | '@types/debug': 4.1.12 4451 | debug: 4.3.7 4452 | decode-named-character-reference: 1.0.2 4453 | devlop: 1.1.0 4454 | micromark-core-commonmark: 2.0.1 4455 | micromark-factory-space: 2.0.0 4456 | micromark-util-character: 2.1.0 4457 | micromark-util-chunked: 2.0.0 4458 | micromark-util-combine-extensions: 2.0.0 4459 | micromark-util-decode-numeric-character-reference: 2.0.1 4460 | micromark-util-encode: 2.0.0 4461 | micromark-util-normalize-identifier: 2.0.0 4462 | micromark-util-resolve-all: 2.0.0 4463 | micromark-util-sanitize-uri: 2.0.0 4464 | micromark-util-subtokenize: 2.0.1 4465 | micromark-util-symbol: 2.0.0 4466 | micromark-util-types: 2.0.0 4467 | transitivePeerDependencies: 4468 | - supports-color 4469 | 4470 | micromatch@4.0.8: 4471 | dependencies: 4472 | braces: 3.0.3 4473 | picomatch: 2.3.1 4474 | 4475 | mime-db@1.52.0: {} 4476 | 4477 | mime-types@2.1.35: 4478 | dependencies: 4479 | mime-db: 1.52.0 4480 | 4481 | min-indent@1.0.1: {} 4482 | 4483 | minimatch@10.0.1: 4484 | dependencies: 4485 | brace-expansion: 2.0.1 4486 | 4487 | minimatch@3.1.2: 4488 | dependencies: 4489 | brace-expansion: 1.1.11 4490 | 4491 | minimatch@9.0.5: 4492 | dependencies: 4493 | brace-expansion: 2.0.1 4494 | 4495 | mlly@1.7.2: 4496 | dependencies: 4497 | acorn: 8.12.1 4498 | pathe: 1.1.2 4499 | pkg-types: 1.2.1 4500 | ufo: 1.5.4 4501 | 4502 | ms@2.1.3: {} 4503 | 4504 | nanoid@3.3.7: {} 4505 | 4506 | natural-compare-lite@1.4.0: {} 4507 | 4508 | natural-compare@1.4.0: {} 4509 | 4510 | node-releases@2.0.18: {} 4511 | 4512 | normalize-package-data@2.5.0: 4513 | dependencies: 4514 | hosted-git-info: 2.8.9 4515 | resolve: 1.22.8 4516 | semver: 5.7.2 4517 | validate-npm-package-license: 3.0.4 4518 | 4519 | nth-check@2.1.1: 4520 | dependencies: 4521 | boolbase: 1.0.0 4522 | 4523 | nwsapi@2.2.13: {} 4524 | 4525 | optionator@0.9.4: 4526 | dependencies: 4527 | deep-is: 0.1.4 4528 | fast-levenshtein: 2.0.6 4529 | levn: 0.4.1 4530 | prelude-ls: 1.2.1 4531 | type-check: 0.4.0 4532 | word-wrap: 1.2.5 4533 | 4534 | p-limit@2.3.0: 4535 | dependencies: 4536 | p-try: 2.2.0 4537 | 4538 | p-limit@3.1.0: 4539 | dependencies: 4540 | yocto-queue: 0.1.0 4541 | 4542 | p-locate@4.1.0: 4543 | dependencies: 4544 | p-limit: 2.3.0 4545 | 4546 | p-locate@5.0.0: 4547 | dependencies: 4548 | p-limit: 3.1.0 4549 | 4550 | p-try@2.2.0: {} 4551 | 4552 | package-manager-detector@0.2.2: {} 4553 | 4554 | parent-module@1.0.1: 4555 | dependencies: 4556 | callsites: 3.1.0 4557 | 4558 | parse-gitignore@2.0.0: {} 4559 | 4560 | parse-imports@2.2.1: 4561 | dependencies: 4562 | es-module-lexer: 1.5.4 4563 | slashes: 3.0.12 4564 | 4565 | parse-json@5.2.0: 4566 | dependencies: 4567 | '@babel/code-frame': 7.25.7 4568 | error-ex: 1.3.2 4569 | json-parse-even-better-errors: 2.3.1 4570 | lines-and-columns: 1.2.4 4571 | 4572 | parse5@7.2.0: 4573 | dependencies: 4574 | entities: 4.5.0 4575 | 4576 | path-exists@4.0.0: {} 4577 | 4578 | path-key@3.1.1: {} 4579 | 4580 | path-parse@1.0.7: {} 4581 | 4582 | pathe@1.1.2: {} 4583 | 4584 | pathval@2.0.0: {} 4585 | 4586 | picocolors@1.1.0: {} 4587 | 4588 | picomatch@2.3.1: {} 4589 | 4590 | picomatch@4.0.2: {} 4591 | 4592 | pkg-types@1.2.1: 4593 | dependencies: 4594 | confbox: 0.1.8 4595 | mlly: 1.7.2 4596 | pathe: 1.1.2 4597 | 4598 | pluralize@8.0.0: {} 4599 | 4600 | postcss-selector-parser@6.1.2: 4601 | dependencies: 4602 | cssesc: 3.0.0 4603 | util-deprecate: 1.0.2 4604 | 4605 | postcss@8.4.47: 4606 | dependencies: 4607 | nanoid: 3.3.7 4608 | picocolors: 1.1.0 4609 | source-map-js: 1.2.1 4610 | 4611 | prelude-ls@1.2.1: {} 4612 | 4613 | prettier-linter-helpers@1.0.0: 4614 | dependencies: 4615 | fast-diff: 1.3.0 4616 | 4617 | prettier@3.3.3: {} 4618 | 4619 | pretty-format@27.5.1: 4620 | dependencies: 4621 | ansi-regex: 5.0.1 4622 | ansi-styles: 5.2.0 4623 | react-is: 17.0.2 4624 | 4625 | punycode@2.3.1: {} 4626 | 4627 | queue-microtask@1.2.3: {} 4628 | 4629 | react-dom@18.3.1(react@18.3.1): 4630 | dependencies: 4631 | loose-envify: 1.4.0 4632 | react: 18.3.1 4633 | scheduler: 0.23.2 4634 | 4635 | react-is@17.0.2: {} 4636 | 4637 | react-refresh@0.14.2: {} 4638 | 4639 | react-router-dom@6.27.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 4640 | dependencies: 4641 | '@remix-run/router': 1.20.0 4642 | react: 18.3.1 4643 | react-dom: 18.3.1(react@18.3.1) 4644 | react-router: 6.27.0(react@18.3.1) 4645 | 4646 | react-router@6.27.0(react@18.3.1): 4647 | dependencies: 4648 | '@remix-run/router': 1.20.0 4649 | react: 18.3.1 4650 | 4651 | react@18.3.1: 4652 | dependencies: 4653 | loose-envify: 1.4.0 4654 | 4655 | read-pkg-up@7.0.1: 4656 | dependencies: 4657 | find-up: 4.1.0 4658 | read-pkg: 5.2.0 4659 | type-fest: 0.8.1 4660 | 4661 | read-pkg@5.2.0: 4662 | dependencies: 4663 | '@types/normalize-package-data': 2.4.4 4664 | normalize-package-data: 2.5.0 4665 | parse-json: 5.2.0 4666 | type-fest: 0.6.0 4667 | 4668 | refa@0.12.1: 4669 | dependencies: 4670 | '@eslint-community/regexpp': 4.11.1 4671 | 4672 | regenerator-runtime@0.14.1: {} 4673 | 4674 | regexp-ast-analysis@0.7.1: 4675 | dependencies: 4676 | '@eslint-community/regexpp': 4.11.1 4677 | refa: 0.12.1 4678 | 4679 | regexp-tree@0.1.27: {} 4680 | 4681 | regjsparser@0.10.0: 4682 | dependencies: 4683 | jsesc: 0.5.0 4684 | 4685 | require-directory@2.1.1: {} 4686 | 4687 | resolve-from@4.0.0: {} 4688 | 4689 | resolve-pkg-maps@1.0.0: {} 4690 | 4691 | resolve@1.22.8: 4692 | dependencies: 4693 | is-core-module: 2.15.1 4694 | path-parse: 1.0.7 4695 | supports-preserve-symlinks-flag: 1.0.0 4696 | 4697 | reusify@1.0.4: {} 4698 | 4699 | rollup@4.24.0: 4700 | dependencies: 4701 | '@types/estree': 1.0.6 4702 | optionalDependencies: 4703 | '@rollup/rollup-android-arm-eabi': 4.24.0 4704 | '@rollup/rollup-android-arm64': 4.24.0 4705 | '@rollup/rollup-darwin-arm64': 4.24.0 4706 | '@rollup/rollup-darwin-x64': 4.24.0 4707 | '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 4708 | '@rollup/rollup-linux-arm-musleabihf': 4.24.0 4709 | '@rollup/rollup-linux-arm64-gnu': 4.24.0 4710 | '@rollup/rollup-linux-arm64-musl': 4.24.0 4711 | '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 4712 | '@rollup/rollup-linux-riscv64-gnu': 4.24.0 4713 | '@rollup/rollup-linux-s390x-gnu': 4.24.0 4714 | '@rollup/rollup-linux-x64-gnu': 4.24.0 4715 | '@rollup/rollup-linux-x64-musl': 4.24.0 4716 | '@rollup/rollup-win32-arm64-msvc': 4.24.0 4717 | '@rollup/rollup-win32-ia32-msvc': 4.24.0 4718 | '@rollup/rollup-win32-x64-msvc': 4.24.0 4719 | fsevents: 2.3.3 4720 | 4721 | rrweb-cssom@0.7.1: {} 4722 | 4723 | run-parallel@1.2.0: 4724 | dependencies: 4725 | queue-microtask: 1.2.3 4726 | 4727 | safer-buffer@2.1.2: {} 4728 | 4729 | saxes@6.0.0: 4730 | dependencies: 4731 | xmlchars: 2.2.0 4732 | 4733 | scheduler@0.23.2: 4734 | dependencies: 4735 | loose-envify: 1.4.0 4736 | 4737 | scslre@0.3.0: 4738 | dependencies: 4739 | '@eslint-community/regexpp': 4.11.1 4740 | refa: 0.12.1 4741 | regexp-ast-analysis: 0.7.1 4742 | 4743 | semver@5.7.2: {} 4744 | 4745 | semver@6.3.1: {} 4746 | 4747 | semver@7.6.3: {} 4748 | 4749 | shebang-command@2.0.0: 4750 | dependencies: 4751 | shebang-regex: 3.0.0 4752 | 4753 | shebang-regex@3.0.0: {} 4754 | 4755 | short-unique-id@5.2.0: {} 4756 | 4757 | siginfo@2.0.0: {} 4758 | 4759 | sisteransi@1.0.5: {} 4760 | 4761 | slashes@3.0.12: {} 4762 | 4763 | source-map-js@1.2.1: {} 4764 | 4765 | spdx-correct@3.2.0: 4766 | dependencies: 4767 | spdx-expression-parse: 3.0.1 4768 | spdx-license-ids: 3.0.20 4769 | 4770 | spdx-exceptions@2.5.0: {} 4771 | 4772 | spdx-expression-parse@3.0.1: 4773 | dependencies: 4774 | spdx-exceptions: 2.5.0 4775 | spdx-license-ids: 3.0.20 4776 | 4777 | spdx-expression-parse@4.0.0: 4778 | dependencies: 4779 | spdx-exceptions: 2.5.0 4780 | spdx-license-ids: 3.0.20 4781 | 4782 | spdx-license-ids@3.0.20: {} 4783 | 4784 | stable-hash@0.0.4: {} 4785 | 4786 | stackback@0.0.2: {} 4787 | 4788 | std-env@3.7.0: {} 4789 | 4790 | string-ts@2.2.0: {} 4791 | 4792 | string-width@4.2.3: 4793 | dependencies: 4794 | emoji-regex: 8.0.0 4795 | is-fullwidth-code-point: 3.0.0 4796 | strip-ansi: 6.0.1 4797 | 4798 | strip-ansi@6.0.1: 4799 | dependencies: 4800 | ansi-regex: 5.0.1 4801 | 4802 | strip-indent@3.0.0: 4803 | dependencies: 4804 | min-indent: 1.0.1 4805 | 4806 | strip-json-comments@3.1.1: {} 4807 | 4808 | supports-color@5.5.0: 4809 | dependencies: 4810 | has-flag: 3.0.0 4811 | 4812 | supports-color@7.2.0: 4813 | dependencies: 4814 | has-flag: 4.0.0 4815 | 4816 | supports-preserve-symlinks-flag@1.0.0: {} 4817 | 4818 | symbol-tree@3.2.4: {} 4819 | 4820 | synckit@0.6.2: 4821 | dependencies: 4822 | tslib: 2.8.0 4823 | 4824 | synckit@0.9.2: 4825 | dependencies: 4826 | '@pkgr/core': 0.1.1 4827 | tslib: 2.8.0 4828 | 4829 | tapable@2.2.1: {} 4830 | 4831 | text-table@0.2.0: {} 4832 | 4833 | tinybench@2.9.0: {} 4834 | 4835 | tinyexec@0.3.0: {} 4836 | 4837 | tinypool@1.0.1: {} 4838 | 4839 | tinyrainbow@1.2.0: {} 4840 | 4841 | tinyspy@3.0.2: {} 4842 | 4843 | tldts-core@6.1.51: {} 4844 | 4845 | tldts@6.1.51: 4846 | dependencies: 4847 | tldts-core: 6.1.51 4848 | 4849 | to-fast-properties@2.0.0: {} 4850 | 4851 | to-regex-range@5.0.1: 4852 | dependencies: 4853 | is-number: 7.0.0 4854 | 4855 | toml-eslint-parser@0.10.0: 4856 | dependencies: 4857 | eslint-visitor-keys: 3.4.3 4858 | 4859 | tough-cookie@5.0.0: 4860 | dependencies: 4861 | tldts: 6.1.51 4862 | 4863 | tr46@5.0.0: 4864 | dependencies: 4865 | punycode: 2.3.1 4866 | 4867 | ts-api-utils@1.3.0(typescript@5.6.3): 4868 | dependencies: 4869 | typescript: 5.6.3 4870 | 4871 | ts-declaration-location@1.0.4(typescript@5.6.3): 4872 | dependencies: 4873 | minimatch: 10.0.1 4874 | typescript: 5.6.3 4875 | 4876 | ts-pattern@5.5.0: {} 4877 | 4878 | tslib@2.8.0: {} 4879 | 4880 | type-check@0.4.0: 4881 | dependencies: 4882 | prelude-ls: 1.2.1 4883 | 4884 | type-fest@0.20.2: {} 4885 | 4886 | type-fest@0.6.0: {} 4887 | 4888 | type-fest@0.8.1: {} 4889 | 4890 | typescript-eslint@8.9.0(eslint@9.12.0)(typescript@5.6.3): 4891 | dependencies: 4892 | '@typescript-eslint/eslint-plugin': 8.9.0(@typescript-eslint/parser@8.9.0(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) 4893 | '@typescript-eslint/parser': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 4894 | '@typescript-eslint/utils': 8.9.0(eslint@9.12.0)(typescript@5.6.3) 4895 | optionalDependencies: 4896 | typescript: 5.6.3 4897 | transitivePeerDependencies: 4898 | - eslint 4899 | - supports-color 4900 | 4901 | typescript@5.6.3: {} 4902 | 4903 | ufo@1.5.4: {} 4904 | 4905 | undici-types@6.19.8: {} 4906 | 4907 | unist-util-is@6.0.0: 4908 | dependencies: 4909 | '@types/unist': 3.0.3 4910 | 4911 | unist-util-stringify-position@4.0.0: 4912 | dependencies: 4913 | '@types/unist': 3.0.3 4914 | 4915 | unist-util-visit-parents@6.0.1: 4916 | dependencies: 4917 | '@types/unist': 3.0.3 4918 | unist-util-is: 6.0.0 4919 | 4920 | unist-util-visit@5.0.0: 4921 | dependencies: 4922 | '@types/unist': 3.0.3 4923 | unist-util-is: 6.0.0 4924 | unist-util-visit-parents: 6.0.1 4925 | 4926 | update-browserslist-db@1.1.1(browserslist@4.24.0): 4927 | dependencies: 4928 | browserslist: 4.24.0 4929 | escalade: 3.2.0 4930 | picocolors: 1.1.0 4931 | 4932 | uri-js@4.4.1: 4933 | dependencies: 4934 | punycode: 2.3.1 4935 | 4936 | util-deprecate@1.0.2: {} 4937 | 4938 | validate-npm-package-license@3.0.4: 4939 | dependencies: 4940 | spdx-correct: 3.2.0 4941 | spdx-expression-parse: 3.0.1 4942 | 4943 | vite-node@2.1.3(@types/node@22.7.5): 4944 | dependencies: 4945 | cac: 6.7.14 4946 | debug: 4.3.7 4947 | pathe: 1.1.2 4948 | vite: 5.4.9(@types/node@22.7.5) 4949 | transitivePeerDependencies: 4950 | - '@types/node' 4951 | - less 4952 | - lightningcss 4953 | - sass 4954 | - sass-embedded 4955 | - stylus 4956 | - sugarss 4957 | - supports-color 4958 | - terser 4959 | 4960 | vite@5.4.9(@types/node@22.7.5): 4961 | dependencies: 4962 | esbuild: 0.21.5 4963 | postcss: 8.4.47 4964 | rollup: 4.24.0 4965 | optionalDependencies: 4966 | '@types/node': 22.7.5 4967 | fsevents: 2.3.3 4968 | 4969 | vitest@2.1.3(@types/node@22.7.5)(jsdom@25.0.1): 4970 | dependencies: 4971 | '@vitest/expect': 2.1.3 4972 | '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.9(@types/node@22.7.5)) 4973 | '@vitest/pretty-format': 2.1.3 4974 | '@vitest/runner': 2.1.3 4975 | '@vitest/snapshot': 2.1.3 4976 | '@vitest/spy': 2.1.3 4977 | '@vitest/utils': 2.1.3 4978 | chai: 5.1.1 4979 | debug: 4.3.7 4980 | magic-string: 0.30.12 4981 | pathe: 1.1.2 4982 | std-env: 3.7.0 4983 | tinybench: 2.9.0 4984 | tinyexec: 0.3.0 4985 | tinypool: 1.0.1 4986 | tinyrainbow: 1.2.0 4987 | vite: 5.4.9(@types/node@22.7.5) 4988 | vite-node: 2.1.3(@types/node@22.7.5) 4989 | why-is-node-running: 2.3.0 4990 | optionalDependencies: 4991 | '@types/node': 22.7.5 4992 | jsdom: 25.0.1 4993 | transitivePeerDependencies: 4994 | - less 4995 | - lightningcss 4996 | - msw 4997 | - sass 4998 | - sass-embedded 4999 | - stylus 5000 | - sugarss 5001 | - supports-color 5002 | - terser 5003 | 5004 | vue-eslint-parser@9.4.3(eslint@9.12.0): 5005 | dependencies: 5006 | debug: 4.3.7 5007 | eslint: 9.12.0 5008 | eslint-scope: 7.2.2 5009 | eslint-visitor-keys: 3.4.3 5010 | espree: 9.6.1 5011 | esquery: 1.6.0 5012 | lodash: 4.17.21 5013 | semver: 7.6.3 5014 | transitivePeerDependencies: 5015 | - supports-color 5016 | 5017 | w3c-xmlserializer@5.0.0: 5018 | dependencies: 5019 | xml-name-validator: 5.0.0 5020 | 5021 | webidl-conversions@7.0.0: {} 5022 | 5023 | whatwg-encoding@3.1.1: 5024 | dependencies: 5025 | iconv-lite: 0.6.3 5026 | 5027 | whatwg-mimetype@4.0.0: {} 5028 | 5029 | whatwg-url@14.0.0: 5030 | dependencies: 5031 | tr46: 5.0.0 5032 | webidl-conversions: 7.0.0 5033 | 5034 | which@2.0.2: 5035 | dependencies: 5036 | isexe: 2.0.0 5037 | 5038 | why-is-node-running@2.3.0: 5039 | dependencies: 5040 | siginfo: 2.0.0 5041 | stackback: 0.0.2 5042 | 5043 | word-wrap@1.2.5: {} 5044 | 5045 | wrap-ansi@7.0.0: 5046 | dependencies: 5047 | ansi-styles: 4.3.0 5048 | string-width: 4.2.3 5049 | strip-ansi: 6.0.1 5050 | 5051 | ws@8.18.0: {} 5052 | 5053 | xml-name-validator@4.0.0: {} 5054 | 5055 | xml-name-validator@5.0.0: {} 5056 | 5057 | xmlchars@2.2.0: {} 5058 | 5059 | y18n@5.0.8: {} 5060 | 5061 | yallist@3.1.1: {} 5062 | 5063 | yaml-eslint-parser@1.2.3: 5064 | dependencies: 5065 | eslint-visitor-keys: 3.4.3 5066 | lodash: 4.17.21 5067 | yaml: 2.6.0 5068 | 5069 | yaml@2.6.0: {} 5070 | 5071 | yargs-parser@21.1.1: {} 5072 | 5073 | yargs@17.7.2: 5074 | dependencies: 5075 | cliui: 8.0.1 5076 | escalade: 3.2.0 5077 | get-caller-file: 2.0.5 5078 | require-directory: 2.1.1 5079 | string-width: 4.2.3 5080 | y18n: 5.0.8 5081 | yargs-parser: 21.1.1 5082 | 5083 | yocto-queue@0.1.0: {} 5084 | 5085 | zwitch@2.0.4: {} 5086 | -------------------------------------------------------------------------------- /src/app.tsx: -------------------------------------------------------------------------------- 1 | import { Link, Route, Routes, useLocation } from "react-router-dom"; 2 | import UseFetchExample from "./use-fetch/use-fetch.example"; 3 | 4 | const examples = [{ 5 | name: "use-fetch", 6 | path: "/use-fetch-example", 7 | component: UseFetchExample, 8 | }]; 9 | 10 | function ExampleLinks() { 11 | return ( 12 | <> 13 |

Examples:

14 | 21 | 22 | ); 23 | } 24 | 25 | export default function App() { 26 | const location = useLocation(); 27 | return ( 28 |
29 |
30 | {location.pathname !== "/" 31 | ? ( 32 | ⬅️ Back to Examples 33 | ) 34 | : null} 35 |
36 | 37 | } /> 38 | {examples.map(item => ( 39 | 40 | ))} 41 | Not Found} 44 | /> 45 | 46 |
47 | ); 48 | } 49 | -------------------------------------------------------------------------------- /src/main.css: -------------------------------------------------------------------------------- 1 | .navigation { 2 | margin: 1rem 0; 3 | } 4 | 5 | dt { 6 | font-weight: bold; 7 | } 8 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import { createRoot } from "react-dom/client"; 2 | import { HashRouter } from "react-router-dom"; 3 | import App from "./app.tsx"; 4 | import "./main.css"; 5 | import "@picocss/pico/css/pico.css"; 6 | 7 | createRoot(document.getElementById("root")!).render( 8 | 9 | 10 | , 11 | ); 12 | -------------------------------------------------------------------------------- /src/use-fetch/README.md: -------------------------------------------------------------------------------- 1 | # useFetch 2 | 3 | Manage the error, loading and data state of `fetch` 4 | 5 | See example use [here](./use-fetch.example.tsx) 6 | 7 | ## Updates Since Video Release 8 | 9 | - New requirement 10 | - Error handling 11 | - If the request fails due to http status (response.ok) 12 | - New test 13 | - "should handle http errors correctly" 14 | 15 |
16 | New code in solution 17 | 18 | ```ts 19 | if (!response.ok) { 20 | throw new Error(response.statusText); 21 | } 22 | ``` 23 | 24 |
25 | 26 | ## Requirements 27 | 28 | - [ ] Accepts: 29 | - [ ] a generic type argument 30 | - [ ] returned data is typed as T 31 | - [ ] a url string 32 | - [ ] request options (optional) 33 | - [ ] options to pass to fetch 34 | - [ ] options (optional) 35 | - [ ] immediate - defaults to true 36 | - [ ] Returns: 37 | - [ ] a loading boolean 38 | - [ ] an error that can be a string or null 39 | - [ ] a data property that can be type T or null 40 | - [ ] a load function 41 | - [ ] can be called to fetch or re-fetch the data 42 | - [ ] updateUrl 43 | - [ ] can be called to update the url and re-fetch 44 | - [ ] updateRequestOptions 45 | - [ ] can be called to update the request options and re-fetch 46 | - [ ] updateOptions 47 | - [ ] can be called to update options 48 | - [ ] Behavior: 49 | - [ ] Should fetch on mount if `options.immediate` is true 50 | - [ ] Should set loading when fetching data 51 | - [ ] Error handling 52 | - [ ] If the request fails due to fetch error (e.g. Network Error) 53 | - [ ] If the request fails due to http status (response.ok) 54 | - [ ] If the json parse fails 55 | - [ ] If any error occurs: 56 | - [ ] Set the error message 57 | - [ ] Set data to null 58 | - [ ] Set loading to false 59 | - [ ] Should re-fetch if the url changes 60 | - [ ] Should re-fetch if the request options change 61 | - [ ] Should re-fetch if the options change and immediate is true 62 | - [ ] Should re-fetch if load function is called 63 | - [ ] Should cancel any in progress requests if a new request is made 64 | - [ ] Should only set the data to be the latest request that was made 65 | - [ ] Should cancel any in progress requests if unmounted 66 | -------------------------------------------------------------------------------- /src/use-fetch/use-fetch.example.tsx: -------------------------------------------------------------------------------- 1 | // Update this import to test your implementation 2 | import useFetch from "./use-fetch.solution"; 3 | 4 | export type Pokemon = { 5 | abilities: Ability[]; 6 | cries: Cries; 7 | id: number; 8 | name: string; 9 | sprites: Sprites; 10 | stats: Stat[]; 11 | weight: number; 12 | height: number; 13 | }; 14 | 15 | export type Ability = { 16 | ability: Species; 17 | is_hidden: boolean; 18 | slot: number; 19 | }; 20 | 21 | export type Species = { 22 | name: string; 23 | url: string; 24 | }; 25 | 26 | export type Cries = { 27 | latest: string; 28 | legacy: string; 29 | }; 30 | 31 | export type Sprites = { 32 | back_default: string; 33 | back_female: string; 34 | back_shiny: string; 35 | back_shiny_female: null | string; 36 | front_default: string; 37 | front_female: string; 38 | front_shiny: string; 39 | front_shiny_female: string; 40 | }; 41 | 42 | export type Stat = { 43 | base_stat: number; 44 | effort: number; 45 | stat: Species; 46 | }; 47 | 48 | const pikachuURL = "https://pokeapi.co/api/v2/pokemon/pikachu"; 49 | const charizardURL = "https://pokeapi.co/api/v2/pokemon/charizard"; 50 | 51 | export default function UseFetchExample() { 52 | const { 53 | loading, 54 | data, 55 | error, 56 | url, 57 | updateUrl, 58 | } = useFetch(pikachuURL, { 59 | headers: { 60 | accept: "application/json", 61 | }, 62 | }, { 63 | immediate: true, 64 | }); 65 | 66 | return ( 67 | <> 68 | 81 | {loading && } 82 | {error &&

{error}

} 83 | {data && ( 84 |
85 |
86 | # 87 | {data.id} 88 | {" "} 89 | - 90 | {" "} 91 | {data.name} 92 |
93 |
94 | 95 | 96 |
97 |
98 |
99 |
Height
100 |
101 | {data.height / 10} 102 | {" "} 103 | m 104 |
105 |
106 |
107 |
Weight
108 |
109 | {data.weight / 10} 110 | {" "} 111 | kg 112 |
113 |
114 |
115 |
Abilities
116 |
{data.abilities.map(ability => ability.ability.name).join(", ")}
117 |
118 |
119 |
Cry
120 |
121 |
122 |
123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | {data.stats.map(stat => ( 132 | 133 | 134 | 135 | 136 | ))} 137 | 138 |
StatValue
{stat.stat.name}{stat.base_stat}
139 |
140 | )} 141 | 142 | ); 143 | } 144 | -------------------------------------------------------------------------------- /src/use-fetch/use-fetch.solution.ts: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | ▗▄▄▖ ▗▄▄▄▖▗▖ ▗▖ ▗▄▖ ▗▄▄▖ ▗▄▄▄▖ 4 | ▐▌ ▐▌▐▌ ▐▌ ▐▌▐▌ ▐▌▐▌ ▐▌▐▌ 5 | ▐▛▀▚▖▐▛▀▀▘▐▌ ▐▌▐▛▀▜▌▐▛▀▚▖▐▛▀▀▘ 6 | ▐▙▄▞▘▐▙▄▄▖▐▙█▟▌▐▌ ▐▌▐▌ ▐▌▐▙▄▄▖ 7 | 8 | ▗▄▄▖ ▗▄▖ ▗▖ ▗▖ ▗▖▗▄▄▄▖▗▄▄▄▖ ▗▄▖ ▗▖ ▗▖ 9 | ▐▌ ▐▌ ▐▌▐▌ ▐▌ ▐▌ █ █ ▐▌ ▐▌▐▛▚▖▐▌ 10 | ▝▀▚▖▐▌ ▐▌▐▌ ▐▌ ▐▌ █ █ ▐▌ ▐▌▐▌ ▝▜▌ 11 | ▗▄▄▞▘▝▚▄▞▘▐▙▄▄▖▝▚▄▞▘ █ ▗▄█▄▖▝▚▄▞▘▐▌ ▐▌ 12 | 13 | ▗▄▄▖ ▗▄▄▄▖▗▖ ▗▄▖ ▗▖ ▗▖ 14 | ▐▌ ▐▌▐▌ ▐▌ ▐▌ ▐▌▐▌ ▐▌ 15 | ▐▛▀▚▖▐▛▀▀▘▐▌ ▐▌ ▐▌▐▌ ▐▌ 16 | ▐▙▄▞▘▐▙▄▄▖▐▙▄▄▖▝▚▄▞▘▐▙█▟▌ 17 | 18 | ▗▄▖ ▗▖ ▗▖▗▖ ▗▖ ▗▖ 19 | ▐▌ ▐▌▐▛▚▖▐▌▐▌ ▝▚▞▘ 20 | ▐▌ ▐▌▐▌ ▝▜▌▐▌ ▐▌ 21 | ▝▚▄▞▘▐▌ ▐▌▐▙▄▄▖▐▌ 22 | 23 | ▗▄▄▖ ▗▄▄▖▗▄▄▖ ▗▄▖ ▗▖ ▗▖ 24 | ▐▌ ▐▌ ▐▌ ▐▌▐▌ ▐▌▐▌ ▐▌ 25 | ▝▀▚▖▐▌ ▐▛▀▚▖▐▌ ▐▌▐▌ ▐▌ 26 | ▗▄▄▞▘▝▚▄▄▖▐▌ ▐▌▝▚▄▞▘▐▙▄▄▖▐▙▄▄▖ 27 | 28 | ▗▄▄▄▖▗▄▄▄▖ ▗▖ ▗▖▗▄▖ ▗▖ ▗▖ 29 | █ ▐▌ ▝▚▞▘▐▌ ▐▌▐▌ ▐▌ 30 | █ ▐▛▀▀▘ ▐▌ ▐▌ ▐▌▐▌ ▐▌ 31 | ▗▄█▄▖▐▌ ▐▌ ▝▚▄▞▘▝▚▄▞▘ 32 | 33 | ▗▖ ▗▖ ▗▄▖ ▗▖ ▗▖▗▄▄▄▖ ▗▄▄▄▖▗▄▖ 34 | ▐▌ ▐▌▐▌ ▐▌▐▛▚▖▐▌ █ █ ▐▌ ▐▌ 35 | ▐▌ ▐▌▐▛▀▜▌▐▌ ▝▜▌ █ █ ▐▌ ▐▌ 36 | ▐▙█▟▌▐▌ ▐▌▐▌ ▐▌ █ █ ▝▚▄▞▘ 37 | 38 | ▗▄▄▖ ▗▄▄▄▖▗▖ ▗▖▗▄▄▄▖ ▗▄▖ ▗▖ ▗▄▄▄▖▗▄▄▄▖ 39 | ▐▌ ▐▌▐▌ ▐▌ ▐▌▐▌ ▐▌ ▐▌▐▌ █ █ 40 | ▐▛▀▚▖▐▛▀▀▘▐▌ ▐▌▐▛▀▀▘▐▛▀▜▌▐▌ █ █ 41 | ▐▌ ▐▌▐▙▄▄▖ ▝▚▞▘ ▐▙▄▄▖▐▌ ▐▌▐▙▄▄▖ ▗▄█▄▖ █ 42 | 43 | */ 44 | 45 | import { 46 | type Dispatch, 47 | type SetStateAction, 48 | useCallback, 49 | useEffect, 50 | useRef, 51 | useState, 52 | } from "react"; 53 | 54 | export type UseFetchOptions = { 55 | immediate: boolean; 56 | }; 57 | 58 | export type UseFetchReturn = { 59 | loading: boolean; 60 | error: string | null; 61 | data: T | null; 62 | url: string; 63 | load: () => Promise; 64 | updateUrl: Dispatch>; 65 | updateOptions: Dispatch>; 66 | updateRequestOptions: Dispatch>; 67 | }; 68 | 69 | export default function useFetchSolution( 70 | initialUrl: string, 71 | initialRequestOptions?: RequestInit, 72 | initialOptions?: UseFetchOptions, 73 | ): UseFetchReturn { 74 | const [loading, setLoading] = useState(false); 75 | const [data, setData] = useState(null); 76 | const [error, setError] = useState(null); 77 | const [url, updateUrl] = useState(initialUrl); 78 | const [requestOptions, updateRequestOptions] = useState(initialRequestOptions); 79 | const [options, updateOptions] = useState(initialOptions || { immediate: true }); 80 | const abortController = useRef(new AbortController()); 81 | 82 | const load = useCallback(async () => { 83 | abortController.current.abort(); 84 | abortController.current = new AbortController(); 85 | setData(null); 86 | if (!url) { 87 | setError("Empty URL"); 88 | return; 89 | } 90 | else { 91 | setError(null); 92 | } 93 | setLoading(true); 94 | try { 95 | const requestInit = (requestOptions || {}); 96 | requestInit.signal = abortController.current.signal; 97 | const currentController = abortController.current; 98 | const response = await fetch(url, requestInit); 99 | if (!response.ok) { 100 | throw new Error(response.statusText); 101 | } 102 | const json = await response.json(); 103 | if (currentController.signal.aborted) { 104 | return; 105 | } 106 | setData(json); 107 | } 108 | catch (e) { 109 | const error = e as Error; 110 | if (error.name === "AbortError") { 111 | setError(null); 112 | setData(null); 113 | } 114 | else { 115 | setError(error.message); 116 | } 117 | } 118 | setLoading(false); 119 | }, [url, requestOptions]); 120 | 121 | useEffect(() => { 122 | if (options.immediate) { 123 | load(); 124 | } 125 | 126 | return () => { 127 | abortController.current.abort(); 128 | }; 129 | }, [load, options]); 130 | 131 | return { 132 | url, 133 | loading, 134 | error, 135 | data, 136 | load, 137 | updateUrl, 138 | updateOptions, 139 | updateRequestOptions, 140 | }; 141 | } 142 | -------------------------------------------------------------------------------- /src/use-fetch/use-fetch.test.ts: -------------------------------------------------------------------------------- 1 | // remove .skip from a test to run it 2 | 3 | import type { Mock } from "vitest"; 4 | import type { UseFetchOptions, UseFetchReturn } from "./use-fetch"; 5 | import { act, renderHook, waitFor } from "@testing-library/react"; 6 | 7 | import { beforeEach, describe, expect, it, vi } from "vitest"; 8 | import useFetch from "./use-fetch"; 9 | 10 | const mocks = { 11 | get fetch(): Mock { 12 | return globalThis.fetch as Mock; 13 | }, 14 | set fetch(value) { 15 | globalThis.fetch = value; 16 | }, 17 | }; 18 | 19 | mocks.fetch = vi.fn(); 20 | 21 | describe("useFetch", () => { 22 | const url = "https://example.com/api/data"; 23 | const data = { message: "Hello world!" }; 24 | type Data = typeof data; 25 | 26 | beforeEach(() => { 27 | mocks.fetch.mockReset(); 28 | mocks.fetch.mockResolvedValue({ 29 | ok: true, 30 | json: vi.fn().mockResolvedValue(data), 31 | }); 32 | }); 33 | 34 | describe("initial Fetch", () => { 35 | it.skip("should fetch on mount by default", async () => { 36 | renderHook(() => useFetch(url)); 37 | expect(mocks.fetch).toHaveBeenCalled(); 38 | }); 39 | 40 | it.skip("should set loading when fetching data", async () => { 41 | const { result } = renderHook(() => useFetch(url)); 42 | 43 | expect(result.current.loading).toBe(true); 44 | expect(mocks.fetch).toHaveBeenCalled(); 45 | await waitFor(() => expect(result.current.loading).toBe(false)); 46 | }); 47 | 48 | it.skip("should set data after fetch", async () => { 49 | const { result } = renderHook(() => useFetch(url)); 50 | 51 | expect(result.current.loading).toBe(true); 52 | expect(mocks.fetch).toHaveBeenCalled(); 53 | 54 | await waitFor(() => expect(result.current.loading).toBe(false)); 55 | expect(result.current.error).toBeNull(); 56 | expect(result.current.data).toEqual(data); 57 | }); 58 | 59 | it.skip("should not fetch on mount if immediate false", async () => { 60 | const { result } = renderHook(() => useFetch(url, undefined, { 61 | immediate: false, 62 | })); 63 | 64 | expect(result.current.loading).toBe(false); 65 | expect(mocks.fetch).not.toHaveBeenCalled(); 66 | }); 67 | 68 | it.skip("should not re-run if new options passed in directly", () => { 69 | const initialProps = { 70 | url, 71 | requestOptions: {}, 72 | options: { immediate: true }, 73 | }; 74 | const { rerender } = renderHook< 75 | UseFetchReturn, 76 | { url: string; requestOptions: RequestInit; options: UseFetchOptions } 77 | >( 78 | ({ url, requestOptions, options }) => 79 | useFetch(url, requestOptions, options), 80 | { 81 | initialProps, 82 | }, 83 | ); 84 | 85 | expect(mocks.fetch).toHaveBeenCalled(); 86 | // render again, but with a new object / url 87 | rerender({ url: "https://example.com/api/data/updated-url", requestOptions: {}, options: { immediate: true } }); 88 | expect(mocks.fetch).toHaveBeenCalledTimes(1); 89 | }); 90 | 91 | it.skip("should set error if url empty", async () => { 92 | const { result } = renderHook(() => useFetch("")); 93 | 94 | await act(() => { 95 | expect(result.current.loading).toBe(false); 96 | expect(result.current.error).toBe("Empty URL"); 97 | expect(result.current.data).toBeNull(); 98 | }); 99 | }); 100 | }); 101 | 102 | describe("error Handling", () => { 103 | it.skip("should handle network errors correctly", async () => { 104 | mocks.fetch.mockRejectedValue(new Error("Network Error")); 105 | 106 | const { result } = renderHook(() => useFetch(url)); 107 | 108 | await waitFor(() => expect(result.current.loading).toBe(false)); 109 | 110 | expect(result.current.error).toBe("Network Error"); 111 | expect(result.current.data).toBeNull(); 112 | }); 113 | 114 | it.skip("should handle JSON parse errors correctly", async () => { 115 | mocks.fetch.mockResolvedValue({ 116 | ok: true, 117 | json: vi.fn().mockRejectedValue(new Error("Invalid JSON")), 118 | }); 119 | 120 | const { result } = renderHook(() => useFetch(url)); 121 | 122 | await waitFor(() => expect(result.current.loading).toBe(false)); 123 | 124 | expect(result.current.error).toBe("Invalid JSON"); 125 | expect(result.current.data).toBeNull(); 126 | }); 127 | 128 | it.skip("should handle http errors correctly", async () => { 129 | mocks.fetch.mockResolvedValue({ 130 | ok: false, 131 | statusText: "Not Found", 132 | status: 404, 133 | json: vi.fn().mockRejectedValue(new Error("Invalid JSON")), 134 | }); 135 | 136 | const { result } = renderHook(() => useFetch(url)); 137 | 138 | await waitFor(() => expect(result.current.loading).toBe(false)); 139 | 140 | expect(result.current.error).toBe("Not Found"); 141 | expect(result.current.data).toBeNull(); 142 | }); 143 | }); 144 | 145 | describe("update Functions", () => { 146 | it.skip("should re-fetch if url is updated", async () => { 147 | const { result } = renderHook(() => useFetch(url)); 148 | await waitFor(() => !result.current.loading); 149 | expect(result.current.data).toEqual(data); 150 | mocks.fetch.mockResolvedValueOnce({ 151 | ok: true, 152 | json: vi.fn().mockResolvedValue({ message: "New data!" }), 153 | }); 154 | act(() => result.current.updateUrl("https://example.com/api/other-data")); 155 | await waitFor(() => !result.current.loading); 156 | expect(mocks.fetch).toHaveBeenCalled(); 157 | expect(result.current.data).toEqual({ message: "New data!" }); 158 | }); 159 | 160 | it.skip("should re-fetch if request options are updated", async () => { 161 | const { result } = renderHook(() => useFetch(url)); 162 | await waitFor(() => !result.current.loading); 163 | expect(result.current.data).toEqual(data); 164 | mocks.fetch.mockResolvedValueOnce({ 165 | ok: true, 166 | json: vi.fn().mockResolvedValue({ message: "New data!" }), 167 | }); 168 | act(() => result.current.updateRequestOptions({ 169 | headers: { 170 | Authorization: "Bearer test-token", 171 | }, 172 | })); 173 | await waitFor(() => !result.current.loading); 174 | expect(mocks.fetch).toHaveBeenCalled(); 175 | expect(result.current.data).toEqual({ message: "New data!" }); 176 | }); 177 | 178 | it.skip("should re-fetch if options are updated", async () => { 179 | const { result } = renderHook(() => 180 | useFetch(url, {}, { immediate: false }), 181 | ); 182 | expect(result.current.loading).toEqual(false); 183 | expect(mocks.fetch).not.toHaveBeenCalled(); 184 | act(() => result.current.updateOptions({ immediate: true })); 185 | await waitFor(() => !result.current.loading); 186 | expect(mocks.fetch).toHaveBeenCalled(); 187 | expect(result.current.data).toEqual(data); 188 | }); 189 | 190 | it.skip("should re-fetch if load function is called", async () => { 191 | const { result } = renderHook(() => useFetch(url)); 192 | await waitFor(() => !result.current.loading); 193 | expect(result.current.data).toEqual(data); 194 | mocks.fetch.mockResolvedValueOnce({ 195 | ok: true, 196 | json: vi.fn().mockResolvedValue({ message: "New data!" }), 197 | }); 198 | await act(() => result.current.load()); 199 | await waitFor(() => !result.current.loading); 200 | expect(mocks.fetch).toHaveBeenCalled(); 201 | expect(result.current.data).toEqual({ message: "New data!" }); 202 | }); 203 | }); 204 | 205 | describe("multiple requests", () => { 206 | it.skip("should clear data and not set error when aborted", async () => { 207 | const abortError = new Error("Request aborted"); 208 | abortError.name = "AbortError"; 209 | mocks.fetch.mockRejectedValue(abortError); 210 | 211 | const { result } = renderHook(() => useFetch(url)); 212 | 213 | expect(mocks.fetch).toHaveBeenCalled(); 214 | await waitFor(() => expect(result.current.loading).toBe(false)); 215 | 216 | expect(result.current.error).toBeNull(); 217 | expect(result.current.data).toEqual(null); 218 | }); 219 | 220 | it.skip("should clear existing data if load function is called", async () => { 221 | const { result } = renderHook(() => useFetch(url)); 222 | await waitFor(() => !result.current.loading); 223 | expect(result.current.data).toEqual(data); 224 | mocks.fetch.mockResolvedValueOnce({ 225 | ok: true, 226 | json: vi.fn().mockReturnValue(new Promise(resolve => setImmediate(() => resolve({ message: "New data 2!" })))), 227 | }); 228 | await act(async () => { 229 | result.current.load(); 230 | setImmediate(() => { 231 | expect(result.current.data).toBeNull(); 232 | }); 233 | }); 234 | await waitFor(() => expect(result.current.loading).toBe(false)); 235 | expect(mocks.fetch).toHaveBeenCalled(); 236 | expect(result.current.data).toEqual({ message: "New data 2!" }); 237 | }); 238 | 239 | it.skip("should clear existing error if load function is called", async () => { 240 | mocks.fetch.mockRejectedValue(new Error("Network Error")); 241 | const { result } = renderHook(() => useFetch(url)); 242 | await waitFor(() => !result.current.loading); 243 | expect(result.current.data).toEqual(null); 244 | expect(result.current.error).toEqual("Network Error"); 245 | mocks.fetch.mockResolvedValueOnce({ 246 | ok: true, 247 | json: vi.fn().mockReturnValue(new Promise(resolve => setImmediate(() => resolve({ message: "New data!" })))), 248 | }); 249 | await act(async () => { 250 | result.current.load(); 251 | setImmediate(() => { 252 | expect(result.current.error).toBeNull(); 253 | }); 254 | }); 255 | await waitFor(() => expect(result.current.loading).toBe(false)); 256 | expect(mocks.fetch).toHaveBeenCalled(); 257 | expect(result.current.data).toEqual({ message: "New data!" }); 258 | }); 259 | 260 | it.skip("should abort previous fetch if load is called while fetching", async () => { 261 | const fetchMocks = { 262 | first: { 263 | url: "http://abort-test.com/first", 264 | data, 265 | }, 266 | second: { 267 | url: "http://abort-test.com/second", 268 | data: { 269 | message: "Updated value! You should see this instead...", 270 | }, 271 | }, 272 | }; 273 | 274 | mocks.fetch.mockImplementation((url: string, options: RequestInit) => { 275 | return new Promise((resolve, reject) => { 276 | if (options?.signal) { 277 | options.signal.addEventListener("abort", () => { 278 | const abortError = new Error("Request aborted"); 279 | abortError.name = "AbortError"; 280 | reject(abortError); 281 | }); 282 | } 283 | if (url === fetchMocks.first.url) { 284 | // First will resolve after second... 285 | setTimeout(() => { 286 | resolve({ ok: true, json: vi.fn().mockResolvedValue(fetchMocks.first.data) }); 287 | }, 500); 288 | } 289 | else { 290 | resolve({ ok: true, json: vi.fn().mockResolvedValue(fetchMocks.second.data) }); 291 | } 292 | }); 293 | }); 294 | 295 | const { result } = renderHook(() => useFetch(fetchMocks.first.url)); 296 | 297 | expect(result.current.loading).toBe(true); 298 | 299 | act(() => { 300 | result.current.updateUrl(fetchMocks.second.url); 301 | }); 302 | 303 | // wait long enough to make sure first request had enough time to resolve 304 | await new Promise((resolve) => { 305 | setTimeout(resolve, 500); 306 | }); 307 | 308 | await waitFor(() => expect(result.current.loading).toBe(false)); 309 | 310 | expect(mocks.fetch).toHaveBeenCalledTimes(2); 311 | expect(result.current.data).toEqual(fetchMocks.second.data); 312 | }); 313 | }); 314 | 315 | describe("cleanup", () => { 316 | it.skip("should abort a request in progress if unmounted", async () => { 317 | let aborted = false; 318 | const json = vi.fn().mockResolvedValue(data); 319 | mocks.fetch.mockImplementation((_url: string, options: RequestInit) => { 320 | return new Promise((resolve, reject) => { 321 | if (options?.signal) { 322 | options.signal.addEventListener("abort", () => { 323 | const abortError = new Error("Request aborted"); 324 | abortError.name = "AbortError"; 325 | reject(abortError); 326 | aborted = true; 327 | }); 328 | } 329 | setTimeout(() => { 330 | resolve({ ok: true, json }); 331 | }, 100); 332 | }); 333 | }); 334 | 335 | const { result, unmount } = renderHook(() => useFetch(url)); 336 | 337 | expect(result.current.loading).toBe(true); 338 | unmount(); 339 | expect(aborted).toBe(true); 340 | expect(json).not.toHaveBeenCalled(); 341 | }); 342 | }); 343 | }); 344 | -------------------------------------------------------------------------------- /src/use-fetch/use-fetch.ts: -------------------------------------------------------------------------------- 1 | // This is the file you need to update 2 | 3 | import type { Dispatch, SetStateAction } from "react"; 4 | 5 | export type UseFetchOptions = { 6 | immediate: boolean; 7 | }; 8 | 9 | export type UseFetchReturn = { 10 | loading: boolean; 11 | error: string | null; 12 | data: T | null; 13 | url: string; 14 | load: () => Promise; 15 | updateUrl: Dispatch>; 16 | updateOptions: Dispatch>; 17 | updateRequestOptions: Dispatch>; 18 | }; 19 | 20 | export default function useFetch( 21 | initialUrl: string, 22 | initialRequestOptions?: RequestInit, 23 | initialOptions?: UseFetchOptions, 24 | ): UseFetchReturn { 25 | // your implementation here 26 | return { 27 | url: "", 28 | loading: false, 29 | error: null, 30 | data: null, 31 | load: async () => {}, 32 | updateUrl: () => {}, 33 | updateOptions: () => {}, 34 | updateRequestOptions: () => {}, 35 | }; 36 | } 37 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "jsx": "react-jsx", 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "moduleDetection": "force", 7 | "useDefineForClassFields": true, 8 | "module": "ESNext", 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | 14 | /* Linting */ 15 | "strict": true, 16 | "noFallthroughCasesInSwitch": true, 17 | "noUnusedLocals": true, 18 | "noUnusedParameters": true, 19 | "noEmit": true, 20 | "isolatedModules": true, 21 | "skipLibCheck": true 22 | }, 23 | "include": ["src"] 24 | } 25 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "references": [ 3 | { "path": "./tsconfig.app.json" }, 4 | { "path": "./tsconfig.node.json" } 5 | ], 6 | "files": [] 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2022", 4 | "lib": ["ES2023"], 5 | "moduleDetection": "force", 6 | "module": "ESNext", 7 | 8 | /* Bundler mode */ 9 | "moduleResolution": "bundler", 10 | "allowImportingTsExtensions": true, 11 | 12 | /* Linting */ 13 | "strict": true, 14 | "noFallthroughCasesInSwitch": true, 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "noEmit": true, 18 | "isolatedModules": true, 19 | "skipLibCheck": true 20 | }, 21 | "include": ["vite.config.ts"] 22 | } 23 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import react from "@vitejs/plugin-react"; 2 | import { defineConfig } from "vite"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()], 7 | }); 8 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vitest/config"; 2 | 3 | export default defineConfig({ 4 | test: { 5 | environment: "jsdom", 6 | }, 7 | }); 8 | --------------------------------------------------------------------------------